diff --git a/src/main/java/id/amigogroup/posterminal/FormFactory.java b/src/main/java/id/amigogroup/posterminal/FormFactory.java index 7442ecd..5955dc4 100644 --- a/src/main/java/id/amigogroup/posterminal/FormFactory.java +++ b/src/main/java/id/amigogroup/posterminal/FormFactory.java @@ -25,7 +25,7 @@ public class FormFactory { loader.setLocation(getClass().getResource("/fxml/FormBayar.fxml")); node = loader.load(); FormBayarController fbc = loader.getController(); -// fetc.initData(parent); + fbc.initData(parent); break; } } catch (IOException ex) { diff --git a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java index 7979c22..4ba96fe 100644 --- a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java +++ b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java @@ -84,7 +84,7 @@ public class FormUtamaController implements Initializable { private int jumlahNota = 0; private final char NOTA_PREV = 'p'; private final char NOTA_NEXT = 'n'; - private final NotaContent notaContent = new NotaContent(); + public final NotaContent notaContent = new NotaContent(); private final AmigoPosRx posRx = new AmigoPosRx(); /** @@ -164,28 +164,28 @@ public class FormUtamaController implements Initializable { try { switch (tipe) { case FormConstanta.TRANSAKSI_TUNAI: - if (notaContent.nodeTunai != null) { - node = notaContent.nodeTunai; + if (notaContent.getNodeTunai() != null) { + node = notaContent.getNodeTunai(); } else { loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml")); node = loader.load(); - notaContent.nodeTunai = node; + notaContent.setNodeTunai(node); FormTransaksiTunaiController fttc = loader.getController(); - notaContent.controllerTunai = fttc; + notaContent.setControllerTunai(fttc); fttc.initData(noNota, baru); } break; case FormConstanta.TRANSAKSI_RETUR: - if (notaContent.nodeRetur != null) { - node = notaContent.nodeRetur; + if (notaContent.getNodeRetur() != null) { + node = notaContent.getNodeRetur(); } else { loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml")); node = loader.load(); - notaContent.nodeRetur = node; + notaContent.setNodeRetur(node); FormTransaksiReturController ftrc = loader.getController(); - notaContent.controllerRetur = ftrc; + notaContent.setControllerRetur(ftrc); ftrc.initData(noNota, baru); } break; @@ -257,10 +257,10 @@ public class FormUtamaController implements Initializable { BarangFull barangFull = result.get(); switch (tipeTransaksiState) { case FormConstanta.TRANSAKSI_TUNAI: - if (notaContent.controllerTunai != null) { + if (notaContent.getControllerTunai() != null) { if (barangFull.getBarang() != null && barangFull.getNoBarang() != null && barangFull.getBarang().getIdGabungan().equals(barangFull.getNoBarang().getIdGabungan())) { - notaContent.controllerTunai.addToTable(barangFull.getBarang(), barangFull.getNoBarang()); + notaContent.getControllerTunai().addToTable(barangFull.getBarang(), barangFull.getNoBarang()); } else { Alert alert = AlertUtil.getAlertWarning( AlertUtil.ERROR_TIDAK_LENGKAP_TITLE, @@ -385,9 +385,9 @@ public class FormUtamaController implements Initializable { setContent(null); } - if (notaContent.btnTunai != null) { - navigasi.remove(notaContent.btnTunai); - vbNavigasi.getChildren().remove(notaContent.btnTunai); + if (notaContent.getBtnTunai() != null) { + navigasi.remove(notaContent.getBtnTunai()); + vbNavigasi.getChildren().remove(notaContent.getBtnTunai()); } Button buttonBaru = generateButtonNota(Fucout.getNoNotaTemporary(), @@ -396,16 +396,16 @@ public class FormUtamaController implements Initializable { true); navigasi.add(buttonBaru); vbNavigasi.getChildren().add(buttonBaru); - notaContent.btnTunai = buttonBaru; + notaContent.setBtnTunai(buttonBaru); jumlahNota++; } else if (hasilReturn.get().equals("Baru:Bon")) { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BON)) { setContent(null); } - if (notaContent.btnBon != null) { - navigasi.remove(notaContent.btnBon); - vbNavigasi.getChildren().remove(notaContent.btnBon); + if (notaContent.getBtnBon() != null) { + navigasi.remove(notaContent.getBtnBon()); + vbNavigasi.getChildren().remove(notaContent.getBtnBon()); } Button buttonBaru = generateButtonNota("B-" + Fucout.getNoNotaTemporary(), @@ -414,16 +414,16 @@ public class FormUtamaController implements Initializable { true); navigasi.add(buttonBaru); vbNavigasi.getChildren().add(buttonBaru); - notaContent.btnBon = buttonBaru; + notaContent.setBtnBon(buttonBaru); jumlahNota++; } else if (hasilReturn.get().equals("Baru:Bawa Dulu")) { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BAWA)) { setContent(null); } - if (notaContent.btnBawa != null) { - navigasi.remove(notaContent.btnBawa); - vbNavigasi.getChildren().remove(notaContent.btnBawa); + if (notaContent.getBtnBawa() != null) { + navigasi.remove(notaContent.getBtnBawa()); + vbNavigasi.getChildren().remove(notaContent.getBtnBawa()); } Button buttonBaru = generateButtonNota("W-" + Fucout.getNoNotaTemporary(), @@ -432,16 +432,16 @@ public class FormUtamaController implements Initializable { true); navigasi.add(buttonBaru); vbNavigasi.getChildren().add(buttonBaru); - notaContent.btnBawa = buttonBaru; + notaContent.setBtnBawa(buttonBaru); jumlahNota++; } else if (hasilReturn.get().equals("Baru:Retur")) { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) { setContent(null); } - if (notaContent.btnRetur != null) { - navigasi.remove(notaContent.btnRetur); - vbNavigasi.getChildren().remove(notaContent.btnRetur); + if (notaContent.getBtnRetur() != null) { + navigasi.remove(notaContent.getBtnRetur()); + vbNavigasi.getChildren().remove(notaContent.getBtnRetur()); } Button buttonBaru = generateButtonNota("R-" + Fucout.getNoNotaTemporary(), @@ -450,7 +450,7 @@ public class FormUtamaController implements Initializable { true); navigasi.add(buttonBaru); vbNavigasi.getChildren().add(buttonBaru); - notaContent.btnRetur = buttonBaru; + notaContent.setBtnRetur(buttonBaru); jumlahNota++; } else if (hasilReturn.get().contains("Checkout:")) { String noNota = hasilReturn.get().substring(9); @@ -470,31 +470,31 @@ public class FormUtamaController implements Initializable { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) { setContent(null); } - if (notaContent.btnRetur != null) { - navigasi.remove(notaContent.btnRetur); - vbNavigasi.getChildren().remove(notaContent.btnRetur); + if (notaContent.getBtnRetur() != null) { + navigasi.remove(notaContent.getBtnRetur()); + vbNavigasi.getChildren().remove(notaContent.getBtnRetur()); } buttonBaru = generateButtonNota(noNota, FormConstanta.TRANSAKSI_RETUR, Fucout.TEKS_TIPE_NOTA_RETUR, false); - notaContent.btnRetur = buttonBaru; + notaContent.setBtnRetur(buttonBaru); break; default: if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_TUNAI)) { setContent(null); } - if (notaContent.btnTunai != null) { - navigasi.remove(notaContent.btnTunai); - vbNavigasi.getChildren().remove(notaContent.btnTunai); + if (notaContent.getBtnTunai() != null) { + navigasi.remove(notaContent.getBtnTunai()); + vbNavigasi.getChildren().remove(notaContent.getBtnTunai()); } buttonBaru = generateButtonNota(noNota, FormConstanta.TRANSAKSI_TUNAI, Fucout.TEKS_TIPE_NOTA_TUNAI, false); - notaContent.btnTunai = buttonBaru; + notaContent.setBtnTunai(buttonBaru); break; } if (buttonBaru != null) { @@ -550,15 +550,129 @@ public class FormUtamaController implements Initializable { } }; - private class NotaContent { + public class NotaContent { + + private Button btnTunai; + private FormTransaksiTunaiController controllerTunai = null; + private Node nodeTunai = null; + private Button btnBawa; + private Button btnBon; + private Button btnRetur; + private FormTransaksiReturController controllerRetur = null; + private Node nodeRetur = null; + + /** + * @return the btnTunai + */ + public Button getBtnTunai() { + return btnTunai; + } + + /** + * @param btnTunai the btnTunai to set + */ + public void setBtnTunai(Button btnTunai) { + this.btnTunai = btnTunai; + } + + /** + * @return the controllerTunai + */ + public FormTransaksiTunaiController getControllerTunai() { + return controllerTunai; + } + + /** + * @param controllerTunai the controllerTunai to set + */ + public void setControllerTunai(FormTransaksiTunaiController controllerTunai) { + this.controllerTunai = controllerTunai; + } + + /** + * @return the nodeTunai + */ + public Node getNodeTunai() { + return nodeTunai; + } + + /** + * @param nodeTunai the nodeTunai to set + */ + public void setNodeTunai(Node nodeTunai) { + this.nodeTunai = nodeTunai; + } + + /** + * @return the btnBawa + */ + public Button getBtnBawa() { + return btnBawa; + } + + /** + * @param btnBawa the btnBawa to set + */ + public void setBtnBawa(Button btnBawa) { + this.btnBawa = btnBawa; + } - Button btnTunai; - FormTransaksiTunaiController controllerTunai = null; - Node nodeTunai = null; - Button btnBawa; - Button btnBon; - Button btnRetur; - FormTransaksiReturController controllerRetur = null; - Node nodeRetur = null; + /** + * @return the btnBon + */ + public Button getBtnBon() { + return btnBon; + } + + /** + * @param btnBon the btnBon to set + */ + public void setBtnBon(Button btnBon) { + this.btnBon = btnBon; + } + + /** + * @return the btnRetur + */ + public Button getBtnRetur() { + return btnRetur; + } + + /** + * @param btnRetur the btnRetur to set + */ + public void setBtnRetur(Button btnRetur) { + this.btnRetur = btnRetur; + } + + /** + * @return the controllerRetur + */ + public FormTransaksiReturController getControllerRetur() { + return controllerRetur; + } + + /** + * @param controllerRetur the controllerRetur to set + */ + public void setControllerRetur(FormTransaksiReturController controllerRetur) { + this.controllerRetur = controllerRetur; + } + + /** + * @return the nodeRetur + */ + public Node getNodeRetur() { + return nodeRetur; + } + + /** + * @param nodeRetur the nodeRetur to set + */ + public void setNodeRetur(Node nodeRetur) { + this.nodeRetur = nodeRetur; + } + + } } diff --git a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java index 0fda567..2850a77 100644 --- a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java +++ b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java @@ -18,6 +18,7 @@ import id.amigogroup.posterminal.util.AlertUtil; import io.reactivex.Observable; import io.reactivex.schedulers.Schedulers; import java.net.SocketException; +import java.net.SocketTimeoutException; import java.net.UnknownHostException; import java.util.List; import java.util.logging.Level; @@ -102,7 +103,8 @@ public class AmigoPosRx { } public static void handleGenericError(Throwable error, Window window) { - if (error instanceof SocketException || error instanceof UnknownHostException) { + if (error instanceof SocketException || error instanceof UnknownHostException + || error instanceof SocketTimeoutException) { Platform.runLater(() -> { Alert alert = AlertUtil.getAlertError( AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE, diff --git a/src/main/java/id/amigogroup/posterminal/bayar/BayarContent.java b/src/main/java/id/amigogroup/posterminal/bayar/BayarContent.java index 9a7b78d..64e94a4 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/BayarContent.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/BayarContent.java @@ -26,7 +26,7 @@ public class BayarContent { private Node nodePoin; private int bayarPoin; - private int totalPerluBayar = 178800; + private int totalPerluBayar = 0; private int totalBayar = 0; private void hitungBayar() { diff --git a/src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java b/src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java index 6ff73b3..1651cda 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java @@ -20,6 +20,8 @@ import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.Parent; +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; @@ -71,6 +73,7 @@ public class DialogSelesaiBayarTidakLunasController extends Dialog implements In daftarChkBayarOpsional.add(chkGopay); daftarChkBayarOpsional.add(chkOvo); daftarChkBayarOpsional.add(chkPoin); + getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonBar.ButtonData.CANCEL_CLOSE)); } public DialogSelesaiBayarTidakLunasController(BayarInterface parent, int kurangBayar) { diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java index d4ab4d6..50295dd 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java @@ -5,6 +5,7 @@ */ package id.amigogroup.posterminal.bayar; +import id.amigogroup.posterminal.FormUtamaController; import id.amigogroup.posterminal.util.Fucout; import java.io.IOException; import java.net.URL; @@ -86,6 +87,14 @@ public class FormBayarController implements Initializable, BayarInterface { initShortcuts(); } + public void initData(FormUtamaController parent) { + if (parent != null && parent.notaContent.getControllerTunai() != null) { + bayarContent.setTotalPerluBayar(parent.notaContent.getControllerTunai().total); + updateGrandTotalView(); + updateKurangBayarView(); + } + } + private void initShortcuts() { Map listShortcuts = new HashMap<>(); @@ -161,7 +170,7 @@ public class FormBayarController implements Initializable, BayarInterface { vbContent.getChildren().add(node); bayarContent.setNodeRetur(node); - + FormBayarReturController fbrc = loader.getController(); fbrc.initData(this); } else { @@ -200,7 +209,7 @@ public class FormBayarController implements Initializable, BayarInterface { vbContent.getChildren().add(node); bayarContent.setNodePoin(node); - + FormBayarPoinController fbpc = loader.getController(); fbpc.initData(this); } else { @@ -244,7 +253,11 @@ public class FormBayarController implements Initializable, BayarInterface { } } } - + + private void updateGrandTotalView() { + lblGrandTotal.setText(Fucout.formatRupiah(bayarContent.getTotalPerluBayar())); + } + @Override public BayarContent getBayarContent() { return bayarContent; diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java index 6014043..22e5ff7 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java @@ -89,13 +89,16 @@ public class FormTransaksiTunaiController implements Initializable { private String noNota = ""; private AmigoPosRx posRx = new AmigoPosRx(); + public int total = 0; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { - fldScan.requestFocus(); + Platform.runLater(() -> { + fldScan.requestFocus(); + }); tcNo.setCellValueFactory((TableColumn.CellDataFeatures cell) -> { return new ReadOnlyObjectWrapper(tbvTransaksi.getItems().indexOf(cell.getValue()) + 1); @@ -113,7 +116,7 @@ public class FormTransaksiTunaiController implements Initializable { tcAction.setCellValueFactory(new PropertyValueFactory<>("btnAction")); tbvTransaksi.setItems(daftarTabelTransaksi); -// fillTable(new ArrayList<>()); + lblGrandTotal.setText(Fucout.formatRupiah(0)); } public void initData(String noNota, boolean baru) { @@ -133,6 +136,7 @@ public class FormTransaksiTunaiController implements Initializable { private void refreshData(List daftarNotaTunai) { daftarTabelTransaksi.clear(); + hitungTotal(daftarNotaTunai); String[] promo = {"Ulang Tahun", "Harbolnas", "Ultah Amigo"}; for (DNotaTunai dNotaTunai : daftarNotaTunai) { @@ -187,24 +191,31 @@ public class FormTransaksiTunaiController implements Initializable { public void addToTable(Barang barang, NoBarang noBarang) { if (barang != null && noBarang != null) { + fldScan.setText(""); if (noBarang.getStokOperasional() > 0) { boolean ada = false; for (TabelBarangTunai tbt : daftarTabelTransaksi) { if (tbt.getKode().equals(barang.getKodeBarang()) && tbt.getUkur().equals(noBarang.getNomor())) { - if (noBarang.getStokOperasional() >= tbt.getData().getJumlah() + 1) { - tbt.getData().setJumlah(tbt.getData().getJumlah() + 1); - tbt.setJumlah(String.valueOf(tbt.getData().getJumlah())); - tbvTransaksi.refresh(); - } else { - System.out.println("Halo"); - Platform.runLater(() -> { - Alert alert = AlertUtil.getAlertWarning( - "Stok Habis", - "Tidak bisa menambahkan barang karena stok barang habis"); - alert.initOwner(apMain.getScene().getWindow()); - alert.show(); - }); - + if (tbt.getData() != null) { + if (noBarang.getStokOperasional() >= tbt.getData().getJumlah() + 1) { + tbt.getData().setJumlah(tbt.getData().getJumlah() + 1); + tbt.setJumlah(String.valueOf(tbt.getData().getJumlah())); + tbt.setSubTotal(Fucout.formatRibuan( + tbt.getData().getJumlah() * tbt.getData().getHargaJual())); + + total += noBarang.getHargaJual(); + updateLabelGrandTotal(); + tbvTransaksi.refresh(); + } else { + Platform.runLater(() -> { + Alert alert = AlertUtil.getAlertWarning( + "Stok Habis", + "Tidak bisa menambahkan barang karena stok barang habis"); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + }); + + } } ada = true; @@ -261,6 +272,8 @@ public class FormTransaksiTunaiController implements Initializable { btnAction); tbt.setData(dNotaTunai); + total += noBarang.getHargaJual(); + updateLabelGrandTotal(); daftarTabelTransaksi.add(tbt); } } else { @@ -275,6 +288,22 @@ public class FormTransaksiTunaiController implements Initializable { } } + private int hitungTotal(List daftarDNotaTunai) { + int totalTemp = 0; + + for (DNotaTunai dNotaTunai : daftarDNotaTunai) { + totalTemp += dNotaTunai.getJumlah() * dNotaTunai.getHargaJual(); + } + total = totalTemp; + updateLabelGrandTotal(); + + return 0; + } + + private void updateLabelGrandTotal() { + lblGrandTotal.setText(Fucout.formatRupiah(total)); + } + //SCAN BARANG @FXML void fldScanOnKeyPressed(KeyEvent event) {