소스 검색

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
부모
커밋
32ccd3df74
5개의 변경된 파일339개의 추가작업 그리고 278개의 파일을 삭제
  1. +21
    -4
      src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java
  2. +222
    -224
      src/main/java/id/amigogroup/posterminal/pencarian/DialogCetakNotaController.java
  3. +53
    -30
      src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java
  4. +41
    -19
      src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java
  5. +2
    -1
      src/main/java/id/amigogroup/posterminal/util/AlertUtil.java

+ 21
- 4
src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java 파일 보기

@@ -65,6 +65,7 @@ public class FormBayarController implements Initializable, BayarInterface {
private final List<CheckBox> daftarChkBayarSyarat;
private final List<CheckBox> 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<String> 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;


+ 222
- 224
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<String> implements Initializable {
@FXML
private ScrollPane spCetakNota;
@FXML
private VBox vbCetakNota;
@FXML
private TitledPane tpTunai;
@FXML
private AnchorPane apTunai;
@FXML
private TableView<TabelBarangTunai> tbvTunai;
@FXML
private TableColumn<TabelBarangTunai, Integer> tcNoTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcKodeBarangTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcNamaBarangTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcUkurTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcJumlahTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcHargaTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcDisc1Tunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcDisc2Tunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcSubTotalTunai;
@FXML
private TableColumn<TabelBarangTunai, String> 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<TabelBarangRetur> tbvRetur;
@FXML
private TableColumn<TabelBarangRetur, Integer> tcNoRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcKodeBarangRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcNamaBarangRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcUkurRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcJumlahRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcHargaRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcDisc1Retur;
@FXML
private TableColumn<TabelBarangRetur, String> tcDisc2Retur;
@FXML
private TableColumn<TabelBarangRetur, String> tcSubTotalRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcPramuniagaRetur;
public final ObservableList<TabelBarangTunai> daftarTabelTunai = FXCollections.observableArrayList();
public final ObservableList<TabelBarangRetur> 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<TabelBarangTunai, Integer> 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<TabelBarangRetur, Integer> 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<TabelBarangTunai> daftarTabelTransaksiTunai,
ObservableList<TabelBarangRetur> 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<String> implements Initializable {

@FXML
private ScrollPane spCetakNota;
@FXML
private VBox vbCetakNota;
@FXML
private TitledPane tpTunai;
@FXML
private AnchorPane apTunai;
@FXML
private TableView<TabelBarangTunai> tbvTunai;
@FXML
private TableColumn<TabelBarangTunai, Integer> tcNoTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcKodeBarangTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcNamaBarangTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcUkurTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcJumlahTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcHargaTunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcDisc1Tunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcDisc2Tunai;
@FXML
private TableColumn<TabelBarangTunai, String> tcSubTotalTunai;
@FXML
private TableColumn<TabelBarangTunai, String> 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<TabelBarangRetur> tbvRetur;
@FXML
private TableColumn<TabelBarangRetur, Integer> tcNoRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcKodeBarangRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcNamaBarangRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcUkurRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcJumlahRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcHargaRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcDisc1Retur;
@FXML
private TableColumn<TabelBarangRetur, String> tcDisc2Retur;
@FXML
private TableColumn<TabelBarangRetur, String> tcSubTotalRetur;
@FXML
private TableColumn<TabelBarangRetur, String> tcPramuniagaRetur;

public final ObservableList<TabelBarangTunai> daftarTabelTunai = FXCollections.observableArrayList();
public final ObservableList<TabelBarangRetur> 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<TabelBarangTunai, Integer> 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<TabelBarangRetur, Integer> 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<TabelBarangTunai> daftarTabelTransaksiTunai,
ObservableList<TabelBarangRetur> 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())));
}
}
}
}

+ 53
- 30
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<TabelBarangRetur> 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<TabelBarangRetur, Integer> 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<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
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<DNotaTunai> daftarDNotaTunai) {
fldNotaPenjualan.clear();
lastNoNotaPenjualan = fldNotaPenjualan.getText();
refreshDataPenjualan(daftarDNotaTunai);
}



+ 41
- 19
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<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) {
if (barang != null && noBarang != null) {
fldScan.setText("");
@@ -299,15 +325,7 @@ public class FormTransaksiTunaiController implements Initializable {
ComboBox<String> 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);


+ 2
- 1
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;


불러오는 중...
취소
저장