Bläddra i källkod

-Sistem bisa mencari barang berdasarkan kode barang dan nama barang menggunakan tombol F5

-Set fokus di text field setiap membuka form cari pelanggan, cari barang, tambah nota
-Set close setiap form menggunakan tombol esc
-Menambahkan model noBarang
pull/4/head
Josua Pascario 5 år sedan
förälder
incheckning
859214a84f
8 ändrade filer med 190 tillägg och 34 borttagningar
  1. +143
    -0
      src/main/java/id/amigogroup/posterminal/model/NoBarang.java
  2. +7
    -1
      src/main/java/id/amigogroup/posterminal/pencarian/BarangCache.java
  3. +22
    -21
      src/main/java/id/amigogroup/posterminal/pencarian/DialogCariBarangController.java
  4. +3
    -1
      src/main/java/id/amigogroup/posterminal/pencarian/DialogCariNotaTundaController.java
  5. +7
    -6
      src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java
  6. +6
    -2
      src/main/java/id/amigogroup/posterminal/transaksi/DialogTambahNotaController.java
  7. +1
    -2
      src/main/resources/fxml/DialogCariBarang.fxml
  8. +1
    -1
      src/main/resources/fxml/DialogCariPelanggan.fxml

+ 143
- 0
src/main/java/id/amigogroup/posterminal/model/NoBarang.java Visa fil

@@ -0,0 +1,143 @@

package id.amigogroup.posterminal.model;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"id",
"id_gabungan",
"nomor",
"harga_pokok",
"harga_jual",
"stok_min",
"stok",
"stok_operasional"
})
public class NoBarang {

@JsonProperty("id")
private int id;
@JsonProperty("id_gabungan")
private String idGabungan;
@JsonProperty("nomor")
private String nomor;
@JsonProperty("harga_pokok")
private String hargaPokok;
@JsonProperty("harga_jual")
private int hargaJual;
@JsonProperty("stok_min")
private int stokMin;
@JsonProperty("stok")
private int stok;
@JsonProperty("stok_operasional")
private int stokOperasional;

@JsonProperty("id")
public int getId() {
return id;
}

@JsonProperty("id")
public void setId(int id) {
this.id = id;
}

@JsonProperty("id_gabungan")
public String getIdGabungan() {
return idGabungan;
}

@JsonProperty("id_gabungan")
public void setIdGabungan(String idGabungan) {
this.idGabungan = idGabungan;
}

@JsonProperty("nomor")
public String getNomor() {
return nomor;
}

@JsonProperty("nomor")
public void setNomor(String nomor) {
this.nomor = nomor;
}

@JsonProperty("harga_pokok")
public String getHargaPokok() {
return hargaPokok;
}

@JsonProperty("harga_pokok")
public void setHargaPokok(String hargaPokok) {
this.hargaPokok = hargaPokok;
}

@JsonProperty("harga_jual")
public int getHargaJual() {
return hargaJual;
}

@JsonProperty("harga_jual")
public void setHargaJual(int hargaJual) {
this.hargaJual = hargaJual;
}

@JsonProperty("stok_min")
public int getStokMin() {
return stokMin;
}

@JsonProperty("stok_min")
public void setStokMin(int stokMin) {
this.stokMin = stokMin;
}

@JsonProperty("stok")
public int getStok() {
return stok;
}

@JsonProperty("stok")
public void setStok(int stok) {
this.stok = stok;
}

@JsonProperty("stok_operasional")
public int getStokOperasional() {
return stokOperasional;
}

@JsonProperty("stok_operasional")
public void setStokOperasional(int stokOperasional) {
this.stokOperasional = stokOperasional;
}

@Override
public String toString() {
return new ToStringBuilder(this).append("id", id).append("idGabungan", idGabungan).append("nomor", nomor).append("hargaPokok", hargaPokok).append("hargaJual", hargaJual).append("stokMin", stokMin).append("stok", stok).append("stokOperasional", stokOperasional).toString();
}

@Override
public int hashCode() {
return new HashCodeBuilder().append(idGabungan).append(hargaPokok).append(stokMin).append(stokOperasional).append(id).append(hargaJual).append(stok).append(nomor).toHashCode();
}

@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}
if ((other instanceof NoBarang) == false) {
return false;
}
NoBarang rhs = ((NoBarang) other);
return new EqualsBuilder().append(idGabungan, rhs.idGabungan).append(hargaPokok, rhs.hargaPokok).append(stokMin, rhs.stokMin).append(stokOperasional, rhs.stokOperasional).append(id, rhs.id).append(hargaJual, rhs.hargaJual).append(stok, rhs.stok).append(nomor, rhs.nomor).isEquals();
}

}

+ 7
- 1
src/main/java/id/amigogroup/posterminal/pencarian/BarangCache.java Visa fil

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

import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.NoBarang;
import java.util.HashMap;
import java.util.Map;

@@ -16,7 +17,8 @@ import java.util.Map;
public class BarangCache {
private static BarangCache instance;
private Map<String, Barang> daftarBarang;
private Map<String, NoBarang> daftarNoBarang;
private BarangCache(){
daftarBarang = new HashMap<>();
}
@@ -29,4 +31,8 @@ public class BarangCache {
public Map<String, Barang> getDaftarBarang(){
return daftarBarang;
}

public Map<String, NoBarang> getDaftarNoBarang() {
return daftarNoBarang;
}
}

+ 22
- 21
src/main/java/id/amigogroup/posterminal/pencarian/DialogCariBarangController.java Visa fil

@@ -10,15 +10,18 @@ import id.amigogroup.posterminal.api.AmigoPosRx;
import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.Pagination;
import id.amigogroup.posterminal.util.AlertUtil;
import id.amigogroup.posterminal.util.Fucout;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Platform;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
@@ -27,7 +30,8 @@ import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonBar.ButtonData;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TableColumn;
@@ -82,6 +86,10 @@ public class DialogCariBarangController extends Dialog<Barang> implements Initia
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
Platform.runLater(() -> {
tfPencarian.requestFocus();
});
getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE));
tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangCari, Integer> cell) -> {
return new ReadOnlyObjectWrapper(tbvBarang.getItems().indexOf(cell.getValue()) + 1);
});
@@ -119,30 +127,21 @@ public class DialogCariBarangController extends Dialog<Barang> implements Initia
}
}

// public void fillTable(List<TabelBarangCari> daftarBarang) {
//STATIC FUNCTION, hilangkan jika sudah tidak dipakai
// Button btnTambah = new Button("Tambah");
// btnTambah.setOnAction((event) -> {
// setResult("Barang x");
// this.close();
// });
// daftarTabelBarang.add(new TabelBarangCari("AACOBA001ABCDXL", "Barang x", "XL", "79.900", btnTambah));
// }

public void updateTabelBarang(List<Barang> daftarBarang) {
daftarTabelBarang.clear();
for (Barang barang : daftarBarang) {
// Button btnTambah = new Button("Tambah");
// String noBarang = "...";
// if (BarangCache.getInstance().getDaftarNoBarang().containsKey(barang.getKodeBarang())) {
// noBarang = Fucout.getText(BarangCache.getInstance().getDaftarNoBarang()
// .get(barang.getKodeBarang()).getNomor());
// }
daftarTabelBarang.add(new TabelBarangCari(
// Fucout.getText(barang.getKodeBarang()),
barang.getKodeBarang(),
barang.getNamaBarang(),
"42",
"14000"));
// btnTambah.setOnAction((event) -> {
// setResult("Barang x");
// this.close();
// });
"-",
"-"));

}
}

@@ -155,6 +154,7 @@ public class DialogCariBarangController extends Dialog<Barang> implements Initia
&& tfPencarian.getText().length() >= 3)) {
posRx.getBarangByNamaBarang(tfPencarian.getText()).subscribe(daftarBarangObserver);
}
tfPencarian.requestFocus();
}

public Observer<Barang> barangKodeObserver = new Observer<Barang>() {
@@ -165,8 +165,9 @@ public class DialogCariBarangController extends Dialog<Barang> implements Initia
@Override
public void onNext(Barang b) {
if (b != null) {
barang = b;
close();
List<Barang> db = new ArrayList<>();
db.add(b);
updateTabelBarang(db);
}
}



+ 3
- 1
src/main/java/id/amigogroup/posterminal/pencarian/DialogCariNotaTundaController.java Visa fil

@@ -13,6 +13,8 @@ import java.util.logging.Logger;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.ButtonBar.ButtonData;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.stage.Window;

@@ -28,7 +30,7 @@ public class DialogCariNotaTundaController extends Dialog<String> implements Ini
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE));
}
public DialogCariNotaTundaController(/*FormPresensiController parent*/) {


+ 7
- 6
src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java Visa fil

@@ -5,10 +5,7 @@
*/
package id.amigogroup.posterminal.pencarian;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import id.amigogroup.posterminal.FormUtamaController;
import id.amigogroup.posterminal.SystemValue;
import id.amigogroup.posterminal.api.AmigoPosRx;
import id.amigogroup.posterminal.model.Pagination;
import id.amigogroup.posterminal.model.Pelanggan;
@@ -22,15 +19,16 @@ import java.util.List;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Platform;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar.ButtonData;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.RadioButton;
@@ -88,7 +86,10 @@ public class DialogCariPelangganController extends Dialog<Pelanggan> implements
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
getDialogPane().getButtonTypes().add(ButtonType.CLOSE);
Platform.runLater(() -> {
tfPencarian.requestFocus();
});
getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE));
tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelPelanggan, Integer> cell) -> {
return new ReadOnlyObjectWrapper(tbvPelanggan.getItems().indexOf(cell.getValue()) + 1);
});
@@ -137,7 +138,7 @@ public class DialogCariPelangganController extends Dialog<Pelanggan> implements
pelanggan.getAlias(),
pelanggan.getNama(),
pelanggan.getAlamat(),
pelanggan.getTelp() + " / " +pelanggan.getPonsel(),
pelanggan.getTelp() + " / " + pelanggan.getPonsel(),
pelanggan.getUpline()));
}
}


+ 6
- 2
src/main/java/id/amigogroup/posterminal/transaksi/DialogTambahNotaController.java Visa fil

@@ -24,6 +24,7 @@ import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonBar.ButtonData;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Dialog;
@@ -55,8 +56,8 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia
private TextField tfAmbilDariCheckout;

private AmigoPosRx posRx = new AmigoPosRx();
public static final ButtonType btnLanjutkan = new ButtonType("Lanjutkan");
public static final ButtonType btnBatal = new ButtonType("Batal");
public static final ButtonType btnLanjutkan = new ButtonType("Lanjutkan", ButtonData.YES);
public static final ButtonType btnBatal = new ButtonType("Batal", ButtonData.CANCEL_CLOSE);

@Override
public void initialize(URL url, ResourceBundle rb) {
@@ -66,6 +67,7 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia
"Bawa Dulu",
"Retur"
);
cbxPilihNota.getSelectionModel().select(0);
}

public DialogTambahNotaController() {
@@ -84,6 +86,7 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia
getDialogPane().getButtonTypes().add(btnLanjutkan);

Button btnLanjutkanR = (Button) getDialogPane().lookupButton(btnLanjutkan);
btnLanjutkanR.setDefaultButton(true);
btnLanjutkanR.addEventFilter(ActionEvent.ACTION, event -> {
if (((RadioButton) tgTipe.getSelectedToggle()) == rbAmbilDariCheckout) {
boolean notaExists = false;
@@ -166,5 +169,6 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia
void rbAmbilDariCheckoutOnAction(ActionEvent event) {
cbxPilihNota.setDisable(true);
tfAmbilDariCheckout.setDisable(false);
tfAmbilDariCheckout.requestFocus();
}
}

+ 1
- 2
src/main/resources/fxml/DialogCariBarang.fxml Visa fil

@@ -24,7 +24,7 @@
<ToggleGroup fx:id="tgTipe" />
</toggleGroup>
</RadioButton>
<RadioButton fx:id="rbNamaBarang" layoutX="103.0" layoutY="93.0" mnemonicParsing="false" text="Nama Barang" toggleGroup="$tgTipe" AnchorPane.leftAnchor="103.0" AnchorPane.topAnchor="93.0" />
<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" prefHeight="338.0" prefWidth="500.0" AnchorPane.bottomAnchor="-5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="117.0">
<columns>
<TableColumn fx:id="tcNo" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" text="No" />
@@ -32,7 +32,6 @@
<TableColumn fx:id="tcNama" prefWidth="75.0" text="Nama" />
<TableColumn fx:id="tcUkur" text="Ukur" />
<TableColumn fx:id="tcHarga" prefWidth="75.0" text="Harga" />
<TableColumn fx:id="tcTambah" prefWidth="75.0" text="Tambah" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />


+ 1
- 1
src/main/resources/fxml/DialogCariPelanggan.fxml Visa fil

@@ -24,7 +24,7 @@
<ToggleGroup fx:id="tgTipe" />
</toggleGroup>
</RadioButton>
<RadioButton fx:id="rbNama" layoutX="80.0" layoutY="93.0" mnemonicParsing="false" text="Nama" toggleGroup="$tgTipe" AnchorPane.leftAnchor="80.0" AnchorPane.topAnchor="93.0" />
<RadioButton fx:id="rbNama" layoutX="80.0" layoutY="93.0" mnemonicParsing="false" selected="true" text="Nama" toggleGroup="$tgTipe" AnchorPane.leftAnchor="80.0" AnchorPane.topAnchor="93.0" />
<RadioButton fx:id="rbNoTelpNoHp" layoutX="143.0" layoutY="93.0" mnemonicParsing="false" text="NoTelp/No.Hp" toggleGroup="$tgTipe" AnchorPane.leftAnchor="143.0" AnchorPane.topAnchor="93.0" />
<TableView fx:id="tbvPelanggan" layoutX="14.0" layoutY="117.0" prefHeight="338.0" prefWidth="500.0" AnchorPane.bottomAnchor="-5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="117.0">
<columns>


Laddar…
Avbryt
Spara