Explorar el Código

Load Data Retur dari Database, Bug Fix

[Service] Membuat rute baru ambil DNotaRetur berdasarkan no nota
[Logic + UI] Membuat fungsi mengambil dan menampilkan data barang di nota retur
[UI] Bug fix alert tunda nota keluar beberapa kali
pull/11/head
Ronaldo Christnawan hace 5 años
padre
commit
98cd4bbda5
Se han modificado 4 ficheros con 153 adiciones y 32 borrados
  1. +6
    -1
      src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java
  2. +6
    -0
      src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java
  3. +125
    -14
      src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java
  4. +16
    -17
      src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java

+ 6
- 1
src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java Ver fichero

@@ -5,8 +5,8 @@
*/
package id.amigogroup.posterminal.api;

import com.fasterxml.jackson.databind.JsonNode;
import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.DNotaRetur;
import id.amigogroup.posterminal.model.DNotaTunai;
import id.amigogroup.posterminal.model.Karyawan;
import id.amigogroup.posterminal.model.Pagination;
@@ -91,6 +91,11 @@ public class AmigoPosRx {
return UtilsApi.getServiceApiBarang().getMNotaReturByNoNota(noNota)
.subscribeOn(Schedulers.trampoline());
}
public Observable<List<DNotaRetur>> getDNotaReturByNoNota(String noNota) {
return UtilsApi.getServiceApiBarang().getDNotaReturByNoNota(noNota)
.subscribeOn(Schedulers.io());
}

//Checkin API
public Observable<List<Tas>> getAllTas() {


+ 6
- 0
src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java Ver fichero

@@ -6,6 +6,7 @@
package id.amigogroup.posterminal.api;

import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.DNotaRetur;
import id.amigogroup.posterminal.model.DNotaTunai;
import id.amigogroup.posterminal.model.MNotaRetur;
import id.amigogroup.posterminal.model.MNotaTunai;
@@ -99,4 +100,9 @@ public interface ServiceApiBarang {
//Mengambil Master Nota Retur by No Nota
@GET("m-nota-retur/no-nota/{noNota}")
Observable<MNotaRetur> getMNotaReturByNoNota(@Path("noNota") String noNota);
//D-NOTA-RETUR
//Mengambil Detail Nota Tunai by No Nota
@GET("d-nota-retur/no-nota/{noNota}")
Observable<List<DNotaRetur>> getDNotaReturByNoNota(@Path("noNota") String noNota);
}

+ 125
- 14
src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java Ver fichero

@@ -112,7 +112,7 @@ public class FormTransaksiReturController implements Initializable {
private StackPane stpReturDrop;
@FXML
private Label lblTambahKeTabelRetur;
private final AmigoPosRx posRx = new AmigoPosRx();
private String noNota = "";
private final ObservableList<TabelBarangTunai> daftarTabelPenjualan = FXCollections.observableArrayList();
@@ -136,7 +136,7 @@ public class FormTransaksiReturController implements Initializable {
tcDisc2.setCellValueFactory(new PropertyValueFactory<>("disc2"));
tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal"));
tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga"));
tcBtnBatal.setCellValueFactory(new PropertyValueFactory<>("btnBatal"));
// tcBtnBatal.setCellValueFactory(new PropertyValueFactory<>("btnBatal"));
tbvPenjualan.setItems(daftarTabelPenjualan);

tcNoRetur.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangRetur, Integer> cell) -> {
@@ -160,23 +160,22 @@ public class FormTransaksiReturController implements Initializable {

public void initData(String noNota, boolean baru) {
this.noNota = noNota;
if(!baru){
if (!baru) {
posRx.getDNotaReturByNoNota(noNota).subscribe(getDaftarDNotaReturObserver);
}
if(SystemValue.karyawanLogin != null){
if (SystemValue.karyawanLogin != null) {
lblKasir.setText(Fucout.getTextColon(SystemValue.karyawanLogin.getNama()));
}
lblNomorNota.setText(Fucout.getTextColon(noNota));
}

private void refreshData(List<DNotaTunai> daftarNotaTunai) {
private void refreshDataPenjualan(List<DNotaTunai> daftarNotaTunai) {
daftarTabelPenjualan.clear();
daftarTabelRetur.clear();

for (DNotaTunai dNotaTunai : daftarNotaTunai) {
//Button
Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON);
//Button
Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON);
btnBatal.setOnAction((t) -> {
Alert alert = AlertUtil.getAlertDialogKonfirmasi(
AlertUtil.DIALOG_KONFIRMASI_MESSAGE,
@@ -214,7 +213,44 @@ public class FormTransaksiReturController implements Initializable {
daftarTabelPenjualan.add(tbt);

if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) {
posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver);
posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangPenjualanObserver);
}
}
}

private void refreshDataRetur(List<DNotaRetur> daftarDNotaRetur) {
daftarTabelRetur.clear();
for(DNotaRetur dNotaRetur : daftarDNotaRetur){
//Button
TextField fldPramuniaga = new TextField(dNotaRetur.getKodePram());

String namaBarang = "...";
if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaRetur.getKdBarang())) {
Barang barang = AmigoPosCache.getInstance().getDaftarBarang()
.get(dNotaRetur.getKdBarang());
namaBarang = Fucout.getText(barang.getNamaBarang());
dNotaRetur.setBarang(barang);
}

TabelBarangRetur tbr = new TabelBarangRetur(
Fucout.getText(dNotaRetur.getKdBarang()),
namaBarang,
Fucout.getText(dNotaRetur.getNoBarang()),
Fucout.getText(String.valueOf(dNotaRetur.getJumlah())),
Fucout.getText(Fucout.formatRibuan(dNotaRetur.getHargaJual())),
Fucout.getText(Fucout.formatPersentase(dNotaRetur.getDiskon())),
Fucout.getText(Fucout.formatPersentase(dNotaRetur.getDiskon2())),
Fucout.getText(Fucout.formatRibuan(
dNotaRetur.getHargaJual() * dNotaRetur.getJumlah()
)),
fldPramuniaga);

tbr.setData(dNotaRetur);
daftarTabelRetur.add(tbr);

if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaRetur.getKdBarang())) {
posRx.getBarangByKodeBarang(dNotaRetur.getKdBarang()).subscribe(getBarangReturObserver);
}
}
}
@@ -227,7 +263,7 @@ public class FormTransaksiReturController implements Initializable {
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(response.string());
ObjectNode node = jsonNode.deepCopy();
if (node.get("result") != null && node.get("result").asBoolean()) {
posRx.getDNotaTunaiByNoNota(fldNotaPenjualan.getText()).subscribe(getDNotaTunaiObserver);
} else {
@@ -393,7 +429,7 @@ public class FormTransaksiReturController implements Initializable {
@Override
public void onNext(List<DNotaTunai> daftarDNotaTunai) {
fldNotaPenjualan.clear();
refreshData(daftarDNotaTunai);
refreshDataPenjualan(daftarDNotaTunai);
}

@Override
@@ -420,7 +456,7 @@ public class FormTransaksiReturController implements Initializable {

};

Observer<Barang> getBarangObserver = new Observer<>() {
Observer<Barang> getBarangPenjualanObserver = new Observer<>() {
@Override
public void onSubscribe(Disposable dspsbl) {
}
@@ -461,4 +497,79 @@ public class FormTransaksiReturController implements Initializable {
}

};

Observer<List<DNotaRetur>> getDaftarDNotaReturObserver = new Observer<>() {
@Override
public void onSubscribe(Disposable dspsbl) {
}

@Override
public void onNext(List<DNotaRetur> daftarDNotaRetur) {
refreshDataRetur(daftarDNotaRetur);
}

@Override
public void onError(Throwable error) {
if (error instanceof HttpException) {
switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND:
Platform.runLater(() -> {
Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
"Barang dengan kode tersebut tidak ditemukan.");
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
}
}

@Override
public void onComplete() {
}
};

Observer<Barang> getBarangReturObserver = new Observer<>() {
@Override
public void onSubscribe(Disposable dspsbl) {
}

@Override
public void onNext(Barang b) {
AmigoPosCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b);
for (TabelBarangRetur tbr : tbvRetur.getItems()) {
if (tbr.getData().getKdBarang().equals(b.getKodeBarang())) {
tbr.setNama(b.getNamaBarang());

tbr.getData().setBarang(b);
tbvRetur.refresh();
}
}
}

@Override
public void onError(Throwable error) {
if (error instanceof HttpException) {
switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND:
Platform.runLater(() -> {
Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
"Barang dengan kode tersebut tidak ditemukan.");
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
}
}

@Override
public void onComplete() {
}

};
}

+ 16
- 17
src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java Ver fichero

@@ -136,10 +136,10 @@ public class FormTransaksiTunaiController implements Initializable {
if (!baru) {
posRx.getDNotaTunaiByNoNota(noNota).subscribe(getDNotaTunaiObserver);
}
if(SystemValue.karyawanLogin != null){
if (SystemValue.karyawanLogin != null) {
lblKasir.setText(Fucout.getTextColon(SystemValue.karyawanLogin.getNama()));
}
this.parent = parent;
this.noNota = noNota;
lblNoNota.setText(Fucout.getTextColon(noNota));
@@ -216,7 +216,7 @@ public class FormTransaksiTunaiController implements Initializable {
ComboBox<String> cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo));
cbxPromo.getSelectionModel().select("Ulang Tahun");
//Button
Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON);
Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON);
btnBatal.setOnAction((t) -> {
Alert alert = AlertUtil.getAlertError(
AlertUtil.DIALOG_KONFIRMASI_MESSAGE,
@@ -299,7 +299,7 @@ public class FormTransaksiTunaiController implements Initializable {
ComboBox<String> cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo));
cbxPromo.getSelectionModel().select("Ulang Tahun");

Button btnAction = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON);
Button btnAction = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON);
btnAction.setOnAction((t) -> {
Alert alert = AlertUtil.getAlertDialogKonfirmasi(
AlertUtil.DIALOG_KONFIRMASI_MESSAGE,
@@ -597,6 +597,13 @@ public class FormTransaksiTunaiController implements Initializable {

@Override
public void onComplete() {
Platform.runLater(() -> {
Alert alert = AlertUtil.getAlertInfo(
"Berhasil Ditunda",
"Nota berhasil ditunda!");
alert.initOwner(parent.getWindow());
alert.show();
});
}
};

@@ -620,20 +627,12 @@ public class FormTransaksiTunaiController implements Initializable {

@Override
public void onComplete() {
Platform.runLater(() -> {
Alert alert = AlertUtil.getAlertInfo(
"Berhasil Ditunda",
"Nota berhasil ditunda!");
alert.initOwner(parent.getWindow());
alert.show();
if (parent != null) {
parent.notaContent.setControllerTunai(null);
parent.notaContent.setNodeTunai(null);
if (parent != null) {
parent.notaContent.setControllerTunai(null);
parent.notaContent.setNodeTunai(null);

parent.removeNota(parent.notaContent.getBtnTunai());
}
});
parent.removeNota(parent.notaContent.getBtnTunai());
}
}
};
}

Cargando…
Cancelar
Guardar