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,

@ -22,12 +22,10 @@ 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.TextField;
import javafx.scene.control.TitledPane; import javafx.scene.control.TitledPane;
import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;

@ -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,9 +259,42 @@ 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();
@ -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