Pārlūkot izejas kodu

Menampilkan nota tunda ke tabel

pull/13/head
AGNES pirms 5 gadiem
vecāks
revīzija
e5a2e33ac2
3 mainītis faili ar 252 papildinājumiem un 39 dzēšanām
  1. +37
    -2
      src/main/java/id/amigogroup/posterminal/FormUtamaController.java
  2. +214
    -36
      src/main/java/id/amigogroup/posterminal/pencarian/DialogCariNotaTundaController.java
  3. +1
    -1
      src/main/resources/fxml/DialogCariNotaTunda.fxml

+ 37
- 2
src/main/java/id/amigogroup/posterminal/FormUtamaController.java Parādīt failu

@@ -356,7 +356,42 @@ public class FormUtamaController implements Initializable {
DialogCetakUlangNotaController dialogCetakUlangNota = new DialogCetakUlangNotaController();
dialogCetakUlangNota.initOwner(bpMain.getScene().getWindow());

Optional<String> result = dialogCetakUlangNota.showAndWait();
Optional<String> hasilReturn = dialogCetakUlangNota.showAndWait();

if (hasilReturn.get().contains("Tunda:")) {
String noNota = hasilReturn.get().substring(6);
Button buttonBaru = null;
switch (noNota.charAt(0)) {
case Fucout.KODE_NOTA_BON:
removeDuplicateNota(FormConstanta.TRANSAKSI_BON);
break;
case Fucout.KODE_NOTA_BAWA:
removeDuplicateNota(FormConstanta.TRANSAKSI_BAWA);
break;
case Fucout.KODE_NOTA_RETUR:
removeDuplicateNota(FormConstanta.TRANSAKSI_RETUR);

buttonBaru = generateButtonNota(noNota,
FormConstanta.TRANSAKSI_RETUR,
Fucout.TEKS_TIPE_NOTA_RETUR,
false);
notaContent.setBtnRetur(buttonBaru);
break;
default:
removeDuplicateNota(FormConstanta.TRANSAKSI_TUNAI);
buttonBaru = generateButtonNota(noNota,
FormConstanta.TRANSAKSI_TUNAI,
Fucout.TEKS_TIPE_NOTA_TUNAI,
false);
notaContent.setBtnTunai(buttonBaru);
break;
}

if (buttonBaru != null) {
navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru);
}
}
};
listShortcuts.put(kcCariCetakUlangNota, rnCetakUlangNota);

@@ -483,7 +518,7 @@ public class FormUtamaController implements Initializable {
notaContent.setBtnTunai(buttonBaru);
break;
}
if (buttonBaru != null) {
navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru);


+ 214
- 36
src/main/java/id/amigogroup/posterminal/pencarian/DialogCariNotaTundaController.java Parādīt failu

@@ -5,19 +5,33 @@
*/
package id.amigogroup.posterminal.pencarian;

import id.amigogroup.posterminal.FormUtamaController;
import id.amigogroup.posterminal.SystemValue;
import id.amigogroup.posterminal.api.AmigoPosRx;
import id.amigogroup.posterminal.model.Barang;
import id.amigogroup.posterminal.model.DNotaTunai;
import id.amigogroup.posterminal.model.MNotaTunai;
import id.amigogroup.posterminal.model.Pagination;
import id.amigogroup.posterminal.transaksi.NotaWithListDetail;
import id.amigogroup.posterminal.transaksi.TabelBarangTunai;
import id.amigogroup.posterminal.util.AlertUtil;
import id.amigogroup.posterminal.util.AmigoPosCache;
import id.amigogroup.posterminal.util.ButtonUtility;
import id.amigogroup.posterminal.util.Fucout;
import io.reactivex.Observable;
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.HashMap;
import java.util.List;
import java.util.Map;
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,14 +41,19 @@ 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.ComboBox;
import javafx.scene.control.Dialog;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Window;
@@ -46,10 +65,12 @@ import retrofit2.HttpException;
* @author ronal
*/
public class DialogCariNotaTundaController extends Dialog<String> implements Initializable {
@FXML
AnchorPane apContent;
@FXML
private AnchorPane apMain;
@FXML
private ComboBox<String> cbxCariNotaTunda;
@FXML
private TableView<TabelBarangTunai> tbvBarangTunda;
@@ -62,7 +83,7 @@ public class DialogCariNotaTundaController extends Dialog<String> implements Ini
@FXML
private TableColumn<TabelBarangTunai, String> tcUkur;
@FXML
private TableColumn<TabelBarangTunai, String> tcJml;
private TableColumn<TabelBarangTunai, String> tcJumlah;
@FXML
private TableColumn<TabelBarangTunai, String> tcHarga;
@FXML
@@ -74,25 +95,42 @@ public class DialogCariNotaTundaController extends Dialog<String> implements Ini
@FXML
private TableColumn<TabelBarangTunai, String> tcPromo;
@FXML
private Label lblKasir;
private TableColumn<TabelBarangTunai, String> tcPramuniaga;
final ObservableList<TabelBarangTunai> daftarTabelBarangTunai = FXCollections.observableArrayList();
AmigoPosRx posRx = new AmigoPosRx();
private FormUtamaController parent;
private ButtonType btnTambah = new ButtonType("Tambah", ButtonData.YES);
private String noNota = "";

/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
getDialogPane().getButtonTypes().add(btnTambah);
getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE));
//
}
tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> {
return new ReadOnlyObjectWrapper(tbvBarangTunda.getItems().indexOf(cell.getValue()) + 1);
});
tcKode.setCellValueFactory(new PropertyValueFactory<>("kode"));
tcNama.setCellValueFactory(new PropertyValueFactory<>("nama"));
tcUkur.setCellValueFactory(new PropertyValueFactory<>("ukur"));
tcJumlah.setCellValueFactory(new PropertyValueFactory<>("jumlah"));
tcHarga.setCellValueFactory(new PropertyValueFactory<>("harga"));
tcDisc1.setCellValueFactory(new PropertyValueFactory<>("disc1"));
tcDisc2.setCellValueFactory(new PropertyValueFactory<>("disc2"));
tcPromo.setCellValueFactory(new PropertyValueFactory<>("cbxPromo"));
tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal"));
// tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga"));
tbvBarangTunda.setItems(daftarTabelBarangTunai);
}

public DialogCariNotaTundaController(/*FormPresensiController parent*/) {
try {
Window window = getDialogPane().getScene().getWindow();
window.setOnCloseRequest(event -> this.close());
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCariNotaTunda.fxml"));
loader.setController(this);
// DialogCariBarangController controller = loader.<DialogCariBarangController>getController();
@@ -100,51 +138,191 @@ public class DialogCariNotaTundaController extends Dialog<String> implements Ini
getDialogPane().setContent(root);
setTitle("Cari Nota Tunda");
posRx.getMNotaTunaiByStatus("T", 25).subscribe(getNotaTunaiTundaObserver);
// getDialogPane().getButtonTypes().add(ButtonType.CANCEL);
// setResultConverter(buttonType -> {
// return str;
// });

setResultConverter(buttonType -> {
if (buttonType == btnTambah) {
return "Tunda:" + noNota;
}
return "Batal";

});
} catch (IOException e) {
Logger.getLogger(DialogCariBarangController.class
.getName()).log(Level.SEVERE, null, e);
}
}
@FXML
void cbxNotaTundaOnAction(ActionEvent event) {

private void refreshData(List<DNotaTunai> daftarNotaTunai) {
daftarTabelBarangTunai.clear();
//hitungTotal(daftarNotaTunai);

String[] promo = {"Ulang Tahun", "Harbolnas", "Ultah Amigo"};
for (DNotaTunai dNotaTunai : daftarNotaTunai) {
//ComboBox
ComboBox<String> cbxPromo = new ComboBox<>(FXCollections.observableArrayList(promo));
cbxPromo.getSelectionModel().select("Ulang Tahun");
//Button
Button btnBatal = ButtonUtility.generateButton(ButtonUtility.CLOSE_ICON);
btnBatal.setOnAction((t) -> {
Alert alert = AlertUtil.getAlertError(
AlertUtil.DIALOG_KONFIRMASI_MESSAGE,
"Yakin ingin menghapus barang?");
alert.initOwner(apMain.getScene().getWindow());
alert.show();

});
//TextField
TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram());
fldPramuniaga.setOnKeyPressed((t) -> {
if (t.getCode() == KeyCode.ENTER) {
fldPramuniaga.requestFocus();
}

});

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

daftarTabelBarangTunai.add(new TabelBarangTunai(
Fucout.getText(dNotaTunai.getKdBarang()),
namaBarang,
Fucout.getText(dNotaTunai.getNoBarang()),
Fucout.getText(String.valueOf(dNotaTunai.getJumlah())),
Fucout.getText(Fucout.formatRibuan(dNotaTunai.getHargaJual())),
Fucout.getText(Fucout.formatPersentase(dNotaTunai.getDiskon())),
Fucout.getText(Fucout.formatPersentase(dNotaTunai.getDiskon2())),
cbxPromo,
Fucout.getText(Fucout.formatRibuan(
dNotaTunai.getHargaJual() * dNotaTunai.getJumlah()
)),
fldPramuniaga,
btnBatal));

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

@FXML
void cbxNotaTundaOnAction(ActionEvent event) {
posRx.getDNotaTunaiByNoNota(cbxCariNotaTunda.getSelectionModel().getSelectedItem())
.subscribe(getDNotaTunaiObserver);
}
//
//OBSERVER
Observer<List<DNotaTunai>> getDNotaTunaiObserver = new Observer<>() {
@Override
public void onSubscribe(Disposable dspsbl) {
}
public Observer<Pagination<MNotaTunai>> getNotaTunaiTundaObserver = new Observer<Pagination<MNotaTunai>>() {
@Override
public void onSubscribe(Disposable dspsbl) {

@Override
public void onNext(List<DNotaTunai> daftarDNotaTunai) {
if (daftarDNotaTunai.size() > 0) {
noNota = daftarDNotaTunai.get(0).getNoNota();
}
refreshData(daftarDNotaTunai);
}

@Override
public void onNext(Pagination<MNotaTunai> daftarMNotaTunai) {
for (MNotaTunai mNotaTunai : daftarMNotaTunai.getData()){
cbxCariNotaTunda.getItems().add(mNotaTunai.getNoNota());
@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,
"Data nota tidak ditemukan.");
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
}
}

@Override
public void onComplete() {
}

};

//Observer untuk menampilkan data sebuah barang ke tabel, yang sudah mempunyai DNotaTunai
Observer<Barang> getBarangObserver = new Observer<>() {
@Override
public void onSubscribe(Disposable dspsbl) {
}

@Override
public void onNext(Barang b) {
AmigoPosCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b);
for (TabelBarangTunai tbt : daftarTabelBarangTunai) {
if (tbt.getKode().equals(b.getKodeBarang())) {
tbt.setNama(b.getNamaBarang());
tbvBarangTunda.refresh();
System.out.println(".onNext()");
}
};
}

@Override
public void onError(Throwable error) {
if (error instanceof HttpException) {
switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND:
@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,
"Nota Tunda Tidak Ditemukan");
alert.initOwner(apContent.getScene().getWindow());
"Barang dengan kode tersebut tidak ditemukan.");
alert.initOwner(apMain.getScene().getWindow());
alert.show();
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
});
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
}
}

@Override
public void onComplete() {
}

};
//Observer Nota Tunda
public Observer<Pagination<MNotaTunai>> getNotaTunaiTundaObserver = new Observer<Pagination<MNotaTunai>>() {
@Override
public void onSubscribe(Disposable dspsbl) {
}

@Override
public void onNext(Pagination<MNotaTunai> daftarMNotaTunai) {
for (MNotaTunai mNotaTunai : daftarMNotaTunai.getData()) {
cbxCariNotaTunda.getItems().add(mNotaTunai.getNoNota());
}
}

@Override
public void onComplete() {
@Override
public void onError(Throwable error) {
if (error instanceof HttpException) {
switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND:
Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
"Nota Tunda Tidak Ditemukan");
alert.initOwner(apContent.getScene().getWindow());
alert.show();
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
}
};
}

@Override
public void onComplete() {
}
};
}

+ 1
- 1
src/main/resources/fxml/DialogCariNotaTunda.fxml Parādīt failu

@@ -32,7 +32,7 @@
<TableColumn fx:id="tcKode" editable="false" prefWidth="75.0" text="Kode Barang" />
<TableColumn fx:id="tcNama" editable="false" prefWidth="75.0" text="Nama Barang" />
<TableColumn fx:id="tcUkur" editable="false" maxWidth="35.0" minWidth="35.0" prefWidth="35.0" resizable="false" text="Ukur" />
<TableColumn fx:id="tcJml" editable="false" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" text="Jml" />
<TableColumn fx:id="tcJumlah" editable="false" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" text="Jml" />
<TableColumn fx:id="tcHarga" editable="false" prefWidth="75.0" text="Harga" />
<TableColumn fx:id="tcDisc1" editable="false" maxWidth="50.0" minWidth="50.0" prefWidth="50.0" resizable="false" text="Disc I" />
<TableColumn fx:id="tcDisc2" editable="false" maxWidth="50.0" minWidth="50.0" prefWidth="50.0" resizable="false" text="Disc II" />


Notiek ielāde…
Atcelt
Saglabāt