diff --git a/pom.xml b/pom.xml
index 02bdc5c..3a851f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,6 +9,8 @@
11
11
11.0.2
+ 2.7.1
+ 2.6
id.amigogroup.posterminal.ShadeApp
@@ -40,6 +42,31 @@
${javafx.version}
mac
-->
+
+ io.reactivex.rxjava2
+ rxjava
+ 2.2.17
+
+
+ com.squareup.retrofit2
+ retrofit
+ ${retrofit.version}
+
+
+ com.squareup.retrofit2
+ converter-jackson
+ ${retrofit.version}
+
+
+ com.squareup.retrofit2
+ adapter-rxjava2
+ ${retrofit.version}
+
+
+ commons-lang
+ commons-lang
+ ${commons-lang.version}
+
diff --git a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java
index bf2f6a0..15039cb 100644
--- a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java
+++ b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java
@@ -1,5 +1,8 @@
package id.amigogroup.posterminal;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import id.amigogroup.posterminal.api.AmigoPosRx;
+import id.amigogroup.posterminal.model.Tas;
import id.amigogroup.posterminal.pencarian.DialogCariBarangController;
import id.amigogroup.posterminal.pencarian.DialogCariNotaTundaController;
import id.amigogroup.posterminal.pencarian.DialogCariPelangganController;
@@ -9,6 +12,7 @@ import id.amigogroup.posterminal.transaksi.DialogTambahNotaController;
import id.amigogroup.posterminal.transaksi.FormTransaksiReturController;
import id.amigogroup.posterminal.transaksi.FormTransaksiTunaiController;
import id.amigogroup.posterminal.util.Fucout;
+import io.reactivex.Observable;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
@@ -28,6 +32,7 @@ import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
+import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.input.KeyCode;
@@ -48,6 +53,8 @@ public class FormUtamaController implements Initializable {
@FXML
private VBox vbNavigasi;
@FXML
+ private Label lblNamaLogin;
+ @FXML
private Button btnTunai1Static;
@FXML
private Button btnRetur1Static;
@@ -69,6 +76,19 @@ public class FormUtamaController implements Initializable {
@Override
public void initialize(URL url, ResourceBundle rb) {
// setContent(formFactory.getForm(FormConstanta.TRANSAKSI_TUNAI, this));
+//TESTING RX JAVA
+ AmigoPosRx posRx = new AmigoPosRx();
+ Observable> daftarTas = posRx.getAllTas();
+ daftarTas.subscribe((t) -> {
+ ObjectMapper mapper = new ObjectMapper();
+ System.out.println(mapper.writeValueAsString(t));
+ //UI Tampilkan
+ });
+ //
+
+ if (SystemValue.karyawan != null) {
+ lblNamaLogin.setText(Fucout.getTextColon(SystemValue.karyawan.getNama()));
+ }
initShorcuts();
diff --git a/src/main/java/id/amigogroup/posterminal/SystemValue.java b/src/main/java/id/amigogroup/posterminal/SystemValue.java
new file mode 100644
index 0000000..dcc6347
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/SystemValue.java
@@ -0,0 +1,21 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package id.amigogroup.posterminal;
+
+import id.amigogroup.posterminal.model.Karyawan;
+
+/**
+ *
+ * @author ronal
+ */
+public class SystemValue {
+ //Contoh-contoh
+ public static String pelanggan = "Jono";
+ public static boolean isMember = true;
+ public static String kasir = "Kasir1";
+ //
+ public static Karyawan karyawan = null;
+}
diff --git a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java
new file mode 100644
index 0000000..fddc568
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java
@@ -0,0 +1,25 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package id.amigogroup.posterminal.api;
+
+import id.amigogroup.posterminal.model.Karyawan;
+import id.amigogroup.posterminal.model.Tas;
+import io.reactivex.Observable;
+import java.util.List;
+
+/**
+ *
+ * @author ronal
+ */
+public class AmigoPosRx {
+ public Observable> getAllTas(){
+ return UtilsApi.getServiceApiCheckin().getAllTas();
+ }
+
+ public Observable getKaryawanByNik(String nik){
+ return UtilsApi.getServiceApiKaryawan().getKaryawanByNik(nik);
+ }
+}
diff --git a/src/main/java/id/amigogroup/posterminal/api/ServiceApiCheckin.java b/src/main/java/id/amigogroup/posterminal/api/ServiceApiCheckin.java
new file mode 100644
index 0000000..767fa79
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/api/ServiceApiCheckin.java
@@ -0,0 +1,21 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package id.amigogroup.posterminal.api;
+
+import id.amigogroup.posterminal.model.Tas;
+import io.reactivex.Observable;
+import java.util.List;
+import retrofit2.http.GET;
+
+/**
+ *
+ * @author ronal
+ */
+public interface ServiceApiCheckin {
+ //Mengambil Semua Tas
+ @GET("tas")
+ Observable> getAllTas();
+}
diff --git a/src/main/java/id/amigogroup/posterminal/api/ServiceApiKaryawan.java b/src/main/java/id/amigogroup/posterminal/api/ServiceApiKaryawan.java
new file mode 100644
index 0000000..d71c463
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/api/ServiceApiKaryawan.java
@@ -0,0 +1,21 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package id.amigogroup.posterminal.api;
+
+import id.amigogroup.posterminal.model.Karyawan;
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Path;
+
+/**
+ *
+ * @author ronal
+ */
+public interface ServiceApiKaryawan {
+ //Mengambil Karyawan berdasarkan Nik
+ @GET("karyawans/{nik}")
+ Observable getKaryawanByNik(@Path("nik") String nik);
+}
diff --git a/src/main/java/id/amigogroup/posterminal/api/ServiceGenerator.java b/src/main/java/id/amigogroup/posterminal/api/ServiceGenerator.java
new file mode 100644
index 0000000..ce4506e
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/api/ServiceGenerator.java
@@ -0,0 +1,30 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package id.amigogroup.posterminal.api;
+
+import okhttp3.OkHttpClient;
+import retrofit2.Retrofit;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
+/**
+ *
+ * @author ronal
+ */
+public class ServiceGenerator {
+
+ private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
+
+ private static Retrofit.Builder builder
+ = new Retrofit.Builder()
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+ .addConverterFactory(JacksonConverterFactory.create());
+
+ public static S createService(String baseUrl, Class serviceClass) {
+ Retrofit retrofit = builder.baseUrl(baseUrl).client(httpClient.build()).build();
+ return retrofit.create(serviceClass);
+ }
+}
diff --git a/src/main/java/id/amigogroup/posterminal/api/UtilsApi.java b/src/main/java/id/amigogroup/posterminal/api/UtilsApi.java
new file mode 100644
index 0000000..88be134
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/api/UtilsApi.java
@@ -0,0 +1,27 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package id.amigogroup.posterminal.api;
+
+/**
+ *
+ * @author ronal
+ */
+public class UtilsApi {
+// public static final String API_BASE_URL_BARANG = "http://192.168.0.230:8081/api/";
+// public static final String API_BASE_URL_CHECKIN = "http://192.168.0.230:8082/api/";
+ public static final String API_BASE_URL_BARANG = "https://barang.amigogroup.id/api/";
+ public static final String API_BASE_URL_CHECKIN = "https://checkin.amigogroup.id/api/";
+ public static final String API_BASE_URL_KARYAWAN = "https://karyawan.amigogroup.id/api/";
+ public static final String API_BASE_URL_PELANGGAN = "https://pelanggan.amigogroup.id/api/";
+
+ public static ServiceApiCheckin getServiceApiCheckin() {
+ return ServiceGenerator.createService(API_BASE_URL_CHECKIN, ServiceApiCheckin.class);
+ }
+
+ public static ServiceApiKaryawan getServiceApiKaryawan() {
+ return ServiceGenerator.createService(API_BASE_URL_KARYAWAN, ServiceApiKaryawan.class);
+ }
+}
diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java
index 7025ddc..7059937 100644
--- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java
+++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java
@@ -31,6 +31,7 @@ public class FormBayarController implements Initializable {
private final String BAYAR_TUNAI = "Tunai";
private final String BAYAR_KARTU = "Debit/Kredit";
private final String BAYAR_RETUR = "Voucher Retur";
+ private final String BAYAR_PROMO = "Voucher Promo";
private final String BAYAR_GOPAY = "GoPay";
private final String BAYAR_OVO = "OVO";
private final String BAYAR_POIN = "Poin";
@@ -40,6 +41,7 @@ public class FormBayarController implements Initializable {
Node nodeTunai;
Node nodeKartu;
Node nodeRetur;
+ Node nodePromo;
Node nodeGopay;
Node nodeOvo;
Node nodePoin;
@@ -104,6 +106,20 @@ public class FormBayarController implements Initializable {
}
}
break;
+ case BAYAR_PROMO:
+ if (kumpulanContent.nodePromo == null && chkSource.selectedProperty().get()) {
+ loader.setLocation(getClass().getResource("/fxml/FormBayarVoucherPromo.fxml"));
+ node = loader.load();
+
+ vbContent.getChildren().add(node);
+ kumpulanContent.nodePromo = node;
+ } else {
+ if (kumpulanContent.nodePromo != null) {
+ vbContent.getChildren().remove(kumpulanContent.nodePromo);
+ kumpulanContent.nodePromo = null;
+ }
+ }
+ break;
case BAYAR_GOPAY:
break;
case BAYAR_OVO:
diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarOldController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarOldController.java
deleted file mode 100644
index be78368..0000000
--- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarOldController.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package id.amigogroup.posterminal.bayar;
-
-import id.amigogroup.posterminal.util.Fucout;
-import java.net.URL;
-import java.util.ResourceBundle;
-import javafx.fxml.FXML;
-import javafx.fxml.Initializable;
-import javafx.scene.control.TextField;
-import javafx.scene.input.KeyCode;
-import javafx.scene.input.KeyEvent;
-import javafx.scene.robot.Robot;
-
-/**
- * FXML Controller class
- *
- * @author ronal
- */
-public class FormBayarOldController implements Initializable {
-
- @FXML
- private TextField fldNoKartu1;
- @FXML
- private TextField fldNoKartu2;
- @FXML
- private TextField fldNoKartu3;
- @FXML
- private TextField fldNoKartu4;
-
- /**
- * Initializes the controller class.
- */
- @Override
- public void initialize(URL url, ResourceBundle rb) {
- initComponents();
- }
-
- private void initComponents() {
- Fucout.forceFieldInteger(fldNoKartu1, 4);
- Fucout.forceFieldInteger(fldNoKartu2, 4);
- Fucout.forceFieldInteger(fldNoKartu3, 4);
- Fucout.forceFieldInteger(fldNoKartu4, 4);
- }
-
- @FXML
- public void fldNomorKartuOnKeyTyped(KeyEvent event) {
- if (event.getSource() != null
- && event.getSource() instanceof TextField) {
- TextField field = (TextField) event.getSource();
-
- if (field.getText().length() >= 4) {
- if (event.getCharacter().matches("[0-9]")) {
- Robot robot = new Robot();
- robot.keyType(KeyCode.TAB);
- }
- }
- }
- }
-}
diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarVoucherPromoController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarVoucherPromoController.java
new file mode 100644
index 0000000..7d230a8
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarVoucherPromoController.java
@@ -0,0 +1,27 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package id.amigogroup.posterminal.bayar;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.Initializable;
+
+/**
+ * FXML Controller class
+ *
+ * @author ronal
+ */
+public class FormBayarVoucherPromoController implements Initializable {
+
+ /**
+ * Initializes the controller class.
+ */
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ // TODO
+ }
+
+}
diff --git a/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java b/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java
index bc8530d..06fc7c3 100644
--- a/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java
+++ b/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java
@@ -5,8 +5,14 @@
*/
package id.amigogroup.posterminal.keamanan;
+import id.amigogroup.posterminal.SystemValue;
+import id.amigogroup.posterminal.api.AmigoPosRx;
+import id.amigogroup.posterminal.model.Karyawan;
+import id.amigogroup.posterminal.util.AlertUtil;
import id.amigogroup.posterminal.util.Fucout;
+import io.reactivex.Observable;
import java.io.IOException;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.logging.Level;
@@ -17,9 +23,13 @@ import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
+import javafx.scene.control.Alert;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
+import retrofit2.HttpException;
/**
* FXML Controller class
@@ -30,6 +40,12 @@ public class FormLoginController implements Initializable {
@FXML
private AnchorPane apMain;
+ @FXML
+ private TextField fldNamaPengguna;
+ @FXML
+ private PasswordField fldKataSandi;
+
+ private final AmigoPosRx posRx = new AmigoPosRx();
/**
* Initializes the controller class.
@@ -53,14 +69,47 @@ public class FormLoginController implements Initializable {
@FXML
public void btnLoginOnAction(ActionEvent event) {
- try {
- generateNewWindow("/fxml/FormUtama.fxml").show();
- Stage thisStage = (Stage) apMain.getScene().getWindow();
- //close current stage
- thisStage.hide();
- } catch (IOException ex) {
- Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, ex);
- }
+ Observable karyawanObs = posRx.getKaryawanByNik(fldNamaPengguna.getText());
+
+ karyawanObs.subscribe((k) -> {
+ //kasir, Asko produk, Asko SDM, Pemko
+ if (k != null && Fucout.isAllowedLogin(k.getIdPekerjaan())) {
+ SystemValue.karyawan = k;
+ try {
+ generateNewWindow("/fxml/FormUtama.fxml").show();
+ Stage thisStage = (Stage) apMain.getScene().getWindow();
+ //close current stage
+ thisStage.hide();
+ } catch (IOException ex) {
+ Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }else{
+ Alert alert = AlertUtil.getAlertError(
+ "Error: Karyawan Tidak Boleh Akses",
+ "Karyawan dengan nomor tersebut tidak berwenang untuk mengakses aplikasi ini.");
+ alert.initOwner((Stage) apMain.getScene().getWindow());
+ alert.show();
+ }
+ }, error -> {
+ System.out.println(error.getMessage());
+ if (error instanceof HttpException) {
+ switch (((HttpException) error).code()) {
+ case HttpURLConnection.HTTP_NOT_FOUND:
+ Alert alert = AlertUtil.getAlertError(
+ AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
+ "Karyawan dengan nomor tersebut tidak ditemukan.");
+ alert.initOwner((Stage) apMain.getScene().getWindow());
+ alert.show();
+ }
+ } else {
+ Alert alert = AlertUtil.getAlertError(
+ AlertUtil.ERROR_TIDAK_TERDUGA_TITLE,
+ "Terjadi kesalahan yang tidak terduga.");
+ alert.initOwner((Stage) apMain.getScene().getWindow());
+ alert.show();
+ }
+// System.out.println(error.getMessage());
+ });
}
}
diff --git a/src/main/java/id/amigogroup/posterminal/model/Karyawan.java b/src/main/java/id/amigogroup/posterminal/model/Karyawan.java
new file mode 100644
index 0000000..b3f671c
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/model/Karyawan.java
@@ -0,0 +1,171 @@
+
+package id.amigogroup.posterminal.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+//@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "nik",
+ "nama",
+ "username",
+ "password",
+ "id_pekerjaan",
+ "id_department",
+ "last_login_plafon",
+ "last_login_CS",
+ "aktif",
+ "pin"
+})
+public class Karyawan {
+
+ @JsonProperty("nik")
+ private String nik;
+ @JsonProperty("nama")
+ private String nama;
+ @JsonProperty("username")
+ private String username;
+ @JsonProperty("password")
+ private String password;
+ @JsonProperty("id_pekerjaan")
+ private String idPekerjaan;
+ @JsonProperty("id_department")
+ private String idDepartment;
+ @JsonProperty("last_login_plafon")
+ private Object lastLoginPlafon;
+ @JsonProperty("last_login_CS")
+ private String lastLoginCS;
+ @JsonProperty("aktif")
+ private String aktif;
+ @JsonProperty("pin")
+ private String pin;
+
+ @JsonProperty("nik")
+ public String getNik() {
+ return nik;
+ }
+
+ @JsonProperty("nik")
+ public void setNik(String nik) {
+ this.nik = nik;
+ }
+
+ @JsonProperty("nama")
+ public String getNama() {
+ return nama;
+ }
+
+ @JsonProperty("nama")
+ public void setNama(String nama) {
+ this.nama = nama;
+ }
+
+ @JsonProperty("username")
+ public String getUsername() {
+ return username;
+ }
+
+ @JsonProperty("username")
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ @JsonProperty("password")
+ public String getPassword() {
+ return password;
+ }
+
+ @JsonProperty("password")
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ @JsonProperty("id_pekerjaan")
+ public String getIdPekerjaan() {
+ return idPekerjaan;
+ }
+
+ @JsonProperty("id_pekerjaan")
+ public void setIdPekerjaan(String idPekerjaan) {
+ this.idPekerjaan = idPekerjaan;
+ }
+
+ @JsonProperty("id_department")
+ public String getIdDepartment() {
+ return idDepartment;
+ }
+
+ @JsonProperty("id_department")
+ public void setIdDepartment(String idDepartment) {
+ this.idDepartment = idDepartment;
+ }
+
+ @JsonProperty("last_login_plafon")
+ public Object getLastLoginPlafon() {
+ return lastLoginPlafon;
+ }
+
+ @JsonProperty("last_login_plafon")
+ public void setLastLoginPlafon(Object lastLoginPlafon) {
+ this.lastLoginPlafon = lastLoginPlafon;
+ }
+
+ @JsonProperty("last_login_CS")
+ public String getLastLoginCS() {
+ return lastLoginCS;
+ }
+
+ @JsonProperty("last_login_CS")
+ public void setLastLoginCS(String lastLoginCS) {
+ this.lastLoginCS = lastLoginCS;
+ }
+
+ @JsonProperty("aktif")
+ public String getAktif() {
+ return aktif;
+ }
+
+ @JsonProperty("aktif")
+ public void setAktif(String aktif) {
+ this.aktif = aktif;
+ }
+
+ @JsonProperty("pin")
+ public String getPin() {
+ return pin;
+ }
+
+ @JsonProperty("pin")
+ public void setPin(String pin) {
+ this.pin = pin;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("nik", nik).append("nama", nama).append("username", username).append("password", password).append("idPekerjaan", idPekerjaan).append("idDepartment", idDepartment).append("lastLoginPlafon", lastLoginPlafon).append("lastLoginCS", lastLoginCS).append("aktif", aktif).append("pin", pin).toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().append(nik).append(password).append(nama).append(pin).append(lastLoginPlafon).append(lastLoginCS).append(aktif).append(username).append(idPekerjaan).append(idDepartment).toHashCode();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == this) {
+ return true;
+ }
+ if ((other instanceof Karyawan) == false) {
+ return false;
+ }
+ Karyawan rhs = ((Karyawan) other);
+ return new EqualsBuilder().append(nik, rhs.nik).append(password, rhs.password).append(nama, rhs.nama).append(pin, rhs.pin).append(lastLoginPlafon, rhs.lastLoginPlafon).append(lastLoginCS, rhs.lastLoginCS).append(aktif, rhs.aktif).append(username, rhs.username).append(idPekerjaan, rhs.idPekerjaan).append(idDepartment, rhs.idDepartment).isEquals();
+ }
+
+}
diff --git a/src/main/java/id/amigogroup/posterminal/model/Pagination.java b/src/main/java/id/amigogroup/posterminal/model/Pagination.java
new file mode 100644
index 0000000..7d288b5
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/model/Pagination.java
@@ -0,0 +1,198 @@
+
+package id.amigogroup.posterminal.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+//@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "current_page",
+ "data",
+ "first_page_url",
+ "from",
+ "last_page",
+ "last_page_url",
+ "next_page_url",
+ "path",
+ "per_page",
+ "prev_page_url",
+ "to",
+ "total"
+})
+public class Pagination {
+
+ @JsonProperty("current_page")
+ private Integer currentPage;
+ @JsonProperty("data")
+ private List data = null;
+ @JsonProperty("first_page_url")
+ private String firstPageUrl;
+ @JsonProperty("from")
+ private Integer from;
+ @JsonProperty("last_page")
+ private Integer lastPage;
+ @JsonProperty("last_page_url")
+ private String lastPageUrl;
+ @JsonProperty("next_page_url")
+ private String nextPageUrl;
+ @JsonProperty("path")
+ private String path;
+ @JsonProperty("per_page")
+ private Integer perPage;
+ @JsonProperty("prev_page_url")
+ private Object prevPageUrl;
+ @JsonProperty("to")
+ private Integer to;
+ @JsonProperty("total")
+ private Integer total;
+
+ @JsonProperty("current_page")
+ public Integer getCurrentPage() {
+ return currentPage;
+ }
+
+ @JsonProperty("current_page")
+ public void setCurrentPage(Integer currentPage) {
+ this.currentPage = currentPage;
+ }
+
+ @JsonProperty("data")
+ public List getData() {
+ return data;
+ }
+
+ @JsonProperty("data")
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ @JsonProperty("first_page_url")
+ public String getFirstPageUrl() {
+ return firstPageUrl;
+ }
+
+ @JsonProperty("first_page_url")
+ public void setFirstPageUrl(String firstPageUrl) {
+ this.firstPageUrl = firstPageUrl;
+ }
+
+ @JsonProperty("from")
+ public Integer getFrom() {
+ return from;
+ }
+
+ @JsonProperty("from")
+ public void setFrom(Integer from) {
+ this.from = from;
+ }
+
+ @JsonProperty("last_page")
+ public Integer getLastPage() {
+ return lastPage;
+ }
+
+ @JsonProperty("last_page")
+ public void setLastPage(Integer lastPage) {
+ this.lastPage = lastPage;
+ }
+
+ @JsonProperty("last_page_url")
+ public String getLastPageUrl() {
+ return lastPageUrl;
+ }
+
+ @JsonProperty("last_page_url")
+ public void setLastPageUrl(String lastPageUrl) {
+ this.lastPageUrl = lastPageUrl;
+ }
+
+ @JsonProperty("next_page_url")
+ public String getNextPageUrl() {
+ return nextPageUrl;
+ }
+
+ @JsonProperty("next_page_url")
+ public void setNextPageUrl(String nextPageUrl) {
+ this.nextPageUrl = nextPageUrl;
+ }
+
+ @JsonProperty("path")
+ public String getPath() {
+ return path;
+ }
+
+ @JsonProperty("path")
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ @JsonProperty("per_page")
+ public Integer getPerPage() {
+ return perPage;
+ }
+
+ @JsonProperty("per_page")
+ public void setPerPage(Integer perPage) {
+ this.perPage = perPage;
+ }
+
+ @JsonProperty("prev_page_url")
+ public Object getPrevPageUrl() {
+ return prevPageUrl;
+ }
+
+ @JsonProperty("prev_page_url")
+ public void setPrevPageUrl(Object prevPageUrl) {
+ this.prevPageUrl = prevPageUrl;
+ }
+
+ @JsonProperty("to")
+ public Integer getTo() {
+ return to;
+ }
+
+ @JsonProperty("to")
+ public void setTo(Integer to) {
+ this.to = to;
+ }
+
+ @JsonProperty("total")
+ public Integer getTotal() {
+ return total;
+ }
+
+ @JsonProperty("total")
+ public void setTotal(Integer total) {
+ this.total = total;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("currentPage", currentPage).append("data", data).append("firstPageUrl", firstPageUrl).append("from", from).append("lastPage", lastPage).append("lastPageUrl", lastPageUrl).append("nextPageUrl", nextPageUrl).append("path", path).append("perPage", perPage).append("prevPageUrl", prevPageUrl).append("to", to).append("total", total).toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().append(lastPageUrl).append(nextPageUrl).append(data).append(lastPage).append(prevPageUrl).append(path).append(total).append(firstPageUrl).append(perPage).append(from).append(to).append(currentPage).toHashCode();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == this) {
+ return true;
+ }
+ if ((other instanceof Pagination) == false) {
+ return false;
+ }
+ Pagination rhs = ((Pagination) other);
+ return new EqualsBuilder().append(lastPageUrl, rhs.lastPageUrl).append(nextPageUrl, rhs.nextPageUrl).append(data, rhs.data).append(lastPage, rhs.lastPage).append(prevPageUrl, rhs.prevPageUrl).append(path, rhs.path).append(total, rhs.total).append(firstPageUrl, rhs.firstPageUrl).append(perPage, rhs.perPage).append(from, rhs.from).append(to, rhs.to).append(currentPage, rhs.currentPage).isEquals();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/id/amigogroup/posterminal/model/Tas.java b/src/main/java/id/amigogroup/posterminal/model/Tas.java
new file mode 100644
index 0000000..5bd814b
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/model/Tas.java
@@ -0,0 +1,80 @@
+
+package id.amigogroup.posterminal.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+//@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+ "id",
+ "kode",
+ "status"
+})
+public class Tas {
+
+ @JsonProperty("id")
+ private Integer id;
+ @JsonProperty("kode")
+ private String kode;
+ @JsonProperty("status")
+ private String status;
+
+ @JsonProperty("id")
+ public Integer getId() {
+ return id;
+ }
+
+ @JsonProperty("id")
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ @JsonProperty("kode")
+ public String getKode() {
+ return kode;
+ }
+
+ @JsonProperty("kode")
+ public void setKode(String kode) {
+ this.kode = kode;
+ }
+
+ @JsonProperty("status")
+ public String getStatus() {
+ return status;
+ }
+
+ @JsonProperty("status")
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("id", id).append("kode", kode).append("status", status).toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().append(id).append(kode).append(status).toHashCode();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == this) {
+ return true;
+ }
+ if ((other instanceof Tas) == false) {
+ return false;
+ }
+ Tas rhs = ((Tas) other);
+ return new EqualsBuilder().append(id, rhs.id).append(kode, rhs.kode).append(status, rhs.status).isEquals();
+ }
+
+}
diff --git a/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java b/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java
new file mode 100644
index 0000000..3e24e17
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java
@@ -0,0 +1,25 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package id.amigogroup.posterminal.util;
+
+import javafx.scene.control.Alert;
+import javafx.scene.control.ButtonType;
+
+/**
+ *
+ * @author ronal
+ */
+public class AlertUtil {
+ public static final String ERROR_TIDAK_DITEMUKAN_TITLE = "Error: Data Tidak Ditemukan";
+ public static final String ERROR_TIDAK_TERDUGA_TITLE = "Error: Terjadi Kesalahan";
+
+ public static Alert getAlertError(String title, String message){
+ Alert alert = new Alert(Alert.AlertType.ERROR, message, ButtonType.OK);
+ alert.setTitle(title);
+ alert.setHeaderText(null);
+ return alert;
+ }
+}
diff --git a/src/main/java/id/amigogroup/posterminal/util/Fucout.java b/src/main/java/id/amigogroup/posterminal/util/Fucout.java
index 589f881..4c4e514 100644
--- a/src/main/java/id/amigogroup/posterminal/util/Fucout.java
+++ b/src/main/java/id/amigogroup/posterminal/util/Fucout.java
@@ -24,23 +24,38 @@ public class Fucout {
public static final String TIPE_NOTA_BON = "Bon";
public static final String TIPE_NOTA_BAWA_DULU = "Bawa";
public static final String TIPE_NOTA_RETUR = "Retur";
-
+
//IMAGES URL
public static final String APP_ICON = "/assets/logo-mini-squared.png";
//FUNCTIONS
- public static void scrollToNode(ScrollPane scrollPane, Node node){
+ public static boolean isAllowedLogin(String pekerjaan) {
+ return pekerjaan !=null && !pekerjaan.equals("") &&
+ (pekerjaan.toLowerCase().equals("kasir")
+ || pekerjaan.toLowerCase().equals("asisten pemimpin toko")
+ || pekerjaan.toLowerCase().equals("asisten pemimpin toko produk")
+ || pekerjaan.toLowerCase().equals("pemimpin toko"));
+ }
+
+ public static String getTextColon(String text) {
+ if (text == null || text.equals("")) {
+ return ": -";
+ }
+ return ": " + text;
+ }
+
+ public static void scrollToNode(ScrollPane scrollPane, Node node) {
double h = scrollPane.getContent().getBoundsInLocal().getHeight();
- double y = (node.getBoundsInParent().getMaxY() +
- node.getBoundsInParent().getMinY()) / 2.0;
+ double y = (node.getBoundsInParent().getMaxY()
+ + node.getBoundsInParent().getMinY()) / 2.0;
double v = scrollPane.getViewportBounds().getHeight();
scrollPane.setVvalue(scrollPane.getVmax() * ((y - 0.5 * v) / (h - v)));
}
-
- public static final void forceFieldToInteger(TextField field){
- forceFieldInteger(field,0);
+
+ public static final void forceFieldToInteger(TextField field) {
+ forceFieldInteger(field, 0);
}
-
+
public static final void forceFieldInteger(TextField field, int max) {
field.textProperty().addListener(new ChangeListener() {
@Override
diff --git a/src/main/resources/fxml/FormBayar.fxml b/src/main/resources/fxml/FormBayar.fxml
index 40bd53a..e007add 100644
--- a/src/main/resources/fxml/FormBayar.fxml
+++ b/src/main/resources/fxml/FormBayar.fxml
@@ -32,6 +32,7 @@
+
diff --git a/src/main/resources/fxml/FormBayarOld.fxml b/src/main/resources/fxml/FormBayarOld.fxml
deleted file mode 100644
index 3c90411..0000000
--- a/src/main/resources/fxml/FormBayarOld.fxml
+++ /dev/null
@@ -1,235 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/resources/fxml/FormBayarVoucherPromo.fxml b/src/main/resources/fxml/FormBayarVoucherPromo.fxml
new file mode 100644
index 0000000..c0dd103
--- /dev/null
+++ b/src/main/resources/fxml/FormBayarVoucherPromo.fxml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/fxml/FormLogin.fxml b/src/main/resources/fxml/FormLogin.fxml
index 890dd12..4742491 100644
--- a/src/main/resources/fxml/FormLogin.fxml
+++ b/src/main/resources/fxml/FormLogin.fxml
@@ -23,12 +23,12 @@
-
-
+
+
-
+
diff --git a/src/main/resources/fxml/FormUtama.fxml b/src/main/resources/fxml/FormUtama.fxml
index 0b881e4..3e7b8c0 100644
--- a/src/main/resources/fxml/FormUtama.fxml
+++ b/src/main/resources/fxml/FormUtama.fxml
@@ -36,7 +36,15 @@
-