| Auteur | SHA1 | Bericht | Datum |
|---|---|---|---|
|
|
06bbac298b |
Merge Josua-MengubahSistemCariBarang
Conflicts: src/main/java/id/amigogroup/posterminal/api/ServiceApiBarang.java |
5 jaren geleden |
|
|
e066eb5173 |
-Menghilangkan radio button di UI cari barang
-Bisa cari barang bukan berdasarkan nama dan kode lagi, tapi bisa sekaligus(nama,kode, art) dalam satu pecarian |
5 jaren geleden |
| @@ -37,6 +37,11 @@ import okhttp3.ResponseBody; | |||
| public class AmigoPosRx { | |||
| //Barang API | |||
| public Observable<Pagination<Barang>> getBarangByKodeNamaArtikel (String input) { | |||
| return UtilsApi.getServiceApiBarang().getBarangByKodeNamaArtikel(input) | |||
| .subscribeOn(Schedulers.io()); | |||
| } | |||
| public Observable<Barang> getBarangByKodeBarang(String kodeBarang) { | |||
| return UtilsApi.getServiceApiBarang().getBarangByKodeBarang(kodeBarang) | |||
| .subscribeOn(Schedulers.trampoline()); | |||
| @@ -27,6 +27,10 @@ import retrofit2.http.Path; | |||
| */ | |||
| public interface ServiceApiBarang { | |||
| //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 | |||
| @GET("barangs/kode/{kode}") | |||
| Observable<Barang> getBarangByKodeBarang(@Path("kode") String kode); | |||
| @@ -40,7 +44,7 @@ public interface ServiceApiBarang { | |||
| @GET("no-barangs/id-gabungan/{idGabungan}/kolom-urut/nomor") | |||
| Observable<List<NoBarang>> getByIdGabunganSortNomor( | |||
| @Path("idGabungan") String idGabungan); | |||
| //Mengambil No Barang by Id Gabungan & Ukuran | |||
| @GET("no-barangs/id-gabungan/{idGabungan}/nomor/{nomor}") | |||
| Observable<NoBarang> getByIdGabunganNomor( | |||
| @@ -64,6 +68,7 @@ public interface ServiceApiBarang { | |||
| Observable<Pagination<MNotaTunai>> getMNotaTunaiByStatus( | |||
| @Path("status") String status, | |||
| @Path("limit") Integer limit); | |||
| //Validasi Master Nota Tunai by No Nota | |||
| @GET("m-nota-tunai/no-nota/{noNota}/valid") | |||
| Observable<ResponseBody> validasiMNotaTunaiByNoNotaTanggal(@Path("noNota") String noNota); | |||
| @@ -173,53 +173,14 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||
| @FXML | |||
| 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(); | |||
| daftarTabelBarang.clear(); | |||
| idx = 0; | |||
| Disposable d = posRx.getBarangByNamaBarang(tfPencarian.getText()) | |||
| Disposable d = posRx.getBarangByKodeNamaArtikel(tfPencarian.getText()) | |||
| .subscribeWith(getDaftarBarangObserver()); | |||
| compositeDisposable.add(d); | |||
| } else if ((RadioButton) tgTipe.getSelectedToggle() == rbNamaBarang | |||
| && tfPencarian.getText().length() < 3) { | |||
| } else if (tfPencarian.getText().length() < 3) { | |||
| compositeDisposable.clear(); | |||
| daftarTabelBarang.clear(); | |||
| } | |||
| @@ -305,16 +266,11 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||
| if (idx < daftarTabelBarang.size()) { | |||
| TabelBarangCari tbc = daftarTabelBarang.get(idx); | |||
| 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)) { | |||
| Barang b = tbc.getDataBarang(); | |||
| // System.out.println("### Ditemukan id gabungan sama dengan hasil api: " + b.getNamaBarang() | |||
| // + "(Urutan ke: " + (i + 1) + ") ###"); | |||
| int j = 0; | |||
| for (NoBarang nb : daftarNb) { | |||
| if (j == 0) { | |||
| // System.out.println("Nomor pertama: " + nb.getNomor()); | |||
| b.setNomor(nb.getNomor()); | |||
| tbc.setDataNoBarang(nb); | |||
| tbc.setUkur(Fucout.getText(nb.getNomor())); | |||
| @@ -322,7 +278,6 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||
| tbvBarang.refresh(); | |||
| } else { | |||
| // System.out.println("Nomor " + (j + 1) + ": " + nb.getNomor()); | |||
| TabelBarangCari tbcBaru = new TabelBarangCari( | |||
| Fucout.getText(b.getKodeBarang()), | |||
| Fucout.getText(b.getNamaBarang()), | |||
| @@ -332,11 +287,9 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In | |||
| tbcBaru.setDataNoBarang(nb); | |||
| daftarTabelBarang.add(idx + j, tbcBaru); | |||
| } | |||
| // System.out.println("Masuk di urutan: " + (i + j + 1)); | |||
| j++; | |||
| } | |||
| 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<>() { | |||
| @Override | |||
| public void onSubscribe(Disposable dspsbl) { | |||
| @@ -68,6 +68,16 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia | |||
| "Retur" | |||
| ); | |||
| 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() { | |||
| @@ -77,7 +87,7 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia | |||
| FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogTambahNota.fxml")); | |||
| loader.setController(this); | |||
| Parent root = loader.load(); | |||
| 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"?> | |||
| <?import javafx.scene.control.Label?> | |||
| <?import javafx.scene.control.RadioButton?> | |||
| <?import javafx.scene.control.TableColumn?> | |||
| <?import javafx.scene.control.TableView?> | |||
| <?import javafx.scene.control.TextField?> | |||
| <?import javafx.scene.control.ToggleGroup?> | |||
| <?import javafx.scene.layout.AnchorPane?> | |||
| <?import javafx.scene.text.Font?> | |||
| @@ -16,16 +14,9 @@ | |||
| <Font size="16.0" /> | |||
| </font> | |||
| </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="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> | |||
| <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" /> | |||
| @@ -15,11 +15,11 @@ | |||
| <Font size="16.0" /> | |||
| </font> | |||
| </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 fx:id="tgTipe" /> | |||
| </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" /> | |||
| <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> | |||