Membuat Fungsi Batal dan Fungsi Pengurangan Bayar Otomatis Menggunakan Retur

[Logic] Fungsi tombol batal, mengurangi jumlah jika barang tsb >1 dan menghapus dari tabel jika tidak 
[Logic + UI] Jika ada transaksi retur, dan transaksi tersebut berasal dari tunai, maka akan mengurangkan nominal tunai
pull/14/head
Ronaldo Christnawan 6 years ago
parent a890572880
commit 32ccd3df74

@ -65,6 +65,7 @@ public class FormBayarController implements Initializable, BayarInterface {
private final List<CheckBox> daftarChkBayarSyarat; private final List<CheckBox> daftarChkBayarSyarat;
private final List<CheckBox> daftarChkBayarOpsional; private final List<CheckBox> daftarChkBayarOpsional;
public BayarContent bayarContent = new BayarContent(); public BayarContent bayarContent = new BayarContent();
private FormUtamaController parent = null;
public FormBayarController() { public FormBayarController() {
daftarChkBayarSyarat = new ArrayList<>(); daftarChkBayarSyarat = new ArrayList<>();
@ -90,8 +91,15 @@ public class FormBayarController implements Initializable, BayarInterface {
} }
public void initData(FormUtamaController parent) { public void initData(FormUtamaController parent) {
this.parent = parent;
if (parent != null && parent.notaContent.getControllerTunai() != null) { 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(); updateGrandTotalView();
updateKurangBayarView(); updateKurangBayarView();
} }
@ -103,7 +111,16 @@ public class FormBayarController implements Initializable, BayarInterface {
KeyCombination kcSelesaiBayar = new KeyCodeCombination(KeyCode.F10); KeyCombination kcSelesaiBayar = new KeyCodeCombination(KeyCode.F10);
Runnable rnSelesaiBayar = () -> { Runnable rnSelesaiBayar = () -> {
if (bayarContent.getTotalBayar() >= bayarContent.getTotalPerluBayar()) { 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<String> result = dialogCetakNotaController.showAndWait();
}
} else { } else {
DialogSelesaiBayarTidakLunasController dsbtlc DialogSelesaiBayarTidakLunasController dsbtlc
= new DialogSelesaiBayarTidakLunasController(this, = new DialogSelesaiBayarTidakLunasController(this,
@ -255,11 +272,11 @@ public class FormBayarController implements Initializable, BayarInterface {
} }
} }
} }
private void updateGrandTotalView() { private void updateGrandTotalView() {
lblGrandTotal.setText(Fucout.formatRupiah(bayarContent.getTotalPerluBayar())); lblGrandTotal.setText(Fucout.formatRupiah(bayarContent.getTotalPerluBayar()));
} }
@Override @Override
public BayarContent getBayarContent() { public BayarContent getBayarContent() {
return bayarContent; return bayarContent;

@ -1,224 +1,222 @@
/* /*
* To change this license header, choose License Headers in Project Properties. * To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates * To change this template file, choose Tools | Templates
* and open the template in the editor. * and open the template in the editor.
*/ */
package id.amigogroup.posterminal.pencarian; package id.amigogroup.posterminal.pencarian;
import id.amigogroup.posterminal.transaksi.TabelBarangRetur; import id.amigogroup.posterminal.transaksi.TabelBarangRetur;
import id.amigogroup.posterminal.transaksi.TabelBarangTunai; import id.amigogroup.posterminal.transaksi.TabelBarangTunai;
import id.amigogroup.posterminal.util.Fucout; import id.amigogroup.posterminal.util.Fucout;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
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;
import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.scene.control.ButtonBar.ButtonData; import javafx.scene.control.ButtonBar.ButtonData;
import javafx.scene.control.ButtonType; import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox; import javafx.scene.control.Dialog;
import javafx.scene.control.Dialog; import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableView;
import javafx.scene.control.TableView; import javafx.scene.control.TitledPane;
import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.TitledPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.layout.VBox;
import javafx.scene.layout.AnchorPane; import javafx.stage.Window;
import javafx.scene.layout.VBox;
import javafx.stage.Window; /**
*
/** * @author Josua
* */
* @author Josua public class DialogCetakNotaController extends Dialog<String> implements Initializable {
*/
public class DialogCetakNotaController extends Dialog<String> implements Initializable { @FXML
private ScrollPane spCetakNota;
@FXML @FXML
private ScrollPane spCetakNota; private VBox vbCetakNota;
@FXML @FXML
private VBox vbCetakNota; private TitledPane tpTunai;
@FXML @FXML
private TitledPane tpTunai; private AnchorPane apTunai;
@FXML @FXML
private AnchorPane apTunai; private TableView<TabelBarangTunai> tbvTunai;
@FXML @FXML
private TableView<TabelBarangTunai> tbvTunai; private TableColumn<TabelBarangTunai, Integer> tcNoTunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, Integer> tcNoTunai; private TableColumn<TabelBarangTunai, String> tcKodeBarangTunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcKodeBarangTunai; private TableColumn<TabelBarangTunai, String> tcNamaBarangTunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcNamaBarangTunai; private TableColumn<TabelBarangTunai, String> tcUkurTunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcUkurTunai; private TableColumn<TabelBarangTunai, String> tcJumlahTunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcJumlahTunai; private TableColumn<TabelBarangTunai, String> tcHargaTunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcHargaTunai; private TableColumn<TabelBarangTunai, String> tcDisc1Tunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcDisc1Tunai; private TableColumn<TabelBarangTunai, String> tcDisc2Tunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcDisc2Tunai; private TableColumn<TabelBarangTunai, String> tcSubTotalTunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcSubTotalTunai; private TableColumn<TabelBarangTunai, String> tcPramuniagaTunai;
@FXML @FXML
private TableColumn<TabelBarangTunai, String> tcPramuniagaTunai; private TitledPane tpBawa;
@FXML @FXML
private TitledPane tpBawa; private AnchorPane apBawa;
@FXML @FXML
private AnchorPane apBawa; private TableView<?> tbvBawa;
@FXML @FXML
private TableView<?> tbvBawa; private TableColumn<?, ?> tcNoBawa;
@FXML @FXML
private TableColumn<?, ?> tcNoBawa; private TableColumn<?, ?> tcKodeBarangBawa;
@FXML @FXML
private TableColumn<?, ?> tcKodeBarangBawa; private TableColumn<?, ?> tcNamaBarangBawa;
@FXML @FXML
private TableColumn<?, ?> tcNamaBarangBawa; private TableColumn<?, ?> tcUkurBawa;
@FXML @FXML
private TableColumn<?, ?> tcUkurBawa; private TableColumn<?, ?> tcJumlahBawa;
@FXML @FXML
private TableColumn<?, ?> tcJumlahBawa; private TableColumn<?, ?> tcHargaBawa;
@FXML @FXML
private TableColumn<?, ?> tcHargaBawa; private TableColumn<?, ?> tcDisc1Bawa;
@FXML @FXML
private TableColumn<?, ?> tcDisc1Bawa; private TableColumn<?, ?> tcDisc2Bawa;
@FXML @FXML
private TableColumn<?, ?> tcDisc2Bawa; private TableColumn<?, ?> tcSubTotalBawa;
@FXML @FXML
private TableColumn<?, ?> tcSubTotalBawa; private TableColumn<?, ?> tcPramuniagaBawa;
@FXML @FXML
private TableColumn<?, ?> tcPramuniagaBawa; private TitledPane tpBon;
@FXML @FXML
private TitledPane tpBon; private AnchorPane apBon;
@FXML @FXML
private AnchorPane apBon; private TableView<?> tbvBon;
@FXML @FXML
private TableView<?> tbvBon; private TableColumn<?, ?> tcNoBon;
@FXML @FXML
private TableColumn<?, ?> tcNoBon; private TableColumn<?, ?> tcKodeBarangBon;
@FXML @FXML
private TableColumn<?, ?> tcKodeBarangBon; private TableColumn<?, ?> tcNamaBarangBon;
@FXML @FXML
private TableColumn<?, ?> tcNamaBarangBon; private TableColumn<?, ?> tcUkurBon;
@FXML @FXML
private TableColumn<?, ?> tcUkurBon; private TableColumn<?, ?> tcJumlahBon;
@FXML @FXML
private TableColumn<?, ?> tcJumlahBon; private TableColumn<?, ?> tcHargaBon;
@FXML @FXML
private TableColumn<?, ?> tcHargaBon; private TableColumn<?, ?> tcDisc1Bon;
@FXML @FXML
private TableColumn<?, ?> tcDisc1Bon; private TableColumn<?, ?> tcDisc2Bon;
@FXML @FXML
private TableColumn<?, ?> tcDisc2Bon; private TableColumn<?, ?> tcSubTotalBon;
@FXML @FXML
private TableColumn<?, ?> tcSubTotalBon; private TableColumn<?, ?> tcPramuniagaBon;
@FXML @FXML
private TableColumn<?, ?> tcPramuniagaBon; private TitledPane tpRetur;
@FXML @FXML
private TitledPane tpRetur; private AnchorPane apRetur;
@FXML @FXML
private AnchorPane apRetur; private TableView<TabelBarangRetur> tbvRetur;
@FXML @FXML
private TableView<TabelBarangRetur> tbvRetur; private TableColumn<TabelBarangRetur, Integer> tcNoRetur;
@FXML @FXML
private TableColumn<TabelBarangRetur, Integer> tcNoRetur; private TableColumn<TabelBarangRetur, String> tcKodeBarangRetur;
@FXML @FXML
private TableColumn<TabelBarangRetur, String> tcKodeBarangRetur; private TableColumn<TabelBarangRetur, String> tcNamaBarangRetur;
@FXML @FXML
private TableColumn<TabelBarangRetur, String> tcNamaBarangRetur; private TableColumn<TabelBarangRetur, String> tcUkurRetur;
@FXML @FXML
private TableColumn<TabelBarangRetur, String> tcUkurRetur; private TableColumn<TabelBarangRetur, String> tcJumlahRetur;
@FXML @FXML
private TableColumn<TabelBarangRetur, String> tcJumlahRetur; private TableColumn<TabelBarangRetur, String> tcHargaRetur;
@FXML @FXML
private TableColumn<TabelBarangRetur, String> tcHargaRetur; private TableColumn<TabelBarangRetur, String> tcDisc1Retur;
@FXML @FXML
private TableColumn<TabelBarangRetur, String> tcDisc1Retur; private TableColumn<TabelBarangRetur, String> tcDisc2Retur;
@FXML @FXML
private TableColumn<TabelBarangRetur, String> tcDisc2Retur; private TableColumn<TabelBarangRetur, String> tcSubTotalRetur;
@FXML @FXML
private TableColumn<TabelBarangRetur, String> tcSubTotalRetur; private TableColumn<TabelBarangRetur, String> tcPramuniagaRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcPramuniagaRetur; public final ObservableList<TabelBarangTunai> daftarTabelTunai = FXCollections.observableArrayList();
public final ObservableList<TabelBarangRetur> daftarTabelRetur = FXCollections.observableArrayList();
public final ObservableList<TabelBarangTunai> daftarTabelTunai = FXCollections.observableArrayList();
public final ObservableList<TabelBarangRetur> daftarTabelRetur = FXCollections.observableArrayList(); @Override
public void initialize(URL url, ResourceBundle rb) {
@Override getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE));
public void initialize(URL url, ResourceBundle rb) { //Tunai
getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE)); tcNoTunai.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> {
//Tunai return new ReadOnlyObjectWrapper(tbvTunai.getItems().indexOf(cell.getValue()) + 1);
tcNoTunai.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> { });
return new ReadOnlyObjectWrapper(tbvTunai.getItems().indexOf(cell.getValue()) + 1); tcKodeBarangTunai.setCellValueFactory(new PropertyValueFactory<>("kode"));
}); tcNamaBarangTunai.setCellValueFactory(new PropertyValueFactory<>("nama"));
tcKodeBarangTunai.setCellValueFactory(new PropertyValueFactory<>("kode")); tcUkurTunai.setCellValueFactory(new PropertyValueFactory<>("ukur"));
tcNamaBarangTunai.setCellValueFactory(new PropertyValueFactory<>("nama")); tcJumlahTunai.setCellValueFactory(new PropertyValueFactory<>("jumlah"));
tcUkurTunai.setCellValueFactory(new PropertyValueFactory<>("ukur")); tcHargaTunai.setCellValueFactory(new PropertyValueFactory<>("harga"));
tcJumlahTunai.setCellValueFactory(new PropertyValueFactory<>("jumlah")); tcDisc1Tunai.setCellValueFactory(new PropertyValueFactory<>("disc1"));
tcHargaTunai.setCellValueFactory(new PropertyValueFactory<>("harga")); tcDisc2Tunai.setCellValueFactory(new PropertyValueFactory<>("disc2"));
tcDisc1Tunai.setCellValueFactory(new PropertyValueFactory<>("disc1")); tcSubTotalTunai.setCellValueFactory(new PropertyValueFactory<>("subTotal"));
tcDisc2Tunai.setCellValueFactory(new PropertyValueFactory<>("disc2")); tcPramuniagaTunai.setCellValueFactory(new PropertyValueFactory<>("pramuniaga"));
tcSubTotalTunai.setCellValueFactory(new PropertyValueFactory<>("subTotal"));
tcPramuniagaTunai.setCellValueFactory(new PropertyValueFactory<>("pramuniaga")); tbvTunai.setItems(daftarTabelTunai);
//Bawa
tbvTunai.setItems(daftarTabelTunai); //Bon
//Bawa //Retur
//Bon tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangRetur, Integer> cell) -> {
//Retur return new ReadOnlyObjectWrapper(tbvRetur.getItems().indexOf(cell.getValue()) + 1);
tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangRetur, Integer> cell) -> { });
return new ReadOnlyObjectWrapper(tbvRetur.getItems().indexOf(cell.getValue()) + 1); tcKodeBarangRetur.setCellValueFactory(new PropertyValueFactory<>("kode"));
}); tcNamaBarangRetur.setCellValueFactory(new PropertyValueFactory<>("nama"));
tcKodeBarangRetur.setCellValueFactory(new PropertyValueFactory<>("kode")); tcUkurRetur.setCellValueFactory(new PropertyValueFactory<>("ukur"));
tcNamaBarangRetur.setCellValueFactory(new PropertyValueFactory<>("nama")); tcJumlahRetur.setCellValueFactory(new PropertyValueFactory<>("jumlah"));
tcUkurRetur.setCellValueFactory(new PropertyValueFactory<>("ukur")); tcHargaRetur.setCellValueFactory(new PropertyValueFactory<>("harga"));
tcJumlahRetur.setCellValueFactory(new PropertyValueFactory<>("jumlah")); tcDisc1Retur.setCellValueFactory(new PropertyValueFactory<>("disc1"));
tcHargaRetur.setCellValueFactory(new PropertyValueFactory<>("harga")); tcDisc2Retur.setCellValueFactory(new PropertyValueFactory<>("disc2"));
tcDisc1Retur.setCellValueFactory(new PropertyValueFactory<>("disc1")); tcSubTotalRetur.setCellValueFactory(new PropertyValueFactory<>("subTotal"));
tcDisc2Retur.setCellValueFactory(new PropertyValueFactory<>("disc2")); tcPramuniagaRetur.setCellValueFactory(new PropertyValueFactory<>("pramuniaga"));
tcSubTotalRetur.setCellValueFactory(new PropertyValueFactory<>("subTotal")); tbvRetur.setItems(daftarTabelRetur);
tcPramuniagaRetur.setCellValueFactory(new PropertyValueFactory<>("pramuniaga")); }
tbvRetur.setItems(daftarTabelRetur);
} public DialogCetakNotaController() {
try {
public DialogCetakNotaController() { Window window = getDialogPane().getScene().getWindow();
try { window.setOnCloseRequest(event -> this.close());
Window window = getDialogPane().getScene().getWindow();
window.setOnCloseRequest(event -> this.close()); FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCetakNota.fxml"));
loader.setController(this);
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCetakNota.fxml")); Parent root = loader.load();
loader.setController(this); getDialogPane().setContent(root);
Parent root = loader.load(); setTitle("Cetak Nota");
getDialogPane().setContent(root); } catch (IOException e) {
setTitle("Cetak Nota"); Logger.getLogger(DialogCetakNotaController.class
} catch (IOException e) { .getName()).log(Level.SEVERE, null, e);
Logger.getLogger(DialogCetakNotaController.class }
.getName()).log(Level.SEVERE, null, e); }
}
} public void initData(ObservableList<TabelBarangTunai> daftarTabelTransaksiTunai,
ObservableList<TabelBarangRetur> daftarTabelTransaksiRetur) {
public void initData(ObservableList<TabelBarangTunai> daftarTabelTransaksiTunai, if (daftarTabelTransaksiTunai != null) {
ObservableList<TabelBarangRetur> daftarTabelTransaksiRetur) { for (TabelBarangTunai tbt : daftarTabelTransaksiTunai) {
if (daftarTabelTransaksiTunai != null) { daftarTabelTunai.add(new TabelBarangTunai(tbt.getKode(), tbt.getNama(), tbt.getUkur(),
for (TabelBarangTunai tbt : daftarTabelTransaksiTunai) { tbt.getJumlah(), tbt.getHarga(), tbt.getDisc1(), tbt.getDisc2(), null,
daftarTabelTunai.add(new TabelBarangTunai(tbt.getKode(), tbt.getNama(), tbt.getUkur(), tbt.getSubTotal(), Fucout.getText(tbt.getFldPramuniaga().getText()), null));
tbt.getJumlah(), tbt.getHarga(), tbt.getDisc1(), tbt.getDisc2(), null, }
tbt.getSubTotal(), Fucout.getText(tbt.getFldPramuniaga().getText()), null)); }
} if (daftarTabelTransaksiRetur != null) {
} for (TabelBarangRetur tbr : daftarTabelTransaksiRetur) {
if (daftarTabelTransaksiRetur != null) { daftarTabelRetur.add(new TabelBarangRetur(tbr.getKode(), tbr.getNama(), tbr.getUkur(),
for (TabelBarangRetur tbr : daftarTabelTransaksiRetur) { tbr.getJumlah(), tbr.getHarga(), tbr.getDisc1(), tbr.getDisc2(), tbr.getSubTotal(),
daftarTabelRetur.add(new TabelBarangRetur(tbr.getKode(), tbr.getNama(), tbr.getUkur(), Fucout.getText(tbr.getFldPramuniaga().getText())));
tbr.getJumlah(), tbr.getHarga(), tbr.getDisc1(), tbr.getDisc2(), tbr.getSubTotal(), }
Fucout.getText(tbr.getFldPramuniaga().getText()))); }
} }
} }
}
}

@ -22,6 +22,7 @@ import io.reactivex.disposables.Disposable;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.util.List; import java.util.List;
import java.util.Optional;
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;
@ -33,6 +34,7 @@ import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
@ -121,6 +123,10 @@ public class FormTransaksiReturController implements Initializable {
public final ObservableList<TabelBarangRetur> daftarTabelRetur = FXCollections.observableArrayList(); public final ObservableList<TabelBarangRetur> daftarTabelRetur = FXCollections.observableArrayList();
private TabelBarangTunai draggedTabelBarangTunai = null; private TabelBarangTunai draggedTabelBarangTunai = null;
public String lastNoNotaPenjualan = "";
public String tipeRetur = "";
public int nominalRetur = 0;
/** /**
* Initializes the controller class. * Initializes the controller class.
*/ */
@ -138,7 +144,6 @@ public class FormTransaksiReturController implements Initializable {
tcDisc2.setCellValueFactory(new PropertyValueFactory<>("disc2")); tcDisc2.setCellValueFactory(new PropertyValueFactory<>("disc2"));
tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal")); tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal"));
tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga")); tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga"));
// tcBtnBatal.setCellValueFactory(new PropertyValueFactory<>("btnBatal"));
tbvPenjualan.setItems(daftarTabelPenjualan); tbvPenjualan.setItems(daftarTabelPenjualan);
tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangRetur, Integer> cell) -> { tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangRetur, Integer> cell) -> {
@ -177,16 +182,6 @@ public class FormTransaksiReturController implements Initializable {
daftarTabelPenjualan.clear(); daftarTabelPenjualan.clear();
for (DNotaTunai dNotaTunai : daftarNotaTunai) { 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()); TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram());
String namaBarang = "..."; String namaBarang = "...";
@ -210,7 +205,7 @@ public class FormTransaksiReturController implements Initializable {
dNotaTunai.getHargaJual() * dNotaTunai.getJumlah() dNotaTunai.getHargaJual() * dNotaTunai.getJumlah()
)), )),
fldPramuniaga, fldPramuniaga,
btnBatal); null);
tbt.setData(dNotaTunai); tbt.setData(dNotaTunai);
daftarTabelPenjualan.add(tbt); daftarTabelPenjualan.add(tbt);
@ -227,14 +222,6 @@ public class FormTransaksiReturController implements Initializable {
for (DNotaRetur dNotaRetur : daftarDNotaRetur) { for (DNotaRetur dNotaRetur : daftarDNotaRetur) {
//Button //Button
Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); 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()); TextField fldPramuniaga = new TextField(dNotaRetur.getKodePram());
String namaBarang = "..."; String namaBarang = "...";
@ -259,6 +246,10 @@ public class FormTransaksiReturController implements Initializable {
fldPramuniaga, fldPramuniaga,
btnBatal); btnBatal);
btnBatal.setOnAction((t) -> {
batalRetur(tbr);
});
tbr.setData(dNotaRetur); tbr.setData(dNotaRetur);
daftarTabelRetur.add(tbr); 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<ButtonType> 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 @FXML
void fldNotaPenjualanOnKeyPressed(KeyEvent event) { void fldNotaPenjualanOnKeyPressed(KeyEvent event) {
if (event.getCode() == KeyCode.ENTER) { 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()) Disposable disposable = posRx.validasiMNotaTunaiByNoNotaTanggal(fldNotaPenjualan.getText())
.subscribe((response) -> { .subscribe((response) -> {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(response.string()); JsonNode jsonNode = mapper.readTree(response.string());
ObjectNode node = jsonNode.deepCopy(); ObjectNode node = jsonNode.deepCopy();
@ -383,6 +407,7 @@ public class FormTransaksiReturController implements Initializable {
))); )));
tbvRetur.refresh(); tbvRetur.refresh();
nominalRetur += tbr.getData().getHargaJual();
} else { } else {
Alert alert = AlertUtil.getAlertError( Alert alert = AlertUtil.getAlertError(
"Jumlah Barang Kurang", "Jumlah Barang Kurang",
@ -400,14 +425,6 @@ public class FormTransaksiReturController implements Initializable {
if (!ada) { if (!ada) {
Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); 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(); TextField fldPramuniaga = new TextField();
DNotaRetur dNotaRetur = new DNotaRetur(noNota, draggedTabelBarangTunai.getData()); DNotaRetur dNotaRetur = new DNotaRetur(noNota, draggedTabelBarangTunai.getData());
@ -425,8 +442,14 @@ public class FormTransaksiReturController implements Initializable {
fldPramuniaga, fldPramuniaga,
btnBatal); btnBatal);
btnBatal.setOnAction((t) -> {
batalRetur(tbr);
});
tbr.setData(dNotaRetur); tbr.setData(dNotaRetur);
nominalRetur += tbr.getData().getHargaJual();
daftarTabelRetur.add(tbr); daftarTabelRetur.add(tbr);
} }
} }
@ -455,7 +478,7 @@ public class FormTransaksiReturController implements Initializable {
@Override @Override
public void onNext(List<DNotaTunai> daftarDNotaTunai) { public void onNext(List<DNotaTunai> daftarDNotaTunai) {
fldNotaPenjualan.clear(); lastNoNotaPenjualan = fldNotaPenjualan.getText();
refreshDataPenjualan(daftarDNotaTunai); refreshDataPenjualan(daftarDNotaTunai);
} }

@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
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;
@ -36,6 +37,7 @@ import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox; import javafx.scene.control.ComboBox;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
@ -217,14 +219,7 @@ public class FormTransaksiTunaiController implements Initializable {
cbxPromo.getSelectionModel().select("Ulang Tahun"); cbxPromo.getSelectionModel().select("Ulang Tahun");
//Button //Button
Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); 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
TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram()); TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram());
fldPramuniaga.setOnKeyPressed((t) -> { fldPramuniaga.setOnKeyPressed((t) -> {
@ -240,7 +235,7 @@ public class FormTransaksiTunaiController implements Initializable {
.get(dNotaTunai.getKdBarang()).getNamaBarang()); .get(dNotaTunai.getKdBarang()).getNamaBarang());
} }
daftarTabelTransaksi.add(new TabelBarangTunai( TabelBarangTunai tbt = new TabelBarangTunai(
Fucout.getText(dNotaTunai.getKdBarang()), Fucout.getText(dNotaTunai.getKdBarang()),
namaBarang, namaBarang,
Fucout.getText(dNotaTunai.getNoBarang()), Fucout.getText(dNotaTunai.getNoBarang()),
@ -253,7 +248,20 @@ public class FormTransaksiTunaiController implements Initializable {
dNotaTunai.getHargaJual() * dNotaTunai.getJumlah() dNotaTunai.getHargaJual() * dNotaTunai.getJumlah()
)), )),
fldPramuniaga, 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())) { if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) {
posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver); 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<ButtonType> 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) { public void addToTable(Barang barang, NoBarang noBarang) {
if (barang != null && noBarang != null) { if (barang != null && noBarang != null) {
fldScan.setText(""); fldScan.setText("");
@ -299,15 +325,7 @@ public class FormTransaksiTunaiController implements Initializable {
ComboBox<String> cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo)); ComboBox<String> cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo));
cbxPromo.getSelectionModel().select("Ulang Tahun"); cbxPromo.getSelectionModel().select("Ulang Tahun");
Button btnAction = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); Button btnBatal = 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();
});
TextField fldPramuniaga = new TextField(); TextField fldPramuniaga = new TextField();
fldPramuniaga.setOnKeyPressed((t) -> { fldPramuniaga.setOnKeyPressed((t) -> {
@ -341,9 +359,13 @@ public class FormTransaksiTunaiController implements Initializable {
1 * noBarang.getHargaJual()) 1 * noBarang.getHargaJual())
), ),
fldPramuniaga, fldPramuniaga,
btnAction); btnBatal);
tbt.setData(dNotaTunai); tbt.setData(dNotaTunai);
btnBatal.setOnAction((t) -> {
batalTunai(tbt);
});
total += noBarang.getHargaJual(); total += noBarang.getHargaJual();
updateLabelGrandTotal(); updateLabelGrandTotal();
daftarTabelTransaksi.add(tbt); daftarTabelTransaksi.add(tbt);

@ -27,6 +27,7 @@ public class AlertUtil {
public static final String ERROR_TIDAK_LENGKAP_TITLE = "Error: Data Tidak Lengkap"; 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_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){ public static Alert getAlertInfo(String title, String message){
Alert alert = new Alert(Alert.AlertType.INFORMATION, message, ButtonType.OK); 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){ 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.setTitle(title);
alert.setHeaderText(null); alert.setHeaderText(null);
return alert; return alert;

Loading…
Cancel
Save