Fungsi Drag and Drop Retur, dan Menampilkan data No Barang di Form Tunai

* [Logic + UI] Drag and Drop Retur, untuk memilih barang yang mau diretur dari nota penjualan
* [Logic] Load data melengkapi data no barang (harga jual, stok)
pull/5/head
Ronaldo Christnawan 6 years ago
parent 861f22efc8
commit e8756520aa

@ -1,11 +1,7 @@
package id.amigogroup.posterminal; 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.api.AmigoPosRx;
import id.amigogroup.posterminal.model.Barang; 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.model.Pelanggan;
import id.amigogroup.posterminal.pencarian.DialogCariBarangController; import id.amigogroup.posterminal.pencarian.DialogCariBarangController;
import id.amigogroup.posterminal.pencarian.DialogCariNotaTundaController; 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.transaksi.FormTransaksiTunaiController;
import id.amigogroup.posterminal.util.AlertUtil; import id.amigogroup.posterminal.util.AlertUtil;
import id.amigogroup.posterminal.util.Fucout; import id.amigogroup.posterminal.util.Fucout;
import io.reactivex.Observable;
import io.reactivex.Observer; import io.reactivex.Observer;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import java.io.IOException; import java.io.IOException;
@ -171,17 +166,13 @@ public class FormUtamaController implements Initializable {
loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml")); loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml"));
node = loader.load(); node = loader.load();
FormTransaksiTunaiController fttc = loader.getController(); FormTransaksiTunaiController fttc = loader.getController();
if (!baru) { fttc.initData(noNota,baru);
fttc.initData(noNota);
}
break; break;
case FormConstanta.TRANSAKSI_RETUR: case FormConstanta.TRANSAKSI_RETUR:
loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml")); loader.setLocation(getClass().getResource("/fxml/FormTransaksiRetur.fxml"));
node = loader.load(); node = loader.load();
FormTransaksiReturController ftrc = loader.getController(); FormTransaksiReturController ftrc = loader.getController();
if (!baru) { ftrc.initData(noNota,baru);
// ftrc.initData(noNota);
}
break; break;
} }
@ -240,7 +231,6 @@ public class FormUtamaController implements Initializable {
dialogCariBarang.initOwner(bpMain.getScene().getWindow()); dialogCariBarang.initOwner(bpMain.getScene().getWindow());
Optional<Barang> result = dialogCariBarang.showAndWait(); Optional<Barang> result = dialogCariBarang.showAndWait();
System.out.println(result);
}; };
listShortcuts.put(kcCariBarang, rnCariBarang); listShortcuts.put(kcCariBarang, rnCariBarang);
@ -256,7 +246,6 @@ public class FormUtamaController implements Initializable {
updateLabelPelanggan(result.get()); updateLabelPelanggan(result.get());
updateLabelMemberNonMember(); updateLabelMemberNonMember();
} }
System.out.println(result);
}; };
listShortcuts.put(kcCariPelanggan, rnCariPelanggan); listShortcuts.put(kcCariPelanggan, rnCariPelanggan);

@ -11,6 +11,7 @@ import id.amigogroup.posterminal.model.Karyawan;
import id.amigogroup.posterminal.model.Pagination; import id.amigogroup.posterminal.model.Pagination;
import id.amigogroup.posterminal.model.MNotaRetur; import id.amigogroup.posterminal.model.MNotaRetur;
import id.amigogroup.posterminal.model.MNotaTunai; import id.amigogroup.posterminal.model.MNotaTunai;
import id.amigogroup.posterminal.model.NoBarang;
import id.amigogroup.posterminal.model.Pelanggan; import id.amigogroup.posterminal.model.Pelanggan;
import id.amigogroup.posterminal.model.Tas; import id.amigogroup.posterminal.model.Tas;
import io.reactivex.Observable; import io.reactivex.Observable;
@ -32,6 +33,10 @@ public class AmigoPosRx {
return UtilsApi.getServiceApiBarang().getBarangByNamaBarang(namaBarang); return UtilsApi.getServiceApiBarang().getBarangByNamaBarang(namaBarang);
} }
public Observable<NoBarang> getNoBarangByIdGabunganNomor(String idGabungan, String nomor) {
return UtilsApi.getServiceApiBarang().getByIdGabunganNomor(idGabungan, nomor);
}
public Observable<MNotaTunai> getMNotaTunaiByNoNota(String noNota) { public Observable<MNotaTunai> getMNotaTunaiByNoNota(String noNota) {
return UtilsApi.getServiceApiBarang().getMNotaTunaiByNoNota(noNota); return UtilsApi.getServiceApiBarang().getMNotaTunaiByNoNota(noNota);
} }

@ -9,6 +9,7 @@ import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.DNotaTunai; import id.amigogroup.posterminal.model.DNotaTunai;
import id.amigogroup.posterminal.model.MNotaRetur; import id.amigogroup.posterminal.model.MNotaRetur;
import id.amigogroup.posterminal.model.MNotaTunai; import id.amigogroup.posterminal.model.MNotaTunai;
import id.amigogroup.posterminal.model.NoBarang;
import id.amigogroup.posterminal.model.Pagination; import id.amigogroup.posterminal.model.Pagination;
import io.reactivex.Observable; import io.reactivex.Observable;
import java.util.List; import java.util.List;
@ -25,6 +26,13 @@ public interface ServiceApiBarang {
@GET("barangs/kode/{kode}") @GET("barangs/kode/{kode}")
Observable<Barang> getBarangByKodeBarang(@Path("kode") String kode); Observable<Barang> getBarangByKodeBarang(@Path("kode") String kode);
//NO-BARANG
//Mengambil No Barang by Id Gabungan & Ukuran
@GET("no-barangs/id-gabungan/{idGabungan}/nomor/{nomor}")
Observable<NoBarang> getByIdGabunganNomor(
@Path("idGabungan") String idGabungan,
@Path("nomor") String nomor);
//M-NOTA-TUNAI //M-NOTA-TUNAI
//Mengambil Master Nota Tunai by No Nota //Mengambil Master Nota Tunai by No Nota
@GET("m-nota-tunai/no-nota/{noNota}") @GET("m-nota-tunai/no-nota/{noNota}")

@ -121,10 +121,11 @@ public class FormBayarController implements Initializable, BayarInterface {
loader.setLocation(getClass().getResource("/fxml/FormBayarTunai.fxml")); loader.setLocation(getClass().getResource("/fxml/FormBayarTunai.fxml"));
node = loader.load(); node = loader.load();
FormBayarTunaiController fbtc = loader.getController();
fbtc.initData(this);
vbContent.getChildren().add(node); vbContent.getChildren().add(node);
bayarContent.setNodeTunai(node); bayarContent.setNodeTunai(node);
FormBayarTunaiController fbtc = loader.getController();
fbtc.initData(this);
} else { } else {
if (bayarContent.getNodeTunai() != null) { if (bayarContent.getNodeTunai() != null) {
vbContent.getChildren().remove(bayarContent.getNodeTunai()); vbContent.getChildren().remove(bayarContent.getNodeTunai());
@ -139,10 +140,11 @@ public class FormBayarController implements Initializable, BayarInterface {
loader.setLocation(getClass().getResource("/fxml/FormBayarKartu.fxml")); loader.setLocation(getClass().getResource("/fxml/FormBayarKartu.fxml"));
node = loader.load(); node = loader.load();
FormBayarKartuController fbkc = loader.getController();
fbkc.initData(this);
vbContent.getChildren().add(node); vbContent.getChildren().add(node);
bayarContent.setNodeKartu(node); bayarContent.setNodeKartu(node);
FormBayarKartuController fbkc = loader.getController();
fbkc.initData(this);
} else { } else {
if (bayarContent.getNodeKartu() != null) { if (bayarContent.getNodeKartu() != null) {
vbContent.getChildren().remove(bayarContent.getNodeKartu()); vbContent.getChildren().remove(bayarContent.getNodeKartu());
@ -157,10 +159,11 @@ public class FormBayarController implements Initializable, BayarInterface {
loader.setLocation(getClass().getResource("/fxml/FormBayarRetur.fxml")); loader.setLocation(getClass().getResource("/fxml/FormBayarRetur.fxml"));
node = loader.load(); node = loader.load();
FormBayarReturController fbrc = loader.getController();
fbrc.initData(this);
vbContent.getChildren().add(node); vbContent.getChildren().add(node);
bayarContent.setNodeRetur(node); bayarContent.setNodeRetur(node);
FormBayarReturController fbrc = loader.getController();
fbrc.initData(this);
} else { } else {
if (bayarContent.getNodeRetur() != null) { if (bayarContent.getNodeRetur() != null) {
vbContent.getChildren().remove(bayarContent.getNodeRetur()); vbContent.getChildren().remove(bayarContent.getNodeRetur());
@ -195,10 +198,11 @@ public class FormBayarController implements Initializable, BayarInterface {
loader.setLocation(getClass().getResource("/fxml/FormBayarPoin.fxml")); loader.setLocation(getClass().getResource("/fxml/FormBayarPoin.fxml"));
node = loader.load(); node = loader.load();
FormBayarPoinController fbpc = loader.getController();
fbpc.initData(this);
vbContent.getChildren().add(node); vbContent.getChildren().add(node);
bayarContent.setNodePoin(node); bayarContent.setNodePoin(node);
FormBayarPoinController fbpc = loader.getController();
fbpc.initData(this);
} else { } else {
if (bayarContent.getNodePoin() != null) { if (bayarContent.getNodePoin() != null) {
vbContent.getChildren().remove(bayarContent.getNodePoin()); vbContent.getChildren().remove(bayarContent.getNodePoin());

@ -60,7 +60,7 @@ public class FormBayarTunaiController implements Initializable {
< parent.getBayarContent().getTotalBayar()) { < parent.getBayarContent().getTotalBayar()) {
int kembali = parent.getBayarContent().getTotalBayar() int kembali = parent.getBayarContent().getTotalBayar()
- parent.getBayarContent().getTotalPerluBayar(); - parent.getBayarContent().getTotalPerluBayar();
lblKembalian.setText(Fucout.formatRibuan(kembali)); lblKembalian.setText(Fucout.getText(Fucout.formatRibuan(kembali)));
} else { } else {
lblKembalian.setText("-"); lblKembalian.setText("-");
} }

@ -1,4 +1,3 @@
package id.amigogroup.posterminal.model; package id.amigogroup.posterminal.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@ -53,7 +52,25 @@ public class Barang {
private String kodeMerk; private String kodeMerk;
private String nomor; 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") @JsonProperty("kode_barang")
public String getKodeBarang() { public String getKodeBarang() {
@ -175,6 +192,20 @@ public class Barang {
this.kodeMerk = kodeMerk; 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 @Override
public String toString() { 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(); 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); 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(); 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();
} }
} }

@ -50,6 +50,26 @@ public class DNotaRetur {
@JsonProperty("bonus") @JsonProperty("bonus")
private double 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") @JsonProperty("id")
public int getId() { public int getId() {
return id; return id;
@ -170,6 +190,20 @@ public class DNotaRetur {
this.bonus = bonus; 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 @Override
public String toString() { 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(); 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();

@ -1,4 +1,3 @@
package id.amigogroup.posterminal.model; package id.amigogroup.posterminal.model;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
@ -47,6 +46,23 @@ public class DNotaTunai {
@JsonProperty("bonus") @JsonProperty("bonus")
private int 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") @JsonProperty("id")
public int getId() { public int getId() {
return id; return id;
@ -157,6 +173,20 @@ public class DNotaTunai {
this.bonus = bonus; 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 @Override
public String toString() { 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(); 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();

@ -6,55 +6,48 @@
package id.amigogroup.posterminal.transaksi; package id.amigogroup.posterminal.transaksi;
import id.amigogroup.posterminal.model.Barang; import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.NoBarang;
/** /**
* *
* @author ronal * @author ronal
*/ */
public class DetailTransaksi<T,U> { public class BarangFull {
private T masterNota;
private U detailNota;
private Barang barang; private Barang barang;
private NoBarang noBarang;
/** public BarangFull(Barang barang, NoBarang noBarang) {
* @return the masterNota this.barang = barang;
*/ this.noBarang = noBarang;
public T getMasterNota() {
return masterNota;
} }
/** /**
* @param masterNota the masterNota to set * @return the barang
*/ */
public void setMasterNota(T masterNota) { public Barang getBarang() {
this.masterNota = masterNota; return barang;
} }
/** /**
* @return the detailNota * @param barang the barang to set
*/ */
public U getDetailNota() { public void setBarang(Barang barang) {
return detailNota; this.barang = barang;
} }
/** /**
* @param detailNota the detailNota to set * @return the noBarang
*/ */
public void setDetailNota(U detailNota) { public NoBarang getNoBarang() {
this.detailNota = detailNota; return noBarang;
} }
/** /**
* @return the barang * @param noBarang the noBarang to set
*/ */
public Barang getBarang() { public void setNoBarang(NoBarang noBarang) {
return barang; this.noBarang = noBarang;
} }
/**
* @param barang the barang to set
*/
public void setBarang(Barang barang) {
this.barang = barang;
}
} }

@ -8,8 +8,9 @@ package id.amigogroup.posterminal.transaksi;
import id.amigogroup.posterminal.FormUtamaController; import id.amigogroup.posterminal.FormUtamaController;
import id.amigogroup.posterminal.api.AmigoPosRx; import id.amigogroup.posterminal.api.AmigoPosRx;
import id.amigogroup.posterminal.model.Barang; import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.DNotaRetur;
import id.amigogroup.posterminal.model.DNotaTunai; 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.AlertUtil;
import id.amigogroup.posterminal.util.Fucout; import id.amigogroup.posterminal.util.Fucout;
import io.reactivex.Observer; import io.reactivex.Observer;
@ -17,7 +18,6 @@ import io.reactivex.disposables.Disposable;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.logging.Level; import java.util.logging.Level;
@ -34,9 +34,15 @@ import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory; 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.KeyCode;
import javafx.scene.input.KeyEvent; import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import retrofit2.HttpException; import retrofit2.HttpException;
/** /**
@ -72,33 +78,40 @@ public class FormTransaksiReturController implements Initializable {
private TableColumn<TabelBarangTunai, String> tcSubTotal; private TableColumn<TabelBarangTunai, String> tcSubTotal;
@FXML @FXML
private TableColumn<TabelBarangTunai, TextField> tcPramuniaga; private TableColumn<TabelBarangTunai, TextField> tcPramuniaga;
@FXML
// @FXML private Label lblNomorNota;
// private TableView<?> tbvRetur; @FXML
// @FXML private TableView<TabelBarangRetur> tbvRetur;
// private TableColumn<?, ?> tcNoRetur; @FXML
// @FXML private TableColumn<TabelBarangRetur, Integer> tcNoRetur;
// private TableColumn<?, ?> tcKodeRetur; @FXML
// @FXML private TableColumn<TabelBarangRetur, String> tcKodeRetur;
// private TableColumn<?, ?> tcNamaRetur; @FXML
// @FXML private TableColumn<TabelBarangRetur, String> tcNamaRetur;
// private TableColumn<?, ?> tcUkurRetur; @FXML
// @FXML private TableColumn<TabelBarangRetur, String> tcUkurRetur;
// private TableColumn<?, ?> tcJumlahRetur; @FXML
// @FXML private TableColumn<TabelBarangRetur, String> tcJumlahRetur;
// private TableColumn<?, ?> tcHargaRetur; @FXML
// @FXML private TableColumn<TabelBarangRetur, String> tcHargaRetur;
// private TableColumn<?, ?> tcDisc1Retur; @FXML
// @FXML private TableColumn<TabelBarangRetur, String> tcDisc1Retur;
// private TableColumn<?, ?> tcDisc2Retur; @FXML
// @FXML private TableColumn<TabelBarangRetur, String> tcDisc2Retur;
// private TableColumn<?, ?> tcSubtotalRetur; @FXML
// @FXML private TableColumn<TabelBarangRetur, String> tcSubTotalRetur;
// private TableColumn<?, ?> tcPramuniagaRetur; @FXML
private TableColumn<TabelBarangRetur, TextField> tcPramuniagaRetur;
@FXML
private StackPane stpReturDrop;
@FXML
private Label lblTambahKeTabelRetur;
private final AmigoPosRx posRx = new AmigoPosRx(); private final AmigoPosRx posRx = new AmigoPosRx();
private String noNota = "";
private final ObservableList<TabelBarangTunai> daftarTabelPenjualan = FXCollections.observableArrayList(); private final ObservableList<TabelBarangTunai> daftarTabelPenjualan = FXCollections.observableArrayList();
private List<DetailTransaksi> daftarDetailTransaksi = new ArrayList<>(); private final ObservableList<TabelBarangRetur> daftarTabelRetur = FXCollections.observableArrayList();
private TabelBarangTunai draggedTabelBarangTunai = null;
/** /**
* Initializes the controller class. * Initializes the controller class.
@ -118,33 +131,47 @@ public class FormTransaksiReturController implements Initializable {
tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal")); tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal"));
tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga")); tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga"));
tbvPenjualan.setItems(daftarTabelPenjualan); tbvPenjualan.setItems(daftarTabelPenjualan);
tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangRetur, Integer> 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(() -> { Platform.runLater(() -> {
fldNotaPenjualan.requestFocus(); 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<DNotaTunai> daftarNotaTunai) { private void refreshData(List<DNotaTunai> daftarNotaTunai) {
daftarTabelPenjualan.clear(); daftarTabelPenjualan.clear();
daftarTabelRetur.clear();
for (DNotaTunai dNotaTunai : daftarNotaTunai) { for (DNotaTunai dNotaTunai : daftarNotaTunai) {
TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram()); TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram());
String namaBarang = "..."; String namaBarang = "...";
if (BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) {
namaBarang = Fucout.getText(BarangCache.getInstance().getDaftarBarang() Barang barang = AmigoPosCache.getInstance().getDaftarBarang()
.get(dNotaTunai.getKdBarang()).getNamaBarang()); .get(dNotaTunai.getKdBarang());
namaBarang = Fucout.getText(barang.getNamaBarang());
dNotaTunai.setBarang(barang);
} }
daftarTabelPenjualan.add(new TabelBarangTunai( TabelBarangTunai tbt = new TabelBarangTunai(
Fucout.getText(dNotaTunai.getKdBarang()), Fucout.getText(dNotaTunai.getKdBarang()),
namaBarang, namaBarang,
Fucout.getText(dNotaTunai.getNoBarang()), Fucout.getText(dNotaTunai.getNoBarang()),
@ -156,9 +183,11 @@ public class FormTransaksiReturController implements Initializable {
Fucout.getText(Fucout.formatRibuan( Fucout.getText(Fucout.formatRibuan(
dNotaTunai.getHargaJual() * dNotaTunai.getJumlah() 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); 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<List<DNotaTunai>> getDNotaTunaiObserver = new Observer<>() { Observer<List<DNotaTunai>> getDNotaTunaiObserver = new Observer<>() {
@Override @Override
public void onSubscribe(Disposable dspsbl) { public void onSubscribe(Disposable dspsbl) {
@ -178,6 +336,7 @@ public class FormTransaksiReturController implements Initializable {
@Override @Override
public void onNext(List<DNotaTunai> daftarDNotaTunai) { public void onNext(List<DNotaTunai> daftarDNotaTunai) {
fldNotaPenjualan.clear();
refreshData(daftarDNotaTunai); refreshData(daftarDNotaTunai);
} }
@ -228,10 +387,12 @@ public class FormTransaksiReturController implements Initializable {
@Override @Override
public void onNext(Barang b) { public void onNext(Barang b) {
BarangCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b); AmigoPosCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b);
for (TabelBarangTunai tbt : tbvPenjualan.getItems()) { for (TabelBarangTunai tbt : tbvPenjualan.getItems()) {
if (tbt.getKode().equals(b.getKodeBarang())) { if (tbt.getData().getKdBarang().equals(b.getKodeBarang())) {
tbt.setNama(b.getNamaBarang()); tbt.setNama(b.getNamaBarang());
tbt.getData().setBarang(b);
tbvPenjualan.refresh(); tbvPenjualan.refresh();
} }
} }

@ -9,9 +9,11 @@ import id.amigogroup.posterminal.FormUtamaController;
import id.amigogroup.posterminal.api.AmigoPosRx; import id.amigogroup.posterminal.api.AmigoPosRx;
import id.amigogroup.posterminal.model.Barang; import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.DNotaTunai; 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.AlertUtil;
import id.amigogroup.posterminal.util.Fucout; import id.amigogroup.posterminal.util.Fucout;
import io.reactivex.Observable;
import io.reactivex.Observer; import io.reactivex.Observer;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
@ -83,6 +85,7 @@ public class FormTransaksiTunaiController implements Initializable {
@FXML @FXML
private Text lblGrandTotal; private Text lblGrandTotal;
private String noNota = "";
private AmigoPosRx posRx = new AmigoPosRx(); private AmigoPosRx posRx = new AmigoPosRx();
/** /**
@ -90,6 +93,8 @@ public class FormTransaksiTunaiController implements Initializable {
*/ */
@Override @Override
public void initialize(URL url, ResourceBundle rb) { public void initialize(URL url, ResourceBundle rb) {
fldScan.requestFocus();
tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> { tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> {
return new ReadOnlyObjectWrapper(tbvTransaksi.getItems().indexOf(cell.getValue()) + 1); return new ReadOnlyObjectWrapper(tbvTransaksi.getItems().indexOf(cell.getValue()) + 1);
}); });
@ -108,16 +113,18 @@ public class FormTransaksiTunaiController implements Initializable {
// fillTable(new ArrayList<>()); // fillTable(new ArrayList<>());
} }
public void initData(String noNota) { public void initData(String noNota, boolean baru) {
if (!baru) {
posRx.getDNotaTunaiByNoNota(noNota).subscribe(getDNotaTunaiObserver); posRx.getDNotaTunaiByNoNota(noNota).subscribe(getDNotaTunaiObserver);
}
this.noNota = noNota;
lblNoNota.setText(Fucout.getTextColon(noNota)); lblNoNota.setText(Fucout.getTextColon(noNota));
setTanggal(); setTanggal();
} }
public void setTanggal() { public void setTanggal() {
java.util.Date skrg = new java.util.Date(); java.util.Date skrg = new java.util.Date();
java.text.SimpleDateFormat kal = new java.text.SimpleDateFormat kal = new java.text.SimpleDateFormat("dd/MM/yyyy");
java.text.SimpleDateFormat("dd/MM/yyyy");
txtTanggal.setText(kal.format(skrg)); txtTanggal.setText(kal.format(skrg));
} }
@ -137,8 +144,8 @@ public class FormTransaksiTunaiController implements Initializable {
}); });
String namaBarang = "..."; String namaBarang = "...";
if (BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) {
namaBarang = Fucout.getText(BarangCache.getInstance().getDaftarBarang() namaBarang = Fucout.getText(AmigoPosCache.getInstance().getDaftarBarang()
.get(dNotaTunai.getKdBarang()).getNamaBarang()); .get(dNotaTunai.getKdBarang()).getNamaBarang());
} }
@ -156,13 +163,30 @@ public class FormTransaksiTunaiController implements Initializable {
)), )),
fldPramuniaga)); fldPramuniaga));
if (!BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) {
posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver); posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver);
} }
} }
} }
public void addToTable(Barang barang, String ukur, String jumlah){ 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"}; String[] promo = {"Ulang Tahun", "Harbolnas", "Ultah Amigo"};
ComboBox<String> cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo)); ComboBox<String> cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo));
cbxPromo.getSelectionModel().select("Ulang Tahun"); cbxPromo.getSelectionModel().select("Ulang Tahun");
@ -172,26 +196,71 @@ public class FormTransaksiTunaiController implements Initializable {
fldScan.requestFocus(); fldScan.requestFocus();
} }
}); });
daftarTabelTransaksi.add(new TabelBarangTunai(
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.getKodeBarang()),
Fucout.getText(barang.getNamaBarang()), Fucout.getText(barang.getNamaBarang()),
Fucout.getText(ukur), Fucout.getText(noBarang.getNomor()),
Fucout.getText("1"), String.valueOf(jumlah),
"...", Fucout.getText(Fucout.formatRibuan(noBarang.getHargaJual())),
"...", "...",
"...", "...",
cbxPromo, cbxPromo,
"...", Fucout.getText(Fucout.formatRibuan(
fldPramuniaga)); jumlah * noBarang.getHargaJual())
),
fldPramuniaga);
tbt.setData(dNotaTunai);
daftarTabelTransaksi.add(tbt);
}
}
}
} }
//SCAN BARANG //SCAN BARANG
@FXML @FXML
void fldScanOnKeyPressed(KeyEvent event) { void fldScanOnKeyPressed(KeyEvent event) {
if (event.getCode() == KeyCode.ENTER) { 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<List<DNotaTunai>> getDNotaTunaiObserver = new Observer<>() { Observer<List<DNotaTunai>> getDNotaTunaiObserver = new Observer<>() {
@Override @Override
@ -250,7 +319,7 @@ public class FormTransaksiTunaiController implements Initializable {
@Override @Override
public void onNext(Barang b) { public void onNext(Barang b) {
BarangCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b); AmigoPosCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b);
for (TabelBarangTunai tbt : daftarTabelTransaksi) { for (TabelBarangTunai tbt : daftarTabelTransaksi) {
if (tbt.getKode().equals(b.getKodeBarang())) { if (tbt.getKode().equals(b.getKodeBarang())) {
tbt.setNama(b.getNamaBarang()); tbt.setNama(b.getNamaBarang());
@ -259,10 +328,8 @@ public class FormTransaksiTunaiController implements Initializable {
}; };
} }
@Override @Override
public void onError(Throwable error) { public void onError(Throwable error) {
System.out.println(".onError()");
if (error instanceof HttpException) { if (error instanceof HttpException) {
switch (((HttpException) error).code()) { switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND: case HttpURLConnection.HTTP_NOT_FOUND:
@ -295,21 +362,32 @@ public class FormTransaksiTunaiController implements Initializable {
}; };
Observer<Barang> getBarangBaruObserver = new Observer<>() { Observer<Barang> getTambahBarangObserver = new Observer<>() {
@Override @Override
public void onSubscribe(Disposable dspsbl) { public void onSubscribe(Disposable dspsbl) {
} }
@Override @Override
public void onNext(Barang b) { public void onNext(Barang b) {
BarangCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b); Barang bClone = new Barang(b);
addToTable(b, "XL", "1");
} 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 @Override
public void onError(Throwable error) { public void onError(Throwable error) {
System.out.println(".onError()");
if (error instanceof HttpException) { if (error instanceof HttpException) {
switch (((HttpException) error).code()) { switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND: case HttpURLConnection.HTTP_NOT_FOUND:
@ -341,4 +419,47 @@ public class FormTransaksiTunaiController implements Initializable {
} }
}; };
Observer<BarangFull> 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() {
}
};
} }

@ -5,10 +5,9 @@
*/ */
package id.amigogroup.posterminal.transaksi; package id.amigogroup.posterminal.transaksi;
import id.amigogroup.posterminal.model.DNotaRetur;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
/** /**
@ -16,151 +15,169 @@ import javafx.scene.control.TextField;
* @author AGNES * @author AGNES
*/ */
public class TabelBarangRetur { 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 SimpleObjectProperty<TextField>tcPramuniagaRetur;
public TabelBarangRetur(String tcKodeRetur, String tcNamaRetur, String tcUkurRetur, String tcJumlahRetur, String tcHargaRetur, String tcDisc1Retur, private SimpleStringProperty kode;
String tcDisc2Retur, String tcSubtotalRetur, TextField tcPramuniagaRetur) { private SimpleStringProperty nama;
this.tcKodeRetur = new SimpleStringProperty(tcKodeRetur); private SimpleStringProperty ukur;
this.tcNamaRetur = new SimpleStringProperty(tcNamaRetur); private SimpleStringProperty jumlah;
this.tcUkurRetur = new SimpleStringProperty(tcUkurRetur); private SimpleStringProperty harga;
this.tcJumlahRetur = new SimpleStringProperty(tcJumlahRetur); private SimpleStringProperty disc1;
this.tcHargaRetur = new SimpleStringProperty(tcHargaRetur); private SimpleStringProperty disc2;
this.tcDisc1Retur = new SimpleStringProperty(tcDisc1Retur); private SimpleStringProperty subTotal;
this.tcDisc2Retur = new SimpleStringProperty(tcDisc2Retur); private SimpleObjectProperty<TextField> fldPramuniaga;
this.tcSubtotalRetur = new SimpleStringProperty(tcSubtotalRetur);
this.tcPramuniagaRetur = new SimpleObjectProperty<TextField>(tcPramuniagaRetur); 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<TextField>(fldPramuniaga);
}
/**
* @return the kode
*/
public String getKode() {
return kode.get();
} }
/**
* @param kode the kode to set
*/
public void setKode(String kode) {
this.kode.set(kode);
}
/** /**
* @return the tcKode * @return the nama
*/ */
public String getTcKodeRetur() { public String getNama() {
return tcKodeRetur.get(); return nama.get();
} }
/** /**
* @param tcKode the tcKode to set * @param nama the nama to set
*/ */
public void setTcKodeRetur(String tcKodeRetur) { public void setNama(String nama) {
this.tcKodeRetur.set(tcKodeRetur); this.nama.set(nama);
} }
/** /**
* @return the tcNama * @return the ukur
*/ */
public String getTcNamaRetur() { public String getUkur() {
return tcNamaRetur.get(); return ukur.get();
} }
/** /**
* @param tcNama the tcNama to set * @param ukur the ukur to set
*/ */
public void setTcNamaRetur(String tcNamaRetur) { public void setUkur(String ukur) {
this.tcNamaRetur.set(tcNamaRetur); this.ukur.set(ukur);
} }
/** /**
* @return the tcUkur * @return the jumlah
*/ */
public String getTcUkurRetur() { public String getJumlah() {
return tcUkurRetur.get(); return jumlah.get();
} }
/** /**
* @param tcUkur the tcUkur to set * @param jumlah the jumlah to set
*/ */
public void setTcUkurRetur(String tcUkurRetur) { public void setJumlah(String jumlah) {
this.tcUkurRetur.set(tcUkurRetur); this.jumlah.set(jumlah);
} }
/** /**
* @return the tcJumlah * @return the harga
*/ */
public String getTcJumlahRetur() { public String getHarga() {
return tcJumlahRetur.get(); return harga.get();
} }
/** /**
* @param tcJumlah the tcJumlah to set * @param harga the harga to set
*/ */
public void setTcJumlahRetur(String tcJumlahRetur) { public void setHarga(String harga) {
this.tcJumlahRetur.set(tcJumlahRetur); this.harga.set(harga);
} }
/** /**
* @return the tcHarga * @return the disc1
*/ */
public String getTcHargaRetur() { public String getDisc1() {
return tcHargaRetur.get(); return disc1.get();
} }
/** /**
* @param tcHarga the tcHarga to set * @param disc1 the disc1 to set
*/ */
public void setTcHargaRetur(String tcHargaRetur) { public void setDisc1(String disc1) {
this.tcHargaRetur.set(tcHargaRetur); this.disc1.set(disc1);
} }
/** /**
* @return the tcDisc1 * @return the disc2
*/ */
public String getTcDisc1Retur() { public String getDisc2() {
return tcDisc1Retur.get(); return disc2.get();
} }
/** /**
* @param tcDisc1 the tcDisc1 to set * @param disc2 the disc2 to set
*/ */
public void setTcDisc1Retur(String tcDisc1Retur) { public void setDisc2(String disc2) {
this.tcDisc1Retur.set(tcDisc1Retur); this.disc2.set(disc2);
} }
/** /**
* @return the tcDisc2 * @return the subTotal
*/ */
public String getTcDisc2Retur() { public String getSubTotal() {
return tcDisc2Retur.get(); return subTotal.get();
} }
/** /**
* @param tcDisc2 the tcDisc2 to set * @param subTotal the subTotal to set
*/ */
public void setTcDisc2Retur(String tcDisc2Retur) { public void setSubTotal(String subTotal) {
this.tcDisc2Retur.set(tcDisc2Retur); this.subTotal.set(subTotal);
} }
/** /**
* @return the tcSubtotal * @return the fldPramuniaga
*/ */
public String getTcSubtotalRetur() { public TextField getFldPramuniaga() {
return tcSubtotalRetur.get(); return fldPramuniaga.get();
} }
/** /**
* @param tcSubtotal the tcSubtotal to set * @param fldPramuniaga the fldPramuniaga to set
*/ */
public void setTcSubtotalRetur(String tcSubtotalRetur) { public void setFldPramuniaga(TextField fldPramuniaga) {
this.tcSubtotalRetur.set(tcSubtotalRetur); this.fldPramuniaga.set(fldPramuniaga);
} }
/** /**
* @return the tcPramuniaga * @return the data
*/ */
public TextField getTcPramuniagaRetur() { public DNotaRetur getData() {
return tcPramuniagaRetur.get(); return data;
} }
/** /**
* @param tcPramuniaga the tcPramuniaga to set * @param data the data to set
*/ */
public void setTcPramuniagaRetur(TextField tcPramuniagaRetur) { public void setData(DNotaRetur data) {
this.tcPramuniagaRetur.set(tcPramuniagaRetur); this.data = data;
} }
} }

@ -5,9 +5,9 @@
*/ */
package id.amigogroup.posterminal.transaksi; package id.amigogroup.posterminal.transaksi;
import id.amigogroup.posterminal.model.DNotaTunai;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox; import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
@ -27,6 +27,8 @@ public class TabelBarangTunai {
private SimpleStringProperty subTotal; private SimpleStringProperty subTotal;
private SimpleObjectProperty<TextField> fldPramuniaga; private SimpleObjectProperty<TextField> fldPramuniaga;
private DNotaTunai data;
public TabelBarangTunai(String kode, String nama, String ukur, String jumlah, String harga, String disc1, public TabelBarangTunai(String kode, String nama, String ukur, String jumlah, String harga, String disc1,
String disc2, ComboBox cbxPromo, String subTotal, TextField fldPramuniaga) { String disc2, ComboBox cbxPromo, String subTotal, TextField fldPramuniaga) {
this.kode = new SimpleStringProperty(kode); this.kode = new SimpleStringProperty(kode);
@ -181,4 +183,18 @@ public class TabelBarangTunai {
public void setFldPramuniaga(TextField fldPramuniaga) { public void setFldPramuniaga(TextField fldPramuniaga) {
this.fldPramuniaga.set(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;
}
} }

@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates * To change this template file, choose Tools | Templates
* and open the template in the editor. * 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.Barang;
import id.amigogroup.posterminal.model.NoBarang; import id.amigogroup.posterminal.model.NoBarang;
@ -14,17 +14,18 @@ import java.util.Map;
* *
* @author ronal * @author ronal
*/ */
public class BarangCache { public class AmigoPosCache {
private static BarangCache instance; private static AmigoPosCache instance;
private Map<String, Barang> daftarBarang; private final Map<String, Barang> daftarBarang;
private Map<String, NoBarang> daftarNoBarang; private final Map<String, NoBarang> daftarNoBarang;
private BarangCache(){ private AmigoPosCache(){
daftarBarang = new HashMap<>(); daftarBarang = new HashMap<>();
daftarNoBarang = new HashMap<>();
} }
public static BarangCache getInstance(){ public static AmigoPosCache getInstance(){
if(instance == null) instance = new BarangCache(); if(instance == null) instance = new AmigoPosCache();
return instance; return instance;
} }

@ -159,4 +159,18 @@ public class Fucout {
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
.toLocalDate(); .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 "";
}
} }

@ -11,6 +11,7 @@
<?import javafx.scene.layout.GridPane?> <?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?> <?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<AnchorPane id="AnchorPane" fx:id="apMain" minHeight="-Infinity" minWidth="-Infinity" prefHeight="450.0" prefWidth="750.0" stylesheets="@../styles/pos_styles.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="id.amigogroup.posterminal.transaksi.FormTransaksiReturController"> <AnchorPane id="AnchorPane" fx:id="apMain" minHeight="-Infinity" minWidth="-Infinity" prefHeight="450.0" prefWidth="750.0" stylesheets="@../styles/pos_styles.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="id.amigogroup.posterminal.transaksi.FormTransaksiReturController">
@ -24,14 +25,14 @@
<items> <items>
<AnchorPane> <AnchorPane>
<children> <children>
<Label fx:id="lbl" layoutX="14.0" layoutY="6.0" text="Histori Penjualan" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="0.0"> <Label layoutX="14.0" layoutY="6.0" text="Histori Penjualan" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="0.0">
<font> <font>
<Font size="14.0" /> <Font size="14.0" />
</font> </font>
</Label> </Label>
<Label layoutX="14.0" layoutY="20.0" text="Nomor Nota Penjualan" /> <Label layoutX="14.0" layoutY="20.0" text="Nomor Nota Penjualan" />
<TextField fx:id="fldNotaPenjualan" layoutX="14.0" layoutY="37.0" onKeyPressed="#fldNotaPenjualanOnKeyPressed" prefHeight="25.0" prefWidth="329.0" promptText="Nomor Nota Penjualan" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="37.0" /> <TextField fx:id="fldNotaPenjualan" layoutX="14.0" layoutY="37.0" onKeyPressed="#fldNotaPenjualanOnKeyPressed" prefHeight="25.0" prefWidth="329.0" promptText="Nomor Nota Penjualan" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="37.0" />
<TableView fx:id="tbvPenjualan" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="65.0"> <TableView fx:id="tbvPenjualan" onDragDetected="#tbvPenjualanOnDragDetected" onDragDone="#tbvPenjualanOnDragDone" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="65.0">
<columns> <columns>
<TableColumn fx:id="tcNo" editable="false" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" sortable="false" text="No" /> <TableColumn fx:id="tcNo" editable="false" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" sortable="false" text="No" />
<TableColumn fx:id="tcKode" prefWidth="75.0" text="Kode Barang" /> <TableColumn fx:id="tcKode" prefWidth="75.0" text="Kode Barang" />
@ -70,7 +71,7 @@
<HBox alignment="CENTER_LEFT" maxWidth="1.7976931348623157E308" spacing="5.0"> <HBox alignment="CENTER_LEFT" maxWidth="1.7976931348623157E308" spacing="5.0">
<children> <children>
<Label text="Nomor Nota" /> <Label text="Nomor Nota" />
<Label text=": -"> <Label fx:id="lblNomorNota" text=": -">
<HBox.margin> <HBox.margin>
<Insets /> <Insets />
</HBox.margin> </HBox.margin>
@ -121,6 +122,15 @@
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy> </columnResizePolicy>
</TableView> </TableView>
<StackPane fx:id="stpReturDrop" layoutY="76.0" onDragDropped="#stpReturDropOnDragDropped" onDragEntered="#stpReturDropOnDragEntered" onDragExited="#stpReturDropOnDragExited" onDragOver="#stpReturDropOnDragOver" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="75.0">
<children>
<Label fx:id="lblTambahKeTabelRetur" text="Tambahkan Barang ke Nota Retur" textFill="GREY" visible="false">
<font>
<Font name="System Bold" size="18.0" />
</font>
</Label>
</children>
</StackPane>
</children> </children>
</AnchorPane> </AnchorPane>
</items> </items>

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.canvas.Canvas?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.control.Separator?> <?import javafx.scene.control.Separator?>
<?import javafx.scene.control.TableColumn?> <?import javafx.scene.control.TableColumn?>
@ -94,6 +95,7 @@
</children> </children>
</GridPane> </GridPane>
<Separator layoutY="116.0" prefHeight="0.0" prefWidth="800.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="116.0" /> <Separator layoutY="116.0" prefHeight="0.0" prefWidth="800.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="116.0" />
<Canvas height="200.0" layoutX="63.0" layoutY="16.0" width="200.0" AnchorPane.bottomAnchor="55.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="130.0" />
<TableView fx:id="tbvTransaksi" layoutY="150.0" prefHeight="245.0" prefWidth="800.0" AnchorPane.bottomAnchor="55.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="130.0"> <TableView fx:id="tbvTransaksi" layoutY="150.0" prefHeight="245.0" prefWidth="800.0" AnchorPane.bottomAnchor="55.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="130.0">
<columns> <columns>
<TableColumn fx:id="tcNo" editable="false" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" sortable="false" text="No" /> <TableColumn fx:id="tcNo" editable="false" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" sortable="false" text="No" />

@ -19,16 +19,18 @@ and open the template in the editor.
-fx-cursor: hand; -fx-cursor: hand;
} }
.button-navigasi-transaksi:hover{ .button-navigasi-transaksi:hover{
/*-fx-background-color: #bbeeff;*/
-fx-background-color: -fx-background-color:
linear-gradient(#d5f6fd 0%, #cae0ff 49%, #cae0ff 50%, #ffffff 100%);} linear-gradient(#d5f6fd 0%, #cae0ff 49%, #cae0ff 50%, #ffffff 100%);}
.button-navigasi-transaksi-selected{ .button-navigasi-transaksi-selected{
/*-fx-background-color: #33aaff;*/
-fx-background-color: -fx-background-color:
linear-gradient(#abf6fd 0%, #8aa6fd 49%, #8aa6dd 50%, #50a6dd 100%); linear-gradient(#abf6fd 0%, #8aa6fd 49%, #8aa6dd 50%, #50a6dd 100%);
} }
.table-drag-over{
-fx-background-color: lightgreen;
}
#header{ #header{
-fx-border-style: solid; -fx-border-style: solid;
-fx-border-color: black; -fx-border-color: black;

Loading…
Cancel
Save