Update Grand Total dan Subtotal saat barang di scan

pull/10/head
Ronaldo Christnawan 6 years ago
parent c494501c46
commit 868bbe94c8

@ -25,7 +25,7 @@ public class FormFactory {
loader.setLocation(getClass().getResource("/fxml/FormBayar.fxml")); loader.setLocation(getClass().getResource("/fxml/FormBayar.fxml"));
node = loader.load(); node = loader.load();
FormBayarController fbc = loader.getController(); FormBayarController fbc = loader.getController();
// fetc.initData(parent); fbc.initData(parent);
break; break;
} }
} catch (IOException ex) { } catch (IOException ex) {

@ -84,7 +84,7 @@ public class FormUtamaController implements Initializable {
private int jumlahNota = 0; private int jumlahNota = 0;
private final char NOTA_PREV = 'p'; private final char NOTA_PREV = 'p';
private final char NOTA_NEXT = 'n'; private final char NOTA_NEXT = 'n';
private final NotaContent notaContent = new NotaContent(); public final NotaContent notaContent = new NotaContent();
private final AmigoPosRx posRx = new AmigoPosRx(); private final AmigoPosRx posRx = new AmigoPosRx();
/** /**
@ -164,28 +164,28 @@ public class FormUtamaController implements Initializable {
try { try {
switch (tipe) { switch (tipe) {
case FormConstanta.TRANSAKSI_TUNAI: case FormConstanta.TRANSAKSI_TUNAI:
if (notaContent.nodeTunai != null) { if (notaContent.getNodeTunai() != null) {
node = notaContent.nodeTunai; node = notaContent.getNodeTunai();
} else { } else {
loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml")); loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml"));
node = loader.load(); node = loader.load();
notaContent.nodeTunai = node; notaContent.setNodeTunai(node);
FormTransaksiTunaiController fttc = loader.getController(); FormTransaksiTunaiController fttc = loader.getController();
notaContent.controllerTunai = fttc; notaContent.setControllerTunai(fttc);
fttc.initData(noNota, baru); fttc.initData(noNota, baru);
} }
break; break;
case FormConstanta.TRANSAKSI_RETUR: case FormConstanta.TRANSAKSI_RETUR:
if (notaContent.nodeRetur != null) { if (notaContent.getNodeRetur() != null) {
node = notaContent.nodeRetur; node = notaContent.getNodeRetur();
} else { } else {
loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml")); loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml"));
node = loader.load(); node = loader.load();
notaContent.nodeRetur = node; notaContent.setNodeRetur(node);
FormTransaksiReturController ftrc = loader.getController(); FormTransaksiReturController ftrc = loader.getController();
notaContent.controllerRetur = ftrc; notaContent.setControllerRetur(ftrc);
ftrc.initData(noNota, baru); ftrc.initData(noNota, baru);
} }
break; break;
@ -257,10 +257,10 @@ public class FormUtamaController implements Initializable {
BarangFull barangFull = result.get(); BarangFull barangFull = result.get();
switch (tipeTransaksiState) { switch (tipeTransaksiState) {
case FormConstanta.TRANSAKSI_TUNAI: case FormConstanta.TRANSAKSI_TUNAI:
if (notaContent.controllerTunai != null) { if (notaContent.getControllerTunai() != null) {
if (barangFull.getBarang() != null && barangFull.getNoBarang() != null if (barangFull.getBarang() != null && barangFull.getNoBarang() != null
&& barangFull.getBarang().getIdGabungan().equals(barangFull.getNoBarang().getIdGabungan())) { && barangFull.getBarang().getIdGabungan().equals(barangFull.getNoBarang().getIdGabungan())) {
notaContent.controllerTunai.addToTable(barangFull.getBarang(), barangFull.getNoBarang()); notaContent.getControllerTunai().addToTable(barangFull.getBarang(), barangFull.getNoBarang());
} else { } else {
Alert alert = AlertUtil.getAlertWarning( Alert alert = AlertUtil.getAlertWarning(
AlertUtil.ERROR_TIDAK_LENGKAP_TITLE, AlertUtil.ERROR_TIDAK_LENGKAP_TITLE,
@ -385,9 +385,9 @@ public class FormUtamaController implements Initializable {
setContent(null); setContent(null);
} }
if (notaContent.btnTunai != null) { if (notaContent.getBtnTunai() != null) {
navigasi.remove(notaContent.btnTunai); navigasi.remove(notaContent.getBtnTunai());
vbNavigasi.getChildren().remove(notaContent.btnTunai); vbNavigasi.getChildren().remove(notaContent.getBtnTunai());
} }
Button buttonBaru = generateButtonNota(Fucout.getNoNotaTemporary(), Button buttonBaru = generateButtonNota(Fucout.getNoNotaTemporary(),
@ -396,16 +396,16 @@ public class FormUtamaController implements Initializable {
true); true);
navigasi.add(buttonBaru); navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru); vbNavigasi.getChildren().add(buttonBaru);
notaContent.btnTunai = buttonBaru; notaContent.setBtnTunai(buttonBaru);
jumlahNota++; jumlahNota++;
} else if (hasilReturn.get().equals("Baru:Bon")) { } else if (hasilReturn.get().equals("Baru:Bon")) {
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BON)) { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BON)) {
setContent(null); setContent(null);
} }
if (notaContent.btnBon != null) { if (notaContent.getBtnBon() != null) {
navigasi.remove(notaContent.btnBon); navigasi.remove(notaContent.getBtnBon());
vbNavigasi.getChildren().remove(notaContent.btnBon); vbNavigasi.getChildren().remove(notaContent.getBtnBon());
} }
Button buttonBaru = generateButtonNota("B-" + Fucout.getNoNotaTemporary(), Button buttonBaru = generateButtonNota("B-" + Fucout.getNoNotaTemporary(),
@ -414,16 +414,16 @@ public class FormUtamaController implements Initializable {
true); true);
navigasi.add(buttonBaru); navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru); vbNavigasi.getChildren().add(buttonBaru);
notaContent.btnBon = buttonBaru; notaContent.setBtnBon(buttonBaru);
jumlahNota++; jumlahNota++;
} else if (hasilReturn.get().equals("Baru:Bawa Dulu")) { } else if (hasilReturn.get().equals("Baru:Bawa Dulu")) {
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BAWA)) { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BAWA)) {
setContent(null); setContent(null);
} }
if (notaContent.btnBawa != null) { if (notaContent.getBtnBawa() != null) {
navigasi.remove(notaContent.btnBawa); navigasi.remove(notaContent.getBtnBawa());
vbNavigasi.getChildren().remove(notaContent.btnBawa); vbNavigasi.getChildren().remove(notaContent.getBtnBawa());
} }
Button buttonBaru = generateButtonNota("W-" + Fucout.getNoNotaTemporary(), Button buttonBaru = generateButtonNota("W-" + Fucout.getNoNotaTemporary(),
@ -432,16 +432,16 @@ public class FormUtamaController implements Initializable {
true); true);
navigasi.add(buttonBaru); navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru); vbNavigasi.getChildren().add(buttonBaru);
notaContent.btnBawa = buttonBaru; notaContent.setBtnBawa(buttonBaru);
jumlahNota++; jumlahNota++;
} else if (hasilReturn.get().equals("Baru:Retur")) { } else if (hasilReturn.get().equals("Baru:Retur")) {
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) {
setContent(null); setContent(null);
} }
if (notaContent.btnRetur != null) { if (notaContent.getBtnRetur() != null) {
navigasi.remove(notaContent.btnRetur); navigasi.remove(notaContent.getBtnRetur());
vbNavigasi.getChildren().remove(notaContent.btnRetur); vbNavigasi.getChildren().remove(notaContent.getBtnRetur());
} }
Button buttonBaru = generateButtonNota("R-" + Fucout.getNoNotaTemporary(), Button buttonBaru = generateButtonNota("R-" + Fucout.getNoNotaTemporary(),
@ -450,7 +450,7 @@ public class FormUtamaController implements Initializable {
true); true);
navigasi.add(buttonBaru); navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru); vbNavigasi.getChildren().add(buttonBaru);
notaContent.btnRetur = buttonBaru; notaContent.setBtnRetur(buttonBaru);
jumlahNota++; jumlahNota++;
} else if (hasilReturn.get().contains("Checkout:")) { } else if (hasilReturn.get().contains("Checkout:")) {
String noNota = hasilReturn.get().substring(9); String noNota = hasilReturn.get().substring(9);
@ -470,31 +470,31 @@ public class FormUtamaController implements Initializable {
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) {
setContent(null); setContent(null);
} }
if (notaContent.btnRetur != null) { if (notaContent.getBtnRetur() != null) {
navigasi.remove(notaContent.btnRetur); navigasi.remove(notaContent.getBtnRetur());
vbNavigasi.getChildren().remove(notaContent.btnRetur); vbNavigasi.getChildren().remove(notaContent.getBtnRetur());
} }
buttonBaru = generateButtonNota(noNota, buttonBaru = generateButtonNota(noNota,
FormConstanta.TRANSAKSI_RETUR, FormConstanta.TRANSAKSI_RETUR,
Fucout.TEKS_TIPE_NOTA_RETUR, Fucout.TEKS_TIPE_NOTA_RETUR,
false); false);
notaContent.btnRetur = buttonBaru; notaContent.setBtnRetur(buttonBaru);
break; break;
default: default:
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_TUNAI)) { if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_TUNAI)) {
setContent(null); setContent(null);
} }
if (notaContent.btnTunai != null) { if (notaContent.getBtnTunai() != null) {
navigasi.remove(notaContent.btnTunai); navigasi.remove(notaContent.getBtnTunai());
vbNavigasi.getChildren().remove(notaContent.btnTunai); vbNavigasi.getChildren().remove(notaContent.getBtnTunai());
} }
buttonBaru = generateButtonNota(noNota, buttonBaru = generateButtonNota(noNota,
FormConstanta.TRANSAKSI_TUNAI, FormConstanta.TRANSAKSI_TUNAI,
Fucout.TEKS_TIPE_NOTA_TUNAI, Fucout.TEKS_TIPE_NOTA_TUNAI,
false); false);
notaContent.btnTunai = buttonBaru; notaContent.setBtnTunai(buttonBaru);
break; break;
} }
if (buttonBaru != null) { if (buttonBaru != null) {
@ -550,15 +550,129 @@ public class FormUtamaController implements Initializable {
} }
}; };
private class NotaContent { public class NotaContent {
private Button btnTunai;
private FormTransaksiTunaiController controllerTunai = null;
private Node nodeTunai = null;
private Button btnBawa;
private Button btnBon;
private Button btnRetur;
private FormTransaksiReturController controllerRetur = null;
private Node nodeRetur = null;
/**
* @return the btnTunai
*/
public Button getBtnTunai() {
return btnTunai;
}
/**
* @param btnTunai the btnTunai to set
*/
public void setBtnTunai(Button btnTunai) {
this.btnTunai = btnTunai;
}
/**
* @return the controllerTunai
*/
public FormTransaksiTunaiController getControllerTunai() {
return controllerTunai;
}
/**
* @param controllerTunai the controllerTunai to set
*/
public void setControllerTunai(FormTransaksiTunaiController controllerTunai) {
this.controllerTunai = controllerTunai;
}
/**
* @return the nodeTunai
*/
public Node getNodeTunai() {
return nodeTunai;
}
/**
* @param nodeTunai the nodeTunai to set
*/
public void setNodeTunai(Node nodeTunai) {
this.nodeTunai = nodeTunai;
}
/**
* @return the btnBawa
*/
public Button getBtnBawa() {
return btnBawa;
}
/**
* @param btnBawa the btnBawa to set
*/
public void setBtnBawa(Button btnBawa) {
this.btnBawa = btnBawa;
}
/**
* @return the btnBon
*/
public Button getBtnBon() {
return btnBon;
}
/**
* @param btnBon the btnBon to set
*/
public void setBtnBon(Button btnBon) {
this.btnBon = btnBon;
}
/**
* @return the btnRetur
*/
public Button getBtnRetur() {
return btnRetur;
}
/**
* @param btnRetur the btnRetur to set
*/
public void setBtnRetur(Button btnRetur) {
this.btnRetur = btnRetur;
}
/**
* @return the controllerRetur
*/
public FormTransaksiReturController getControllerRetur() {
return controllerRetur;
}
/**
* @param controllerRetur the controllerRetur to set
*/
public void setControllerRetur(FormTransaksiReturController controllerRetur) {
this.controllerRetur = controllerRetur;
}
/**
* @return the nodeRetur
*/
public Node getNodeRetur() {
return nodeRetur;
}
/**
* @param nodeRetur the nodeRetur to set
*/
public void setNodeRetur(Node nodeRetur) {
this.nodeRetur = nodeRetur;
}
Button btnTunai;
FormTransaksiTunaiController controllerTunai = null;
Node nodeTunai = null;
Button btnBawa;
Button btnBon;
Button btnRetur;
FormTransaksiReturController controllerRetur = null;
Node nodeRetur = null;
} }
} }

@ -18,6 +18,7 @@ import id.amigogroup.posterminal.util.AlertUtil;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import java.net.SocketException; import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
@ -102,7 +103,8 @@ public class AmigoPosRx {
} }
public static void handleGenericError(Throwable error, Window window) { public static void handleGenericError(Throwable error, Window window) {
if (error instanceof SocketException || error instanceof UnknownHostException) { if (error instanceof SocketException || error instanceof UnknownHostException
|| error instanceof SocketTimeoutException) {
Platform.runLater(() -> { Platform.runLater(() -> {
Alert alert = AlertUtil.getAlertError( Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE, AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE,

@ -26,7 +26,7 @@ public class BayarContent {
private Node nodePoin; private Node nodePoin;
private int bayarPoin; private int bayarPoin;
private int totalPerluBayar = 178800; private int totalPerluBayar = 0;
private int totalBayar = 0; private int totalBayar = 0;
private void hitungBayar() { private void hitungBayar() {

@ -20,6 +20,8 @@ import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;
import javafx.scene.control.Dialog; import javafx.scene.control.Dialog;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@ -71,6 +73,7 @@ public class DialogSelesaiBayarTidakLunasController extends Dialog implements In
daftarChkBayarOpsional.add(chkGopay); daftarChkBayarOpsional.add(chkGopay);
daftarChkBayarOpsional.add(chkOvo); daftarChkBayarOpsional.add(chkOvo);
daftarChkBayarOpsional.add(chkPoin); daftarChkBayarOpsional.add(chkPoin);
getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonBar.ButtonData.CANCEL_CLOSE));
} }
public DialogSelesaiBayarTidakLunasController(BayarInterface parent, int kurangBayar) { public DialogSelesaiBayarTidakLunasController(BayarInterface parent, int kurangBayar) {

@ -5,6 +5,7 @@
*/ */
package id.amigogroup.posterminal.bayar; package id.amigogroup.posterminal.bayar;
import id.amigogroup.posterminal.FormUtamaController;
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;
@ -86,6 +87,14 @@ public class FormBayarController implements Initializable, BayarInterface {
initShortcuts(); initShortcuts();
} }
public void initData(FormUtamaController parent) {
if (parent != null && parent.notaContent.getControllerTunai() != null) {
bayarContent.setTotalPerluBayar(parent.notaContent.getControllerTunai().total);
updateGrandTotalView();
updateKurangBayarView();
}
}
private void initShortcuts() { private void initShortcuts() {
Map<KeyCombination, Runnable> listShortcuts = new HashMap<>(); Map<KeyCombination, Runnable> listShortcuts = new HashMap<>();
@ -245,6 +254,10 @@ public class FormBayarController implements Initializable, BayarInterface {
} }
} }
private void updateGrandTotalView() {
lblGrandTotal.setText(Fucout.formatRupiah(bayarContent.getTotalPerluBayar()));
}
@Override @Override
public BayarContent getBayarContent() { public BayarContent getBayarContent() {
return bayarContent; return bayarContent;

@ -89,13 +89,16 @@ public class FormTransaksiTunaiController implements Initializable {
private String noNota = ""; private String noNota = "";
private AmigoPosRx posRx = new AmigoPosRx(); private AmigoPosRx posRx = new AmigoPosRx();
public int total = 0;
/** /**
* Initializes the controller class. * Initializes the controller class.
*/ */
@Override @Override
public void initialize(URL url, ResourceBundle rb) { public void initialize(URL url, ResourceBundle rb) {
fldScan.requestFocus(); Platform.runLater(() -> {
fldScan.requestFocus();
});
tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> { tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> {
return new ReadOnlyObjectWrapper(tbvTransaksi.getItems().indexOf(cell.getValue()) + 1); return new ReadOnlyObjectWrapper(tbvTransaksi.getItems().indexOf(cell.getValue()) + 1);
@ -113,7 +116,7 @@ public class FormTransaksiTunaiController implements Initializable {
tcAction.setCellValueFactory(new PropertyValueFactory<>("btnAction")); tcAction.setCellValueFactory(new PropertyValueFactory<>("btnAction"));
tbvTransaksi.setItems(daftarTabelTransaksi); tbvTransaksi.setItems(daftarTabelTransaksi);
// fillTable(new ArrayList<>()); lblGrandTotal.setText(Fucout.formatRupiah(0));
} }
public void initData(String noNota, boolean baru) { public void initData(String noNota, boolean baru) {
@ -133,6 +136,7 @@ public class FormTransaksiTunaiController implements Initializable {
private void refreshData(List<DNotaTunai> daftarNotaTunai) { private void refreshData(List<DNotaTunai> daftarNotaTunai) {
daftarTabelTransaksi.clear(); daftarTabelTransaksi.clear();
hitungTotal(daftarNotaTunai);
String[] promo = {"Ulang Tahun", "Harbolnas", "Ultah Amigo"}; String[] promo = {"Ulang Tahun", "Harbolnas", "Ultah Amigo"};
for (DNotaTunai dNotaTunai : daftarNotaTunai) { for (DNotaTunai dNotaTunai : daftarNotaTunai) {
@ -187,24 +191,31 @@ public class FormTransaksiTunaiController implements Initializable {
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("");
if (noBarang.getStokOperasional() > 0) { if (noBarang.getStokOperasional() > 0) {
boolean ada = false; boolean ada = false;
for (TabelBarangTunai tbt : daftarTabelTransaksi) { for (TabelBarangTunai tbt : daftarTabelTransaksi) {
if (tbt.getKode().equals(barang.getKodeBarang()) && tbt.getUkur().equals(noBarang.getNomor())) { if (tbt.getKode().equals(barang.getKodeBarang()) && tbt.getUkur().equals(noBarang.getNomor())) {
if (noBarang.getStokOperasional() >= tbt.getData().getJumlah() + 1) { if (tbt.getData() != null) {
tbt.getData().setJumlah(tbt.getData().getJumlah() + 1); if (noBarang.getStokOperasional() >= tbt.getData().getJumlah() + 1) {
tbt.setJumlah(String.valueOf(tbt.getData().getJumlah())); tbt.getData().setJumlah(tbt.getData().getJumlah() + 1);
tbvTransaksi.refresh(); tbt.setJumlah(String.valueOf(tbt.getData().getJumlah()));
} else { tbt.setSubTotal(Fucout.formatRibuan(
System.out.println("Halo"); tbt.getData().getJumlah() * tbt.getData().getHargaJual()));
Platform.runLater(() -> {
Alert alert = AlertUtil.getAlertWarning( total += noBarang.getHargaJual();
"Stok Habis", updateLabelGrandTotal();
"Tidak bisa menambahkan barang karena stok barang habis"); tbvTransaksi.refresh();
alert.initOwner(apMain.getScene().getWindow()); } else {
alert.show(); Platform.runLater(() -> {
}); Alert alert = AlertUtil.getAlertWarning(
"Stok Habis",
"Tidak bisa menambahkan barang karena stok barang habis");
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
}
} }
ada = true; ada = true;
@ -261,6 +272,8 @@ public class FormTransaksiTunaiController implements Initializable {
btnAction); btnAction);
tbt.setData(dNotaTunai); tbt.setData(dNotaTunai);
total += noBarang.getHargaJual();
updateLabelGrandTotal();
daftarTabelTransaksi.add(tbt); daftarTabelTransaksi.add(tbt);
} }
} else { } else {
@ -275,6 +288,22 @@ public class FormTransaksiTunaiController implements Initializable {
} }
} }
private int hitungTotal(List<DNotaTunai> daftarDNotaTunai) {
int totalTemp = 0;
for (DNotaTunai dNotaTunai : daftarDNotaTunai) {
totalTemp += dNotaTunai.getJumlah() * dNotaTunai.getHargaJual();
}
total = totalTemp;
updateLabelGrandTotal();
return 0;
}
private void updateLabelGrandTotal() {
lblGrandTotal.setText(Fucout.formatRupiah(total));
}
//SCAN BARANG //SCAN BARANG
@FXML @FXML
void fldScanOnKeyPressed(KeyEvent event) { void fldScanOnKeyPressed(KeyEvent event) {

Loading…
Cancel
Save