diff --git a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java index 98be49d..1d3fe95 100644 --- a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java +++ b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java @@ -1,11 +1,7 @@ package id.amigogroup.posterminal; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import id.amigogroup.posterminal.api.AmigoPosRx; import id.amigogroup.posterminal.model.Barang; -import id.amigogroup.posterminal.model.MNotaRetur; -import id.amigogroup.posterminal.model.MNotaTunai; import id.amigogroup.posterminal.model.Pelanggan; import id.amigogroup.posterminal.pencarian.DialogCariBarangController; import id.amigogroup.posterminal.pencarian.DialogCariNotaTundaController; @@ -17,7 +13,6 @@ import id.amigogroup.posterminal.transaksi.FormTransaksiReturController; import id.amigogroup.posterminal.transaksi.FormTransaksiTunaiController; import id.amigogroup.posterminal.util.AlertUtil; import id.amigogroup.posterminal.util.Fucout; -import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import java.io.IOException; @@ -171,17 +166,13 @@ public class FormUtamaController implements Initializable { loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml")); node = loader.load(); FormTransaksiTunaiController fttc = loader.getController(); - if (!baru) { - fttc.initData(noNota); - } + fttc.initData(noNota,baru); break; case FormConstanta.TRANSAKSI_RETUR: loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml")); node = loader.load(); FormTransaksiReturController ftrc = loader.getController(); - if (!baru) { -// ftrc.initData(noNota); - } + ftrc.initData(noNota,baru); break; } @@ -240,7 +231,6 @@ public class FormUtamaController implements Initializable { dialogCariBarang.initOwner(bpMain.getScene().getWindow()); Optional result = dialogCariBarang.showAndWait(); - System.out.println(result); }; listShortcuts.put(kcCariBarang, rnCariBarang); @@ -256,7 +246,6 @@ public class FormUtamaController implements Initializable { updateLabelPelanggan(result.get()); updateLabelMemberNonMember(); } - System.out.println(result); }; listShortcuts.put(kcCariPelanggan, rnCariPelanggan); diff --git a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java index 0436cb5..132a1a5 100644 --- a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java +++ b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java @@ -11,6 +11,7 @@ import id.amigogroup.posterminal.model.Karyawan; import id.amigogroup.posterminal.model.Pagination; import id.amigogroup.posterminal.model.MNotaRetur; import id.amigogroup.posterminal.model.MNotaTunai; +import id.amigogroup.posterminal.model.NoBarang; import id.amigogroup.posterminal.model.Pelanggan; import id.amigogroup.posterminal.model.Tas; import io.reactivex.Observable; @@ -31,6 +32,10 @@ public class AmigoPosRx { public Observable> getBarangByNamaBarang(String namaBarang){ return UtilsApi.getServiceApiBarang().getBarangByNamaBarang(namaBarang); } + + public Observable getNoBarangByIdGabunganNomor(String idGabungan, String nomor) { + return UtilsApi.getServiceApiBarang().getByIdGabunganNomor(idGabungan, nomor); + } public Observable getMNotaTunaiByNoNota(String noNota) { return UtilsApi.getServiceApiBarang().getMNotaTunaiByNoNota(noNota); diff --git a/src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java b/src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java index 76c8f0c..8bf8fc5 100644 --- a/src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java +++ b/src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java @@ -9,6 +9,7 @@ import id.amigogroup.posterminal.model.Barang; import id.amigogroup.posterminal.model.DNotaTunai; import id.amigogroup.posterminal.model.MNotaRetur; import id.amigogroup.posterminal.model.MNotaTunai; +import id.amigogroup.posterminal.model.NoBarang; import id.amigogroup.posterminal.model.Pagination; import io.reactivex.Observable; import java.util.List; @@ -25,6 +26,13 @@ public interface ServiceApiBarang { @GET("barangs/kode/{kode}") Observable getBarangByKodeBarang(@Path("kode") String kode); + //NO-BARANG + //Mengambil No Barang by Id Gabungan & Ukuran + @GET("no-barangs/id-gabungan/{idGabungan}/nomor/{nomor}") + Observable getByIdGabunganNomor( + @Path("idGabungan") String idGabungan, + @Path("nomor") String nomor); + //M-NOTA-TUNAI //Mengambil Master Nota Tunai by No Nota @GET("m-nota-tunai/no-nota/{noNota}") diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java index b930ffb..d4ab4d6 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java @@ -121,10 +121,11 @@ public class FormBayarController implements Initializable, BayarInterface { loader.setLocation(getClass().getResource("/fxml/FormBayarTunai.fxml")); node = loader.load(); - FormBayarTunaiController fbtc = loader.getController(); - fbtc.initData(this); vbContent.getChildren().add(node); bayarContent.setNodeTunai(node); + + FormBayarTunaiController fbtc = loader.getController(); + fbtc.initData(this); } else { if (bayarContent.getNodeTunai() != null) { vbContent.getChildren().remove(bayarContent.getNodeTunai()); @@ -139,10 +140,11 @@ public class FormBayarController implements Initializable, BayarInterface { loader.setLocation(getClass().getResource("/fxml/FormBayarKartu.fxml")); node = loader.load(); - FormBayarKartuController fbkc = loader.getController(); - fbkc.initData(this); vbContent.getChildren().add(node); bayarContent.setNodeKartu(node); + + FormBayarKartuController fbkc = loader.getController(); + fbkc.initData(this); } else { if (bayarContent.getNodeKartu() != null) { vbContent.getChildren().remove(bayarContent.getNodeKartu()); @@ -156,11 +158,12 @@ public class FormBayarController implements Initializable, BayarInterface { if (bayarContent.getNodeRetur() == null && chkSource.selectedProperty().get()) { loader.setLocation(getClass().getResource("/fxml/FormBayarRetur.fxml")); node = loader.load(); + + vbContent.getChildren().add(node); + bayarContent.setNodeRetur(node); FormBayarReturController fbrc = loader.getController(); fbrc.initData(this); - vbContent.getChildren().add(node); - bayarContent.setNodeRetur(node); } else { if (bayarContent.getNodeRetur() != null) { vbContent.getChildren().remove(bayarContent.getNodeRetur()); @@ -194,11 +197,12 @@ public class FormBayarController implements Initializable, BayarInterface { if (bayarContent.getNodePoin() == null && chkSource.selectedProperty().get()) { loader.setLocation(getClass().getResource("/fxml/FormBayarPoin.fxml")); node = loader.load(); + + vbContent.getChildren().add(node); + bayarContent.setNodePoin(node); FormBayarPoinController fbpc = loader.getController(); fbpc.initData(this); - vbContent.getChildren().add(node); - bayarContent.setNodePoin(node); } else { if (bayarContent.getNodePoin() != null) { vbContent.getChildren().remove(bayarContent.getNodePoin()); diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarTunaiController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarTunaiController.java index 6b019bd..65faef0 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarTunaiController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarTunaiController.java @@ -60,7 +60,7 @@ public class FormBayarTunaiController implements Initializable { < parent.getBayarContent().getTotalBayar()) { int kembali = parent.getBayarContent().getTotalBayar() - parent.getBayarContent().getTotalPerluBayar(); - lblKembalian.setText(Fucout.formatRibuan(kembali)); + lblKembalian.setText(Fucout.getText(Fucout.formatRibuan(kembali))); } else { lblKembalian.setText("-"); } diff --git a/src/main/java/id/amigogroup/posterminal/model/Barang.java b/src/main/java/id/amigogroup/posterminal/model/Barang.java index 6344a76..25f4d36 100644 --- a/src/main/java/id/amigogroup/posterminal/model/Barang.java +++ b/src/main/java/id/amigogroup/posterminal/model/Barang.java @@ -1,4 +1,3 @@ - package id.amigogroup.posterminal.model; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -51,10 +50,28 @@ public class Barang { private String kedProduk; @JsonProperty("kode_merk") private String kodeMerk; - + private String nomor; - private String noBarang; + public Barang() { + + } + + public Barang(Barang b) { + this.kodeBarang = b.kodeBarang; + this.kodeLama = b.kodeLama; + this.namaBarang = b.namaBarang; + this.kodeToko = b.kodeToko; + this.kelompok = b.kelompok; + this.tahun = b.tahun; + this.bulan = b.bulan; + this.idGabungan = b.idGabungan; + this.kodeStrip = b.kodeStrip; + this.kodeSupplier = b.kodeSupplier; + this.kedProduk = b.kedProduk; + this.kodeMerk = b.kodeMerk; + } + @JsonProperty("kode_barang") public String getKodeBarang() { return kodeBarang; @@ -175,6 +192,20 @@ public class Barang { this.kodeMerk = kodeMerk; } + /** + * @return the nomor + */ + public String getNomor() { + return nomor; + } + + /** + * @param nomor the nomor to set + */ + public void setNomor(String nomor) { + this.nomor = nomor; + } + @Override public String toString() { return new ToStringBuilder(this).append("kodeBarang", kodeBarang).append("kodeLama", kodeLama).append("namaBarang", namaBarang).append("kodeToko", kodeToko).append("kelompok", kelompok).append("tahun", tahun).append("bulan", bulan).append("idGabungan", idGabungan).append("kodeStrip", kodeStrip).append("kodeSupplier", kodeSupplier).append("kedProduk", kedProduk).append("kodeMerk", kodeMerk).toString(); @@ -196,5 +227,4 @@ public class Barang { Barang rhs = ((Barang) other); return new EqualsBuilder().append(tahun, rhs.tahun).append(kodeLama, rhs.kodeLama).append(idGabungan, rhs.idGabungan).append(kodeToko, rhs.kodeToko).append(kedProduk, rhs.kedProduk).append(namaBarang, rhs.namaBarang).append(kelompok, rhs.kelompok).append(kodeBarang, rhs.kodeBarang).append(bulan, rhs.bulan).append(kodeStrip, rhs.kodeStrip).append(kodeSupplier, rhs.kodeSupplier).append(kodeMerk, rhs.kodeMerk).isEquals(); } - } diff --git a/src/main/java/id/amigogroup/posterminal/model/DNotaRetur.java b/src/main/java/id/amigogroup/posterminal/model/DNotaRetur.java index 5e3253f..83ac74c 100644 --- a/src/main/java/id/amigogroup/posterminal/model/DNotaRetur.java +++ b/src/main/java/id/amigogroup/posterminal/model/DNotaRetur.java @@ -50,6 +50,26 @@ public class DNotaRetur { @JsonProperty("bonus") private double bonus; + private Barang barang; + + public DNotaRetur(){ + + } + + public DNotaRetur(String noNota, DNotaTunai dNotaTunai) { + this.noNota = noNota; + this.kdBarang = dNotaTunai.getKdBarang(); + this.noBarang = dNotaTunai.getNoBarang(); + this.jumlah = 1; + this.diskon = dNotaTunai.getDiskon(); + this.diskon2 = dNotaTunai.getDiskon2(); + this.hargaJual = dNotaTunai.getHargaJual(); + this.hargaPokok = dNotaTunai.getHargaPokok(); + this.noNotaTunai = dNotaTunai.getNoNota(); + this.bonus = dNotaTunai.getBonus(); + this.barang = dNotaTunai.getBarang(); + } + @JsonProperty("id") public int getId() { return id; @@ -170,6 +190,20 @@ public class DNotaRetur { this.bonus = bonus; } + /** + * @return the barang + */ + public Barang getBarang() { + return barang; + } + + /** + * @param barang the barang to set + */ + public void setBarang(Barang barang) { + this.barang = barang; + } + @Override public String toString() { return new ToStringBuilder(this).append("id", id).append("noNota", noNota).append("kdBarang", kdBarang).append("noBarang", noBarang).append("jumlah", jumlah).append("diskon", diskon).append("diskon2", diskon2).append("hargaJual", hargaJual).append("hargaPokok", hargaPokok).append("kodePram", kodePram).append("noNotaTunai", noNotaTunai).append("bonus", bonus).toString(); diff --git a/src/main/java/id/amigogroup/posterminal/model/DNotaTunai.java b/src/main/java/id/amigogroup/posterminal/model/DNotaTunai.java index 053a00c..6ee0bf3 100644 --- a/src/main/java/id/amigogroup/posterminal/model/DNotaTunai.java +++ b/src/main/java/id/amigogroup/posterminal/model/DNotaTunai.java @@ -1,4 +1,3 @@ - package id.amigogroup.posterminal.model; import com.fasterxml.jackson.annotation.JsonInclude; @@ -47,6 +46,23 @@ public class DNotaTunai { @JsonProperty("bonus") private int bonus; + private Barang barang; + + public DNotaTunai(String noNota, String kdBarang, String noBarang, + int jumlah, int diskon, int diskon2, int hargaJual, String hargaPokok, + String kodePram, int bonus) { + this.noNota = noNota; + this.kdBarang = kdBarang; + this.noBarang = noBarang; + this.jumlah = jumlah; + this.diskon = diskon; + this.diskon2 = diskon2; + this.hargaJual = hargaJual; + this.hargaPokok = hargaPokok; + this.kodePram = kodePram; + this.bonus = bonus; + } + @JsonProperty("id") public int getId() { return id; @@ -157,6 +173,20 @@ public class DNotaTunai { this.bonus = bonus; } + /** + * @return the barang + */ + public Barang getBarang() { + return barang; + } + + /** + * @param barang the barang to set + */ + public void setBarang(Barang barang) { + this.barang = barang; + } + @Override public String toString() { return new ToStringBuilder(this).append("id", id).append("noNota", noNota).append("kdBarang", kdBarang).append("noBarang", noBarang).append("jumlah", jumlah).append("diskon", diskon).append("diskon2", diskon2).append("hargaJual", hargaJual).append("hargaPokok", hargaPokok).append("kodePram", kodePram).append("bonus", bonus).toString(); diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/DetailTransaksi.java b/src/main/java/id/amigogroup/posterminal/transaksi/BarangFull.java similarity index 52% rename from src/main/java/id/amigogroup/posterminal/transaksi/DetailTransaksi.java rename to src/main/java/id/amigogroup/posterminal/transaksi/BarangFull.java index 6884ec4..e5691a3 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/DetailTransaksi.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/BarangFull.java @@ -6,55 +6,48 @@ package id.amigogroup.posterminal.transaksi; import id.amigogroup.posterminal.model.Barang; +import id.amigogroup.posterminal.model.NoBarang; /** * * @author ronal */ -public class DetailTransaksi { - private T masterNota; - private U detailNota; +public class BarangFull { private Barang barang; + private NoBarang noBarang; - /** - * @return the masterNota - */ - public T getMasterNota() { - return masterNota; - } - - /** - * @param masterNota the masterNota to set - */ - public void setMasterNota(T masterNota) { - this.masterNota = masterNota; + public BarangFull(Barang barang, NoBarang noBarang) { + this.barang = barang; + this.noBarang = noBarang; } /** - * @return the detailNota + * @return the barang */ - public U getDetailNota() { - return detailNota; + public Barang getBarang() { + return barang; } /** - * @param detailNota the detailNota to set + * @param barang the barang to set */ - public void setDetailNota(U detailNota) { - this.detailNota = detailNota; + public void setBarang(Barang barang) { + this.barang = barang; } /** - * @return the barang + * @return the noBarang */ - public Barang getBarang() { - return barang; + public NoBarang getNoBarang() { + return noBarang; } /** - * @param barang the barang to set + * @param noBarang the noBarang to set */ - public void setBarang(Barang barang) { - this.barang = barang; + public void setNoBarang(NoBarang noBarang) { + this.noBarang = noBarang; } + + } diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java index 39807bf..84b5bc2 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java @@ -8,8 +8,9 @@ package id.amigogroup.posterminal.transaksi; import id.amigogroup.posterminal.FormUtamaController; import id.amigogroup.posterminal.api.AmigoPosRx; import id.amigogroup.posterminal.model.Barang; +import id.amigogroup.posterminal.model.DNotaRetur; import id.amigogroup.posterminal.model.DNotaTunai; -import id.amigogroup.posterminal.pencarian.BarangCache; +import id.amigogroup.posterminal.util.AmigoPosCache; import id.amigogroup.posterminal.util.AlertUtil; import id.amigogroup.posterminal.util.Fucout; import io.reactivex.Observer; @@ -17,7 +18,6 @@ import io.reactivex.disposables.Disposable; import java.net.HttpURLConnection; import java.net.SocketTimeoutException; import java.net.URL; -import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import java.util.logging.Level; @@ -34,9 +34,15 @@ import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.ClipboardContent; +import javafx.scene.input.DragEvent; +import javafx.scene.input.Dragboard; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.input.TransferMode; import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; import retrofit2.HttpException; /** @@ -72,33 +78,40 @@ public class FormTransaksiReturController implements Initializable { private TableColumn tcSubTotal; @FXML private TableColumn tcPramuniaga; + @FXML + private Label lblNomorNota; + @FXML + private TableView tbvRetur; + @FXML + private TableColumn tcNoRetur; + @FXML + private TableColumn tcKodeRetur; + @FXML + private TableColumn tcNamaRetur; + @FXML + private TableColumn tcUkurRetur; + @FXML + private TableColumn tcJumlahRetur; + @FXML + private TableColumn tcHargaRetur; + @FXML + private TableColumn tcDisc1Retur; + @FXML + private TableColumn tcDisc2Retur; + @FXML + private TableColumn tcSubTotalRetur; + @FXML + private TableColumn tcPramuniagaRetur; + @FXML + private StackPane stpReturDrop; + @FXML + private Label lblTambahKeTabelRetur; -// @FXML -// private TableView tbvRetur; -// @FXML -// private TableColumn tcNoRetur; -// @FXML -// private TableColumn tcKodeRetur; -// @FXML -// private TableColumn tcNamaRetur; -// @FXML -// private TableColumn tcUkurRetur; -// @FXML -// private TableColumn tcJumlahRetur; -// @FXML -// private TableColumn tcHargaRetur; -// @FXML -// private TableColumn tcDisc1Retur; -// @FXML -// private TableColumn tcDisc2Retur; -// @FXML -// private TableColumn tcSubtotalRetur; -// @FXML -// private TableColumn tcPramuniagaRetur; - private final AmigoPosRx posRx = new AmigoPosRx(); + private String noNota = ""; private final ObservableList daftarTabelPenjualan = FXCollections.observableArrayList(); - private List daftarDetailTransaksi = new ArrayList<>(); + private final ObservableList daftarTabelRetur = FXCollections.observableArrayList(); + private TabelBarangTunai draggedTabelBarangTunai = null; /** * Initializes the controller class. @@ -118,33 +131,47 @@ public class FormTransaksiReturController implements Initializable { tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal")); tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga")); tbvPenjualan.setItems(daftarTabelPenjualan); + + tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures cell) -> { + return new ReadOnlyObjectWrapper(tbvRetur.getItems().indexOf(cell.getValue()) + 1); + }); + tcKodeRetur.setCellValueFactory(new PropertyValueFactory<>("kode")); + tcNamaRetur.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<>("fldPramuniaga")); + tbvRetur.setItems(daftarTabelRetur); + Platform.runLater(() -> { fldNotaPenjualan.requestFocus(); }); } - private void mapCurrentDataToDetailTransaksi() { - + public void initData(String noNota, boolean baru) { + this.noNota = noNota; + lblNomorNota.setText(Fucout.getTextColon(noNota)); } - int count = 0; - - @FXML - Label lbl; - private void refreshData(List daftarNotaTunai) { daftarTabelPenjualan.clear(); + daftarTabelRetur.clear(); for (DNotaTunai dNotaTunai : daftarNotaTunai) { TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram()); String namaBarang = "..."; - if (BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { - namaBarang = Fucout.getText(BarangCache.getInstance().getDaftarBarang() - .get(dNotaTunai.getKdBarang()).getNamaBarang()); + if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { + Barang barang = AmigoPosCache.getInstance().getDaftarBarang() + .get(dNotaTunai.getKdBarang()); + namaBarang = Fucout.getText(barang.getNamaBarang()); + dNotaTunai.setBarang(barang); } - daftarTabelPenjualan.add(new TabelBarangTunai( + TabelBarangTunai tbt = new TabelBarangTunai( Fucout.getText(dNotaTunai.getKdBarang()), namaBarang, Fucout.getText(dNotaTunai.getNoBarang()), @@ -156,9 +183,11 @@ public class FormTransaksiReturController implements Initializable { Fucout.getText(Fucout.formatRibuan( dNotaTunai.getHargaJual() * dNotaTunai.getJumlah() )), - fldPramuniaga)); + fldPramuniaga); + tbt.setData(dNotaTunai); + daftarTabelPenjualan.add(tbt); - if (!BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { + if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver); } } @@ -171,6 +200,135 @@ public class FormTransaksiReturController implements Initializable { } } + @FXML + void tbvPenjualanOnDragDetected(MouseEvent event) { + Dragboard db = tbvPenjualan.startDragAndDrop(TransferMode.COPY); + + if (tbvPenjualan.getSelectionModel().getSelectedItem() != null) { + stpReturDrop.setVisible(true); + ClipboardContent content = new ClipboardContent(); + content.putString(tbvPenjualan.getSelectionModel().getSelectedItem().getNama()); + db.setContent(content); + draggedTabelBarangTunai = tbvPenjualan.getSelectionModel().getSelectedItem(); + } + event.consume(); + } + + @FXML + void stpReturDropOnDragOver(DragEvent event) { + if (event.getGestureSource() != tbvRetur + && event.getDragboard().hasString()) { + event.acceptTransferModes(TransferMode.COPY); + } + + event.consume(); + } + + @FXML + void stpReturDropOnDragEntered(DragEvent event) { + if (event.getGestureSource() != stpReturDrop + && event.getDragboard().hasString()) { + lblTambahKeTabelRetur.setText("Tambah Barang " + event.getDragboard().getString() + " ke Nota Retur"); + lblTambahKeTabelRetur.setVisible(true); + if (!stpReturDrop.getStyleClass().contains("table-drag-over")) { + stpReturDrop.getStyleClass().add("table-drag-over"); + } + } + + event.consume(); + } + + @FXML + void stpReturDropOnDragExited(DragEvent event) { + lblTambahKeTabelRetur.setVisible(false); + if (stpReturDrop.getStyleClass().contains("table-drag-over")) { + lblTambahKeTabelRetur.setText("Tambah Barang ke Nota Retur"); + stpReturDrop.getStyleClass().remove("table-drag-over"); + } + + event.consume(); + } + + @FXML + void stpReturDropOnDragDropped(DragEvent event) { + /* data dropped + * if there is a string data on dragboard, read it and use it */ + Dragboard db = event.getDragboard(); + boolean success = false; + if (db.hasString()) { + } + + if (draggedTabelBarangTunai != null) { + boolean ada = false; + for (TabelBarangRetur tbr : daftarTabelRetur) { + if (tbr.getData() != null && draggedTabelBarangTunai.getData() != null) { + DNotaRetur dNotaRetur = tbr.getData(); + DNotaTunai dNotaTunai = draggedTabelBarangTunai.getData(); + + if (dNotaRetur.getKdBarang().equals(dNotaTunai.getKdBarang()) + && dNotaRetur.getNoBarang().equals(dNotaTunai.getNoBarang())) { + if ((dNotaRetur.getJumlah() + 1) <= dNotaTunai.getJumlah()) { + dNotaRetur.setJumlah(dNotaRetur.getJumlah() + 1); + tbr.setJumlah(Fucout.getText(String.valueOf(dNotaRetur.getJumlah()))); + tbr.setSubTotal(Fucout.getText(Fucout.formatRibuan( + dNotaRetur.getJumlah() * dNotaRetur.getHargaJual() + ))); + + tbvRetur.refresh(); + } else{ + Alert alert = AlertUtil.getAlertError( + "Jumlah Barang Kurang", + "Barang di Nota Penjualan yang di-Retur sudah mencapai jumlah yang ada."); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + } + + ada = true; + break; + } + } + } + success = true; + + if (!ada) { + TextField fldPramuniaga = new TextField(); + + DNotaRetur dNotaRetur = new DNotaRetur(noNota, draggedTabelBarangTunai.getData()); + TabelBarangRetur tbr = new TabelBarangRetur( + draggedTabelBarangTunai.getKode(), + draggedTabelBarangTunai.getNama(), + draggedTabelBarangTunai.getUkur(), + Fucout.getText(String.valueOf(dNotaRetur.getJumlah())), + draggedTabelBarangTunai.getHarga(), + draggedTabelBarangTunai.getDisc1(), + draggedTabelBarangTunai.getDisc2(), + Fucout.getText(Fucout.formatRibuan( + dNotaRetur.getJumlah() * dNotaRetur.getHargaJual() + )), + fldPramuniaga); + tbr.setData(dNotaRetur); + + daftarTabelRetur.add(tbr); + } + } + + /* let the source know whether the string was successfully + * transferred and used */ + event.setDropCompleted(success); + + event.consume(); + } + + @FXML + void tbvPenjualanOnDragDone(DragEvent event) { + /* the drag and drop gesture ended + * if the data was successfully moved, clear it */ + stpReturDrop.setVisible(false); +// if (event.getTransferMode() == TransferMode.MOVE) { +// } + event.consume(); + } + Observer> getDNotaTunaiObserver = new Observer<>() { @Override public void onSubscribe(Disposable dspsbl) { @@ -178,6 +336,7 @@ public class FormTransaksiReturController implements Initializable { @Override public void onNext(List daftarDNotaTunai) { + fldNotaPenjualan.clear(); refreshData(daftarDNotaTunai); } @@ -228,10 +387,12 @@ public class FormTransaksiReturController implements Initializable { @Override public void onNext(Barang b) { - BarangCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b); + AmigoPosCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b); for (TabelBarangTunai tbt : tbvPenjualan.getItems()) { - if (tbt.getKode().equals(b.getKodeBarang())) { + if (tbt.getData().getKdBarang().equals(b.getKodeBarang())) { tbt.setNama(b.getNamaBarang()); + + tbt.getData().setBarang(b); tbvPenjualan.refresh(); } } diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java index 1b20850..03184eb 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java @@ -9,9 +9,11 @@ import id.amigogroup.posterminal.FormUtamaController; import id.amigogroup.posterminal.api.AmigoPosRx; import id.amigogroup.posterminal.model.Barang; import id.amigogroup.posterminal.model.DNotaTunai; -import id.amigogroup.posterminal.pencarian.BarangCache; +import id.amigogroup.posterminal.model.NoBarang; +import id.amigogroup.posterminal.util.AmigoPosCache; import id.amigogroup.posterminal.util.AlertUtil; import id.amigogroup.posterminal.util.Fucout; +import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import java.net.HttpURLConnection; @@ -83,6 +85,7 @@ public class FormTransaksiTunaiController implements Initializable { @FXML private Text lblGrandTotal; + private String noNota = ""; private AmigoPosRx posRx = new AmigoPosRx(); /** @@ -90,6 +93,8 @@ public class FormTransaksiTunaiController implements Initializable { */ @Override public void initialize(URL url, ResourceBundle rb) { + fldScan.requestFocus(); + tcNo.setCellValueFactory((TableColumn.CellDataFeatures cell) -> { return new ReadOnlyObjectWrapper(tbvTransaksi.getItems().indexOf(cell.getValue()) + 1); }); @@ -108,19 +113,21 @@ public class FormTransaksiTunaiController implements Initializable { // fillTable(new ArrayList<>()); } - public void initData(String noNota) { - posRx.getDNotaTunaiByNoNota(noNota).subscribe(getDNotaTunaiObserver); + public void initData(String noNota, boolean baru) { + if (!baru) { + posRx.getDNotaTunaiByNoNota(noNota).subscribe(getDNotaTunaiObserver); + } + this.noNota = noNota; lblNoNota.setText(Fucout.getTextColon(noNota)); setTanggal(); } - public void setTanggal(){ + public void setTanggal() { java.util.Date skrg = new java.util.Date(); - java.text.SimpleDateFormat kal = new - java.text.SimpleDateFormat("dd/MM/yyyy"); + java.text.SimpleDateFormat kal = new java.text.SimpleDateFormat("dd/MM/yyyy"); txtTanggal.setText(kal.format(skrg)); } - + private void refreshData(List daftarNotaTunai) { daftarTabelTransaksi.clear(); @@ -137,8 +144,8 @@ public class FormTransaksiTunaiController implements Initializable { }); String namaBarang = "..."; - if (BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { - namaBarang = Fucout.getText(BarangCache.getInstance().getDaftarBarang() + if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { + namaBarang = Fucout.getText(AmigoPosCache.getInstance().getDaftarBarang() .get(dNotaTunai.getKdBarang()).getNamaBarang()); } @@ -156,41 +163,103 @@ public class FormTransaksiTunaiController implements Initializable { )), fldPramuniaga)); - if (!BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { + if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver); } } } - - public void addToTable(Barang barang, String ukur, String jumlah){ - String[] promo = {"Ulang Tahun", "Harbolnas", "Ultah Amigo"}; - ComboBox cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo)); - cbxPromo.getSelectionModel().select("Ulang Tahun"); - TextField fldPramuniaga = new TextField(); - fldPramuniaga.setOnKeyPressed((t) -> { - if (t.getCode() == KeyCode.ENTER) { - fldScan.requestFocus(); + + public void addToTable(Barang barang, NoBarang noBarang, int jumlah) { + if (barang != null && noBarang != null) { + + if (noBarang.getStokOperasional() >= jumlah) { + boolean ada = false; + for (TabelBarangTunai tbt : daftarTabelTransaksi) { + if (tbt.getKode().equals(barang.getKodeBarang()) && tbt.getUkur().equals(noBarang.getNomor())) { + noBarang.setStokOperasional(noBarang.getStokOperasional() - jumlah); + + tbt.getData().setJumlah(tbt.getData().getJumlah() + jumlah); + tbt.setJumlah(String.valueOf(tbt.getData().getJumlah())); + tbvTransaksi.refresh(); + ada = true; + break; + } + } + + if (!ada) { + String[] promo = {"Ulang Tahun", "Harbolnas", "Ultah Amigo"}; + ComboBox cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo)); + cbxPromo.getSelectionModel().select("Ulang Tahun"); + TextField fldPramuniaga = new TextField(); + fldPramuniaga.setOnKeyPressed((t) -> { + if (t.getCode() == KeyCode.ENTER) { + fldScan.requestFocus(); + } + }); + + DNotaTunai dNotaTunai = new DNotaTunai( + noNota, + barang.getKodeBarang(), + barang.getNamaBarang(), + jumlah, + 0, + 0, + noBarang.getHargaJual(), + noBarang.getHargaPokok(), + "", + 0); + TabelBarangTunai tbt = new TabelBarangTunai( + Fucout.getText(barang.getKodeBarang()), + Fucout.getText(barang.getNamaBarang()), + Fucout.getText(noBarang.getNomor()), + String.valueOf(jumlah), + Fucout.getText(Fucout.formatRibuan(noBarang.getHargaJual())), + "...", + "...", + cbxPromo, + Fucout.getText(Fucout.formatRibuan( + jumlah * noBarang.getHargaJual()) + ), + fldPramuniaga); + tbt.setData(dNotaTunai); + + daftarTabelTransaksi.add(tbt); + } } - }); - daftarTabelTransaksi.add(new TabelBarangTunai( - Fucout.getText(barang.getKodeBarang()), - Fucout.getText(barang.getNamaBarang()), - Fucout.getText(ukur), - Fucout.getText("1"), - "...", - "...", - "...", - cbxPromo, - "...", - fldPramuniaga)); - } - + } + } + //SCAN BARANG @FXML void fldScanOnKeyPressed(KeyEvent event) { if (event.getCode() == KeyCode.ENTER) { - posRx.getBarangByKodeBarang(fldScan.getText()).subscribe(getBarangBaruObserver); + String kodeFull = fldScan.getText(); + String kodeBarang = Fucout.getKodeBarangFromKodeFull(kodeFull); + String ukur = Fucout.getNomorBarangFromKodeFull(kodeFull); + + if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(kodeBarang)) { + Barang barang = AmigoPosCache.getInstance().getDaftarBarang().get(kodeBarang); + + if (AmigoPosCache.getInstance().getDaftarNoBarang().containsKey( + barang.getIdGabungan() + ukur)) { + NoBarang noBarang = AmigoPosCache.getInstance().getDaftarNoBarang() + .get(barang.getIdGabungan() + ukur); + + addToTable(barang, noBarang, 1); + } else { + Observable.zip(posRx.getBarangByKodeBarang(kodeBarang), + posRx.getNoBarangByIdGabunganNomor(barang.getIdGabungan(), ukur), + (b, nB) -> new BarangFull(b, nB)).subscribe(getBarangFullGetNoBarangFromBarangObserver); + } + } + Observable.zip(posRx.getBarangByKodeBarang(kodeBarang), + Observable.just(ukur), + (barang, nomor) -> { + barang.setNomor(nomor); + return barang; + }).subscribe(getTambahBarangObserver); } + } Observer> getDNotaTunaiObserver = new Observer<>() { @@ -250,7 +319,7 @@ public class FormTransaksiTunaiController implements Initializable { @Override public void onNext(Barang b) { - BarangCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b); + AmigoPosCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b); for (TabelBarangTunai tbt : daftarTabelTransaksi) { if (tbt.getKode().equals(b.getKodeBarang())) { tbt.setNama(b.getNamaBarang()); @@ -258,11 +327,9 @@ public class FormTransaksiTunaiController implements Initializable { } }; } - @Override public void onError(Throwable error) { - System.out.println(".onError()"); if (error instanceof HttpException) { switch (((HttpException) error).code()) { case HttpURLConnection.HTTP_NOT_FOUND: @@ -294,22 +361,33 @@ public class FormTransaksiTunaiController implements Initializable { } }; - - Observer getBarangBaruObserver = new Observer<>() { + + Observer getTambahBarangObserver = new Observer<>() { @Override public void onSubscribe(Disposable dspsbl) { } @Override public void onNext(Barang b) { - BarangCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b); - addToTable(b, "XL", "1"); + Barang bClone = new Barang(b); + + bClone.setNomor(null); + AmigoPosCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), bClone); + + if (b.getNomor() != null && !b.getNomor().equals("")) { + if (!AmigoPosCache.getInstance().getDaftarNoBarang().containsKey( + b.getIdGabungan() + b.getNomor())) { + Observable.zip( + Observable.just(b), + posRx.getNoBarangByIdGabunganNomor(b.getIdGabungan(), b.getNomor()), + (barang, noBarang) -> new BarangFull(barang, noBarang)) + .subscribe(getBarangFullGetNoBarangFromBarangObserver); + } + } } - @Override public void onError(Throwable error) { - System.out.println(".onError()"); if (error instanceof HttpException) { switch (((HttpException) error).code()) { case HttpURLConnection.HTTP_NOT_FOUND: @@ -341,4 +419,47 @@ public class FormTransaksiTunaiController implements Initializable { } }; + + Observer getBarangFullGetNoBarangFromBarangObserver = new Observer<>() { + @Override + public void onSubscribe(Disposable dspsbl) { + } + + @Override + public void onNext(BarangFull bf) { + addToTable(bf.getBarang(), bf.getNoBarang(), 1); + } + + @Override + public void onError(Throwable error) { + if (error instanceof HttpException) { + switch (((HttpException) error).code()) { + case HttpURLConnection.HTTP_NOT_FOUND: + Alert alert = AlertUtil.getAlertError( + AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE, + "Barang dengan kode tersebut tidak ditemukan."); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + } + } else if (error instanceof SocketTimeoutException) { + Alert alert = AlertUtil.getAlertError( + AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE, + AlertUtil.ERROR_KONEKSI_TIMEOUT_MESSAGE); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + } else { + Alert alert = AlertUtil.getAlertError( + AlertUtil.ERROR_TIDAK_TERDUGA_TITLE, + AlertUtil.ERROR_TIDAK_TERDUGA_MESSAGE); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + Logger.getLogger(FormUtamaController.class + .getName()).log(Level.SEVERE, null, error); + } + } + + @Override + public void onComplete() { + } + }; } diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/TabelBarangRetur.java b/src/main/java/id/amigogroup/posterminal/transaksi/TabelBarangRetur.java index cdabff7..ad8e5c9 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/TabelBarangRetur.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/TabelBarangRetur.java @@ -5,10 +5,9 @@ */ package id.amigogroup.posterminal.transaksi; +import id.amigogroup.posterminal.model.DNotaRetur; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; -import javafx.scene.control.Button; -import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; /** @@ -16,151 +15,169 @@ import javafx.scene.control.TextField; * @author AGNES */ public class TabelBarangRetur { - private SimpleStringProperty tcKodeRetur; - private SimpleStringProperty tcNamaRetur; - private SimpleStringProperty tcUkurRetur; - private SimpleStringProperty tcJumlahRetur; - private SimpleStringProperty tcHargaRetur; - private SimpleStringProperty tcDisc1Retur; - private SimpleStringProperty tcDisc2Retur; - private SimpleStringProperty tcSubtotalRetur; - private SimpleObjectPropertytcPramuniagaRetur; - public TabelBarangRetur(String tcKodeRetur, String tcNamaRetur, String tcUkurRetur, String tcJumlahRetur, String tcHargaRetur, String tcDisc1Retur, - String tcDisc2Retur, String tcSubtotalRetur, TextField tcPramuniagaRetur) { - this.tcKodeRetur = new SimpleStringProperty(tcKodeRetur); - this.tcNamaRetur = new SimpleStringProperty(tcNamaRetur); - this.tcUkurRetur = new SimpleStringProperty(tcUkurRetur); - this.tcJumlahRetur = new SimpleStringProperty(tcJumlahRetur); - this.tcHargaRetur = new SimpleStringProperty(tcHargaRetur); - this.tcDisc1Retur = new SimpleStringProperty(tcDisc1Retur); - this.tcDisc2Retur = new SimpleStringProperty(tcDisc2Retur); - this.tcSubtotalRetur = new SimpleStringProperty(tcSubtotalRetur); - this.tcPramuniagaRetur = new SimpleObjectProperty(tcPramuniagaRetur); + private SimpleStringProperty kode; + private SimpleStringProperty nama; + private SimpleStringProperty ukur; + private SimpleStringProperty jumlah; + private SimpleStringProperty harga; + private SimpleStringProperty disc1; + private SimpleStringProperty disc2; + private SimpleStringProperty subTotal; + private SimpleObjectProperty fldPramuniaga; + + private DNotaRetur data; + + public TabelBarangRetur(String kode, String nama, String ukur, String jumlah, String harga, String disc1, + String disc2, String subTotal, TextField fldPramuniaga) { + this.kode = new SimpleStringProperty(kode); + this.nama = new SimpleStringProperty(nama); + this.ukur = new SimpleStringProperty(ukur); + this.jumlah = new SimpleStringProperty(jumlah); + this.harga = new SimpleStringProperty(harga); + this.disc1 = new SimpleStringProperty(disc1); + this.disc2 = new SimpleStringProperty(disc2); + this.subTotal = new SimpleStringProperty(subTotal); + this.fldPramuniaga = new SimpleObjectProperty(fldPramuniaga); } + /** - * @return the tcKode + * @return the kode */ - public String getTcKodeRetur() { - return tcKodeRetur.get(); + public String getKode() { + return kode.get(); } /** - * @param tcKode the tcKode to set + * @param kode the kode to set */ - public void setTcKodeRetur(String tcKodeRetur) { - this.tcKodeRetur.set(tcKodeRetur); + public void setKode(String kode) { + this.kode.set(kode); } /** - * @return the tcNama + * @return the nama */ - public String getTcNamaRetur() { - return tcNamaRetur.get(); + public String getNama() { + return nama.get(); } /** - * @param tcNama the tcNama to set + * @param nama the nama to set */ - public void setTcNamaRetur(String tcNamaRetur) { - this.tcNamaRetur.set(tcNamaRetur); + public void setNama(String nama) { + this.nama.set(nama); } /** - * @return the tcUkur + * @return the ukur */ - public String getTcUkurRetur() { - return tcUkurRetur.get(); + public String getUkur() { + return ukur.get(); } /** - * @param tcUkur the tcUkur to set + * @param ukur the ukur to set */ - public void setTcUkurRetur(String tcUkurRetur) { - this.tcUkurRetur.set(tcUkurRetur); + public void setUkur(String ukur) { + this.ukur.set(ukur); } /** - * @return the tcJumlah + * @return the jumlah */ - public String getTcJumlahRetur() { - return tcJumlahRetur.get(); + public String getJumlah() { + return jumlah.get(); } /** - * @param tcJumlah the tcJumlah to set + * @param jumlah the jumlah to set */ - public void setTcJumlahRetur(String tcJumlahRetur) { - this.tcJumlahRetur.set(tcJumlahRetur); + public void setJumlah(String jumlah) { + this.jumlah.set(jumlah); } /** - * @return the tcHarga + * @return the harga */ - public String getTcHargaRetur() { - return tcHargaRetur.get(); + public String getHarga() { + return harga.get(); } /** - * @param tcHarga the tcHarga to set + * @param harga the harga to set */ - public void setTcHargaRetur(String tcHargaRetur) { - this.tcHargaRetur.set(tcHargaRetur); + public void setHarga(String harga) { + this.harga.set(harga); } /** - * @return the tcDisc1 + * @return the disc1 */ - public String getTcDisc1Retur() { - return tcDisc1Retur.get(); + public String getDisc1() { + return disc1.get(); } /** - * @param tcDisc1 the tcDisc1 to set + * @param disc1 the disc1 to set */ - public void setTcDisc1Retur(String tcDisc1Retur) { - this.tcDisc1Retur.set(tcDisc1Retur); + public void setDisc1(String disc1) { + this.disc1.set(disc1); } /** - * @return the tcDisc2 + * @return the disc2 */ - public String getTcDisc2Retur() { - return tcDisc2Retur.get(); + public String getDisc2() { + return disc2.get(); } /** - * @param tcDisc2 the tcDisc2 to set + * @param disc2 the disc2 to set */ - public void setTcDisc2Retur(String tcDisc2Retur) { - this.tcDisc2Retur.set(tcDisc2Retur); + public void setDisc2(String disc2) { + this.disc2.set(disc2); } - + + /** + * @return the subTotal + */ + public String getSubTotal() { + return subTotal.get(); + } + + /** + * @param subTotal the subTotal to set + */ + public void setSubTotal(String subTotal) { + this.subTotal.set(subTotal); + } + /** - * @return the tcSubtotal + * @return the fldPramuniaga */ - public String getTcSubtotalRetur() { - return tcSubtotalRetur.get(); + public TextField getFldPramuniaga() { + return fldPramuniaga.get(); } /** - * @param tcSubtotal the tcSubtotal to set + * @param fldPramuniaga the fldPramuniaga to set */ - public void setTcSubtotalRetur(String tcSubtotalRetur) { - this.tcSubtotalRetur.set(tcSubtotalRetur); + public void setFldPramuniaga(TextField fldPramuniaga) { + this.fldPramuniaga.set(fldPramuniaga); } /** - * @return the tcPramuniaga + * @return the data */ - public TextField getTcPramuniagaRetur() { - return tcPramuniagaRetur.get(); + public DNotaRetur getData() { + return data; } /** - * @param tcPramuniaga the tcPramuniaga to set + * @param data the data to set */ - public void setTcPramuniagaRetur(TextField tcPramuniagaRetur) { - this.tcPramuniagaRetur.set(tcPramuniagaRetur); + public void setData(DNotaRetur data) { + this.data = data; } - } +} diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/TabelBarangTunai.java b/src/main/java/id/amigogroup/posterminal/transaksi/TabelBarangTunai.java index 09ea94a..9a29596 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/TabelBarangTunai.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/TabelBarangTunai.java @@ -5,9 +5,9 @@ */ package id.amigogroup.posterminal.transaksi; +import id.amigogroup.posterminal.model.DNotaTunai; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; -import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; @@ -26,6 +26,8 @@ public class TabelBarangTunai { private SimpleObjectProperty cbxPromo; private SimpleStringProperty subTotal; private SimpleObjectProperty fldPramuniaga; + + private DNotaTunai data; public TabelBarangTunai(String kode, String nama, String ukur, String jumlah, String harga, String disc1, String disc2, ComboBox cbxPromo, String subTotal, TextField fldPramuniaga) { @@ -181,4 +183,18 @@ public class TabelBarangTunai { public void setFldPramuniaga(TextField fldPramuniaga) { this.fldPramuniaga.set(fldPramuniaga); } + + /** + * @return the data + */ + public DNotaTunai getData() { + return data; + } + + /** + * @param data the data to set + */ + public void setData(DNotaTunai data) { + this.data = data; + } } diff --git a/src/main/java/id/amigogroup/posterminal/pencarian/BarangCache.java b/src/main/java/id/amigogroup/posterminal/util/AmigoPosCache.java similarity index 61% rename from src/main/java/id/amigogroup/posterminal/pencarian/BarangCache.java rename to src/main/java/id/amigogroup/posterminal/util/AmigoPosCache.java index 7ee881c..4976967 100644 --- a/src/main/java/id/amigogroup/posterminal/pencarian/BarangCache.java +++ b/src/main/java/id/amigogroup/posterminal/util/AmigoPosCache.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package id.amigogroup.posterminal.pencarian; +package id.amigogroup.posterminal.util; import id.amigogroup.posterminal.model.Barang; import id.amigogroup.posterminal.model.NoBarang; @@ -14,17 +14,18 @@ import java.util.Map; * * @author ronal */ -public class BarangCache { - private static BarangCache instance; - private Map daftarBarang; - private Map daftarNoBarang; +public class AmigoPosCache { + private static AmigoPosCache instance; + private final Map daftarBarang; + private final Map daftarNoBarang; - private BarangCache(){ + private AmigoPosCache(){ daftarBarang = new HashMap<>(); + daftarNoBarang = new HashMap<>(); } - public static BarangCache getInstance(){ - if(instance == null) instance = new BarangCache(); + public static AmigoPosCache getInstance(){ + if(instance == null) instance = new AmigoPosCache(); return instance; } diff --git a/src/main/java/id/amigogroup/posterminal/util/Fucout.java b/src/main/java/id/amigogroup/posterminal/util/Fucout.java index 06d9d86..d63cca3 100644 --- a/src/main/java/id/amigogroup/posterminal/util/Fucout.java +++ b/src/main/java/id/amigogroup/posterminal/util/Fucout.java @@ -159,4 +159,18 @@ public class Fucout { .atZone(ZoneId.systemDefault()) .toLocalDate(); } + + public static String getKodeBarangFromKodeFull(String kodeFull){ + if(kodeFull.length() >= 9){ + return kodeFull.substring(0, 9); + } + return ""; + } + + public static String getNomorBarangFromKodeFull(String kodeFull){ + if(kodeFull.length() > 9){ + return kodeFull.substring(9); + } + return ""; + } } diff --git a/src/main/resources/fxml/FormTransaksiRetur.fxml b/src/main/resources/fxml/FormTransaksiRetur.fxml index 60193d7..edf331b 100644 --- a/src/main/resources/fxml/FormTransaksiRetur.fxml +++ b/src/main/resources/fxml/FormTransaksiRetur.fxml @@ -11,6 +11,7 @@ + @@ -24,14 +25,14 @@ - diff --git a/src/main/resources/fxml/FormTransaksiTunai.fxml b/src/main/resources/fxml/FormTransaksiTunai.fxml index b41a415..06e1b3c 100644 --- a/src/main/resources/fxml/FormTransaksiTunai.fxml +++ b/src/main/resources/fxml/FormTransaksiTunai.fxml @@ -1,6 +1,7 @@ + @@ -94,6 +95,7 @@ + diff --git a/src/main/resources/styles/pos_styles.css b/src/main/resources/styles/pos_styles.css index b10e14e..ae7fb0d 100644 --- a/src/main/resources/styles/pos_styles.css +++ b/src/main/resources/styles/pos_styles.css @@ -19,16 +19,18 @@ and open the template in the editor. -fx-cursor: hand; } .button-navigasi-transaksi:hover{ - /*-fx-background-color: #bbeeff;*/ -fx-background-color: linear-gradient(#d5f6fd 0%, #cae0ff 49%, #cae0ff 50%, #ffffff 100%);} .button-navigasi-transaksi-selected{ - /*-fx-background-color: #33aaff;*/ -fx-background-color: linear-gradient(#abf6fd 0%, #8aa6fd 49%, #8aa6dd 50%, #50a6dd 100%); } +.table-drag-over{ + -fx-background-color: lightgreen; +} + #header{ -fx-border-style: solid; -fx-border-color: black;