diff --git a/src/main/java/id/amigogroup/posterminal/App.java b/src/main/java/id/amigogroup/posterminal/App.java index 81a277d..25e5339 100644 --- a/src/main/java/id/amigogroup/posterminal/App.java +++ b/src/main/java/id/amigogroup/posterminal/App.java @@ -26,6 +26,8 @@ public class App extends Application { Parent root = FXMLLoader.load(getClass().getResource("/fxml/FormLogin.fxml")); Scene scene = new Scene(root); + + System.out.println(Fucout.getNoNotaTemporary()); stage.setScene(scene); stage.setTitle(Fucout.APP_TITLE); diff --git a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java index 15039cb..71afba1 100644 --- a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java +++ b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java @@ -1,8 +1,9 @@ package id.amigogroup.posterminal; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import id.amigogroup.posterminal.api.AmigoPosRx; -import id.amigogroup.posterminal.model.Tas; +import id.amigogroup.posterminal.model.Pelanggan; import id.amigogroup.posterminal.pencarian.DialogCariBarangController; import id.amigogroup.posterminal.pencarian.DialogCariNotaTundaController; import id.amigogroup.posterminal.pencarian.DialogCariPelangganController; @@ -11,9 +12,14 @@ import id.amigogroup.posterminal.transaksi.DialogKonfirmasiReturController; import id.amigogroup.posterminal.transaksi.DialogTambahNotaController; import id.amigogroup.posterminal.transaksi.FormTransaksiReturController; import id.amigogroup.posterminal.transaksi.FormTransaksiTunaiController; +import id.amigogroup.posterminal.util.AlertUtil; import id.amigogroup.posterminal.util.Fucout; import io.reactivex.Observable; +import static io.reactivex.Observable.error; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; import java.io.IOException; +import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; @@ -31,6 +37,7 @@ import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; +import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.ScrollPane; @@ -41,6 +48,7 @@ import javafx.scene.input.KeyCombination; import javafx.scene.layout.BorderPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; +import retrofit2.HttpException; public class FormUtamaController implements Initializable { @@ -60,6 +68,14 @@ public class FormUtamaController implements Initializable { private Button btnRetur1Static; @FXML private Button btnTunai2Static; + @FXML + private Label lblMemberNonMember; + @FXML + private Label lblNamaPelanggan; + @FXML + private Label lblTglLahirPelanggan; + @FXML + private Label lblNoTelpPelanggan; private final FormFactory formFactory = new FormFactory(); @@ -69,25 +85,23 @@ public class FormUtamaController implements Initializable { private int jumlahNota = 0; private final char NOTA_PREV = 'p'; private final char NOTA_NEXT = 'n'; + private Observable pelangganObs; /** * Initializes the controller class. */ @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 + //Kode Nur Indah Suciati (00334), Kode Wuryaningsih/RT (010004) + updateLabelMemberNonMember(); + + Platform.runLater(() -> { + posRx.getPelangganByKodeMember("00334").subscribe(pelangganObserver); }); - // - if (SystemValue.karyawan != null) { - lblNamaLogin.setText(Fucout.getTextColon(SystemValue.karyawan.getNama())); + if (SystemValue.karyawanLogin != null) { + lblNamaLogin.setText(Fucout.getTextColon(SystemValue.karyawanLogin.getNama())); } initShorcuts(); @@ -99,6 +113,7 @@ public class FormUtamaController implements Initializable { jumlahNota = 3; btnTunai1Static.setOnAction((event) -> { + posRx.getPelangganByKodeMember("010004").subscribe(pelangganObserver); setContent(loadNota("", FormConstanta.TRANSAKSI_TUNAI)); updateSelectedNota(event); tipeNotaState = Fucout.TIPE_NOTA_TUNAI; @@ -115,6 +130,28 @@ public class FormUtamaController implements Initializable { }); } + private void updateLabelPelanggan(Pelanggan p) { + updateLabelMemberNonMember(); + if (Fucout.checkBirthday(p.getTglLahir())) { + Alert alertUltah = AlertUtil.getAlertUlangTahun(p.getNama()); + alertUltah.initOwner(bpMain.getScene().getWindow()); + alertUltah.show(); + } + lblNamaPelanggan.setText(Fucout.getTextColon(p.getNama())); + lblTglLahirPelanggan.setText(Fucout.getTextColon(Fucout.formatTanggal(p.getTglLahir()))); + lblNoTelpPelanggan.setText(Fucout.getTextColon( + !p.getTelp().equals("") && !p.getPonsel().equals("") + ? p.getTelp() + System.lineSeparator() + p.getPonsel() : p.getTelp() + p.getPonsel())); + } + + private void updateLabelMemberNonMember() { + if (SystemValue.isMember) { + lblMemberNonMember.setText("Member"); + } else { + lblMemberNonMember.setText("Non Member"); + } + } + private void updateSelectedNota(ActionEvent event) { Button buttonSource = (Button) event.getSource(); notaState = navigasi.indexOf(buttonSource); @@ -242,7 +279,7 @@ public class FormUtamaController implements Initializable { KeyCombination kcCariBarang = new KeyCodeCombination(KeyCode.F5); Runnable rnCariBarang = () -> { DialogCariBarangController dialogCariBarang = new DialogCariBarangController(); - dialogCariBarang.initOwner((Stage) bpMain.getScene().getWindow()); + dialogCariBarang.initOwner(bpMain.getScene().getWindow()); Optional result = dialogCariBarang.showAndWait(); System.out.println(result); @@ -252,7 +289,7 @@ public class FormUtamaController implements Initializable { KeyCombination kcCariPelanggan = new KeyCodeCombination(KeyCode.F6); Runnable rnCariPelanggan = () -> { DialogCariPelangganController dialogCariPelanggan = new DialogCariPelangganController(); - dialogCariPelanggan.initOwner((Stage) bpMain.getScene().getWindow()); + dialogCariPelanggan.initOwner(bpMain.getScene().getWindow()); Optional result = dialogCariPelanggan.showAndWait(); System.out.println(result); @@ -262,7 +299,7 @@ public class FormUtamaController implements Initializable { KeyCombination kcCariNotaTunda = new KeyCodeCombination(KeyCode.F7); Runnable rnCariNotaTunda = () -> { DialogCariNotaTundaController dialogCariNotaTunda = new DialogCariNotaTundaController(); - dialogCariNotaTunda.initOwner((Stage) bpMain.getScene().getWindow()); + dialogCariNotaTunda.initOwner(bpMain.getScene().getWindow()); Optional result = dialogCariNotaTunda.showAndWait(); System.out.println(result); @@ -272,7 +309,7 @@ public class FormUtamaController implements Initializable { KeyCombination kcCariCetakUlangNota = new KeyCodeCombination(KeyCode.P, KeyCombination.CONTROL_DOWN); Runnable rnCetakUlangNota = () -> { DialogCetakUlangNotaController dialogCetakUlangNota = new DialogCetakUlangNotaController(); - dialogCetakUlangNota.initOwner((Stage) bpMain.getScene().getWindow()); + dialogCetakUlangNota.initOwner(bpMain.getScene().getWindow()); Optional result = dialogCetakUlangNota.showAndWait(); System.out.println(result); @@ -287,7 +324,7 @@ public class FormUtamaController implements Initializable { break; case Fucout.TIPE_NOTA_RETUR: DialogKonfirmasiReturController dialogKonfirmasiRetur = new DialogKonfirmasiReturController(); - dialogKonfirmasiRetur.initOwner((Stage) bpMain.getScene().getWindow()); + dialogKonfirmasiRetur.initOwner(bpMain.getScene().getWindow()); dialogKonfirmasiRetur.showAndWait(); break; } @@ -336,7 +373,7 @@ public class FormUtamaController implements Initializable { @FXML void btnTambahNotaOnAction(ActionEvent event) { DialogTambahNotaController dialogTambahNota = new DialogTambahNotaController(); - dialogTambahNota.initOwner((Stage) bpMain.getScene().getWindow()); + dialogTambahNota.initOwner(bpMain.getScene().getWindow()); Optional hasilReturn = dialogTambahNota.showAndWait(); if (hasilReturn.isPresent() && hasilReturn.get().equals("Tambah")) { @@ -349,4 +386,51 @@ public class FormUtamaController implements Initializable { jumlahNota++; } } + + Observer pelangganObserver = new Observer() { + @Override + public void onSubscribe(Disposable dspsbl) { + } + + @Override + public void onNext(Pelanggan p) { + ObjectMapper mapper = new ObjectMapper(); + try { + System.out.println(mapper.writeValueAsString(p)); + } catch (JsonProcessingException ex) { + Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, ex); + } + if (p != null) { + SystemValue.isMember = true; + SystemValue.member = p; + + updateLabelPelanggan(p); + } + } + + @Override + public void onError(Throwable error) { + if (error instanceof HttpException) { + switch (((HttpException) error).code()) { + case HttpURLConnection.HTTP_NOT_FOUND: + Alert alert = AlertUtil.getAlertError( + AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE, + "Pelanggan dengan kode member tersebut tidak ditemukan."); + alert.initOwner(bpMain.getScene().getWindow()); + alert.show(); + } + } else { + Alert alert = AlertUtil.getAlertError( + AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, + "Terjadi kesalahan yang tidak terduga."); + alert.initOwner(bpMain.getScene().getWindow()); + alert.show(); + Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, error); + } + } + + @Override + public void onComplete() { + } + }; } diff --git a/src/main/java/id/amigogroup/posterminal/SystemValue.java b/src/main/java/id/amigogroup/posterminal/SystemValue.java index dcc6347..bc59746 100644 --- a/src/main/java/id/amigogroup/posterminal/SystemValue.java +++ b/src/main/java/id/amigogroup/posterminal/SystemValue.java @@ -6,16 +6,14 @@ package id.amigogroup.posterminal; import id.amigogroup.posterminal.model.Karyawan; +import id.amigogroup.posterminal.model.Pelanggan; /** * * @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; + public static boolean isMember = false; + public static Pelanggan member = null; + public static Karyawan karyawanLogin = null; } diff --git a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java index fddc568..0443296 100644 --- a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java +++ b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java @@ -6,6 +6,7 @@ package id.amigogroup.posterminal.api; import id.amigogroup.posterminal.model.Karyawan; +import id.amigogroup.posterminal.model.Pelanggan; import id.amigogroup.posterminal.model.Tas; import io.reactivex.Observable; import java.util.List; @@ -22,4 +23,8 @@ public class AmigoPosRx { public Observable getKaryawanByNik(String nik){ return UtilsApi.getServiceApiKaryawan().getKaryawanByNik(nik); } + + public Observable getPelangganByKodeMember(String kodeMember){ + return UtilsApi.getServiceApiPelanggan().getPelangganByKodeMember(kodeMember); + } } diff --git a/src/main/java/id/amigogroup/posterminal/api/ServiceApiPelanggan.java b/src/main/java/id/amigogroup/posterminal/api/ServiceApiPelanggan.java new file mode 100644 index 0000000..b1093d5 --- /dev/null +++ b/src/main/java/id/amigogroup/posterminal/api/ServiceApiPelanggan.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.Pelanggan; +import io.reactivex.Observable; +import retrofit2.http.GET; +import retrofit2.http.Path; + +/** + * + * @author ronal + */ +public interface ServiceApiPelanggan { + //Mengambil Pelanggan berdasarkan Kode Member (Alias) + @GET("pelanggans/kode-member/{alias}") + Observable getPelangganByKodeMember(@Path("alias") String alias); +} diff --git a/src/main/java/id/amigogroup/posterminal/api/UtilsApi.java b/src/main/java/id/amigogroup/posterminal/api/UtilsApi.java index 88be134..cd5645b 100644 --- a/src/main/java/id/amigogroup/posterminal/api/UtilsApi.java +++ b/src/main/java/id/amigogroup/posterminal/api/UtilsApi.java @@ -24,4 +24,8 @@ public class UtilsApi { public static ServiceApiKaryawan getServiceApiKaryawan() { return ServiceGenerator.createService(API_BASE_URL_KARYAWAN, ServiceApiKaryawan.class); } + + public static ServiceApiPelanggan getServiceApiPelanggan() { + return ServiceGenerator.createService(API_BASE_URL_PELANGGAN, ServiceApiPelanggan.class); + } } diff --git a/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java b/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java index 06fc7c3..732c8c5 100644 --- a/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java +++ b/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java @@ -70,11 +70,10 @@ public class FormLoginController implements Initializable { @FXML public void btnLoginOnAction(ActionEvent event) { 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; + SystemValue.karyawanLogin = k; try { generateNewWindow("/fxml/FormUtama.fxml").show(); Stage thisStage = (Stage) apMain.getScene().getWindow(); @@ -91,7 +90,6 @@ public class FormLoginController implements Initializable { alert.show(); } }, error -> { - System.out.println(error.getMessage()); if (error instanceof HttpException) { switch (((HttpException) error).code()) { case HttpURLConnection.HTTP_NOT_FOUND: @@ -107,8 +105,8 @@ public class FormLoginController implements Initializable { "Terjadi kesalahan yang tidak terduga."); alert.initOwner((Stage) apMain.getScene().getWindow()); alert.show(); + Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, error); } -// System.out.println(error.getMessage()); }); } diff --git a/src/main/java/id/amigogroup/posterminal/model/Pelanggan.java b/src/main/java/id/amigogroup/posterminal/model/Pelanggan.java new file mode 100644 index 0000000..795168b --- /dev/null +++ b/src/main/java/id/amigogroup/posterminal/model/Pelanggan.java @@ -0,0 +1,484 @@ + +package id.amigogroup.posterminal.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.Date; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "kd_customer", + "alias", + "migrasi", + "ktp", + "nama", + "alamat", + "tempat_lahir", + "tgl_lahir", + "jns_kelamin", + "agama", + "kd_lokasi", + "wilayah", + "pekerjaan", + "status_nikah", + "telp", + "ponsel", + "email", + "status", + "upline", + "jenis_customer", + "jenis_customer_bon", + "jenis_komisi", + "status_ptt", + "status_plgaktif", + "tgl_entry", + "user_entry", + "tgl_update", + "user_update", + "tgl_pemutihan", + "user_pemutihan", + "saldonetbon", + "poin", + "gambar", + "firebase_uid" +}) +public class Pelanggan { + + @JsonProperty("kd_customer") + private String kdCustomer; + @JsonProperty("alias") + private String alias; + @JsonProperty("migrasi") + private Date migrasi; + @JsonProperty("ktp") + private String ktp; + @JsonProperty("nama") + private String nama; + @JsonProperty("alamat") + private String alamat; + @JsonProperty("tempat_lahir") + private String tempatLahir; + //KALAU BUTUH TIMESTAMP + //@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd@HH:mm:ss.SSSZ") + @JsonProperty("tgl_lahir") + private Date tglLahir; + @JsonProperty("jns_kelamin") + private String jnsKelamin; + @JsonProperty("agama") + private String agama; + @JsonProperty("kd_lokasi") + private String kdLokasi; + @JsonProperty("wilayah") + private String wilayah; + @JsonProperty("pekerjaan") + private String pekerjaan; + @JsonProperty("status_nikah") + private String statusNikah; + @JsonProperty("telp") + private String telp; + @JsonProperty("ponsel") + private String ponsel; + @JsonProperty("email") + private String email; + @JsonProperty("status") + private String status; + @JsonProperty("upline") + private String upline; + @JsonProperty("jenis_customer") + private String jenisCustomer; + @JsonProperty("jenis_customer_bon") + private String jenisCustomerBon; + @JsonProperty("jenis_komisi") + private String jenisKomisi; + @JsonProperty("status_ptt") + private String statusPtt; + @JsonProperty("status_plgaktif") + private String statusPlgaktif; + @JsonProperty("tgl_entry") + private String tglEntry; + @JsonProperty("user_entry") + private String userEntry; + @JsonProperty("tgl_update") + private String tglUpdate; + @JsonProperty("user_update") + private String userUpdate; + @JsonProperty("tgl_pemutihan") + private String tglPemutihan; + @JsonProperty("user_pemutihan") + private String userPemutihan; + @JsonProperty("saldonetbon") + private Integer saldonetbon; + @JsonProperty("poin") + private Integer poin; + @JsonProperty("gambar") + private String gambar; + @JsonProperty("firebase_uid") + private String firebaseUid; + + @JsonProperty("kd_customer") + public String getKdCustomer() { + return kdCustomer; + } + + @JsonProperty("kd_customer") + public void setKdCustomer(String kdCustomer) { + this.kdCustomer = kdCustomer; + } + + @JsonProperty("alias") + public String getAlias() { + return alias; + } + + @JsonProperty("alias") + public void setAlias(String alias) { + this.alias = alias; + } + + @JsonProperty("migrasi") + public Date getMigrasi() { + return migrasi; + } + + @JsonProperty("migrasi") + public void setMigrasi(Date migrasi) { + this.migrasi = migrasi; + } + + @JsonProperty("ktp") + public String getKtp() { + return ktp; + } + + @JsonProperty("ktp") + public void setKtp(String ktp) { + this.ktp = ktp; + } + + @JsonProperty("nama") + public String getNama() { + return nama; + } + + @JsonProperty("nama") + public void setNama(String nama) { + this.nama = nama; + } + + @JsonProperty("alamat") + public String getAlamat() { + return alamat; + } + + @JsonProperty("alamat") + public void setAlamat(String alamat) { + this.alamat = alamat; + } + + @JsonProperty("tempat_lahir") + public String getTempatLahir() { + return tempatLahir; + } + + @JsonProperty("tempat_lahir") + public void setTempatLahir(String tempatLahir) { + this.tempatLahir = tempatLahir; + } + + @JsonProperty("tgl_lahir") + public Date getTglLahir() { + return tglLahir; + } + + @JsonProperty("tgl_lahir") + public void setTglLahir(Date tglLahir) { + this.tglLahir = tglLahir; + } + + @JsonProperty("jns_kelamin") + public String getJnsKelamin() { + return jnsKelamin; + } + + @JsonProperty("jns_kelamin") + public void setJnsKelamin(String jnsKelamin) { + this.jnsKelamin = jnsKelamin; + } + + @JsonProperty("agama") + public String getAgama() { + return agama; + } + + @JsonProperty("agama") + public void setAgama(String agama) { + this.agama = agama; + } + + @JsonProperty("kd_lokasi") + public String getKdLokasi() { + return kdLokasi; + } + + @JsonProperty("kd_lokasi") + public void setKdLokasi(String kdLokasi) { + this.kdLokasi = kdLokasi; + } + + @JsonProperty("wilayah") + public String getWilayah() { + return wilayah; + } + + @JsonProperty("wilayah") + public void setWilayah(String wilayah) { + this.wilayah = wilayah; + } + + @JsonProperty("pekerjaan") + public String getPekerjaan() { + return pekerjaan; + } + + @JsonProperty("pekerjaan") + public void setPekerjaan(String pekerjaan) { + this.pekerjaan = pekerjaan; + } + + @JsonProperty("status_nikah") + public String getStatusNikah() { + return statusNikah; + } + + @JsonProperty("status_nikah") + public void setStatusNikah(String statusNikah) { + this.statusNikah = statusNikah; + } + + @JsonProperty("telp") + public String getTelp() { + return telp; + } + + @JsonProperty("telp") + public void setTelp(String telp) { + this.telp = telp; + } + + @JsonProperty("ponsel") + public String getPonsel() { + return ponsel; + } + + @JsonProperty("ponsel") + public void setPonsel(String ponsel) { + this.ponsel = ponsel; + } + + @JsonProperty("email") + public String getEmail() { + return email; + } + + @JsonProperty("email") + public void setEmail(String email) { + this.email = email; + } + + @JsonProperty("status") + public String getStatus() { + return status; + } + + @JsonProperty("status") + public void setStatus(String status) { + this.status = status; + } + + @JsonProperty("upline") + public String getUpline() { + return upline; + } + + @JsonProperty("upline") + public void setUpline(String upline) { + this.upline = upline; + } + + @JsonProperty("jenis_customer") + public String getJenisCustomer() { + return jenisCustomer; + } + + @JsonProperty("jenis_customer") + public void setJenisCustomer(String jenisCustomer) { + this.jenisCustomer = jenisCustomer; + } + + @JsonProperty("jenis_customer_bon") + public String getJenisCustomerBon() { + return jenisCustomerBon; + } + + @JsonProperty("jenis_customer_bon") + public void setJenisCustomerBon(String jenisCustomerBon) { + this.jenisCustomerBon = jenisCustomerBon; + } + + @JsonProperty("jenis_komisi") + public String getJenisKomisi() { + return jenisKomisi; + } + + @JsonProperty("jenis_komisi") + public void setJenisKomisi(String jenisKomisi) { + this.jenisKomisi = jenisKomisi; + } + + @JsonProperty("status_ptt") + public String getStatusPtt() { + return statusPtt; + } + + @JsonProperty("status_ptt") + public void setStatusPtt(String statusPtt) { + this.statusPtt = statusPtt; + } + + @JsonProperty("status_plgaktif") + public String getStatusPlgaktif() { + return statusPlgaktif; + } + + @JsonProperty("status_plgaktif") + public void setStatusPlgaktif(String statusPlgaktif) { + this.statusPlgaktif = statusPlgaktif; + } + + @JsonProperty("tgl_entry") + public String getTglEntry() { + return tglEntry; + } + + @JsonProperty("tgl_entry") + public void setTglEntry(String tglEntry) { + this.tglEntry = tglEntry; + } + + @JsonProperty("user_entry") + public String getUserEntry() { + return userEntry; + } + + @JsonProperty("user_entry") + public void setUserEntry(String userEntry) { + this.userEntry = userEntry; + } + + @JsonProperty("tgl_update") + public String getTglUpdate() { + return tglUpdate; + } + + @JsonProperty("tgl_update") + public void setTglUpdate(String tglUpdate) { + this.tglUpdate = tglUpdate; + } + + @JsonProperty("user_update") + public String getUserUpdate() { + return userUpdate; + } + + @JsonProperty("user_update") + public void setUserUpdate(String userUpdate) { + this.userUpdate = userUpdate; + } + + @JsonProperty("tgl_pemutihan") + public String getTglPemutihan() { + return tglPemutihan; + } + + @JsonProperty("tgl_pemutihan") + public void setTglPemutihan(String tglPemutihan) { + this.tglPemutihan = tglPemutihan; + } + + @JsonProperty("user_pemutihan") + public String getUserPemutihan() { + return userPemutihan; + } + + @JsonProperty("user_pemutihan") + public void setUserPemutihan(String userPemutihan) { + this.userPemutihan = userPemutihan; + } + + @JsonProperty("saldonetbon") + public Integer getSaldonetbon() { + return saldonetbon; + } + + @JsonProperty("saldonetbon") + public void setSaldonetbon(Integer saldonetbon) { + this.saldonetbon = saldonetbon; + } + + @JsonProperty("poin") + public Integer getPoin() { + return poin; + } + + @JsonProperty("poin") + public void setPoin(Integer poin) { + this.poin = poin; + } + + @JsonProperty("gambar") + public String getGambar() { + return gambar; + } + + @JsonProperty("gambar") + public void setGambar(String gambar) { + this.gambar = gambar; + } + + @JsonProperty("firebase_uid") + public String getFirebaseUid() { + return firebaseUid; + } + + @JsonProperty("firebase_uid") + public void setFirebaseUid(String firebaseUid) { + this.firebaseUid = firebaseUid; + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("kdCustomer", kdCustomer).append("alias", alias).append("migrasi", migrasi).append("ktp", ktp).append("nama", nama).append("alamat", alamat).append("tempatLahir", tempatLahir).append("tglLahir", tglLahir).append("jnsKelamin", jnsKelamin).append("agama", agama).append("kdLokasi", kdLokasi).append("wilayah", wilayah).append("pekerjaan", pekerjaan).append("statusNikah", statusNikah).append("telp", telp).append("ponsel", ponsel).append("email", email).append("status", status).append("upline", upline).append("jenisCustomer", jenisCustomer).append("jenisCustomerBon", jenisCustomerBon).append("jenisKomisi", jenisKomisi).append("statusPtt", statusPtt).append("statusPlgaktif", statusPlgaktif).append("tglEntry", tglEntry).append("userEntry", userEntry).append("tglUpdate", tglUpdate).append("userUpdate", userUpdate).append("tglPemutihan", tglPemutihan).append("userPemutihan", userPemutihan).append("saldonetbon", saldonetbon).append("poin", poin).append("gambar", gambar).append("firebaseUid", firebaseUid).toString(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(telp).append(migrasi).append(ponsel).append(statusPtt).append(agama).append(statusNikah).append(upline).append(jenisCustomer).append(jnsKelamin).append(tglPemutihan).append(poin).append(jenisKomisi).append(alias).append(email).append(jenisCustomerBon).append(saldonetbon).append(userPemutihan).append(kdLokasi).append(tglUpdate).append(userUpdate).append(statusPlgaktif).append(ktp).append(wilayah).append(tglEntry).append(userEntry).append(gambar).append(alamat).append(tglLahir).append(firebaseUid).append(nama).append(pekerjaan).append(tempatLahir).append(kdCustomer).append(status).toHashCode(); + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if ((other instanceof Pelanggan) == false) { + return false; + } + Pelanggan rhs = ((Pelanggan) other); + return new EqualsBuilder().append(telp, rhs.telp).append(migrasi, rhs.migrasi).append(ponsel, rhs.ponsel).append(statusPtt, rhs.statusPtt).append(agama, rhs.agama).append(statusNikah, rhs.statusNikah).append(upline, rhs.upline).append(jenisCustomer, rhs.jenisCustomer).append(jnsKelamin, rhs.jnsKelamin).append(tglPemutihan, rhs.tglPemutihan).append(poin, rhs.poin).append(jenisKomisi, rhs.jenisKomisi).append(alias, rhs.alias).append(email, rhs.email).append(jenisCustomerBon, rhs.jenisCustomerBon).append(saldonetbon, rhs.saldonetbon).append(userPemutihan, rhs.userPemutihan).append(kdLokasi, rhs.kdLokasi).append(tglUpdate, rhs.tglUpdate).append(userUpdate, rhs.userUpdate).append(statusPlgaktif, rhs.statusPlgaktif).append(ktp, rhs.ktp).append(wilayah, rhs.wilayah).append(tglEntry, rhs.tglEntry).append(userEntry, rhs.userEntry).append(gambar, rhs.gambar).append(alamat, rhs.alamat).append(tglLahir, rhs.tglLahir).append(firebaseUid, rhs.firebaseUid).append(nama, rhs.nama).append(pekerjaan, rhs.pekerjaan).append(tempatLahir, rhs.tempatLahir).append(kdCustomer, rhs.kdCustomer).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 index 3e24e17..7253fd2 100644 --- a/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java +++ b/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java @@ -7,6 +7,8 @@ package id.amigogroup.posterminal.util; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; /** * @@ -22,4 +24,17 @@ public class AlertUtil { alert.setHeaderText(null); return alert; } + + public static Alert getAlertUlangTahun(String nama) { + Alert alert = new Alert(Alert.AlertType.INFORMATION); + Image image = new Image("/assets/birthday.png"); + ImageView imageView = new ImageView(image); + imageView.setFitHeight(100); + imageView.setFitWidth(100); + alert.setGraphic(imageView); + alert.setTitle("Selamat Ulang Tahun"); + alert.setHeaderText(null); + alert.setContentText("Selamat Ulang Tahun " + nama); + 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 4c4e514..0a3a68c 100644 --- a/src/main/java/id/amigogroup/posterminal/util/Fucout.java +++ b/src/main/java/id/amigogroup/posterminal/util/Fucout.java @@ -5,6 +5,11 @@ */ package id.amigogroup.posterminal.util; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.Node; @@ -28,10 +33,13 @@ public class Fucout { //IMAGES URL public static final String APP_ICON = "/assets/logo-mini-squared.png"; + //FORMATTERS + private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd MMMM yyyy"); + //FUNCTIONS public static boolean isAllowedLogin(String pekerjaan) { - return pekerjaan !=null && !pekerjaan.equals("") && - (pekerjaan.toLowerCase().equals("kasir") + 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")); @@ -72,4 +80,45 @@ public class Fucout { } }); } + + public static String getNoNotaTemporary() { + LocalDateTime localDateTime = LocalDateTime.now(); + int ms = localDateTime.getNano(); + while (ms > 1000) { + ms = ms / 10; + } + return String.format("%d%02d%02d%02d%02d%02d%03d", + localDateTime.getYear(), + localDateTime.getMonthValue(), + localDateTime.getDayOfMonth(), + localDateTime.getHour(), + localDateTime.getMinute(), + localDateTime.getSecond(), + ms); + } + + public static String formatTanggal(Date tanggal) { + if (tanggal == null) { + return ""; + } + return DATE_FORMAT.format(tanggal); + } + + public static boolean checkBirthday(Date tanggal) { + return checkBirthday(toLocalDate(tanggal)); + } + public static boolean checkBirthday(LocalDate tanggal) { + if (tanggal == null) { + return false; + } + LocalDate now = LocalDate.now(); + return tanggal.getMonthValue() == now.getMonthValue() && + tanggal.getDayOfMonth() == now.getDayOfMonth(); + } + + public static LocalDate toLocalDate(Date date) { + return date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + } } diff --git a/src/main/resources/assets/birthday.png b/src/main/resources/assets/birthday.png new file mode 100644 index 0000000..43c2431 Binary files /dev/null and b/src/main/resources/assets/birthday.png differ diff --git a/src/main/resources/fxml/FormUtama.fxml b/src/main/resources/fxml/FormUtama.fxml index fab857a..69807d7 100644 --- a/src/main/resources/fxml/FormUtama.fxml +++ b/src/main/resources/fxml/FormUtama.fxml @@ -18,6 +18,9 @@ + + +
@@ -86,15 +89,11 @@ - - - - - - - - - + + + + +