* [Logic] Membuat ServiceApiBarang * [Logic + UI] Fungsi menambahkan nota dengan ambil dari checkout * Menghilangkan fungsi static menampilkan nota di form utama * Login mengecek apakah user name kosongpull/3/head
| @@ -3,6 +3,8 @@ package id.amigogroup.posterminal; | |||||
| import com.fasterxml.jackson.core.JsonProcessingException; | import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import id.amigogroup.posterminal.api.AmigoPosRx; | import id.amigogroup.posterminal.api.AmigoPosRx; | ||||
| import id.amigogroup.posterminal.model.MNotaRetur; | |||||
| import id.amigogroup.posterminal.model.MNotaTunai; | |||||
| import id.amigogroup.posterminal.model.Pelanggan; | import id.amigogroup.posterminal.model.Pelanggan; | ||||
| import id.amigogroup.posterminal.pencarian.DialogCariBarangController; | import id.amigogroup.posterminal.pencarian.DialogCariBarangController; | ||||
| import id.amigogroup.posterminal.pencarian.DialogCariNotaTundaController; | import id.amigogroup.posterminal.pencarian.DialogCariNotaTundaController; | ||||
| @@ -19,6 +21,7 @@ import io.reactivex.Observer; | |||||
| import io.reactivex.disposables.Disposable; | import io.reactivex.disposables.Disposable; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.net.HttpURLConnection; | import java.net.HttpURLConnection; | ||||
| import java.net.SocketTimeoutException; | |||||
| import java.net.URL; | import java.net.URL; | ||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.HashMap; | import java.util.HashMap; | ||||
| @@ -64,12 +67,6 @@ public class FormUtamaController implements Initializable { | |||||
| @FXML | @FXML | ||||
| private Label lblNamaLogin; | private Label lblNamaLogin; | ||||
| @FXML | @FXML | ||||
| private Button btnTunai1Static; | |||||
| @FXML | |||||
| private Button btnRetur1Static; | |||||
| @FXML | |||||
| private Button btnTunai2Static; | |||||
| @FXML | |||||
| private Label lblMemberNonMember; | private Label lblMemberNonMember; | ||||
| @FXML | @FXML | ||||
| private Label lblKodePelanggan; | private Label lblKodePelanggan; | ||||
| @@ -110,29 +107,6 @@ public class FormUtamaController implements Initializable { | |||||
| } | } | ||||
| initShorcuts(); | initShorcuts(); | ||||
| //STATIC FUNCTION, hilangkan jika sudah tidak dipakai | |||||
| navigasi.add(btnTunai1Static); | |||||
| navigasi.add(btnRetur1Static); | |||||
| navigasi.add(btnTunai2Static); | |||||
| jumlahNota = 3; | |||||
| btnTunai1Static.setOnAction((event) -> { | |||||
| // posRx.getPelangganByKodeMember("010004").subscribe(pelangganObserver); | |||||
| setContent(loadNota("", FormConstanta.TRANSAKSI_TUNAI)); | |||||
| updateSelectedNota(event); | |||||
| tipeNotaState = Fucout.TIPE_NOTA_TUNAI; | |||||
| }); | |||||
| btnRetur1Static.setOnAction((event) -> { | |||||
| setContent(loadNota("", FormConstanta.TRANSAKSI_RETUR)); | |||||
| updateSelectedNota(event); | |||||
| tipeNotaState = Fucout.TIPE_NOTA_RETUR; | |||||
| }); | |||||
| btnTunai2Static.setOnAction((event) -> { | |||||
| setContent(loadNota("", FormConstanta.TRANSAKSI_TUNAI)); | |||||
| updateSelectedNota(event); | |||||
| tipeNotaState = Fucout.TIPE_NOTA_TUNAI; | |||||
| }); | |||||
| } | } | ||||
| private void updateLabelPelanggan(Pelanggan p) { | private void updateLabelPelanggan(Pelanggan p) { | ||||
| @@ -162,30 +136,6 @@ public class FormUtamaController implements Initializable { | |||||
| Button buttonSource = (Button) event.getSource(); | Button buttonSource = (Button) event.getSource(); | ||||
| notaState = navigasi.indexOf(buttonSource); | notaState = navigasi.indexOf(buttonSource); | ||||
| Fucout.scrollToNode(spNavigasi, buttonSource); | Fucout.scrollToNode(spNavigasi, buttonSource); | ||||
| // if (!tableState.equals(buttonSource.getText().toLowerCase())) { | |||||
| // switch (buttonSource.getText().toLowerCase()) { | |||||
| // case BTN_TUNAI: | |||||
| // //ambil data tunai | |||||
| // tableState = BTN_TUNAI; | |||||
| // System.out.println("ambil data tunai"); | |||||
| // break; | |||||
| // case BTN_BAWA_DULU: | |||||
| // //ambil data bawa dulu | |||||
| // tableState = BTN_BAWA_DULU; | |||||
| // System.out.println("ambil data bawa dulu"); | |||||
| // break; | |||||
| // case BTN_BON: | |||||
| // //ambil data bon | |||||
| // tableState = BTN_BON; | |||||
| // System.out.println("ambil data bon"); | |||||
| // break; | |||||
| // case BTN_RETUR: | |||||
| // //ambil data retur | |||||
| // tableState = BTN_RETUR; | |||||
| // System.out.println("ambil data retur"); | |||||
| // break; | |||||
| // } | |||||
| // } | |||||
| for (Button button : navigasi) { | for (Button button : navigasi) { | ||||
| if (button.equals(buttonSource)) { | if (button.equals(buttonSource)) { | ||||
| @@ -308,7 +258,6 @@ public class FormUtamaController implements Initializable { | |||||
| dialogCariNotaTunda.initOwner(bpMain.getScene().getWindow()); | dialogCariNotaTunda.initOwner(bpMain.getScene().getWindow()); | ||||
| Optional<String> result = dialogCariNotaTunda.showAndWait(); | Optional<String> result = dialogCariNotaTunda.showAndWait(); | ||||
| System.out.println(result); | |||||
| }; | }; | ||||
| listShortcuts.put(kcCariNotaTunda, rnCariNotaTunda); | listShortcuts.put(kcCariNotaTunda, rnCariNotaTunda); | ||||
| @@ -318,7 +267,6 @@ public class FormUtamaController implements Initializable { | |||||
| dialogCetakUlangNota.initOwner(bpMain.getScene().getWindow()); | dialogCetakUlangNota.initOwner(bpMain.getScene().getWindow()); | ||||
| Optional<String> result = dialogCetakUlangNota.showAndWait(); | Optional<String> result = dialogCetakUlangNota.showAndWait(); | ||||
| System.out.println(result); | |||||
| }; | }; | ||||
| listShortcuts.put(kcCariCetakUlangNota, rnCetakUlangNota); | listShortcuts.put(kcCariCetakUlangNota, rnCetakUlangNota); | ||||
| @@ -383,7 +331,6 @@ public class FormUtamaController implements Initializable { | |||||
| Optional<String> hasilReturn = dialogTambahNota.showAndWait(); | Optional<String> hasilReturn = dialogTambahNota.showAndWait(); | ||||
| if (hasilReturn.isPresent() && hasilReturn.get().equals("Baru:Tunai")) { | if (hasilReturn.isPresent() && hasilReturn.get().equals("Baru:Tunai")) { | ||||
| Button buttonBaru = generateButtonNota("10-0220-0000X", | Button buttonBaru = generateButtonNota("10-0220-0000X", | ||||
| FormConstanta.TRANSAKSI_TUNAI, | FormConstanta.TRANSAKSI_TUNAI, | ||||
| Fucout.TIPE_NOTA_TUNAI); | Fucout.TIPE_NOTA_TUNAI); | ||||
| @@ -391,7 +338,6 @@ public class FormUtamaController implements Initializable { | |||||
| vbNavigasi.getChildren().add(buttonBaru); | vbNavigasi.getChildren().add(buttonBaru); | ||||
| jumlahNota++; | jumlahNota++; | ||||
| } else if (hasilReturn.isPresent() && hasilReturn.get().equals("Baru:Bon")) { | } else if (hasilReturn.isPresent() && hasilReturn.get().equals("Baru:Bon")) { | ||||
| Button buttonBaru = generateButtonNota("10-0220-0000X", | Button buttonBaru = generateButtonNota("10-0220-0000X", | ||||
| FormConstanta.TRANSAKSI_BON, | FormConstanta.TRANSAKSI_BON, | ||||
| Fucout.TIPE_NOTA_BON); | Fucout.TIPE_NOTA_BON); | ||||
| @@ -399,7 +345,6 @@ public class FormUtamaController implements Initializable { | |||||
| vbNavigasi.getChildren().add(buttonBaru); | vbNavigasi.getChildren().add(buttonBaru); | ||||
| jumlahNota++; | jumlahNota++; | ||||
| } else if (hasilReturn.isPresent() && hasilReturn.get().equals("Baru:Bawa Dulu")) { | } else if (hasilReturn.isPresent() && hasilReturn.get().equals("Baru:Bawa Dulu")) { | ||||
| Button buttonBaru = generateButtonNota("10-0220-0000X", | Button buttonBaru = generateButtonNota("10-0220-0000X", | ||||
| FormConstanta.TRANSAKSI_BAWA, | FormConstanta.TRANSAKSI_BAWA, | ||||
| Fucout.TIPE_NOTA_BAWA); | Fucout.TIPE_NOTA_BAWA); | ||||
| @@ -407,7 +352,6 @@ public class FormUtamaController implements Initializable { | |||||
| vbNavigasi.getChildren().add(buttonBaru); | vbNavigasi.getChildren().add(buttonBaru); | ||||
| jumlahNota++; | jumlahNota++; | ||||
| } else if (hasilReturn.isPresent() && hasilReturn.get().equals("Baru:Retur")) { | } else if (hasilReturn.isPresent() && hasilReturn.get().equals("Baru:Retur")) { | ||||
| Button buttonBaru = generateButtonNota("10-0220-0000X", | Button buttonBaru = generateButtonNota("10-0220-0000X", | ||||
| FormConstanta.TRANSAKSI_RETUR, | FormConstanta.TRANSAKSI_RETUR, | ||||
| Fucout.TIPE_NOTA_RETUR); | Fucout.TIPE_NOTA_RETUR); | ||||
| @@ -415,18 +359,36 @@ public class FormUtamaController implements Initializable { | |||||
| vbNavigasi.getChildren().add(buttonBaru); | vbNavigasi.getChildren().add(buttonBaru); | ||||
| jumlahNota++; | jumlahNota++; | ||||
| } else if (hasilReturn.isPresent() && hasilReturn.get().contains("Checkout:")) { | } else if (hasilReturn.isPresent() && hasilReturn.get().contains("Checkout:")) { | ||||
| Button buttonBaru = generateButtonNota(hasilReturn.get().substring(9), | |||||
| FormConstanta.TRANSAKSI_TUNAI, | |||||
| Fucout.TIPE_NOTA_TUNAI); | |||||
| navigasi.add(buttonBaru); | |||||
| vbNavigasi.getChildren().add(buttonBaru); | |||||
| jumlahNota++; | |||||
| String noNota = hasilReturn.get().substring(9); | |||||
| Button buttonBaru = null; | |||||
| switch (noNota.charAt(0)) { | |||||
| case Fucout.KODE_NOTA_BON: | |||||
| break; | |||||
| case Fucout.KODE_NOTA_BAWA: | |||||
| break; | |||||
| case Fucout.KODE_NOTA_RETUR: | |||||
| buttonBaru = generateButtonNota(noNota, | |||||
| FormConstanta.TRANSAKSI_RETUR, | |||||
| Fucout.TIPE_NOTA_RETUR); | |||||
| break; | |||||
| default: | |||||
| buttonBaru = generateButtonNota(noNota, | |||||
| FormConstanta.TRANSAKSI_TUNAI, | |||||
| Fucout.TIPE_NOTA_TUNAI); | |||||
| break; | |||||
| } | |||||
| if (buttonBaru != null) { | |||||
| navigasi.add(buttonBaru); | |||||
| vbNavigasi.getChildren().add(buttonBaru); | |||||
| jumlahNota++; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| //scan member | //scan member | ||||
| @FXML | @FXML | ||||
| void scanMemberOnPressed(KeyEvent event) { | |||||
| void scanMemberOnPressed(KeyEvent event | |||||
| ) { | |||||
| if (event.getCode() == KeyCode.ENTER) { | if (event.getCode() == KeyCode.ENTER) { | ||||
| posRx.getPelangganByKodeMember(tfScanMember.getText()).subscribe(pelangganObserver); | posRx.getPelangganByKodeMember(tfScanMember.getText()).subscribe(pelangganObserver); | ||||
| } | } | ||||
| @@ -439,12 +401,6 @@ public class FormUtamaController implements Initializable { | |||||
| @Override | @Override | ||||
| public void onNext(Pelanggan p) { | 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) { | if (p != null) { | ||||
| SystemValue.isMember = true; | SystemValue.isMember = true; | ||||
| SystemValue.member = p; | SystemValue.member = p; | ||||
| @@ -464,10 +420,16 @@ public class FormUtamaController implements Initializable { | |||||
| alert.initOwner(bpMain.getScene().getWindow()); | alert.initOwner(bpMain.getScene().getWindow()); | ||||
| alert.show(); | alert.show(); | ||||
| } | } | ||||
| } else if (error instanceof SocketTimeoutException) { | |||||
| Alert alert = AlertUtil.getAlertError( | |||||
| AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE, | |||||
| AlertUtil.ERROR_KONEKSI_TIMEOUT_MESSAGE); | |||||
| alert.initOwner(bpMain.getScene().getWindow()); | |||||
| alert.show(); | |||||
| } else { | } else { | ||||
| Alert alert = AlertUtil.getAlertError( | Alert alert = AlertUtil.getAlertError( | ||||
| AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, | AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, | ||||
| "Terjadi kesalahan yang tidak terduga."); | |||||
| AlertUtil.ERROR_TIDAK_TERDUGA_MESSAGE); | |||||
| alert.initOwner(bpMain.getScene().getWindow()); | alert.initOwner(bpMain.getScene().getWindow()); | ||||
| alert.show(); | alert.show(); | ||||
| Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, error); | Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, error); | ||||
| @@ -6,6 +6,8 @@ | |||||
| package id.amigogroup.posterminal.api; | package id.amigogroup.posterminal.api; | ||||
| import id.amigogroup.posterminal.model.Karyawan; | import id.amigogroup.posterminal.model.Karyawan; | ||||
| import id.amigogroup.posterminal.model.MNotaRetur; | |||||
| import id.amigogroup.posterminal.model.MNotaTunai; | |||||
| import id.amigogroup.posterminal.model.Pelanggan; | import id.amigogroup.posterminal.model.Pelanggan; | ||||
| import id.amigogroup.posterminal.model.Tas; | import id.amigogroup.posterminal.model.Tas; | ||||
| import io.reactivex.Observable; | import io.reactivex.Observable; | ||||
| @@ -16,14 +18,26 @@ import java.util.List; | |||||
| * @author ronal | * @author ronal | ||||
| */ | */ | ||||
| public class AmigoPosRx { | public class AmigoPosRx { | ||||
| //Barang API | |||||
| public Observable<MNotaTunai> getMNotaTunaiByNoNota(String noNota){ | |||||
| return UtilsApi.getServiceApiBarang().getMNotaTunaiByNoNota(noNota); | |||||
| } | |||||
| public Observable<MNotaRetur> getMNotaReturByNoNota(String noNota){ | |||||
| return UtilsApi.getServiceApiBarang().getMNotaReturByNoNota(noNota); | |||||
| } | |||||
| //Checkin API | |||||
| public Observable<List<Tas>> getAllTas(){ | public Observable<List<Tas>> getAllTas(){ | ||||
| return UtilsApi.getServiceApiCheckin().getAllTas(); | return UtilsApi.getServiceApiCheckin().getAllTas(); | ||||
| } | } | ||||
| //Karyawan API | |||||
| public Observable<Karyawan> getKaryawanByNik(String nik){ | public Observable<Karyawan> getKaryawanByNik(String nik){ | ||||
| return UtilsApi.getServiceApiKaryawan().getKaryawanByNik(nik); | return UtilsApi.getServiceApiKaryawan().getKaryawanByNik(nik); | ||||
| } | } | ||||
| //Pelanggan API | |||||
| public Observable<Pelanggan> getPelangganByKodeMember(String kodeMember){ | public Observable<Pelanggan> getPelangganByKodeMember(String kodeMember){ | ||||
| return UtilsApi.getServiceApiPelanggan().getPelangganByKodeMember(kodeMember); | return UtilsApi.getServiceApiPelanggan().getPelangganByKodeMember(kodeMember); | ||||
| } | } | ||||
| @@ -5,10 +5,30 @@ | |||||
| */ | */ | ||||
| package id.amigogroup.posterminal.api; | package id.amigogroup.posterminal.api; | ||||
| import id.amigogroup.posterminal.model.MNotaRetur; | |||||
| import id.amigogroup.posterminal.model.MNotaTunai; | |||||
| import io.reactivex.Observable; | |||||
| import retrofit2.http.GET; | |||||
| import retrofit2.http.Path; | |||||
| /** | /** | ||||
| * | * | ||||
| * @author ronal | * @author ronal | ||||
| */ | */ | ||||
| public interface ServiceApiBarang { | public interface ServiceApiBarang { | ||||
| //Mengambil Master Nota Tunai by No Nota | |||||
| @GET("m-nota-tunai/no-nota/{noNota}") | |||||
| Observable<MNotaTunai> getMNotaTunaiByNoNota(@Path("noNota") String noNota); | |||||
| // //Mengambil Master Nota Bawa Dulu by No Nota | |||||
| // @GET("m-nota-bawa/no-nota/{noNota}") | |||||
| // Observable<MNotaTunai> getMNotaBawaByNoNota(@Path("noNota") String noNota); | |||||
| // | |||||
| // //Mengambil Master Nota Bon by No Nota | |||||
| // @GET("m-nota-bon/no-nota/{noNota}") | |||||
| // Observable<MNotaTunai> getMNotaBonByNoNota(@Path("noNota") String noNota); | |||||
| //Mengambil Master Nota Retur by No Nota | |||||
| @GET("m-nota-retur/no-nota/{noNota}") | |||||
| Observable<MNotaRetur> getMNotaReturByNoNota(@Path("noNota") String noNota); | |||||
| } | } | ||||
| @@ -11,9 +11,13 @@ import id.amigogroup.posterminal.model.Karyawan; | |||||
| import id.amigogroup.posterminal.util.AlertUtil; | import id.amigogroup.posterminal.util.AlertUtil; | ||||
| import id.amigogroup.posterminal.util.Fucout; | import id.amigogroup.posterminal.util.Fucout; | ||||
| import io.reactivex.Observable; | import io.reactivex.Observable; | ||||
| import io.reactivex.Observer; | |||||
| import io.reactivex.disposables.Disposable; | |||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.net.HttpURLConnection; | import java.net.HttpURLConnection; | ||||
| import java.net.SocketTimeoutException; | |||||
| import java.net.URL; | import java.net.URL; | ||||
| import java.net.UnknownHostException; | |||||
| import java.util.ResourceBundle; | import java.util.ResourceBundle; | ||||
| import java.util.logging.Level; | import java.util.logging.Level; | ||||
| import java.util.logging.Logger; | import java.util.logging.Logger; | ||||
| @@ -69,8 +73,19 @@ public class FormLoginController implements Initializable { | |||||
| @FXML | @FXML | ||||
| public void btnLoginOnAction(ActionEvent event) { | public void btnLoginOnAction(ActionEvent event) { | ||||
| Observable<Karyawan> karyawanObs = posRx.getKaryawanByNik(fldNamaPengguna.getText()); | |||||
| karyawanObs.subscribe((k) -> { | |||||
| if (!fldNamaPengguna.getText().equals("")) { | |||||
| Observable<Karyawan> karyawanObs = posRx.getKaryawanByNik(fldNamaPengguna.getText()); | |||||
| karyawanObs.subscribe(karyawanLoginObserver); | |||||
| } | |||||
| } | |||||
| Observer<Karyawan> karyawanLoginObserver = new Observer<>() { | |||||
| @Override | |||||
| public void onSubscribe(Disposable dspsbl) { | |||||
| } | |||||
| @Override | |||||
| public void onNext(Karyawan k) { | |||||
| //kasir, Asko produk, Asko SDM, Pemko | //kasir, Asko produk, Asko SDM, Pemko | ||||
| if (k != null && Fucout.isAllowedLogin(k.getIdPekerjaan())) { | if (k != null && Fucout.isAllowedLogin(k.getIdPekerjaan())) { | ||||
| SystemValue.karyawanLogin = k; | SystemValue.karyawanLogin = k; | ||||
| @@ -82,32 +97,44 @@ public class FormLoginController implements Initializable { | |||||
| } catch (IOException ex) { | } catch (IOException ex) { | ||||
| Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, ex); | Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, ex); | ||||
| } | } | ||||
| }else{ | |||||
| } else { | |||||
| Alert alert = AlertUtil.getAlertError( | 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: Karyawan Tidak Boleh Akses", | |||||
| "Karyawan dengan nomor tersebut tidak berwenang untuk mengakses aplikasi ini."); | |||||
| alert.initOwner((Stage) apMain.getScene().getWindow()); | |||||
| alert.show(); | |||||
| } | } | ||||
| }, error -> { | |||||
| } | |||||
| @Override | |||||
| public void onError(Throwable error) { | |||||
| if (error instanceof HttpException) { | if (error instanceof HttpException) { | ||||
| switch (((HttpException) error).code()) { | switch (((HttpException) error).code()) { | ||||
| case HttpURLConnection.HTTP_NOT_FOUND: | case HttpURLConnection.HTTP_NOT_FOUND: | ||||
| Alert alert = AlertUtil.getAlertError( | Alert alert = AlertUtil.getAlertError( | ||||
| AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE, | AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE, | ||||
| "Karyawan dengan nomor tersebut tidak ditemukan."); | "Karyawan dengan nomor tersebut tidak ditemukan."); | ||||
| alert.initOwner((Stage) apMain.getScene().getWindow()); | |||||
| alert.initOwner(apMain.getScene().getWindow()); | |||||
| alert.show(); | alert.show(); | ||||
| } | } | ||||
| } else if (error instanceof SocketTimeoutException || error instanceof UnknownHostException) { | |||||
| Alert alert = AlertUtil.getAlertError( | |||||
| AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE, | |||||
| AlertUtil.ERROR_KONEKSI_TIMEOUT_MESSAGE); | |||||
| alert.initOwner(apMain.getScene().getWindow()); | |||||
| alert.show(); | |||||
| } else { | } else { | ||||
| Alert alert = AlertUtil.getAlertError( | Alert alert = AlertUtil.getAlertError( | ||||
| AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, | |||||
| "Terjadi kesalahan yang tidak terduga."); | |||||
| alert.initOwner((Stage) apMain.getScene().getWindow()); | |||||
| alert.show(); | |||||
| AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, | |||||
| "Terjadi kesalahan yang tidak terduga."); | |||||
| alert.initOwner(apMain.getScene().getWindow()); | |||||
| alert.show(); | |||||
| Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, error); | Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, error); | ||||
| } | } | ||||
| }); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public void onComplete() { | |||||
| } | |||||
| }; | |||||
| } | } | ||||
| @@ -0,0 +1,195 @@ | |||||
| package id.amigogroup.posterminal.model; | |||||
| 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; | |||||
| @JsonInclude(JsonInclude.Include.NON_NULL) | |||||
| @JsonPropertyOrder({ | |||||
| "kode_barang", | |||||
| "kode_lama", | |||||
| "nama_barang", | |||||
| "kode_toko", | |||||
| "kelompok", | |||||
| "tahun", | |||||
| "bulan", | |||||
| "id_gabungan", | |||||
| "kode_strip", | |||||
| "kode_supplier", | |||||
| "ked_produk", | |||||
| "kode_merk" | |||||
| }) | |||||
| public class Barang { | |||||
| @JsonProperty("kode_barang") | |||||
| private String kodeBarang; | |||||
| @JsonProperty("kode_lama") | |||||
| private String kodeLama; | |||||
| @JsonProperty("nama_barang") | |||||
| private String namaBarang; | |||||
| @JsonProperty("kode_toko") | |||||
| private String kodeToko; | |||||
| @JsonProperty("kelompok") | |||||
| private String kelompok; | |||||
| @JsonProperty("tahun") | |||||
| private int tahun; | |||||
| @JsonProperty("bulan") | |||||
| private int bulan; | |||||
| @JsonProperty("id_gabungan") | |||||
| private String idGabungan; | |||||
| @JsonProperty("kode_strip") | |||||
| private String kodeStrip; | |||||
| @JsonProperty("kode_supplier") | |||||
| private String kodeSupplier; | |||||
| @JsonProperty("ked_produk") | |||||
| private String kedProduk; | |||||
| @JsonProperty("kode_merk") | |||||
| private String kodeMerk; | |||||
| @JsonProperty("kode_barang") | |||||
| public String getKodeBarang() { | |||||
| return kodeBarang; | |||||
| } | |||||
| @JsonProperty("kode_barang") | |||||
| public void setKodeBarang(String kodeBarang) { | |||||
| this.kodeBarang = kodeBarang; | |||||
| } | |||||
| @JsonProperty("kode_lama") | |||||
| public String getKodeLama() { | |||||
| return kodeLama; | |||||
| } | |||||
| @JsonProperty("kode_lama") | |||||
| public void setKodeLama(String kodeLama) { | |||||
| this.kodeLama = kodeLama; | |||||
| } | |||||
| @JsonProperty("nama_barang") | |||||
| public String getNamaBarang() { | |||||
| return namaBarang; | |||||
| } | |||||
| @JsonProperty("nama_barang") | |||||
| public void setNamaBarang(String namaBarang) { | |||||
| this.namaBarang = namaBarang; | |||||
| } | |||||
| @JsonProperty("kode_toko") | |||||
| public String getKodeToko() { | |||||
| return kodeToko; | |||||
| } | |||||
| @JsonProperty("kode_toko") | |||||
| public void setKodeToko(String kodeToko) { | |||||
| this.kodeToko = kodeToko; | |||||
| } | |||||
| @JsonProperty("kelompok") | |||||
| public String getKelompok() { | |||||
| return kelompok; | |||||
| } | |||||
| @JsonProperty("kelompok") | |||||
| public void setKelompok(String kelompok) { | |||||
| this.kelompok = kelompok; | |||||
| } | |||||
| @JsonProperty("tahun") | |||||
| public int getTahun() { | |||||
| return tahun; | |||||
| } | |||||
| @JsonProperty("tahun") | |||||
| public void setTahun(int tahun) { | |||||
| this.tahun = tahun; | |||||
| } | |||||
| @JsonProperty("bulan") | |||||
| public int getBulan() { | |||||
| return bulan; | |||||
| } | |||||
| @JsonProperty("bulan") | |||||
| public void setBulan(int bulan) { | |||||
| this.bulan = bulan; | |||||
| } | |||||
| @JsonProperty("id_gabungan") | |||||
| public String getIdGabungan() { | |||||
| return idGabungan; | |||||
| } | |||||
| @JsonProperty("id_gabungan") | |||||
| public void setIdGabungan(String idGabungan) { | |||||
| this.idGabungan = idGabungan; | |||||
| } | |||||
| @JsonProperty("kode_strip") | |||||
| public String getKodeStrip() { | |||||
| return kodeStrip; | |||||
| } | |||||
| @JsonProperty("kode_strip") | |||||
| public void setKodeStrip(String kodeStrip) { | |||||
| this.kodeStrip = kodeStrip; | |||||
| } | |||||
| @JsonProperty("kode_supplier") | |||||
| public String getKodeSupplier() { | |||||
| return kodeSupplier; | |||||
| } | |||||
| @JsonProperty("kode_supplier") | |||||
| public void setKodeSupplier(String kodeSupplier) { | |||||
| this.kodeSupplier = kodeSupplier; | |||||
| } | |||||
| @JsonProperty("ked_produk") | |||||
| public String getKedProduk() { | |||||
| return kedProduk; | |||||
| } | |||||
| @JsonProperty("ked_produk") | |||||
| public void setKedProduk(String kedProduk) { | |||||
| this.kedProduk = kedProduk; | |||||
| } | |||||
| @JsonProperty("kode_merk") | |||||
| public String getKodeMerk() { | |||||
| return kodeMerk; | |||||
| } | |||||
| @JsonProperty("kode_merk") | |||||
| public void setKodeMerk(String kodeMerk) { | |||||
| this.kodeMerk = kodeMerk; | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| return new ToStringBuilder(this).append("kodeBarang", kodeBarang).append("kodeLama", kodeLama).append("namaBarang", namaBarang).append("kodeToko", kodeToko).append("kelompok", kelompok).append("tahun", tahun).append("bulan", bulan).append("idGabungan", idGabungan).append("kodeStrip", kodeStrip).append("kodeSupplier", kodeSupplier).append("kedProduk", kedProduk).append("kodeMerk", kodeMerk).toString(); | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| return new HashCodeBuilder().append(tahun).append(kodeLama).append(idGabungan).append(kodeToko).append(kedProduk).append(namaBarang).append(kelompok).append(kodeBarang).append(bulan).append(kodeStrip).append(kodeSupplier).append(kodeMerk).toHashCode(); | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object other) { | |||||
| if (other == this) { | |||||
| return true; | |||||
| } | |||||
| if ((other instanceof Barang) == false) { | |||||
| return false; | |||||
| } | |||||
| Barang rhs = ((Barang) other); | |||||
| return new EqualsBuilder().append(tahun, rhs.tahun).append(kodeLama, rhs.kodeLama).append(idGabungan, rhs.idGabungan).append(kodeToko, rhs.kodeToko).append(kedProduk, rhs.kedProduk).append(namaBarang, rhs.namaBarang).append(kelompok, rhs.kelompok).append(kodeBarang, rhs.kodeBarang).append(bulan, rhs.bulan).append(kodeStrip, rhs.kodeStrip).append(kodeSupplier, rhs.kodeSupplier).append(kodeMerk, rhs.kodeMerk).isEquals(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,182 @@ | |||||
| package id.amigogroup.posterminal.model; | |||||
| 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; | |||||
| @JsonInclude(JsonInclude.Include.NON_NULL) | |||||
| @JsonPropertyOrder({ | |||||
| "id", | |||||
| "no_nota", | |||||
| "kd_barang", | |||||
| "no_barang", | |||||
| "jumlah", | |||||
| "diskon", | |||||
| "diskon2", | |||||
| "harga_jual", | |||||
| "harga_pokok", | |||||
| "kode_pram", | |||||
| "bonus" | |||||
| }) | |||||
| public class DNotaTunai { | |||||
| @JsonProperty("id") | |||||
| private int id; | |||||
| @JsonProperty("no_nota") | |||||
| private String noNota; | |||||
| @JsonProperty("kd_barang") | |||||
| private String kdBarang; | |||||
| @JsonProperty("no_barang") | |||||
| private String noBarang; | |||||
| @JsonProperty("jumlah") | |||||
| private int jumlah; | |||||
| @JsonProperty("diskon") | |||||
| private int diskon; | |||||
| @JsonProperty("diskon2") | |||||
| private int diskon2; | |||||
| @JsonProperty("harga_jual") | |||||
| private int hargaJual; | |||||
| @JsonProperty("harga_pokok") | |||||
| private String hargaPokok; | |||||
| @JsonProperty("kode_pram") | |||||
| private String kodePram; | |||||
| @JsonProperty("bonus") | |||||
| private int bonus; | |||||
| @JsonProperty("id") | |||||
| public int getId() { | |||||
| return id; | |||||
| } | |||||
| @JsonProperty("id") | |||||
| public void setId(int id) { | |||||
| this.id = id; | |||||
| } | |||||
| @JsonProperty("no_nota") | |||||
| public String getNoNota() { | |||||
| return noNota; | |||||
| } | |||||
| @JsonProperty("no_nota") | |||||
| public void setNoNota(String noNota) { | |||||
| this.noNota = noNota; | |||||
| } | |||||
| @JsonProperty("kd_barang") | |||||
| public String getKdBarang() { | |||||
| return kdBarang; | |||||
| } | |||||
| @JsonProperty("kd_barang") | |||||
| public void setKdBarang(String kdBarang) { | |||||
| this.kdBarang = kdBarang; | |||||
| } | |||||
| @JsonProperty("no_barang") | |||||
| public String getNoBarang() { | |||||
| return noBarang; | |||||
| } | |||||
| @JsonProperty("no_barang") | |||||
| public void setNoBarang(String noBarang) { | |||||
| this.noBarang = noBarang; | |||||
| } | |||||
| @JsonProperty("jumlah") | |||||
| public int getJumlah() { | |||||
| return jumlah; | |||||
| } | |||||
| @JsonProperty("jumlah") | |||||
| public void setJumlah(int jumlah) { | |||||
| this.jumlah = jumlah; | |||||
| } | |||||
| @JsonProperty("diskon") | |||||
| public int getDiskon() { | |||||
| return diskon; | |||||
| } | |||||
| @JsonProperty("diskon") | |||||
| public void setDiskon(int diskon) { | |||||
| this.diskon = diskon; | |||||
| } | |||||
| @JsonProperty("diskon2") | |||||
| public int getDiskon2() { | |||||
| return diskon2; | |||||
| } | |||||
| @JsonProperty("diskon2") | |||||
| public void setDiskon2(int diskon2) { | |||||
| this.diskon2 = diskon2; | |||||
| } | |||||
| @JsonProperty("harga_jual") | |||||
| public int getHargaJual() { | |||||
| return hargaJual; | |||||
| } | |||||
| @JsonProperty("harga_jual") | |||||
| public void setHargaJual(int hargaJual) { | |||||
| this.hargaJual = hargaJual; | |||||
| } | |||||
| @JsonProperty("harga_pokok") | |||||
| public String getHargaPokok() { | |||||
| return hargaPokok; | |||||
| } | |||||
| @JsonProperty("harga_pokok") | |||||
| public void setHargaPokok(String hargaPokok) { | |||||
| this.hargaPokok = hargaPokok; | |||||
| } | |||||
| @JsonProperty("kode_pram") | |||||
| public String getKodePram() { | |||||
| return kodePram; | |||||
| } | |||||
| @JsonProperty("kode_pram") | |||||
| public void setKodePram(String kodePram) { | |||||
| this.kodePram = kodePram; | |||||
| } | |||||
| @JsonProperty("bonus") | |||||
| public int getBonus() { | |||||
| return bonus; | |||||
| } | |||||
| @JsonProperty("bonus") | |||||
| public void setBonus(int bonus) { | |||||
| this.bonus = bonus; | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| return new ToStringBuilder(this).append("id", id).append("noNota", noNota).append("kdBarang", kdBarang).append("noBarang", noBarang).append("jumlah", jumlah).append("diskon", diskon).append("diskon2", diskon2).append("hargaJual", hargaJual).append("hargaPokok", hargaPokok).append("kodePram", kodePram).append("bonus", bonus).toString(); | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| return new HashCodeBuilder().append(jumlah).append(diskon2).append(bonus).append(kdBarang).append(hargaPokok).append(kodePram).append(noNota).append(noBarang).append(id).append(hargaJual).append(diskon).toHashCode(); | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object other) { | |||||
| if (other == this) { | |||||
| return true; | |||||
| } | |||||
| if ((other instanceof DNotaTunai) == false) { | |||||
| return false; | |||||
| } | |||||
| DNotaTunai rhs = ((DNotaTunai) other); | |||||
| return new EqualsBuilder().append(jumlah, rhs.jumlah).append(diskon2, rhs.diskon2).append(bonus, rhs.bonus).append(kdBarang, rhs.kdBarang).append(hargaPokok, rhs.hargaPokok).append(kodePram, rhs.kodePram).append(noNota, rhs.noNota).append(noBarang, rhs.noBarang).append(id, rhs.id).append(hargaJual, rhs.hargaJual).append(diskon, rhs.diskon).isEquals(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,143 @@ | |||||
| package id.amigogroup.posterminal.model; | |||||
| 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; | |||||
| @JsonInclude(JsonInclude.Include.NON_NULL) | |||||
| @JsonPropertyOrder({ | |||||
| "no_nota", | |||||
| "tgl_nota", | |||||
| "kd_customer", | |||||
| "jumlah_total", | |||||
| "kasir", | |||||
| "total_diskon", | |||||
| "keterangan", | |||||
| "status_nota" | |||||
| }) | |||||
| public class MNotaRetur { | |||||
| @JsonProperty("no_nota") | |||||
| private String noNota; | |||||
| @JsonProperty("tgl_nota") | |||||
| private String tglNota; | |||||
| @JsonProperty("kd_customer") | |||||
| private String kdCustomer; | |||||
| @JsonProperty("jumlah_total") | |||||
| private int jumlahTotal; | |||||
| @JsonProperty("kasir") | |||||
| private String kasir; | |||||
| @JsonProperty("total_diskon") | |||||
| private int totalDiskon; | |||||
| @JsonProperty("keterangan") | |||||
| private String keterangan; | |||||
| @JsonProperty("status_nota") | |||||
| private String statusNota; | |||||
| @JsonProperty("no_nota") | |||||
| public String getNoNota() { | |||||
| return noNota; | |||||
| } | |||||
| @JsonProperty("no_nota") | |||||
| public void setNoNota(String noNota) { | |||||
| this.noNota = noNota; | |||||
| } | |||||
| @JsonProperty("tgl_nota") | |||||
| public String getTglNota() { | |||||
| return tglNota; | |||||
| } | |||||
| @JsonProperty("tgl_nota") | |||||
| public void setTglNota(String tglNota) { | |||||
| this.tglNota = tglNota; | |||||
| } | |||||
| @JsonProperty("kd_customer") | |||||
| public String getKdCustomer() { | |||||
| return kdCustomer; | |||||
| } | |||||
| @JsonProperty("kd_customer") | |||||
| public void setKdCustomer(String kdCustomer) { | |||||
| this.kdCustomer = kdCustomer; | |||||
| } | |||||
| @JsonProperty("jumlah_total") | |||||
| public int getJumlahTotal() { | |||||
| return jumlahTotal; | |||||
| } | |||||
| @JsonProperty("jumlah_total") | |||||
| public void setJumlahTotal(int jumlahTotal) { | |||||
| this.jumlahTotal = jumlahTotal; | |||||
| } | |||||
| @JsonProperty("kasir") | |||||
| public String getKasir() { | |||||
| return kasir; | |||||
| } | |||||
| @JsonProperty("kasir") | |||||
| public void setKasir(String kasir) { | |||||
| this.kasir = kasir; | |||||
| } | |||||
| @JsonProperty("total_diskon") | |||||
| public int getTotalDiskon() { | |||||
| return totalDiskon; | |||||
| } | |||||
| @JsonProperty("total_diskon") | |||||
| public void setTotalDiskon(int totalDiskon) { | |||||
| this.totalDiskon = totalDiskon; | |||||
| } | |||||
| @JsonProperty("keterangan") | |||||
| public String getKeterangan() { | |||||
| return keterangan; | |||||
| } | |||||
| @JsonProperty("keterangan") | |||||
| public void setKeterangan(String keterangan) { | |||||
| this.keterangan = keterangan; | |||||
| } | |||||
| @JsonProperty("status_nota") | |||||
| public String getStatusNota() { | |||||
| return statusNota; | |||||
| } | |||||
| @JsonProperty("status_nota") | |||||
| public void setStatusNota(String statusNota) { | |||||
| this.statusNota = statusNota; | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| return new ToStringBuilder(this).append("noNota", noNota).append("tglNota", tglNota).append("kdCustomer", kdCustomer).append("jumlahTotal", jumlahTotal).append("kasir", kasir).append("totalDiskon", totalDiskon).append("keterangan", keterangan).append("statusNota", statusNota).toString(); | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| return new HashCodeBuilder().append(keterangan).append(totalDiskon).append(statusNota).append(kasir).append(noNota).append(tglNota).append(kdCustomer).append(jumlahTotal).toHashCode(); | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object other) { | |||||
| if (other == this) { | |||||
| return true; | |||||
| } | |||||
| if ((other instanceof MNotaRetur) == false) { | |||||
| return false; | |||||
| } | |||||
| MNotaRetur rhs = ((MNotaRetur) other); | |||||
| return new EqualsBuilder().append(keterangan, rhs.keterangan).append(totalDiskon, rhs.totalDiskon).append(statusNota, rhs.statusNota).append(kasir, rhs.kasir).append(noNota, rhs.noNota).append(tglNota, rhs.tglNota).append(kdCustomer, rhs.kdCustomer).append(jumlahTotal, rhs.jumlahTotal).isEquals(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,299 @@ | |||||
| package id.amigogroup.posterminal.model; | |||||
| 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; | |||||
| @JsonInclude(JsonInclude.Include.NON_NULL) | |||||
| @JsonPropertyOrder({ | |||||
| "no_nota", | |||||
| "nota_lama", | |||||
| "tgl_nota", | |||||
| "kd_customer", | |||||
| "jumlah_total", | |||||
| "kasir", | |||||
| "total_uang", | |||||
| "total_diskon", | |||||
| "status_bayar", | |||||
| "bank", | |||||
| "edc", | |||||
| "no_kartu", | |||||
| "no_validasi_bank", | |||||
| "status_nota", | |||||
| "no_nota_retur", | |||||
| "jumlah_total_retur", | |||||
| "jenis_diskon", | |||||
| "jenis_hadiah", | |||||
| "tgl_ambilhadiah", | |||||
| "user_ambilhadiah" | |||||
| }) | |||||
| public class MNotaTunai { | |||||
| @JsonProperty("no_nota") | |||||
| private String noNota; | |||||
| @JsonProperty("nota_lama") | |||||
| private Object notaLama; | |||||
| @JsonProperty("tgl_nota") | |||||
| private String tglNota; | |||||
| @JsonProperty("kd_customer") | |||||
| private String kdCustomer; | |||||
| @JsonProperty("jumlah_total") | |||||
| private int jumlahTotal; | |||||
| @JsonProperty("kasir") | |||||
| private String kasir; | |||||
| @JsonProperty("total_uang") | |||||
| private int totalUang; | |||||
| @JsonProperty("total_diskon") | |||||
| private int totalDiskon; | |||||
| @JsonProperty("status_bayar") | |||||
| private String statusBayar; | |||||
| @JsonProperty("bank") | |||||
| private Object bank; | |||||
| @JsonProperty("edc") | |||||
| private Object edc; | |||||
| @JsonProperty("no_kartu") | |||||
| private Object noKartu; | |||||
| @JsonProperty("no_validasi_bank") | |||||
| private Object noValidasiBank; | |||||
| @JsonProperty("status_nota") | |||||
| private String statusNota; | |||||
| @JsonProperty("no_nota_retur") | |||||
| private String noNotaRetur; | |||||
| @JsonProperty("jumlah_total_retur") | |||||
| private int jumlahTotalRetur; | |||||
| @JsonProperty("jenis_diskon") | |||||
| private Object jenisDiskon; | |||||
| @JsonProperty("jenis_hadiah") | |||||
| private Object jenisHadiah; | |||||
| @JsonProperty("tgl_ambilhadiah") | |||||
| private Object tglAmbilhadiah; | |||||
| @JsonProperty("user_ambilhadiah") | |||||
| private Object userAmbilhadiah; | |||||
| @JsonProperty("no_nota") | |||||
| public String getNoNota() { | |||||
| return noNota; | |||||
| } | |||||
| @JsonProperty("no_nota") | |||||
| public void setNoNota(String noNota) { | |||||
| this.noNota = noNota; | |||||
| } | |||||
| @JsonProperty("nota_lama") | |||||
| public Object getNotaLama() { | |||||
| return notaLama; | |||||
| } | |||||
| @JsonProperty("nota_lama") | |||||
| public void setNotaLama(Object notaLama) { | |||||
| this.notaLama = notaLama; | |||||
| } | |||||
| @JsonProperty("tgl_nota") | |||||
| public String getTglNota() { | |||||
| return tglNota; | |||||
| } | |||||
| @JsonProperty("tgl_nota") | |||||
| public void setTglNota(String tglNota) { | |||||
| this.tglNota = tglNota; | |||||
| } | |||||
| @JsonProperty("kd_customer") | |||||
| public String getKdCustomer() { | |||||
| return kdCustomer; | |||||
| } | |||||
| @JsonProperty("kd_customer") | |||||
| public void setKdCustomer(String kdCustomer) { | |||||
| this.kdCustomer = kdCustomer; | |||||
| } | |||||
| @JsonProperty("jumlah_total") | |||||
| public int getJumlahTotal() { | |||||
| return jumlahTotal; | |||||
| } | |||||
| @JsonProperty("jumlah_total") | |||||
| public void setJumlahTotal(int jumlahTotal) { | |||||
| this.jumlahTotal = jumlahTotal; | |||||
| } | |||||
| @JsonProperty("kasir") | |||||
| public String getKasir() { | |||||
| return kasir; | |||||
| } | |||||
| @JsonProperty("kasir") | |||||
| public void setKasir(String kasir) { | |||||
| this.kasir = kasir; | |||||
| } | |||||
| @JsonProperty("total_uang") | |||||
| public int getTotalUang() { | |||||
| return totalUang; | |||||
| } | |||||
| @JsonProperty("total_uang") | |||||
| public void setTotalUang(int totalUang) { | |||||
| this.totalUang = totalUang; | |||||
| } | |||||
| @JsonProperty("total_diskon") | |||||
| public int getTotalDiskon() { | |||||
| return totalDiskon; | |||||
| } | |||||
| @JsonProperty("total_diskon") | |||||
| public void setTotalDiskon(int totalDiskon) { | |||||
| this.totalDiskon = totalDiskon; | |||||
| } | |||||
| @JsonProperty("status_bayar") | |||||
| public String getStatusBayar() { | |||||
| return statusBayar; | |||||
| } | |||||
| @JsonProperty("status_bayar") | |||||
| public void setStatusBayar(String statusBayar) { | |||||
| this.statusBayar = statusBayar; | |||||
| } | |||||
| @JsonProperty("bank") | |||||
| public Object getBank() { | |||||
| return bank; | |||||
| } | |||||
| @JsonProperty("bank") | |||||
| public void setBank(Object bank) { | |||||
| this.bank = bank; | |||||
| } | |||||
| @JsonProperty("edc") | |||||
| public Object getEdc() { | |||||
| return edc; | |||||
| } | |||||
| @JsonProperty("edc") | |||||
| public void setEdc(Object edc) { | |||||
| this.edc = edc; | |||||
| } | |||||
| @JsonProperty("no_kartu") | |||||
| public Object getNoKartu() { | |||||
| return noKartu; | |||||
| } | |||||
| @JsonProperty("no_kartu") | |||||
| public void setNoKartu(Object noKartu) { | |||||
| this.noKartu = noKartu; | |||||
| } | |||||
| @JsonProperty("no_validasi_bank") | |||||
| public Object getNoValidasiBank() { | |||||
| return noValidasiBank; | |||||
| } | |||||
| @JsonProperty("no_validasi_bank") | |||||
| public void setNoValidasiBank(Object noValidasiBank) { | |||||
| this.noValidasiBank = noValidasiBank; | |||||
| } | |||||
| @JsonProperty("status_nota") | |||||
| public String getStatusNota() { | |||||
| return statusNota; | |||||
| } | |||||
| @JsonProperty("status_nota") | |||||
| public void setStatusNota(String statusNota) { | |||||
| this.statusNota = statusNota; | |||||
| } | |||||
| @JsonProperty("no_nota_retur") | |||||
| public String getNoNotaRetur() { | |||||
| return noNotaRetur; | |||||
| } | |||||
| @JsonProperty("no_nota_retur") | |||||
| public void setNoNotaRetur(String noNotaRetur) { | |||||
| this.noNotaRetur = noNotaRetur; | |||||
| } | |||||
| @JsonProperty("jumlah_total_retur") | |||||
| public int getJumlahTotalRetur() { | |||||
| return jumlahTotalRetur; | |||||
| } | |||||
| @JsonProperty("jumlah_total_retur") | |||||
| public void setJumlahTotalRetur(int jumlahTotalRetur) { | |||||
| this.jumlahTotalRetur = jumlahTotalRetur; | |||||
| } | |||||
| @JsonProperty("jenis_diskon") | |||||
| public Object getJenisDiskon() { | |||||
| return jenisDiskon; | |||||
| } | |||||
| @JsonProperty("jenis_diskon") | |||||
| public void setJenisDiskon(Object jenisDiskon) { | |||||
| this.jenisDiskon = jenisDiskon; | |||||
| } | |||||
| @JsonProperty("jenis_hadiah") | |||||
| public Object getJenisHadiah() { | |||||
| return jenisHadiah; | |||||
| } | |||||
| @JsonProperty("jenis_hadiah") | |||||
| public void setJenisHadiah(Object jenisHadiah) { | |||||
| this.jenisHadiah = jenisHadiah; | |||||
| } | |||||
| @JsonProperty("tgl_ambilhadiah") | |||||
| public Object getTglAmbilhadiah() { | |||||
| return tglAmbilhadiah; | |||||
| } | |||||
| @JsonProperty("tgl_ambilhadiah") | |||||
| public void setTglAmbilhadiah(Object tglAmbilhadiah) { | |||||
| this.tglAmbilhadiah = tglAmbilhadiah; | |||||
| } | |||||
| @JsonProperty("user_ambilhadiah") | |||||
| public Object getUserAmbilhadiah() { | |||||
| return userAmbilhadiah; | |||||
| } | |||||
| @JsonProperty("user_ambilhadiah") | |||||
| public void setUserAmbilhadiah(Object userAmbilhadiah) { | |||||
| this.userAmbilhadiah = userAmbilhadiah; | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| return new ToStringBuilder(this).append("noNota", noNota).append("notaLama", notaLama).append("tglNota", tglNota).append("kdCustomer", kdCustomer).append("jumlahTotal", jumlahTotal).append("kasir", kasir).append("totalUang", totalUang).append("totalDiskon", totalDiskon).append("statusBayar", statusBayar).append("bank", bank).append("edc", edc).append("noKartu", noKartu).append("noValidasiBank", noValidasiBank).append("statusNota", statusNota).append("noNotaRetur", noNotaRetur).append("jumlahTotalRetur", jumlahTotalRetur).append("jenisDiskon", jenisDiskon).append("jenisHadiah", jenisHadiah).append("tglAmbilhadiah", tglAmbilhadiah).append("userAmbilhadiah", userAmbilhadiah).toString(); | |||||
| } | |||||
| @Override | |||||
| public int hashCode() { | |||||
| return new HashCodeBuilder().append(edc).append(statusNota).append(jumlahTotalRetur).append(tglAmbilhadiah).append(tglNota).append(noNotaRetur).append(userAmbilhadiah).append(noValidasiBank).append(bank).append(notaLama).append(totalDiskon).append(kasir).append(noNota).append(statusBayar).append(noKartu).append(jenisDiskon).append(jenisHadiah).append(kdCustomer).append(jumlahTotal).append(totalUang).toHashCode(); | |||||
| } | |||||
| @Override | |||||
| public boolean equals(Object other) { | |||||
| if (other == this) { | |||||
| return true; | |||||
| } | |||||
| if ((other instanceof MNotaTunai) == false) { | |||||
| return false; | |||||
| } | |||||
| MNotaTunai rhs = ((MNotaTunai) other); | |||||
| return new EqualsBuilder().append(edc, rhs.edc).append(statusNota, rhs.statusNota).append(jumlahTotalRetur, rhs.jumlahTotalRetur).append(tglAmbilhadiah, rhs.tglAmbilhadiah).append(tglNota, rhs.tglNota).append(noNotaRetur, rhs.noNotaRetur).append(userAmbilhadiah, rhs.userAmbilhadiah).append(noValidasiBank, rhs.noValidasiBank).append(bank, rhs.bank).append(notaLama, rhs.notaLama).append(totalDiskon, rhs.totalDiskon).append(kasir, rhs.kasir).append(noNota, rhs.noNota).append(statusBayar, rhs.statusBayar).append(noKartu, rhs.noKartu).append(jenisDiskon, rhs.jenisDiskon).append(jenisHadiah, rhs.jenisHadiah).append(kdCustomer, rhs.kdCustomer).append(jumlahTotal, rhs.jumlahTotal).append(totalUang, rhs.totalUang).isEquals(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,60 @@ | |||||
| /* | |||||
| * 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.transaksi; | |||||
| import id.amigogroup.posterminal.model.Barang; | |||||
| /** | |||||
| * | |||||
| * @author ronal | |||||
| */ | |||||
| public class DetailTransaksi<T,U> { | |||||
| private T masterNota; | |||||
| private U detailNota; | |||||
| private Barang barang; | |||||
| /** | |||||
| * @return the masterNota | |||||
| */ | |||||
| public T getMasterNota() { | |||||
| return masterNota; | |||||
| } | |||||
| /** | |||||
| * @param masterNota the masterNota to set | |||||
| */ | |||||
| public void setMasterNota(T masterNota) { | |||||
| this.masterNota = masterNota; | |||||
| } | |||||
| /** | |||||
| * @return the detailNota | |||||
| */ | |||||
| public U getDetailNota() { | |||||
| return detailNota; | |||||
| } | |||||
| /** | |||||
| * @param detailNota the detailNota to set | |||||
| */ | |||||
| public void setDetailNota(U detailNota) { | |||||
| this.detailNota = detailNota; | |||||
| } | |||||
| /** | |||||
| * @return the barang | |||||
| */ | |||||
| public Barang getBarang() { | |||||
| return barang; | |||||
| } | |||||
| /** | |||||
| * @param barang the barang to set | |||||
| */ | |||||
| public void setBarang(Barang barang) { | |||||
| this.barang = barang; | |||||
| } | |||||
| } | |||||
| @@ -1,103 +1,170 @@ | |||||
| /* | |||||
| * 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.transaksi; | |||||
| import java.io.IOException; | |||||
| import java.net.URL; | |||||
| import java.util.ResourceBundle; | |||||
| import java.util.logging.Level; | |||||
| import java.util.logging.Logger; | |||||
| import javafx.event.ActionEvent; | |||||
| import javafx.fxml.FXML; | |||||
| import javafx.fxml.FXMLLoader; | |||||
| import javafx.fxml.Initializable; | |||||
| import javafx.scene.Parent; | |||||
| import javafx.scene.control.ButtonType; | |||||
| import javafx.scene.control.ComboBox; | |||||
| import javafx.scene.control.Dialog; | |||||
| import javafx.scene.control.RadioButton; | |||||
| import javafx.scene.control.TextField; | |||||
| import javafx.scene.control.ToggleGroup; | |||||
| import javafx.scene.layout.AnchorPane; | |||||
| import javafx.stage.Window; | |||||
| /** | |||||
| * | |||||
| * @author Josua | |||||
| */ | |||||
| public class DialogTambahNotaController extends Dialog<String> implements Initializable { | |||||
| @FXML | |||||
| private AnchorPane apTambahNota; | |||||
| @FXML | |||||
| private ToggleGroup tgTipe; | |||||
| @FXML | |||||
| private RadioButton rbBaru; | |||||
| @FXML | |||||
| private ComboBox<String> cbxPilihNota; | |||||
| @FXML | |||||
| private RadioButton rbAmbilDariCheckout; | |||||
| @FXML | |||||
| private TextField tfAmbilDariCheckout; | |||||
| public static final ButtonType btnLanjutkan = new ButtonType("Lanjutkan"); | |||||
| public static final ButtonType btnBatal = new ButtonType("Batal"); | |||||
| @Override | |||||
| public void initialize(URL url, ResourceBundle rb) { | |||||
| cbxPilihNota.getItems().setAll( | |||||
| "Tunai", | |||||
| "Bon", | |||||
| "Bawa Dulu", | |||||
| "Retur" | |||||
| ); | |||||
| } | |||||
| public DialogTambahNotaController() { | |||||
| try { | |||||
| Window window = getDialogPane().getScene().getWindow(); | |||||
| window.setOnCloseRequest(event -> this.close()); | |||||
| FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogTambahNota.fxml")); | |||||
| loader.setController(this); | |||||
| // DialogCariBarangController controller = loader.<DialogCariBarangController>getController(); | |||||
| Parent root = loader.load(); | |||||
| getDialogPane().setContent(root); | |||||
| getDialogPane().getButtonTypes().add(btnBatal); | |||||
| getDialogPane().getButtonTypes().add(btnLanjutkan); | |||||
| setResultConverter(buttonType -> { | |||||
| if (buttonType == btnLanjutkan) { | |||||
| //radio button mana yang dipilih | |||||
| if (((RadioButton) tgTipe.getSelectedToggle()) == rbBaru) { | |||||
| return "Baru:" + cbxPilihNota.getValue(); | |||||
| } else if (((RadioButton) tgTipe.getSelectedToggle()) == rbAmbilDariCheckout) { | |||||
| return "Checkout:" + tfAmbilDariCheckout.getText(); | |||||
| } | |||||
| //baru, balikin tipe yang dipilih | |||||
| //dari checkout, balikin isi nomor nota (hanya jika nota ditemukan) | |||||
| } | |||||
| return "Batal"; | |||||
| }); | |||||
| setTitle("Tambah Nota"); | |||||
| } catch (IOException ex) { | |||||
| Logger.getLogger(DialogKonfirmasiReturController.class.getName()).log(Level.SEVERE, null, ex); | |||||
| } | |||||
| } | |||||
| @FXML | |||||
| void rbNotaBaruOnAction(ActionEvent event) { | |||||
| cbxPilihNota.setDisable(false); | |||||
| tfAmbilDariCheckout.setDisable(true); | |||||
| } | |||||
| @FXML | |||||
| void rbAmbilDariCheckoutOnAction(ActionEvent event) { | |||||
| cbxPilihNota.setDisable(true); | |||||
| tfAmbilDariCheckout.setDisable(false); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.transaksi; | |||||
| import id.amigogroup.posterminal.api.AmigoPosRx; | |||||
| import id.amigogroup.posterminal.model.MNotaRetur; | |||||
| import id.amigogroup.posterminal.model.MNotaTunai; | |||||
| 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; | |||||
| import java.util.logging.Logger; | |||||
| import javafx.event.ActionEvent; | |||||
| import javafx.fxml.FXML; | |||||
| import javafx.fxml.FXMLLoader; | |||||
| import javafx.fxml.Initializable; | |||||
| import javafx.scene.Parent; | |||||
| import javafx.scene.control.Alert; | |||||
| import javafx.scene.control.Button; | |||||
| import javafx.scene.control.ButtonType; | |||||
| import javafx.scene.control.ComboBox; | |||||
| import javafx.scene.control.Dialog; | |||||
| import javafx.scene.control.RadioButton; | |||||
| import javafx.scene.control.TextField; | |||||
| import javafx.scene.control.ToggleGroup; | |||||
| import javafx.scene.layout.AnchorPane; | |||||
| import javafx.stage.Modality; | |||||
| import javafx.stage.Window; | |||||
| import retrofit2.HttpException; | |||||
| /** | |||||
| * | |||||
| * @author Josua | |||||
| */ | |||||
| public class DialogTambahNotaController extends Dialog<String> implements Initializable { | |||||
| @FXML | |||||
| private AnchorPane apTambahNota; | |||||
| @FXML | |||||
| private ToggleGroup tgTipe; | |||||
| @FXML | |||||
| private RadioButton rbBaru; | |||||
| @FXML | |||||
| private ComboBox<String> cbxPilihNota; | |||||
| @FXML | |||||
| private RadioButton rbAmbilDariCheckout; | |||||
| @FXML | |||||
| private TextField tfAmbilDariCheckout; | |||||
| private AmigoPosRx posRx = new AmigoPosRx(); | |||||
| public static final ButtonType btnLanjutkan = new ButtonType("Lanjutkan"); | |||||
| public static final ButtonType btnBatal = new ButtonType("Batal"); | |||||
| @Override | |||||
| public void initialize(URL url, ResourceBundle rb) { | |||||
| cbxPilihNota.getItems().setAll( | |||||
| "Tunai", | |||||
| "Bon", | |||||
| "Bawa Dulu", | |||||
| "Retur" | |||||
| ); | |||||
| } | |||||
| public DialogTambahNotaController() { | |||||
| try { | |||||
| Window window = getDialogPane().getScene().getWindow(); | |||||
| window.setOnCloseRequest(event -> this.close()); | |||||
| FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogTambahNota.fxml")); | |||||
| loader.setController(this); | |||||
| // DialogCariBarangController controller = loader.<DialogCariBarangController>getController(); | |||||
| Parent root = loader.load(); | |||||
| getDialogPane().setContent(root); | |||||
| getDialogPane().getButtonTypes().add(btnBatal); | |||||
| getDialogPane().getButtonTypes().add(btnLanjutkan); | |||||
| Button btnLanjutkanR = (Button) getDialogPane().lookupButton(btnLanjutkan); | |||||
| btnLanjutkanR.addEventFilter(ActionEvent.ACTION, event -> { | |||||
| if (((RadioButton) tgTipe.getSelectedToggle()) == rbAmbilDariCheckout) { | |||||
| boolean notaExists = false; | |||||
| try { | |||||
| switch (tfAmbilDariCheckout.getText().charAt(0)) { | |||||
| case Fucout.KODE_NOTA_BON: | |||||
| break; | |||||
| case Fucout.KODE_NOTA_BAWA: | |||||
| break; | |||||
| case Fucout.KODE_NOTA_RETUR: | |||||
| Observable<MNotaRetur> mNotaReturObservable | |||||
| = posRx.getMNotaReturByNoNota(tfAmbilDariCheckout.getText()); | |||||
| MNotaRetur resultMNotaRetur | |||||
| = mNotaReturObservable.blockingFirst(); | |||||
| if (resultMNotaRetur != null) { | |||||
| notaExists = true; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| Observable<MNotaTunai> mNotaTunaiObservable | |||||
| = posRx.getMNotaTunaiByNoNota(tfAmbilDariCheckout.getText()); | |||||
| MNotaTunai resultMNotaTunai | |||||
| = mNotaTunaiObservable.blockingFirst(); | |||||
| if (resultMNotaTunai != null) { | |||||
| notaExists = true; | |||||
| } | |||||
| break; | |||||
| } | |||||
| } catch (HttpException he) { | |||||
| switch (he.code()) { | |||||
| case HttpURLConnection.HTTP_NOT_FOUND: | |||||
| Alert alert = AlertUtil.getAlertError( | |||||
| AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE, | |||||
| "Data nota dengan nomor tersebut tidak ditemukan"); | |||||
| alert.initOwner(apTambahNota.getScene().getWindow()); | |||||
| alert.initModality(Modality.APPLICATION_MODAL); | |||||
| alert.show(); | |||||
| } | |||||
| } catch (Exception e) { | |||||
| Alert alert = AlertUtil.getAlertError( | |||||
| AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, | |||||
| AlertUtil.ERROR_TIDAK_TERDUGA_MESSAGE); | |||||
| alert.initOwner(apTambahNota.getScene().getWindow()); | |||||
| alert.initModality(Modality.APPLICATION_MODAL); | |||||
| alert.show(); | |||||
| Logger.getLogger(DialogTambahNotaController.class.getName()).log(Level.SEVERE, null, e); | |||||
| } | |||||
| if (!notaExists) { | |||||
| event.consume(); | |||||
| } | |||||
| } | |||||
| }); | |||||
| setResultConverter(buttonType -> { | |||||
| if (buttonType == btnLanjutkan) { | |||||
| //radio button mana yang dipilih | |||||
| if (((RadioButton) tgTipe.getSelectedToggle()) == rbBaru) { | |||||
| return "Baru:" + cbxPilihNota.getValue(); | |||||
| } else if (((RadioButton) tgTipe.getSelectedToggle()) == rbAmbilDariCheckout) { | |||||
| return "Checkout:" + tfAmbilDariCheckout.getText(); | |||||
| } | |||||
| } | |||||
| return "Batal"; | |||||
| }); | |||||
| setTitle("Tambah Nota"); | |||||
| } catch (IOException ex) { | |||||
| Logger.getLogger(DialogKonfirmasiReturController.class.getName()).log(Level.SEVERE, null, ex); | |||||
| } | |||||
| } | |||||
| @FXML | |||||
| void rbNotaBaruOnAction(ActionEvent event) { | |||||
| cbxPilihNota.setDisable(false); | |||||
| tfAmbilDariCheckout.setDisable(true); | |||||
| } | |||||
| @FXML | |||||
| void rbAmbilDariCheckoutOnAction(ActionEvent event) { | |||||
| cbxPilihNota.setDisable(true); | |||||
| tfAmbilDariCheckout.setDisable(false); | |||||
| } | |||||
| } | |||||
| @@ -17,6 +17,9 @@ import javafx.scene.image.ImageView; | |||||
| public class AlertUtil { | public class AlertUtil { | ||||
| public static final String ERROR_TIDAK_DITEMUKAN_TITLE = "Error: Data Tidak Ditemukan"; | 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 final String ERROR_TIDAK_TERDUGA_TITLE = "Error: Terjadi Kesalahan"; | ||||
| public static final String ERROR_TIDAK_TERDUGA_MESSAGE = "Terjadi kesalahan yang tidak terduga."; | |||||
| public static final String ERROR_KONEKSI_TIMEOUT_TITLE = "Error: Timeout - Koneksi Gagal"; | |||||
| public static final String ERROR_KONEKSI_TIMEOUT_MESSAGE = "Koneksi ke server mengalami kegagalan."; | |||||
| public static Alert getAlertError(String title, String message){ | public static Alert getAlertError(String title, String message){ | ||||
| Alert alert = new Alert(Alert.AlertType.ERROR, message, ButtonType.OK); | Alert alert = new Alert(Alert.AlertType.ERROR, message, ButtonType.OK); | ||||
| @@ -33,6 +33,9 @@ public class Fucout { | |||||
| public static final String TIPE_NOTA_RETUR = "Retur"; | public static final String TIPE_NOTA_RETUR = "Retur"; | ||||
| //VALUES | //VALUES | ||||
| public static final char KODE_NOTA_BON = 'B'; | |||||
| public static final char KODE_NOTA_BAWA = 'W'; | |||||
| public static final char KODE_NOTA_RETUR = 'R'; | |||||
| public static final int KONVERSI_POIN = 100000; | public static final int KONVERSI_POIN = 100000; | ||||
| //IMAGES URL | //IMAGES URL | ||||
| @@ -81,7 +81,7 @@ | |||||
| </GridPane> | </GridPane> | ||||
| </bottom> | </bottom> | ||||
| <left> | <left> | ||||
| <SplitPane dividerPositions="0.45" orientation="VERTICAL" prefWidth="200.0"> | |||||
| <SplitPane dividerPositions="0.5" orientation="VERTICAL" prefWidth="200.0"> | |||||
| <items> | <items> | ||||
| <ScrollPane fx:id="spNavigasi" fitToHeight="true" fitToWidth="true" style="-fx-background-color: transparent;"> | <ScrollPane fx:id="spNavigasi" fitToHeight="true" fitToWidth="true" style="-fx-background-color: transparent;"> | ||||
| <content> | <content> | ||||
| @@ -101,9 +101,6 @@ | |||||
| <Insets bottom="9.0" right="5.0" top="14.0" /> | <Insets bottom="9.0" right="5.0" top="14.0" /> | ||||
| </VBox.margin> | </VBox.margin> | ||||
| </Button> | </Button> | ||||
| <Button fx:id="btnTunai1Static" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="button-navigasi-transaksi" text="Tunai: 03-0120-00001" /> | |||||
| <Button fx:id="btnRetur1Static" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="button-navigasi-transaksi" text="Retur: R-03-0120-00001" /> | |||||
| <Button fx:id="btnTunai2Static" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="button-navigasi-transaksi" text="Tunai: 03-0120-00002" /> | |||||
| </children> | </children> | ||||
| <padding> | <padding> | ||||
| <Insets left="5.0" /> | <Insets left="5.0" /> | ||||