瀏覽代碼

Update Grand Total dan Subtotal saat barang di scan

pull/10/head
Ronaldo Christnawan 5 年之前
父節點
當前提交
868bbe94c8
共有 7 個檔案被更改,包括 227 行新增66 行删除
  1. +1
    -1
      src/main/java/id/amigogroup/posterminal/FormFactory.java
  2. +158
    -44
      src/main/java/id/amigogroup/posterminal/FormUtamaController.java
  3. +3
    -1
      src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java
  4. +1
    -1
      src/main/java/id/amigogroup/posterminal/bayar/BayarContent.java
  5. +3
    -0
      src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java
  6. +16
    -3
      src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java
  7. +45
    -16
      src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java

+ 1
- 1
src/main/java/id/amigogroup/posterminal/FormFactory.java 查看文件

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


+ 158
- 44
src/main/java/id/amigogroup/posterminal/FormUtamaController.java 查看文件

@@ -84,7 +84,7 @@ public class FormUtamaController implements Initializable {
private int jumlahNota = 0;
private final char NOTA_PREV = 'p';
private final char NOTA_NEXT = 'n';
private final NotaContent notaContent = new NotaContent();
public final NotaContent notaContent = new NotaContent();
private final AmigoPosRx posRx = new AmigoPosRx();

/**
@@ -164,28 +164,28 @@ public class FormUtamaController implements Initializable {
try {
switch (tipe) {
case FormConstanta.TRANSAKSI_TUNAI:
if (notaContent.nodeTunai != null) {
node = notaContent.nodeTunai;
if (notaContent.getNodeTunai() != null) {
node = notaContent.getNodeTunai();
} else {
loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml"));
node = loader.load();
notaContent.nodeTunai = node;
notaContent.setNodeTunai(node);

FormTransaksiTunaiController fttc = loader.getController();
notaContent.controllerTunai = fttc;
notaContent.setControllerTunai(fttc);
fttc.initData(noNota, baru);
}
break;
case FormConstanta.TRANSAKSI_RETUR:
if (notaContent.nodeRetur != null) {
node = notaContent.nodeRetur;
if (notaContent.getNodeRetur() != null) {
node = notaContent.getNodeRetur();
} else {
loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml"));
node = loader.load();
notaContent.nodeRetur = node;
notaContent.setNodeRetur(node);

FormTransaksiReturController ftrc = loader.getController();
notaContent.controllerRetur = ftrc;
notaContent.setControllerRetur(ftrc);
ftrc.initData(noNota, baru);
}
break;
@@ -257,10 +257,10 @@ public class FormUtamaController implements Initializable {
BarangFull barangFull = result.get();
switch (tipeTransaksiState) {
case FormConstanta.TRANSAKSI_TUNAI:
if (notaContent.controllerTunai != null) {
if (notaContent.getControllerTunai() != null) {
if (barangFull.getBarang() != null && barangFull.getNoBarang() != null
&& barangFull.getBarang().getIdGabungan().equals(barangFull.getNoBarang().getIdGabungan())) {
notaContent.controllerTunai.addToTable(barangFull.getBarang(), barangFull.getNoBarang());
notaContent.getControllerTunai().addToTable(barangFull.getBarang(), barangFull.getNoBarang());
} else {
Alert alert = AlertUtil.getAlertWarning(
AlertUtil.ERROR_TIDAK_LENGKAP_TITLE,
@@ -385,9 +385,9 @@ public class FormUtamaController implements Initializable {
setContent(null);
}

if (notaContent.btnTunai != null) {
navigasi.remove(notaContent.btnTunai);
vbNavigasi.getChildren().remove(notaContent.btnTunai);
if (notaContent.getBtnTunai() != null) {
navigasi.remove(notaContent.getBtnTunai());
vbNavigasi.getChildren().remove(notaContent.getBtnTunai());
}

Button buttonBaru = generateButtonNota(Fucout.getNoNotaTemporary(),
@@ -396,16 +396,16 @@ public class FormUtamaController implements Initializable {
true);
navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru);
notaContent.btnTunai = buttonBaru;
notaContent.setBtnTunai(buttonBaru);
jumlahNota++;
} else if (hasilReturn.get().equals("Baru:Bon")) {
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BON)) {
setContent(null);
}

if (notaContent.btnBon != null) {
navigasi.remove(notaContent.btnBon);
vbNavigasi.getChildren().remove(notaContent.btnBon);
if (notaContent.getBtnBon() != null) {
navigasi.remove(notaContent.getBtnBon());
vbNavigasi.getChildren().remove(notaContent.getBtnBon());
}

Button buttonBaru = generateButtonNota("B-" + Fucout.getNoNotaTemporary(),
@@ -414,16 +414,16 @@ public class FormUtamaController implements Initializable {
true);
navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru);
notaContent.btnBon = buttonBaru;
notaContent.setBtnBon(buttonBaru);
jumlahNota++;
} else if (hasilReturn.get().equals("Baru:Bawa Dulu")) {
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_BAWA)) {
setContent(null);
}

if (notaContent.btnBawa != null) {
navigasi.remove(notaContent.btnBawa);
vbNavigasi.getChildren().remove(notaContent.btnBawa);
if (notaContent.getBtnBawa() != null) {
navigasi.remove(notaContent.getBtnBawa());
vbNavigasi.getChildren().remove(notaContent.getBtnBawa());
}

Button buttonBaru = generateButtonNota("W-" + Fucout.getNoNotaTemporary(),
@@ -432,16 +432,16 @@ public class FormUtamaController implements Initializable {
true);
navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru);
notaContent.btnBawa = buttonBaru;
notaContent.setBtnBawa(buttonBaru);
jumlahNota++;
} else if (hasilReturn.get().equals("Baru:Retur")) {
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) {
setContent(null);
}

if (notaContent.btnRetur != null) {
navigasi.remove(notaContent.btnRetur);
vbNavigasi.getChildren().remove(notaContent.btnRetur);
if (notaContent.getBtnRetur() != null) {
navigasi.remove(notaContent.getBtnRetur());
vbNavigasi.getChildren().remove(notaContent.getBtnRetur());
}

Button buttonBaru = generateButtonNota("R-" + Fucout.getNoNotaTemporary(),
@@ -450,7 +450,7 @@ public class FormUtamaController implements Initializable {
true);
navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru);
notaContent.btnRetur = buttonBaru;
notaContent.setBtnRetur(buttonBaru);
jumlahNota++;
} else if (hasilReturn.get().contains("Checkout:")) {
String noNota = hasilReturn.get().substring(9);
@@ -470,31 +470,31 @@ public class FormUtamaController implements Initializable {
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_RETUR)) {
setContent(null);
}
if (notaContent.btnRetur != null) {
navigasi.remove(notaContent.btnRetur);
vbNavigasi.getChildren().remove(notaContent.btnRetur);
if (notaContent.getBtnRetur() != null) {
navigasi.remove(notaContent.getBtnRetur());
vbNavigasi.getChildren().remove(notaContent.getBtnRetur());
}

buttonBaru = generateButtonNota(noNota,
FormConstanta.TRANSAKSI_RETUR,
Fucout.TEKS_TIPE_NOTA_RETUR,
false);
notaContent.btnRetur = buttonBaru;
notaContent.setBtnRetur(buttonBaru);
break;
default:
if (tipeTransaksiState.equals(FormConstanta.TRANSAKSI_TUNAI)) {
setContent(null);
}
if (notaContent.btnTunai != null) {
navigasi.remove(notaContent.btnTunai);
vbNavigasi.getChildren().remove(notaContent.btnTunai);
if (notaContent.getBtnTunai() != null) {
navigasi.remove(notaContent.getBtnTunai());
vbNavigasi.getChildren().remove(notaContent.getBtnTunai());
}

buttonBaru = generateButtonNota(noNota,
FormConstanta.TRANSAKSI_TUNAI,
Fucout.TEKS_TIPE_NOTA_TUNAI,
false);
notaContent.btnTunai = buttonBaru;
notaContent.setBtnTunai(buttonBaru);
break;
}
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;
}

Button btnTunai;
FormTransaksiTunaiController controllerTunai = null;
Node nodeTunai = null;
Button btnBawa;
Button btnBon;
Button btnRetur;
FormTransaksiReturController controllerRetur = null;
Node nodeRetur = null;
/**
* @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;
}
}
}

+ 3
- 1
src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java 查看文件

@@ -18,6 +18,7 @@ import id.amigogroup.posterminal.util.AlertUtil;
import io.reactivex.Observable;
import io.reactivex.schedulers.Schedulers;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.List;
import java.util.logging.Level;
@@ -102,7 +103,8 @@ public class AmigoPosRx {
}

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(() -> {
Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE,


+ 1
- 1
src/main/java/id/amigogroup/posterminal/bayar/BayarContent.java 查看文件

@@ -26,7 +26,7 @@ public class BayarContent {
private Node nodePoin;
private int bayarPoin;

private int totalPerluBayar = 178800;
private int totalPerluBayar = 0;
private int totalBayar = 0;

private void hitungBayar() {


+ 3
- 0
src/main/java/id/amigogroup/posterminal/bayar/DialogSelesaiBayarTidakLunasController.java 查看文件

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

public DialogSelesaiBayarTidakLunasController(BayarInterface parent, int kurangBayar) {


+ 16
- 3
src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java 查看文件

@@ -5,6 +5,7 @@
*/
package id.amigogroup.posterminal.bayar;

import id.amigogroup.posterminal.FormUtamaController;
import id.amigogroup.posterminal.util.Fucout;
import java.io.IOException;
import java.net.URL;
@@ -86,6 +87,14 @@ public class FormBayarController implements Initializable, BayarInterface {
initShortcuts();
}

public void initData(FormUtamaController parent) {
if (parent != null && parent.notaContent.getControllerTunai() != null) {
bayarContent.setTotalPerluBayar(parent.notaContent.getControllerTunai().total);
updateGrandTotalView();
updateKurangBayarView();
}
}

private void initShortcuts() {
Map<KeyCombination, Runnable> listShortcuts = new HashMap<>();

@@ -161,7 +170,7 @@ public class FormBayarController implements Initializable, BayarInterface {

vbContent.getChildren().add(node);
bayarContent.setNodeRetur(node);
FormBayarReturController fbrc = loader.getController();
fbrc.initData(this);
} else {
@@ -200,7 +209,7 @@ public class FormBayarController implements Initializable, BayarInterface {

vbContent.getChildren().add(node);
bayarContent.setNodePoin(node);
FormBayarPoinController fbpc = loader.getController();
fbpc.initData(this);
} else {
@@ -244,7 +253,11 @@ public class FormBayarController implements Initializable, BayarInterface {
}
}
}

private void updateGrandTotalView() {
lblGrandTotal.setText(Fucout.formatRupiah(bayarContent.getTotalPerluBayar()));
}
@Override
public BayarContent getBayarContent() {
return bayarContent;


+ 45
- 16
src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java 查看文件

@@ -89,13 +89,16 @@ public class FormTransaksiTunaiController implements Initializable {

private String noNota = "";
private AmigoPosRx posRx = new AmigoPosRx();
public int total = 0;

/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
fldScan.requestFocus();
Platform.runLater(() -> {
fldScan.requestFocus();
});

tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> {
return new ReadOnlyObjectWrapper(tbvTransaksi.getItems().indexOf(cell.getValue()) + 1);
@@ -113,7 +116,7 @@ public class FormTransaksiTunaiController implements Initializable {
tcAction.setCellValueFactory(new PropertyValueFactory<>("btnAction"));
tbvTransaksi.setItems(daftarTabelTransaksi);

// fillTable(new ArrayList<>());
lblGrandTotal.setText(Fucout.formatRupiah(0));
}

public void initData(String noNota, boolean baru) {
@@ -133,6 +136,7 @@ public class FormTransaksiTunaiController implements Initializable {

private void refreshData(List<DNotaTunai> daftarNotaTunai) {
daftarTabelTransaksi.clear();
hitungTotal(daftarNotaTunai);

String[] promo = {"Ulang Tahun", "Harbolnas", "Ultah Amigo"};
for (DNotaTunai dNotaTunai : daftarNotaTunai) {
@@ -187,24 +191,31 @@ public class FormTransaksiTunaiController implements Initializable {

public void addToTable(Barang barang, NoBarang noBarang) {
if (barang != null && noBarang != null) {
fldScan.setText("");
if (noBarang.getStokOperasional() > 0) {
boolean ada = false;
for (TabelBarangTunai tbt : daftarTabelTransaksi) {
if (tbt.getKode().equals(barang.getKodeBarang()) && tbt.getUkur().equals(noBarang.getNomor())) {
if (noBarang.getStokOperasional() >= tbt.getData().getJumlah() + 1) {
tbt.getData().setJumlah(tbt.getData().getJumlah() + 1);
tbt.setJumlah(String.valueOf(tbt.getData().getJumlah()));
tbvTransaksi.refresh();
} else {
System.out.println("Halo");
Platform.runLater(() -> {
Alert alert = AlertUtil.getAlertWarning(
"Stok Habis",
"Tidak bisa menambahkan barang karena stok barang habis");
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});

if (tbt.getData() != null) {
if (noBarang.getStokOperasional() >= tbt.getData().getJumlah() + 1) {
tbt.getData().setJumlah(tbt.getData().getJumlah() + 1);
tbt.setJumlah(String.valueOf(tbt.getData().getJumlah()));
tbt.setSubTotal(Fucout.formatRibuan(
tbt.getData().getJumlah() * tbt.getData().getHargaJual()));

total += noBarang.getHargaJual();
updateLabelGrandTotal();
tbvTransaksi.refresh();
} else {
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;
@@ -261,6 +272,8 @@ public class FormTransaksiTunaiController implements Initializable {
btnAction);
tbt.setData(dNotaTunai);

total += noBarang.getHargaJual();
updateLabelGrandTotal();
daftarTabelTransaksi.add(tbt);
}
} 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
@FXML
void fldScanOnKeyPressed(KeyEvent event) {


Loading…
取消
儲存