Conflicts: src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.javapull/12/head
| @@ -37,6 +37,11 @@ import okhttp3.ResponseBody; | |||||
| public class AmigoPosRx { | public class AmigoPosRx { | ||||
| //Barang API | //Barang API | ||||
| public Observable<Pagination<Barang>> getBarangByKodeNamaArtikel (String input) { | |||||
| return UtilsApi.getServiceApiBarang().getBarangByKodeNamaArtikel(input) | |||||
| .subscribeOn(Schedulers.io()); | |||||
| } | |||||
| public Observable<Barang> getBarangByKodeBarang(String kodeBarang) { | public Observable<Barang> getBarangByKodeBarang(String kodeBarang) { | ||||
| return UtilsApi.getServiceApiBarang().getBarangByKodeBarang(kodeBarang) | return UtilsApi.getServiceApiBarang().getBarangByKodeBarang(kodeBarang) | ||||
| .subscribeOn(Schedulers.trampoline()); | .subscribeOn(Schedulers.trampoline()); | ||||
| @@ -27,6 +27,10 @@ import retrofit2.http.Path; | |||||
| */ | */ | ||||
| public interface ServiceApiBarang { | public interface ServiceApiBarang { | ||||
| //BARANG | //BARANG | ||||
| //Mengambil Barang berdasarkan Kode Barang, Nama Barang & Artikel | |||||
| @GET("barangs/kode-nama-artikel/{input}/limit/15") | |||||
| Observable<Pagination<Barang>> getBarangByKodeNamaArtikel(@Path("input") String input); | |||||
| //Mengambil Barang by Kode Barang | //Mengambil Barang by Kode Barang | ||||
| @GET("barangs/kode/{kode}") | @GET("barangs/kode/{kode}") | ||||
| Observable<Barang> getBarangByKodeBarang(@Path("kode") String kode); | Observable<Barang> getBarangByKodeBarang(@Path("kode") String kode); | ||||
| @@ -40,7 +44,7 @@ public interface ServiceApiBarang { | |||||
| @GET("no-barangs/id-gabungan/{idGabungan}/kolom-urut/nomor") | @GET("no-barangs/id-gabungan/{idGabungan}/kolom-urut/nomor") | ||||
| Observable<List<NoBarang>> getByIdGabunganSortNomor( | Observable<List<NoBarang>> getByIdGabunganSortNomor( | ||||
| @Path("idGabungan") String idGabungan); | @Path("idGabungan") String idGabungan); | ||||
| //Mengambil No Barang by Id Gabungan & Ukuran | //Mengambil No Barang by Id Gabungan & Ukuran | ||||
| @GET("no-barangs/id-gabungan/{idGabungan}/nomor/{nomor}") | @GET("no-barangs/id-gabungan/{idGabungan}/nomor/{nomor}") | ||||
| Observable<NoBarang> getByIdGabunganNomor( | Observable<NoBarang> getByIdGabunganNomor( | ||||
| @@ -64,6 +68,7 @@ public interface ServiceApiBarang { | |||||
| Observable<Pagination<MNotaTunai>> getMNotaTunaiByStatus( | Observable<Pagination<MNotaTunai>> getMNotaTunaiByStatus( | ||||
| @Path("status") String status, | @Path("status") String status, | ||||
| @Path("limit") Integer limit); | @Path("limit") Integer limit); | ||||
| //Validasi Master Nota Tunai by No Nota | //Validasi Master Nota Tunai by No Nota | ||||
| @GET("m-nota-tunai/no-nota/{noNota}/valid") | @GET("m-nota-tunai/no-nota/{noNota}/valid") | ||||
| Observable<ResponseBody> validasiMNotaTunaiByNoNotaTanggal(@Path("noNota") String noNota); | Observable<ResponseBody> validasiMNotaTunaiByNoNotaTanggal(@Path("noNota") String noNota); | ||||
| @@ -173,53 +173,14 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||||
| @FXML | @FXML | ||||
| void tfPencarianOnKeyReleased(KeyEvent event) { | void tfPencarianOnKeyReleased(KeyEvent event) { | ||||
| if (((RadioButton) tgTipe.getSelectedToggle() == rbKodeBarang | |||||
| && event.getCode() == KeyCode.ENTER)) { | |||||
| idx = 0; | |||||
| if (tfPencarian.getText().length() <= 9) { | |||||
| posRx.getBarangByKodeBarang(tfPencarian.getText()).subscribe(barangKodeObserver); | |||||
| } else { | |||||
| String kodeFull = tfPencarian.getText(); | |||||
| String kodeBarang = Fucout.getKodeBarangFromKodeFull(kodeFull); | |||||
| String ukur = Fucout.getNomorBarangFromKodeFull(kodeFull); | |||||
| if (AmigoPosCache.getInstance().getDaftarBarang().containsKey(kodeBarang)) { | |||||
| Barang barang = AmigoPosCache.getInstance().getDaftarBarang().get(kodeBarang); | |||||
| selectedBarangFull.setBarang(barang); | |||||
| if (AmigoPosCache.getInstance().getDaftarNoBarang().containsKey( | |||||
| barang.getIdGabungan() + ukur)) { | |||||
| NoBarang noBarang = AmigoPosCache.getInstance().getDaftarNoBarang() | |||||
| .get(barang.getIdGabungan() + ukur); | |||||
| selectedBarangFull.setNoBarang(noBarang); | |||||
| } else { | |||||
| Observable.zip(posRx.getBarangByKodeBarang(kodeBarang), | |||||
| posRx.getNoBarangByIdGabunganNomor(barang.getIdGabungan(), ukur), | |||||
| (b, nB) -> new BarangFull(b, nB)).subscribe(getBarangFullGetNoBarangFromBarangObserver); | |||||
| } | |||||
| } | |||||
| if (!AmigoPosCache.getInstance().getDaftarBarang().containsKey(kodeBarang)) { | |||||
| Observable.zip(posRx.getBarangByKodeBarang(kodeBarang), | |||||
| Observable.just(ukur), | |||||
| (barang, nomor) -> { | |||||
| barang.setNomor(nomor); | |||||
| return barang; | |||||
| }).subscribe(getTambahBarangObserver); | |||||
| } | |||||
| } | |||||
| } else if (((RadioButton) tgTipe.getSelectedToggle() == rbNamaBarang | |||||
| && tfPencarian.getText().length() >= 3)) { | |||||
| if (tfPencarian.getText().length() >= 3) { | |||||
| compositeDisposable.clear(); | compositeDisposable.clear(); | ||||
| daftarTabelBarang.clear(); | daftarTabelBarang.clear(); | ||||
| idx = 0; | idx = 0; | ||||
| Disposable d = posRx.getBarangByNamaBarang(tfPencarian.getText()) | |||||
| Disposable d = posRx.getBarangByKodeNamaArtikel(tfPencarian.getText()) | |||||
| .subscribeWith(getDaftarBarangObserver()); | .subscribeWith(getDaftarBarangObserver()); | ||||
| compositeDisposable.add(d); | compositeDisposable.add(d); | ||||
| } else if ((RadioButton) tgTipe.getSelectedToggle() == rbNamaBarang | |||||
| && tfPencarian.getText().length() < 3) { | |||||
| } else if (tfPencarian.getText().length() < 3) { | |||||
| compositeDisposable.clear(); | compositeDisposable.clear(); | ||||
| daftarTabelBarang.clear(); | daftarTabelBarang.clear(); | ||||
| } | } | ||||
| @@ -305,16 +266,11 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||||
| if (idx < daftarTabelBarang.size()) { | if (idx < daftarTabelBarang.size()) { | ||||
| TabelBarangCari tbc = daftarTabelBarang.get(idx); | TabelBarangCari tbc = daftarTabelBarang.get(idx); | ||||
| String idGabungan = daftarNb.get(0).getIdGabungan(); | String idGabungan = daftarNb.get(0).getIdGabungan(); | ||||
| // System.out.println("Barang " + (i + 1) + ": " + daftarTabelBarang.get(i).getDataBarang().getIdGabungan()); | |||||
| if (tbc.getDataBarang() != null && tbc.getDataBarang().getIdGabungan().equals(idGabungan)) { | if (tbc.getDataBarang() != null && tbc.getDataBarang().getIdGabungan().equals(idGabungan)) { | ||||
| Barang b = tbc.getDataBarang(); | Barang b = tbc.getDataBarang(); | ||||
| // System.out.println("### Ditemukan id gabungan sama dengan hasil api: " + b.getNamaBarang() | |||||
| // + "(Urutan ke: " + (i + 1) + ") ###"); | |||||
| int j = 0; | int j = 0; | ||||
| for (NoBarang nb : daftarNb) { | for (NoBarang nb : daftarNb) { | ||||
| if (j == 0) { | if (j == 0) { | ||||
| // System.out.println("Nomor pertama: " + nb.getNomor()); | |||||
| b.setNomor(nb.getNomor()); | b.setNomor(nb.getNomor()); | ||||
| tbc.setDataNoBarang(nb); | tbc.setDataNoBarang(nb); | ||||
| tbc.setUkur(Fucout.getText(nb.getNomor())); | tbc.setUkur(Fucout.getText(nb.getNomor())); | ||||
| @@ -322,7 +278,6 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||||
| tbvBarang.refresh(); | tbvBarang.refresh(); | ||||
| } else { | } else { | ||||
| // System.out.println("Nomor " + (j + 1) + ": " + nb.getNomor()); | |||||
| TabelBarangCari tbcBaru = new TabelBarangCari( | TabelBarangCari tbcBaru = new TabelBarangCari( | ||||
| Fucout.getText(b.getKodeBarang()), | Fucout.getText(b.getKodeBarang()), | ||||
| Fucout.getText(b.getNamaBarang()), | Fucout.getText(b.getNamaBarang()), | ||||
| @@ -332,11 +287,9 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||||
| tbcBaru.setDataNoBarang(nb); | tbcBaru.setDataNoBarang(nb); | ||||
| daftarTabelBarang.add(idx + j, tbcBaru); | daftarTabelBarang.add(idx + j, tbcBaru); | ||||
| } | } | ||||
| // System.out.println("Masuk di urutan: " + (i + j + 1)); | |||||
| j++; | j++; | ||||
| } | } | ||||
| idx += daftarNb.size(); | idx += daftarNb.size(); | ||||
| // System.out.println("### SELESAI ###\n"); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -366,7 +319,7 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||||
| } | } | ||||
| }; | }; | ||||
| } | } | ||||
| Observer<Barang> getTambahBarangObserver = new Observer<>() { | Observer<Barang> getTambahBarangObserver = new Observer<>() { | ||||
| @Override | @Override | ||||
| public void onSubscribe(Disposable dspsbl) { | public void onSubscribe(Disposable dspsbl) { | ||||
| @@ -68,6 +68,16 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia | |||||
| "Retur" | "Retur" | ||||
| ); | ); | ||||
| cbxPilihNota.getSelectionModel().select(0); | cbxPilihNota.getSelectionModel().select(0); | ||||
| tgTipe.selectedToggleProperty().addListener(((observable, oldValue, newValue) -> { | |||||
| if (newValue.equals(rbBaru)) { | |||||
| cbxPilihNota.setDisable(false); | |||||
| tfAmbilDariCheckout.setDisable(true); | |||||
| } else if (newValue.equals(rbAmbilDariCheckout)) { | |||||
| cbxPilihNota.setDisable(true); | |||||
| tfAmbilDariCheckout.setDisable(false); | |||||
| tfAmbilDariCheckout.requestFocus(); | |||||
| } | |||||
| })); | |||||
| } | } | ||||
| public DialogTambahNotaController() { | public DialogTambahNotaController() { | ||||
| @@ -77,7 +87,7 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia | |||||
| FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogTambahNota.fxml")); | FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogTambahNota.fxml")); | ||||
| loader.setController(this); | loader.setController(this); | ||||
| Parent root = loader.load(); | Parent root = loader.load(); | ||||
| getDialogPane().setContent(root); | getDialogPane().setContent(root); | ||||
| @@ -151,16 +161,4 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia | |||||
| } | } | ||||
| } | } | ||||
| @FXML | |||||
| void rbNotaBaruOnAction(ActionEvent event) { | |||||
| cbxPilihNota.setDisable(false); | |||||
| tfAmbilDariCheckout.setDisable(true); | |||||
| } | |||||
| @FXML | |||||
| void rbAmbilDariCheckoutOnAction(ActionEvent event) { | |||||
| cbxPilihNota.setDisable(true); | |||||
| tfAmbilDariCheckout.setDisable(false); | |||||
| tfAmbilDariCheckout.requestFocus(); | |||||
| } | |||||
| } | } | ||||
| @@ -1,11 +1,9 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <?import javafx.scene.control.Label?> | <?import javafx.scene.control.Label?> | ||||
| <?import javafx.scene.control.RadioButton?> | |||||
| <?import javafx.scene.control.TableColumn?> | <?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.ToggleGroup?> | |||||
| <?import javafx.scene.layout.AnchorPane?> | <?import javafx.scene.layout.AnchorPane?> | ||||
| <?import javafx.scene.text.Font?> | <?import javafx.scene.text.Font?> | ||||
| @@ -16,16 +14,9 @@ | |||||
| <Font size="16.0" /> | <Font size="16.0" /> | ||||
| </font> | </font> | ||||
| </Label> | </Label> | ||||
| <TextField fx:id="tfPencarian" layoutX="14.0" layoutY="56.0" onKeyReleased="#tfPencarianOnKeyReleased" promptText="Input Kode Barang / Nama Barang" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="46.0" /> | |||||
| <TextField fx:id="tfPencarian" layoutX="14.0" layoutY="56.0" onKeyReleased="#tfPencarianOnKeyReleased" promptText="Input Kode Barang / Nama Barang / Artikel" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="46.0" /> | |||||
| <Label layoutX="14.0" layoutY="39.0" text="Pencarian" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="29.0" /> | <Label layoutX="14.0" layoutY="39.0" text="Pencarian" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="29.0" /> | ||||
| <Label layoutX="4.0" layoutY="76.0" text="Cari Berdasarkan :" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="76.0" /> | |||||
| <RadioButton fx:id="rbKodeBarang" layoutX="3.0" layoutY="93.0" mnemonicParsing="false" text="Kode Barang" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="93.0"> | |||||
| <toggleGroup> | |||||
| <ToggleGroup fx:id="tgTipe" /> | |||||
| </toggleGroup> | |||||
| </RadioButton> | |||||
| <RadioButton fx:id="rbNamaBarang" layoutX="103.0" layoutY="93.0" mnemonicParsing="false" selected="true" text="Nama Barang" toggleGroup="$tgTipe" AnchorPane.leftAnchor="103.0" AnchorPane.topAnchor="93.0" /> | |||||
| <TableView fx:id="tbvBarang" layoutX="14.0" layoutY="117.0" onKeyPressed="#tbvBarangOnKeyPressed" onMouseClicked="#tbvBarangOnMouseClicked" prefHeight="338.0" prefWidth="500.0" AnchorPane.bottomAnchor="-5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="117.0"> | |||||
| <TableView fx:id="tbvBarang" layoutX="14.0" layoutY="77.0" onKeyPressed="#tbvBarangOnKeyPressed" onMouseClicked="#tbvBarangOnMouseClicked" prefHeight="378.0" prefWidth="500.0" AnchorPane.bottomAnchor="-5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="76.0"> | |||||
| <columns> | <columns> | ||||
| <TableColumn fx:id="tcNo" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" text="No" /> | <TableColumn fx:id="tcNo" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" text="No" /> | ||||
| <TableColumn fx:id="tcKode" prefWidth="75.0" text="Kode" /> | <TableColumn fx:id="tcKode" prefWidth="75.0" text="Kode" /> | ||||
| @@ -15,11 +15,11 @@ | |||||
| <Font size="16.0" /> | <Font size="16.0" /> | ||||
| </font> | </font> | ||||
| </Label> | </Label> | ||||
| <RadioButton fx:id="rbBaru" layoutX="4.0" layoutY="30.0" mnemonicParsing="false" onAction="#rbNotaBaruOnAction" selected="true" text="Baru" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="30.0"> | |||||
| <RadioButton fx:id="rbBaru" layoutX="4.0" layoutY="30.0" mnemonicParsing="false" selected="true" text="Baru" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="30.0"> | |||||
| <toggleGroup> | <toggleGroup> | ||||
| <ToggleGroup fx:id="tgTipe" /> | <ToggleGroup fx:id="tgTipe" /> | ||||
| </toggleGroup></RadioButton> | </toggleGroup></RadioButton> | ||||
| <RadioButton fx:id="rbAmbilDariCheckout" layoutX="4.0" layoutY="90.0" mnemonicParsing="false" onAction="#rbAmbilDariCheckoutOnAction" text="Ambil dari checkout" toggleGroup="$tgTipe" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="90.0" /> | |||||
| <RadioButton fx:id="rbAmbilDariCheckout" layoutX="4.0" layoutY="90.0" mnemonicParsing="false" text="Ambil dari checkout" toggleGroup="$tgTipe" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="90.0" /> | |||||
| <ComboBox fx:id="cbxPilihNota" layoutX="4.0" layoutY="52.0" prefWidth="150.0" promptText="Pilih nota" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="52.0" /> | <ComboBox fx:id="cbxPilihNota" layoutX="4.0" layoutY="52.0" prefWidth="150.0" promptText="Pilih nota" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="52.0" /> | ||||
| <TextField fx:id="tfAmbilDariCheckout" disable="true" layoutX="4.0" layoutY="112.0" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="112.0" /> | <TextField fx:id="tfAmbilDariCheckout" disable="true" layoutX="4.0" layoutY="112.0" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="112.0" /> | ||||
| </children> | </children> | ||||