From 294d635cb3ded451abcc7fe2e9ae0dd256cfc77c Mon Sep 17 00:00:00 2001 From: Josua Pascario Date: Mon, 23 Mar 2020 14:47:25 +0700 Subject: [PATCH] -Mendirect dari dialog pembayaran belum lunas ke cetak nota -Membuat notif error jika pembayaran masih kurang -Menambahkan tgl dan jam di form utama --- .../posterminal/FormUtamaController.java | 19 ++++++- .../posterminal/bayar/BayarInterface.java | 2 + ...ialogSelesaiBayarTidakLunasController.java | 56 +++++++++++++++++++ .../bayar/FormBayarController.java | 7 +++ .../posterminal/util/AlertUtil.java | 1 + .../fxml/DialogSelesaiBayarTidakLunas.fxml | 3 +- src/main/resources/fxml/FormUtama.fxml | 2 +- 7 files changed, 86 insertions(+), 4 deletions(-) diff --git a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java index 9431b9f..9b1222e 100644 --- a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java +++ b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java @@ -20,14 +20,20 @@ import io.reactivex.disposables.Disposable; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.ResourceBundle; +import java.util.Timer; +import java.util.TimerTask; import java.util.logging.Level; import java.util.logging.Logger; +import javafx.animation.Animation; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -50,6 +56,7 @@ import javafx.scene.layout.BorderPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; import javafx.stage.Window; +import javafx.util.Duration; import retrofit2.HttpException; public class FormUtamaController implements Initializable { @@ -78,6 +85,8 @@ public class FormUtamaController implements Initializable { private Label lblNoTelpPelanggan; @FXML private TextField tfScanMember; + @FXML + private Label lblTanggal; private final FormFactory formFactory = new FormFactory(); @@ -103,8 +112,8 @@ public class FormUtamaController implements Initializable { if (SystemValue.konversiPoin == null) { posRx.getNilaiKonversiPoin().subscribe(getNilaiKonversiPoin); } - System.out.println("Hello"); + setTanggalJam(); initShorcuts(); } @@ -641,6 +650,14 @@ public class FormUtamaController implements Initializable { } }; + public void setTanggalJam() { + Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(1), ev -> { + lblTanggal.setText(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date())); + })); + timeline.setCycleCount(Animation.INDEFINITE); + timeline.play(); + } + Observer getNilaiKonversiPoin = new Observer() { @Override public void onSubscribe(Disposable dspsbl) { diff --git a/src/main/java/id/amigogroup/posterminal/bayar/BayarInterface.java b/src/main/java/id/amigogroup/posterminal/bayar/BayarInterface.java index 51471b9..c03fa18 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/BayarInterface.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/BayarInterface.java @@ -6,6 +6,7 @@ package id.amigogroup.posterminal.bayar; import javafx.scene.Node; +import javafx.stage.Window; /** * @@ -21,5 +22,6 @@ public interface BayarInterface { final String BAYAR_POIN = "Poin"; public BayarContent getBayarContent(); + public Window getWindow(); public void updateKurangBayarView(); } diff --git a/src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java b/src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java index 1651cda..17002f4 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java @@ -5,26 +5,38 @@ */ package id.amigogroup.posterminal.bayar; +import id.amigogroup.posterminal.FormUtamaController; import id.amigogroup.posterminal.pencarian.DialogCariBarangController; +import id.amigogroup.posterminal.pencarian.DialogCetakNotaController; +import id.amigogroup.posterminal.util.AlertUtil; import id.amigogroup.posterminal.util.Fucout; import java.io.IOException; import java.net.URL; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; +import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.Parent; +import javafx.scene.control.Alert; import javafx.scene.control.ButtonBar; import javafx.scene.control.ButtonType; import javafx.scene.control.CheckBox; import javafx.scene.control.Dialog; import javafx.scene.control.Label; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyCodeCombination; +import javafx.scene.input.KeyCombination; +import javafx.scene.layout.AnchorPane; import javafx.scene.layout.VBox; import javafx.stage.Window; @@ -35,6 +47,8 @@ import javafx.stage.Window; */ public class DialogSelesaiBayarTidakLunasController extends Dialog implements Initializable, BayarInterface { + @FXML + private AnchorPane apContent; @FXML private CheckBox chkTunai; @FXML @@ -60,6 +74,7 @@ public class DialogSelesaiBayarTidakLunasController extends Dialog implements In private List daftarChkBayarSyarat; private List daftarChkBayarOpsional; public BayarContent bayarContent = new BayarContent(); + private FormUtamaController parentFormUtamaController = null; /** * Initializes the controller class. @@ -74,6 +89,42 @@ public class DialogSelesaiBayarTidakLunasController extends Dialog implements In daftarChkBayarOpsional.add(chkOvo); daftarChkBayarOpsional.add(chkPoin); getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonBar.ButtonData.CANCEL_CLOSE)); + initShortcuts(); + } + + public void initData(FormUtamaController parent) { + this.parentFormUtamaController = parent; + } + + private void initShortcuts() { + Map listShortcuts = new HashMap<>(); + + KeyCombination kcSelesaiBayar = new KeyCodeCombination(KeyCode.F10); + Runnable rnSelesaiBayar = () -> { + if (bayarContent.getTotalBayar() >= bayarContent.getTotalPerluBayar()) { + if (parentFormUtamaController != null) { + DialogCetakNotaController dialogCetakNotaController = new DialogCetakNotaController(); + dialogCetakNotaController.initOwner(parent.getWindow()); + dialogCetakNotaController.initData( + parentFormUtamaController.notaContent.getControllerTunai() != null + ? parentFormUtamaController.notaContent.getControllerTunai().daftarTabelTransaksi : null, + parentFormUtamaController.notaContent.getControllerRetur() != null + ? parentFormUtamaController.notaContent.getControllerRetur().daftarTabelRetur : null, + this); + Optional result = dialogCetakNotaController.showAndWait(); + } + } else { + Alert alert = AlertUtil.getAlertWarning( + AlertUtil.DIALOG_UANG_BELUM_CUKUP, + "Nominal yang anda masukan masih kurang"); + alert.show(); + } + }; + listShortcuts.put(kcSelesaiBayar, rnSelesaiBayar); + + Platform.runLater(() -> { + apContent.getScene().getAccelerators().putAll(listShortcuts); + }); } public DialogSelesaiBayarTidakLunasController(BayarInterface parent, int kurangBayar) { @@ -226,4 +277,9 @@ public class DialogSelesaiBayarTidakLunasController extends Dialog implements In lblPerluBayar.setText(Fucout.getTextColon(Fucout.formatRupiah( bayarContent.getTotalPerluBayar() - bayarContent.getTotalBayar()))); } + + @Override + public Window getWindow() { + return apContent.getScene().getWindow(); + } } diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java index 83629fd..f4a9c66 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java @@ -32,6 +32,7 @@ import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCombination; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.VBox; +import javafx.stage.Window; /** * FXML Controller class @@ -136,6 +137,7 @@ public class FormBayarController implements Initializable, BayarInterface { = new DialogSelesaiBayarTidakLunasController(this, bayarContent.getTotalPerluBayar() - bayarContent.getTotalBayar()); + dsbtlc.initData(parent); dsbtlc.initOwner(apContent.getScene().getWindow()); dsbtlc.show(); } @@ -297,4 +299,9 @@ public class FormBayarController implements Initializable, BayarInterface { lblKurangBayar.setText(Fucout.formatRupiah( bayarContent.getTotalPerluBayar() - bayarContent.getTotalBayar())); } + + @Override + public Window getWindow() { + return apContent.getScene().getWindow(); + } } diff --git a/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java b/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java index f945d3e..908f8a1 100644 --- a/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java +++ b/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java @@ -25,6 +25,7 @@ public class AlertUtil { public static final String ERROR_KONEKSI_TIMEOUT_MESSAGE = "Koneksi ke server mengalami kegagalan."; public static final String DIALOG_KONFIRMASI_MESSAGE = "Apakah anda yakin?"; public static final String ERROR_TIDAK_LENGKAP_TITLE = "Error: Data Tidak Lengkap"; + public static final String DIALOG_UANG_BELUM_CUKUP = "Nominal Belum Cukup"; public static final ButtonType BUTTON_YA = new ButtonType("Ya", ButtonData.YES); public static final ButtonType BUTTON_TIDAK = new ButtonType("Tidak", ButtonData.NO); diff --git a/src/main/resources/fxml/DialogSelesaiBayarTidakLunas.fxml b/src/main/resources/fxml/DialogSelesaiBayarTidakLunas.fxml index ee0e86d..301e603 100644 --- a/src/main/resources/fxml/DialogSelesaiBayarTidakLunas.fxml +++ b/src/main/resources/fxml/DialogSelesaiBayarTidakLunas.fxml @@ -9,8 +9,7 @@ - - +