|
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package id.amigogroup.posterminal.transaksi;
-
- import id.amigogroup.posterminal.FormUtamaController;
- import id.amigogroup.posterminal.api.AmigoPosRx;
- import id.amigogroup.posterminal.model.Barang;
- import id.amigogroup.posterminal.model.DNotaTunai;
- import id.amigogroup.posterminal.pencarian.BarangCache;
- import id.amigogroup.posterminal.util.AlertUtil;
- import id.amigogroup.posterminal.util.Fucout;
- import io.reactivex.Observer;
- import io.reactivex.disposables.Disposable;
- import java.net.HttpURLConnection;
- import java.net.SocketTimeoutException;
- 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;
- import javafx.concurrent.Task;
- import javafx.fxml.FXML;
- import javafx.fxml.Initializable;
- import javafx.scene.control.Alert;
- 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.KeyEvent;
- import javafx.scene.layout.AnchorPane;
- import retrofit2.HttpException;
-
- /**
- * FXML Controller class
- *
- * @author ronal
- */
- public class FormTransaksiReturController implements Initializable {
-
- @FXML
- private AnchorPane apMain;
- @FXML
- private TextField fldNotaPenjualan;
- @FXML
- private TableView<TabelBarangTunai> tbvPenjualan;
- @FXML
- private TableColumn<TabelBarangTunai, Integer> tcNo;
- @FXML
- private TableColumn<TabelBarangTunai, String> tcKode;
- @FXML
- private TableColumn<TabelBarangTunai, String> tcNama;
- @FXML
- private TableColumn<TabelBarangTunai, String> tcUkur;
- @FXML
- private TableColumn<TabelBarangTunai, String> tcJumlah;
- @FXML
- private TableColumn<TabelBarangTunai, String> tcHarga;
- @FXML
- private TableColumn<TabelBarangTunai, String> tcDisc1;
- @FXML
- private TableColumn<TabelBarangTunai, String> tcDisc2;
- @FXML
- private TableColumn<TabelBarangTunai, String> tcSubTotal;
- @FXML
- private TableColumn<TabelBarangTunai, TextField> tcPramuniaga;
-
- // @FXML
- // private TableView<?> tbvRetur;
- // @FXML
- // private TableColumn<?, ?> tcNoRetur;
- // @FXML
- // private TableColumn<?, ?> tcKodeRetur;
- // @FXML
- // private TableColumn<?, ?> tcNamaRetur;
- // @FXML
- // private TableColumn<?, ?> tcUkurRetur;
- // @FXML
- // private TableColumn<?, ?> tcJumlahRetur;
- // @FXML
- // private TableColumn<?, ?> tcHargaRetur;
- // @FXML
- // private TableColumn<?, ?> tcDisc1Retur;
- // @FXML
- // private TableColumn<?, ?> tcDisc2Retur;
- // @FXML
- // private TableColumn<?, ?> tcSubtotalRetur;
- // @FXML
- // private TableColumn<?, ?> tcPramuniagaRetur;
-
- private final AmigoPosRx posRx = new AmigoPosRx();
- private final ObservableList<TabelBarangTunai> daftarTabelPenjualan = FXCollections.observableArrayList();
- private List<DetailTransaksi> daftarDetailTransaksi = new ArrayList<>();
-
- /**
- * Initializes the controller class.
- */
- @Override
- public void initialize(URL url, ResourceBundle rb) {
- tcNo.setCellValueFactory((TableColumn.CellDataFeatures<TabelBarangTunai, Integer> cell) -> {
- return new ReadOnlyObjectWrapper(tbvPenjualan.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"));
- tcSubTotal.setCellValueFactory(new PropertyValueFactory<>("subTotal"));
- tcPramuniaga.setCellValueFactory(new PropertyValueFactory<>("fldPramuniaga"));
- tbvPenjualan.setItems(daftarTabelPenjualan);
- Platform.runLater(() -> {
- fldNotaPenjualan.requestFocus();
- });
- }
-
- private void mapCurrentDataToDetailTransaksi() {
-
- }
-
- int count = 0;
-
- @FXML
- Label lbl;
-
- private void refreshData(List<DNotaTunai> daftarNotaTunai) {
- daftarTabelPenjualan.clear();
-
- for (DNotaTunai dNotaTunai : daftarNotaTunai) {
- TextField fldPramuniaga = new TextField(dNotaTunai.getKodePram());
-
- String namaBarang = "...";
- if (BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) {
- namaBarang = Fucout.getText(BarangCache.getInstance().getDaftarBarang()
- .get(dNotaTunai.getKdBarang()).getNamaBarang());
- }
-
- daftarTabelPenjualan.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())),
- null,
- Fucout.getText(Fucout.formatRibuan(
- dNotaTunai.getHargaJual() * dNotaTunai.getJumlah()
- )),
- fldPramuniaga));
-
- if (!BarangCache.getInstance().getDaftarBarang().containsKey(dNotaTunai.getKdBarang())) {
- posRx.getBarangByKodeBarang(dNotaTunai.getKdBarang()).subscribe(getBarangObserver);
- }
- }
- }
-
- @FXML
- void fldNotaPenjualanOnKeyPressed(KeyEvent event) {
- if (event.getCode() == KeyCode.ENTER) {
- posRx.getDNotaTunaiByNoNota(fldNotaPenjualan.getText()).subscribe(getDNotaTunaiObserver);
- }
- }
-
- Observer<List<DNotaTunai>> getDNotaTunaiObserver = new Observer<>() {
- @Override
- public void onSubscribe(Disposable dspsbl) {
- }
-
- @Override
- public void onNext(List<DNotaTunai> daftarDNotaTunai) {
- refreshData(daftarDNotaTunai);
- }
-
- @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 if (error instanceof SocketTimeoutException) {
- Platform.runLater(() -> {
- Alert alert = AlertUtil.getAlertError(
- AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE,
- AlertUtil.ERROR_KONEKSI_TIMEOUT_MESSAGE);
- alert.initOwner(apMain.getScene().getWindow());
- alert.show();
- });
- } else {
- Platform.runLater(() -> {
- Alert alert = AlertUtil.getAlertError(
- AlertUtil.ERROR_TIDAK_TERDUGA_TITLE,
- AlertUtil.ERROR_TIDAK_TERDUGA_MESSAGE);
- alert.initOwner(apMain.getScene().getWindow());
- alert.show();
- Logger.getLogger(FormUtamaController.class
- .getName()).log(Level.SEVERE, null, error);
- });
- }
- }
-
- @Override
- public void onComplete() {
- }
-
- };
-
- Observer<Barang> getBarangObserver = new Observer<>() {
- @Override
- public void onSubscribe(Disposable dspsbl) {
- }
-
- @Override
- public void onNext(Barang b) {
- BarangCache.getInstance().getDaftarBarang().put(b.getKodeBarang(), b);
- for (TabelBarangTunai tbt : tbvPenjualan.getItems()) {
- if (tbt.getKode().equals(b.getKodeBarang())) {
- tbt.setNama(b.getNamaBarang());
- tbvPenjualan.refresh();
- }
- }
- }
-
- @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,
- "Barang dengan kode tersebut tidak ditemukan.");
- alert.initOwner(apMain.getScene().getWindow());
- alert.show();
- });
- }
- } else if (error instanceof SocketTimeoutException) {
- Platform.runLater(() -> {
- Alert alert = AlertUtil.getAlertError(
- AlertUtil.ERROR_KONEKSI_TIMEOUT_TITLE,
- AlertUtil.ERROR_KONEKSI_TIMEOUT_MESSAGE);
- alert.initOwner(apMain.getScene().getWindow());
- alert.show();
- });
- } else {
- Platform.runLater(() -> {
- Alert alert = AlertUtil.getAlertError(
- AlertUtil.ERROR_TIDAK_TERDUGA_TITLE,
- AlertUtil.ERROR_TIDAK_TERDUGA_MESSAGE);
- alert.initOwner(apMain.getScene().getWindow());
- alert.show();
- Logger.getLogger(FormUtamaController.class
- .getName()).log(Level.SEVERE, null, error);
- });
- }
- }
-
- @Override
- public void onComplete() {
- }
-
- };
- }
|