From ff62936b5b010187c08c064e703d68e9b4751c7a Mon Sep 17 00:00:00 2001 From: Josua Pascario Date: Tue, 10 Mar 2020 15:47:10 +0700 Subject: [PATCH] -Menambahkan UI Cetak Nota, Memisahkan transaksi berdasarkan jenisnya(Tunai dan Retur) -Penambahan kolom entry pembayaran-pembayarannya transaksi tunai dan pakai kartu --- .../posterminal/FormUtamaController.java | 22 ++ .../bayar/FormBayarController.java | 6 +- .../bayar/FormBayarKartuController.java | 9 +- .../pencarian/DialogCetakNotaController.java | 202 ++++++++++++++++++ .../FormTransaksiReturController.java | 22 +- .../FormTransaksiTunaiController.java | 4 +- src/main/resources/fxml/DialogCetakNota.fxml | 117 ++++++++++ src/main/resources/fxml/FormBayarKartu.fxml | 2 +- 8 files changed, 367 insertions(+), 17 deletions(-) create mode 100644 src/main/java/id/amigogroup/posterminal/pencarian/DialogCetakNotaController.java create mode 100644 src/main/resources/fxml/DialogCetakNota.fxml diff --git a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java index 7979c22..710608e 100644 --- a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java +++ b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java @@ -5,6 +5,7 @@ import id.amigogroup.posterminal.model.Pelanggan; import id.amigogroup.posterminal.pencarian.DialogCariBarangController; import id.amigogroup.posterminal.pencarian.DialogCariNotaTundaController; import id.amigogroup.posterminal.pencarian.DialogCariPelangganController; +import id.amigogroup.posterminal.pencarian.DialogCetakNotaController; import id.amigogroup.posterminal.pencarian.DialogCetakUlangNotaController; import id.amigogroup.posterminal.transaksi.BarangFull; import id.amigogroup.posterminal.transaksi.DialogKonfirmasiReturController; @@ -162,6 +163,13 @@ public class FormUtamaController implements Initializable { Node node = null; FXMLLoader loader = new FXMLLoader(); try { + Map listShortcuts = new HashMap<>(); + KeyCombination kcCetakNota = new KeyCodeCombination(KeyCode.F10); + Runnable rnCetakNota = () -> { + openCetakNota(); + }; + listShortcuts.put(kcCetakNota, rnCetakNota); + bpMain.getScene().getAccelerators().putAll(listShortcuts); switch (tipe) { case FormConstanta.TRANSAKSI_TUNAI: if (notaContent.nodeTunai != null) { @@ -225,6 +233,14 @@ public class FormUtamaController implements Initializable { } } + private void openCetakNota() { + DialogCetakNotaController dialogCetakNotaController = new DialogCetakNotaController(); + dialogCetakNotaController.initOwner(bpMain.getScene().getWindow()); + dialogCetakNotaController.initData(notaContent.controllerTunai.daftarTabelTransaksi, + notaContent.controllerRetur.daftarTabelRetur); + Optional result = dialogCetakNotaController.showAndWait(); + } + private void initShorcuts() { Map listShortcuts = new HashMap<>(); @@ -316,6 +332,12 @@ public class FormUtamaController implements Initializable { }; listShortcuts.put(kcCheckout, rnCheckout); + KeyCombination kcCetakNota = new KeyCodeCombination(KeyCode.F10); + Runnable rnCetakNota = () -> { + openCetakNota(); + }; + listShortcuts.put(kcCetakNota, rnCetakNota); + KeyCombination kcCariCetakUlangNota = new KeyCodeCombination(KeyCode.P, KeyCombination.CONTROL_DOWN); Runnable rnCetakUlangNota = () -> { DialogCetakUlangNotaController dialogCetakUlangNota = new DialogCetakUlangNotaController(); diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java index d4ab4d6..bc958ce 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.pencarian.DialogCetakNotaController; import id.amigogroup.posterminal.util.Fucout; import java.io.IOException; import java.net.URL; @@ -12,6 +13,7 @@ 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; @@ -161,7 +163,7 @@ public class FormBayarController implements Initializable, BayarInterface { vbContent.getChildren().add(node); bayarContent.setNodeRetur(node); - + FormBayarReturController fbrc = loader.getController(); fbrc.initData(this); } else { @@ -200,7 +202,7 @@ public class FormBayarController implements Initializable, BayarInterface { vbContent.getChildren().add(node); bayarContent.setNodePoin(node); - + FormBayarPoinController fbpc = loader.getController(); fbpc.initData(this); } else { diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarKartuController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarKartuController.java index a0d9ca8..cbdb825 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarKartuController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarKartuController.java @@ -10,7 +10,7 @@ import java.net.URL; import java.util.ResourceBundle; import javafx.fxml.FXML; import javafx.fxml.Initializable; -import javafx.scene.control.Label; +import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; @@ -23,6 +23,8 @@ import javafx.scene.robot.Robot; */ public class FormBayarKartuController implements Initializable { + @FXML + private ComboBox cbxNamaBank; @FXML private TextField fldNoKartu1; @FXML @@ -42,6 +44,11 @@ public class FormBayarKartuController implements Initializable { @Override public void initialize(URL url, ResourceBundle rb) { initComponents(); + cbxNamaBank.getItems().setAll( + "BCA", "MANDIRI", "MEGA", "CIMB NIAGA", "DANAMON", "BNI", "BPD", "BII", + "NISP", "CITIBANK", "BRI", "HSBC", "PERMATA", "BUKOPIN", "ANZ", "HAGA", "BTN" + ); + cbxNamaBank.getSelectionModel().select(0); } public void initData(BayarInterface parent) { diff --git a/src/main/java/id/amigogroup/posterminal/pencarian/DialogCetakNotaController.java b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCetakNotaController.java new file mode 100644 index 0000000..d33bda8 --- /dev/null +++ b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCetakNotaController.java @@ -0,0 +1,202 @@ +/* + * 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.pencarian; + +import id.amigogroup.posterminal.transaksi.TabelBarangRetur; +import id.amigogroup.posterminal.transaksi.TabelBarangTunai; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.ReadOnlyObjectWrapper; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Parent; +import javafx.scene.control.ButtonBar.ButtonData; +import javafx.scene.control.ButtonType; +import javafx.scene.control.Dialog; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TitledPane; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.VBox; +import javafx.stage.Window; + +/** + * + * @author Josua + */ +public class DialogCetakNotaController extends Dialog implements Initializable { + + @FXML + private ScrollPane spCetakNota; + @FXML + private VBox vbCetakNota; + @FXML + private TitledPane tpTunai; + @FXML + private AnchorPane apTunai; + @FXML + private TableView tbvTunai; + @FXML + private TableColumn tcNoTunai; + @FXML + private TableColumn tcKodeBarangTunai; + @FXML + private TableColumn tcNamaBarangTunai; + @FXML + private TableColumn tcUkurTunai; + @FXML + private TableColumn tcJumlahTunai; + @FXML + private TableColumn tcHargaTunai; + @FXML + private TableColumn tcDisc1Tunai; + @FXML + private TableColumn tcDisc2Tunai; + @FXML + private TableColumn tcSubTotalTunai; + @FXML + private TableColumn tcPramuniagaTunai; + @FXML + private TitledPane tpBawa; + @FXML + private AnchorPane apBawa; + @FXML + private TableView tbvBawa; + @FXML + private TableColumn tcNoBawa; + @FXML + private TableColumn tcKodeBarangBawa; + @FXML + private TableColumn tcNamaBarangBawa; + @FXML + private TableColumn tcUkurBawa; + @FXML + private TableColumn tcJumlahBawa; + @FXML + private TableColumn tcHargaBawa; + @FXML + private TableColumn tcDisc1Bawa; + @FXML + private TableColumn tcDisc2Bawa; + @FXML + private TableColumn tcSubTotalBawa; + @FXML + private TableColumn tcPramuniagaBawa; + @FXML + private TitledPane tpBon; + @FXML + private AnchorPane apBon; + @FXML + private TableView tbvBon; + @FXML + private TableColumn tcNoBon; + @FXML + private TableColumn tcKodeBarangBon; + @FXML + private TableColumn tcNamaBarangBon; + @FXML + private TableColumn tcUkurBon; + @FXML + private TableColumn tcJumlahBon; + @FXML + private TableColumn tcHargaBon; + @FXML + private TableColumn tcDisc1Bon; + @FXML + private TableColumn tcDisc2Bon; + @FXML + private TableColumn tcSubTotalBon; + @FXML + private TableColumn tcPramuniagaBon; + @FXML + private TitledPane tpRetur; + @FXML + private AnchorPane apRetur; + @FXML + private TableView tbvRetur; + @FXML + private TableColumn tcNoRetur; + @FXML + private TableColumn tcKodeBarangRetur; + @FXML + private TableColumn tcNamaBarangRetur; + @FXML + private TableColumn tcUkurRetur; + @FXML + private TableColumn tcJumlahRetur; + @FXML + private TableColumn tcHargaRetur; + @FXML + private TableColumn tcDisc1Retur; + @FXML + private TableColumn tcDisc2Retur; + @FXML + private TableColumn tcSubTotalRetur; + @FXML + private TableColumn tcPramuniagaRetur; + + @Override + public void initialize(URL url, ResourceBundle rb) { + getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE)); + //Tunai + tcNoTunai.setCellValueFactory((TableColumn.CellDataFeatures cell) -> { + return new ReadOnlyObjectWrapper(tbvTunai.getItems().indexOf(cell.getValue()) + 1); + }); + tcKodeBarangTunai.setCellValueFactory(new PropertyValueFactory<>("kode")); + tcNamaBarangTunai.setCellValueFactory(new PropertyValueFactory<>("nama")); + tcUkurTunai.setCellValueFactory(new PropertyValueFactory<>("ukur")); + tcJumlahTunai.setCellValueFactory(new PropertyValueFactory<>("jumlah")); + tcHargaTunai.setCellValueFactory(new PropertyValueFactory<>("harga")); + tcDisc1Tunai.setCellValueFactory(new PropertyValueFactory<>("disc1")); + tcDisc2Tunai.setCellValueFactory(new PropertyValueFactory<>("disc2")); + tcSubTotalTunai.setCellValueFactory(new PropertyValueFactory<>("subTotal")); + tcPramuniagaTunai.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga")); + //Bawa + //Bon + //Retur + tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures cell) -> { + return new ReadOnlyObjectWrapper(tbvRetur.getItems().indexOf(cell.getValue()) + 1); + }); + tcKodeBarangRetur.setCellValueFactory(new PropertyValueFactory<>("kode")); + tcNamaBarangRetur.setCellValueFactory(new PropertyValueFactory<>("nama")); + tcUkurRetur.setCellValueFactory(new PropertyValueFactory<>("ukur")); + tcJumlahRetur.setCellValueFactory(new PropertyValueFactory<>("jumlah")); + tcHargaRetur.setCellValueFactory(new PropertyValueFactory<>("harga")); + tcDisc1Retur.setCellValueFactory(new PropertyValueFactory<>("disc1")); + tcDisc2Retur.setCellValueFactory(new PropertyValueFactory<>("disc2")); + tcSubTotalRetur.setCellValueFactory(new PropertyValueFactory<>("subTotal")); + tcPramuniagaRetur.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga")); + } + + public DialogCetakNotaController() { + try { + Window window = getDialogPane().getScene().getWindow(); + window.setOnCloseRequest(event -> this.close()); + + FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCetakNota.fxml")); + loader.setController(this); + Parent root = loader.load(); + getDialogPane().setContent(root); + setTitle("Cetak Nota"); + } catch (IOException e) { + Logger.getLogger(DialogCetakNotaController.class + .getName()).log(Level.SEVERE, null, e); + } + } + + public void initData(ObservableList daftarTabelTransaksiTunai, + ObservableList daftarTabelTransaksiRetur) { + tbvTunai.setItems(daftarTabelTransaksiTunai); + tbvRetur.setItems(daftarTabelTransaksiRetur); + } +} diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java index 0fafa30..10f9083 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java @@ -105,11 +105,11 @@ public class FormTransaksiReturController implements Initializable { @FXML private Label lblTambahKeTabelRetur; private TableColumn tcAction; - + private final AmigoPosRx posRx = new AmigoPosRx(); private String noNota = ""; private final ObservableList daftarTabelPenjualan = FXCollections.observableArrayList(); - private final ObservableList daftarTabelRetur = FXCollections.observableArrayList(); + public final ObservableList daftarTabelRetur = FXCollections.observableArrayList(); private TabelBarangTunai draggedTabelBarangTunai = null; /** @@ -161,18 +161,18 @@ public class FormTransaksiReturController implements Initializable { daftarTabelRetur.clear(); for (DNotaTunai dNotaTunai : daftarNotaTunai) { - //Button - Button btnAction = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); + //Button + Button btnAction = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); btnAction.setOnAction((t) -> { Alert alert = AlertUtil.getAlertDialogKonfirmasi( - AlertUtil.DIALOG_KONFIRMASI_MESSAGE, - "Yakin ingin menghapus barang?"); - alert.initOwner(apMain.getScene().getWindow()); - alert.show(); - + AlertUtil.DIALOG_KONFIRMASI_MESSAGE, + "Yakin ingin menghapus barang?"); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + }); TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram()); - + String namaBarang = "..."; if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { Barang barang = AmigoPosCache.getInstance().getDaftarBarang() @@ -198,7 +198,7 @@ public class FormTransaksiReturController implements Initializable { tbt.setData(dNotaTunai); daftarTabelPenjualan.add(tbt); - + if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver); } diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java index 6014043..8ef2361 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java @@ -82,11 +82,11 @@ public class FormTransaksiTunaiController implements Initializable { private TableColumn tcAction; @FXML private Label txtTanggal; - final ObservableList daftarTabelTransaksi = FXCollections.observableArrayList(); @FXML private Text lblGrandTotal; - public static final ButtonType btnAction = new ButtonType("BATAL", ButtonBar.ButtonData.YES); + public final ObservableList daftarTabelTransaksi = FXCollections.observableArrayList(); + public static final ButtonType btnAction = new ButtonType("BATAL", ButtonBar.ButtonData.YES); private String noNota = ""; private AmigoPosRx posRx = new AmigoPosRx(); diff --git a/src/main/resources/fxml/DialogCetakNota.fxml b/src/main/resources/fxml/DialogCetakNota.fxml new file mode 100644 index 0000000..a2bb0a8 --- /dev/null +++ b/src/main/resources/fxml/DialogCetakNota.fxml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/fxml/FormBayarKartu.fxml b/src/main/resources/fxml/FormBayarKartu.fxml index f6edc87..176e8c1 100644 --- a/src/main/resources/fxml/FormBayarKartu.fxml +++ b/src/main/resources/fxml/FormBayarKartu.fxml @@ -33,7 +33,7 @@ - +