From c494501c46a66f1a8b2759b61c0a07408a16adba Mon Sep 17 00:00:00 2001 From: Ronaldo Christnawan Date: Mon, 9 Mar 2020 15:31:33 +0700 Subject: [PATCH] Fungsi Validasi Nota Penjualan saat Retur --- .../posterminal/api/AmigoPosRx.java | 6 ++ .../posterminal/api/ServiceApiBarang.java | 5 ++ .../DialogCariPelangganController.java | 2 +- .../FormTransaksiReturController.java | 55 +++++++++++++++---- 4 files changed, 56 insertions(+), 12 deletions(-) diff --git a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java index e71a674..0fda567 100644 --- a/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java +++ b/src/main/java/id/amigogroup/posterminal/api/AmigoPosRx.java @@ -25,6 +25,7 @@ import java.util.logging.Logger; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.stage.Window; +import okhttp3.ResponseBody; /** * @@ -58,6 +59,11 @@ public class AmigoPosRx { .subscribeOn(Schedulers.trampoline()); } + public Observable validasiMNotaTunaiByNoNotaTanggal(String noNota) { + return UtilsApi.getServiceApiBarang().validasiMNotaTunaiByNoNotaTanggal(noNota) + .subscribeOn(Schedulers.trampoline()); + } + public Observable> getDNotaTunaiByNoNota(String noNota) { return UtilsApi.getServiceApiBarang().getDNotaTunaiByNoNota(noNota) .subscribeOn(Schedulers.io()); diff --git a/src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java b/src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java index f79ec8d..19f4821 100644 --- a/src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java +++ b/src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java @@ -13,6 +13,7 @@ import id.amigogroup.posterminal.model.NoBarang; import id.amigogroup.posterminal.model.Pagination; import io.reactivex.Observable; import java.util.List; +import okhttp3.ResponseBody; import retrofit2.http.GET; import retrofit2.http.Path; @@ -47,6 +48,10 @@ public interface ServiceApiBarang { @GET("m-nota-tunai/no-nota/{noNota}") Observable getMNotaTunaiByNoNota(@Path("noNota") String noNota); + //Validasi Master Nota Tunai by No Nota + @GET("m-nota-tunai/no-nota/{noNota}/valid") + Observable validasiMNotaTunaiByNoNotaTanggal(@Path("noNota") String noNota); + //D-NOTA-TUNAI //Mengambil Detail Nota Tunai by No Nota @GET("d-nota-tunai/no-nota/{noNota}") diff --git a/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java index f55fa96..f3b0ba5 100644 --- a/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java +++ b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java @@ -102,7 +102,7 @@ public class DialogCariPelangganController extends Dialog implements tbvPelanggan.setItems(daftarTabelPelanggan); } - public DialogCariPelangganController(/*FormPresensiController parent*/) { + public DialogCariPelangganController() { try { Window window = getDialogPane().getScene().getWindow(); window.setOnCloseRequest(event -> this.close()); diff --git a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java index 0fafa30..090f781 100644 --- a/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java +++ b/src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java @@ -5,6 +5,9 @@ */ package id.amigogroup.posterminal.transaksi; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; import id.amigogroup.posterminal.api.AmigoPosRx; import id.amigogroup.posterminal.model.Barang; import id.amigogroup.posterminal.model.DNotaRetur; @@ -105,7 +108,7 @@ public class FormTransaksiReturController implements Initializable { @FXML private Label lblTambahKeTabelRetur; private TableColumn tcAction; - + private final AmigoPosRx posRx = new AmigoPosRx(); private String noNota = ""; private final ObservableList daftarTabelPenjualan = FXCollections.observableArrayList(); @@ -161,18 +164,18 @@ public class FormTransaksiReturController implements Initializable { daftarTabelRetur.clear(); for (DNotaTunai dNotaTunai : daftarNotaTunai) { - //Button - Button btnAction = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); + //Button + Button btnAction = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON); btnAction.setOnAction((t) -> { Alert alert = AlertUtil.getAlertDialogKonfirmasi( - AlertUtil.DIALOG_KONFIRMASI_MESSAGE, - "Yakin ingin menghapus barang?"); - alert.initOwner(apMain.getScene().getWindow()); - alert.show(); - + AlertUtil.DIALOG_KONFIRMASI_MESSAGE, + "Yakin ingin menghapus barang?"); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + }); TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram()); - + String namaBarang = "..."; if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { Barang barang = AmigoPosCache.getInstance().getDaftarBarang() @@ -198,7 +201,7 @@ public class FormTransaksiReturController implements Initializable { tbt.setData(dNotaTunai); daftarTabelPenjualan.add(tbt); - + if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) { posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver); } @@ -208,7 +211,37 @@ public class FormTransaksiReturController implements Initializable { @FXML void fldNotaPenjualanOnKeyPressed(KeyEvent event) { if (event.getCode() == KeyCode.ENTER) { - posRx.getDNotaTunaiByNoNota(fldNotaPenjualan.getText()).subscribe(getDNotaTunaiObserver); + Disposable disposable = posRx.validasiMNotaTunaiByNoNotaTanggal(fldNotaPenjualan.getText()) + .subscribe((response) -> { + 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 { + Alert alert = AlertUtil.getAlertError( + "Nota Tidak Bisa Digunakan", + node.get("message").asText()); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + } + }, (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, + "Data nota tidak ditemukan."); + alert.initOwner(apMain.getScene().getWindow()); + alert.show(); + }); + } + } else { + AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow()); + } + }); } }