diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java index 44f89d9..3f9b24e 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java @@ -65,6 +65,7 @@ public class FormBayarController implements Initializable, BayarInterface { private final List daftarChkBayarSyarat; private final List daftarChkBayarOpsional; public BayarContent bayarContent = new BayarContent(); + private FormUtamaController parent = null; public FormBayarController() { daftarChkBayarSyarat = new ArrayList<>(); @@ -90,8 +91,15 @@ public class FormBayarController implements Initializable, BayarInterface { } public void initData(FormUtamaController parent) { + this.parent = parent; if (parent != null && parent.notaContent.getControllerTunai() != null) { - bayarContent.setTotalPerluBayar(parent.notaContent.getControllerTunai().total); + int bayarRetur = 0; + if (parent.notaContent.getControllerRetur() != null + && parent.notaContent.getControllerRetur().tipeRetur.equals( + Fucout.TEKS_TIPE_NOTA_TUNAI)) { + bayarRetur = parent.notaContent.getControllerRetur().nominalRetur; + } + bayarContent.setTotalPerluBayar(parent.notaContent.getControllerTunai().total - bayarRetur); updateGrandTotalView(); updateKurangBayarView(); } @@ -103,7 +111,16 @@ public class FormBayarController implements Initializable, BayarInterface { KeyCombination kcSelesaiBayar = new KeyCodeCombination(KeyCode.F10); Runnable rnSelesaiBayar = () -> { if (bayarContent.getTotalBayar() >= bayarContent.getTotalPerluBayar()) { - + if (parent != null) { + DialogCetakNotaController dialogCetakNotaController = new DialogCetakNotaController(); + dialogCetakNotaController.initOwner(apContent.getScene().getWindow()); + dialogCetakNotaController.initData( + parent.notaContent.getControllerTunai() != null ? + parent.notaContent.getControllerTunai().daftarTabelTransaksi : null, + parent.notaContent.getControllerRetur() != null ? + parent.notaContent.getControllerRetur().daftarTabelRetur : null); + Optional result = dialogCetakNotaController.showAndWait(); + } } else { DialogSelesaiBayarTidakLunasController dsbtlc = new DialogSelesaiBayarTidakLunasController(this, @@ -255,11 +272,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/pencarian/DialogCetakNotaController.java b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCetakNotaController.java index b04220b..39b0568 100644 --- a/src/main/java/id/amigogroup/posterminal/pencarian/DialogCetakNotaController.java +++ b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCetakNotaController.java @@ -1,224 +1,222 @@ -/* - * 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 id.amigogroup.posterminal.util.Fucout; -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.FXCollections; -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.ComboBox; -import javafx.scene.control.Dialog; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; -import javafx.scene.control.TextField; -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; - - public final ObservableList daftarTabelTunai = FXCollections.observableArrayList(); - public final ObservableList daftarTabelRetur = FXCollections.observableArrayList(); - - @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<>("pramuniaga")); - - tbvTunai.setItems(daftarTabelTunai); - //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<>("pramuniaga")); - tbvRetur.setItems(daftarTabelRetur); - } - - 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) { - if (daftarTabelTransaksiTunai != null) { - for (TabelBarangTunai tbt : daftarTabelTransaksiTunai) { - daftarTabelTunai.add(new TabelBarangTunai(tbt.getKode(), tbt.getNama(), tbt.getUkur(), - tbt.getJumlah(), tbt.getHarga(), tbt.getDisc1(), tbt.getDisc2(), null, - tbt.getSubTotal(), Fucout.getText(tbt.getFldPramuniaga().getText()), null)); - } - } - if (daftarTabelTransaksiRetur != null) { - for (TabelBarangRetur tbr : daftarTabelTransaksiRetur) { - daftarTabelRetur.add(new TabelBarangRetur(tbr.getKode(), tbr.getNama(), tbr.getUkur(), - tbr.getJumlah(), tbr.getHarga(), tbr.getDisc1(), tbr.getDisc2(), tbr.getSubTotal(), - Fucout.getText(tbr.getFldPramuniaga().getText()))); - } - } - } -} +/* + * 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 id.amigogroup.posterminal.util.Fucout; +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.FXCollections; +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; + + public final ObservableList daftarTabelTunai = FXCollections.observableArrayList(); + public final ObservableList daftarTabelRetur = FXCollections.observableArrayList(); + + @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<>("pramuniaga")); + + tbvTunai.setItems(daftarTabelTunai); + //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<>("pramuniaga")); + tbvRetur.setItems(daftarTabelRetur); + } + + 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) { + if (daftarTabelTransaksiTunai != null) { + for (TabelBarangTunai tbt : daftarTabelTransaksiTunai) { + daftarTabelTunai.add(new TabelBarangTunai(tbt.getKode(), tbt.getNama(), tbt.getUkur(), + tbt.getJumlah(), tbt.getHarga(), tbt.getDisc1(), tbt.getDisc2(), null, + tbt.getSubTotal(), Fucout.getText(tbt.getFldPramuniaga().getText()), null)); + } + } + if (daftarTabelTransaksiRetur != null) { + for (TabelBarangRetur tbr : daftarTabelTransaksiRetur) { + daftarTabelRetur.add(new TabelBarangRetur(tbr.getKode(), tbr.getNama(), tbr.getUkur(), + tbr.getJumlah(), tbr.getHarga(), tbr.getDisc1(), tbr.getDisc2(), tbr.getSubTotal(), + Fucout.getText(tbr.getFldPramuniaga().getText()))); + } + } + } +} diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java index 7b5d63e..9634388 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java @@ -22,6 +22,7 @@ import io.reactivex.disposables.Disposable; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; +import java.util.Optional; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,6 +34,7 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Alert; import javafx.scene.control.Button; +import javafx.scene.control.ButtonType; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; @@ -121,6 +123,10 @@ public class FormTransaksiReturController implements Initializable { public final ObservableList daftarTabelRetur = FXCollections.observableArrayList(); private TabelBarangTunai draggedTabelBarangTunai = null; + public String lastNoNotaPenjualan = ""; + public String tipeRetur = ""; + public int nominalRetur = 0; + /** * Initializes the controller class. */ @@ -138,7 +144,6 @@ public class FormTransaksiReturController implements Initializable { tcDisc2.setCellValueFactory(new PropertyValueFactory<>("disc2")); tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal")); tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga")); -// tcBtnBatal.setCellValueFactory(new PropertyValueFactory<>("btnBatal")); tbvPenjualan.setItems(daftarTabelPenjualan); tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures cell) -> { @@ -177,16 +182,6 @@ public class FormTransaksiReturController implements Initializable { daftarTabelPenjualan.clear(); for (DNotaTunai dNotaTunai : daftarNotaTunai) { - //Button - Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); - btnBatal.setOnAction((t) -> { - Alert alert = AlertUtil.getAlertDialogKonfirmasi( - AlertUtil.DIALOG_KONFIRMASI_MESSAGE, - "Yakin ingin menghapus barang?"); - alert.initOwner(apMain.getScene().getWindow()); - alert.show(); - - }); TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram()); String namaBarang = "..."; @@ -210,7 +205,7 @@ public class FormTransaksiReturController implements Initializable { dNotaTunai.getHargaJual() * dNotaTunai.getJumlah() )), fldPramuniaga, - btnBatal); + null); tbt.setData(dNotaTunai); daftarTabelPenjualan.add(tbt); @@ -227,14 +222,6 @@ public class FormTransaksiReturController implements Initializable { for (DNotaRetur dNotaRetur : daftarDNotaRetur) { //Button Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); - btnBatal.setOnAction((t) -> { - Alert alert = AlertUtil.getAlertDialogKonfirmasi( - AlertUtil.DIALOG_KONFIRMASI_MESSAGE, - "Yakin ingin menghapus barang?"); - alert.initOwner(apMain.getScene().getWindow()); - alert.show(); - - }); TextField fldPramuniaga = new TextField(dNotaRetur.getKodePram()); String namaBarang = "..."; @@ -259,6 +246,10 @@ public class FormTransaksiReturController implements Initializable { fldPramuniaga, btnBatal); + btnBatal.setOnAction((t) -> { + batalRetur(tbr); + }); + tbr.setData(dNotaRetur); daftarTabelRetur.add(tbr); @@ -268,11 +259,44 @@ public class FormTransaksiReturController implements Initializable { } } + private void batalRetur(TabelBarangRetur tbr) { + Alert alert = AlertUtil.getAlertDialogKonfirmasi( + AlertUtil.DIALOG_KONFIRMASI_MESSAGE, + "Yakin ingin menghapus barang?"); + alert.initOwner(apMain.getScene().getWindow()); + Optional result = alert.showAndWait(); + + if (result.isPresent() && result.get() == AlertUtil.BUTTON_YA) { + if (tbr.getData().getJumlah() > 1) { + tbr.getData().setJumlah(tbr.getData().getJumlah() - 1); + tbr.setJumlah(String.valueOf(tbr.getData().getJumlah())); + tbvRetur.refresh(); + } else { + daftarTabelRetur.remove(tbr); + } + + nominalRetur -= tbr.getData().getHargaJual(); + } + } + @FXML void fldNotaPenjualanOnKeyPressed(KeyEvent event) { if (event.getCode() == KeyCode.ENTER) { + switch(fldNotaPenjualan.getText().charAt(0)){ + case Fucout.KODE_NOTA_BAWA: + tipeRetur = Fucout.TEKS_TIPE_NOTA_BAWA; + break; + case Fucout.KODE_NOTA_BON: + tipeRetur = Fucout.TEKS_TIPE_NOTA_BAWA; + break; + case Fucout.KODE_NOTA_RETUR: + break; + default: + tipeRetur = Fucout.TEKS_TIPE_NOTA_TUNAI; + break; + } Disposable disposable = posRx.validasiMNotaTunaiByNoNotaTanggal(fldNotaPenjualan.getText()) - .subscribe((response) -> { + .subscribe((response) -> { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNode = mapper.readTree(response.string()); ObjectNode node = jsonNode.deepCopy(); @@ -383,6 +407,7 @@ public class FormTransaksiReturController implements Initializable { ))); tbvRetur.refresh(); + nominalRetur += tbr.getData().getHargaJual(); } else { Alert alert = AlertUtil.getAlertError( "Jumlah Barang Kurang", @@ -400,14 +425,6 @@ public class FormTransaksiReturController implements Initializable { if (!ada) { Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); - btnBatal.setOnAction((t) -> { - Alert alert = AlertUtil.getAlertDialogKonfirmasi( - AlertUtil.DIALOG_KONFIRMASI_MESSAGE, - "Yakin ingin menghapus barang?"); - alert.initOwner(apMain.getScene().getWindow()); - alert.show(); - - }); TextField fldPramuniaga = new TextField(); DNotaRetur dNotaRetur = new DNotaRetur(noNota, draggedTabelBarangTunai.getData()); @@ -425,8 +442,14 @@ public class FormTransaksiReturController implements Initializable { fldPramuniaga, btnBatal); + btnBatal.setOnAction((t) -> { + batalRetur(tbr); + }); + tbr.setData(dNotaRetur); + nominalRetur += tbr.getData().getHargaJual(); + daftarTabelRetur.add(tbr); } } @@ -455,7 +478,7 @@ public class FormTransaksiReturController implements Initializable { @Override public void onNext(List daftarDNotaTunai) { - fldNotaPenjualan.clear(); + lastNoNotaPenjualan = fldNotaPenjualan.getText(); refreshDataPenjualan(daftarDNotaTunai); } diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java index 3d6a861..d54404e 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java @@ -25,6 +25,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; @@ -36,6 +37,7 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Alert; import javafx.scene.control.Button; +import javafx.scene.control.ButtonType; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; @@ -217,14 +219,7 @@ public class FormTransaksiTunaiController implements Initializable { cbxPromo.getSelectionModel().select("Ulang Tahun"); //Button Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); - btnBatal.setOnAction((t) -> { - Alert alert = AlertUtil.getAlertError( - AlertUtil.DIALOG_KONFIRMASI_MESSAGE, - "Yakin ingin menghapus barang?"); - alert.initOwner(apMain.getScene().getWindow()); - alert.show(); - }); //TextField TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram()); fldPramuniaga.setOnKeyPressed((t) -> { @@ -240,7 +235,7 @@ public class FormTransaksiTunaiController implements Initializable { .get(dNotaTunai.getKdBarang()).getNamaBarang()); } - daftarTabelTransaksi.add(new TabelBarangTunai( + TabelBarangTunai tbt = new TabelBarangTunai( Fucout.getText(dNotaTunai.getKdBarang()), namaBarang, Fucout.getText(dNotaTunai.getNoBarang()), @@ -253,7 +248,20 @@ public class FormTransaksiTunaiController implements Initializable { dNotaTunai.getHargaJual() * dNotaTunai.getJumlah() )), fldPramuniaga, - btnBatal)); + btnBatal); + + tbt.setData(dNotaTunai); + daftarTabelTransaksi.add(tbt); + + btnBatal.setOnAction((t) -> { + Alert alert = AlertUtil.getAlertError( + AlertUtil.DIALOG_KONFIRMASI_MESSAGE, + "Yakin ingin menghapus barang?"); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + + batalTunai(tbt); + }); if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver); @@ -261,6 +269,24 @@ public class FormTransaksiTunaiController implements Initializable { } } + private void batalTunai(TabelBarangTunai tbt) { + Alert alert = AlertUtil.getAlertDialogKonfirmasi( + AlertUtil.DIALOG_KONFIRMASI_MESSAGE, + "Yakin ingin menghapus barang?"); + alert.initOwner(apMain.getScene().getWindow()); + Optional result = alert.showAndWait(); + + if (result.isPresent() && result.get() == AlertUtil.BUTTON_YA) { + if (tbt.getData().getJumlah() > 1) { + tbt.getData().setJumlah(tbt.getData().getJumlah() - 1); + tbt.setJumlah(String.valueOf(tbt.getData().getJumlah())); + tbvTransaksi.refresh(); + } else { + daftarTabelTransaksi.remove(tbt); + } + } + } + public void addToTable(Barang barang, NoBarang noBarang) { if (barang != null && noBarang != null) { fldScan.setText(""); @@ -299,15 +325,7 @@ public class FormTransaksiTunaiController implements Initializable { ComboBox cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo)); cbxPromo.getSelectionModel().select("Ulang Tahun"); - 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(); - - }); + Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); TextField fldPramuniaga = new TextField(); fldPramuniaga.setOnKeyPressed((t) -> { @@ -341,9 +359,13 @@ public class FormTransaksiTunaiController implements Initializable { 1 * noBarang.getHargaJual()) ), fldPramuniaga, - btnAction); + btnBatal); tbt.setData(dNotaTunai); + btnBatal.setOnAction((t) -> { + batalTunai(tbt); + }); + total += noBarang.getHargaJual(); updateLabelGrandTotal(); daftarTabelTransaksi.add(tbt); diff --git a/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java b/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java index 1748ea9..f945d3e 100644 --- a/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java +++ b/src/main/java/id/amigogroup/posterminal/util/AlertUtil.java @@ -27,6 +27,7 @@ public class AlertUtil { public static final String ERROR_TIDAK_LENGKAP_TITLE = "Error: Data Tidak Lengkap"; public static final ButtonType BUTTON_YA = new ButtonType("Ya", ButtonData.YES); + public static final ButtonType BUTTON_TIDAK = new ButtonType("Tidak", ButtonData.NO); public static Alert getAlertInfo(String title, String message){ Alert alert = new Alert(Alert.AlertType.INFORMATION, message, ButtonType.OK); @@ -50,7 +51,7 @@ public class AlertUtil { } public static Alert getAlertDialogKonfirmasi (String title, String message){ - Alert alert = new Alert(Alert.AlertType.CONFIRMATION, message, ButtonType.OK, ButtonType.CANCEL); + Alert alert = new Alert(Alert.AlertType.CONFIRMATION, message, BUTTON_YA, BUTTON_TIDAK); alert.setTitle(title); alert.setHeaderText(null); return alert;