|
- /*
- * 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.api.AmigoPosRx;
- import id.amigogroup.posterminal.model.MNotaRetur;
- import id.amigogroup.posterminal.model.MNotaTunai;
- import id.amigogroup.posterminal.util.AlertUtil;
- import id.amigogroup.posterminal.util.Fucout;
- import io.reactivex.Observable;
- import java.io.IOException;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.ResourceBundle;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- 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.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.RadioButton;
- import javafx.scene.control.TextField;
- import javafx.scene.control.ToggleGroup;
- import javafx.scene.layout.AnchorPane;
- import javafx.stage.Modality;
- import javafx.stage.Window;
- import retrofit2.HttpException;
-
- /**
- *
- * @author Josua
- */
- public class DialogTambahNotaController extends Dialog<String> implements Initializable {
-
- @FXML
- private AnchorPane apTambahNota;
- @FXML
- private ToggleGroup tgTipe;
- @FXML
- private RadioButton rbBaru;
- @FXML
- private ComboBox<String> cbxPilihNota;
- @FXML
- private RadioButton rbAmbilDariCheckout;
- @FXML
- private TextField tfAmbilDariCheckout;
-
- private AmigoPosRx posRx = new AmigoPosRx();
- 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) {
- cbxPilihNota.getItems().setAll(
- "Tunai",
- "Bon",
- "Bawa Dulu",
- "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() {
- try {
- Window window = getDialogPane().getScene().getWindow();
- window.setOnCloseRequest(event -> this.close());
-
- FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogTambahNota.fxml"));
- loader.setController(this);
-
- Parent root = loader.load();
- getDialogPane().setContent(root);
-
- getDialogPane().getButtonTypes().add(btnBatal);
- 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;
- try {
- switch (tfAmbilDariCheckout.getText().charAt(0)) {
- case Fucout.KODE_NOTA_BON:
- break;
- case Fucout.KODE_NOTA_BAWA:
- break;
- case Fucout.KODE_NOTA_RETUR:
- Observable<MNotaRetur> mNotaReturObservable
- = posRx.getMNotaReturByNoNota(tfAmbilDariCheckout.getText());
- MNotaRetur resultMNotaRetur
- = mNotaReturObservable.blockingFirst();
- if (resultMNotaRetur != null) {
- notaExists = true;
- }
- break;
- default:
- Observable<MNotaTunai> mNotaTunaiObservable
- = posRx.getMNotaTunaiByNoNota(tfAmbilDariCheckout.getText());
- MNotaTunai resultMNotaTunai
- = mNotaTunaiObservable.blockingFirst();
- if (resultMNotaTunai != null) {
- notaExists = true;
- }
- break;
- }
- } catch (HttpException he) {
- switch (he.code()) {
- case HttpURLConnection.HTTP_NOT_FOUND:
- Alert alert = AlertUtil.getAlertError(
- AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
- "Data nota dengan nomor tersebut tidak ditemukan");
- alert.initOwner(apTambahNota.getScene().getWindow());
- alert.initModality(Modality.APPLICATION_MODAL);
- alert.show();
- break;
- default:
- Logger.getLogger(DialogTambahNotaController.class.getName()).log(Level.SEVERE, null, he);
- }
- } catch (Exception error) {
- AmigoPosRx.handleGenericError(error, apTambahNota.getScene().getWindow());
- }
-
- if (!notaExists) {
- event.consume();
- }
- }
- });
-
- setResultConverter(buttonType -> {
- if (buttonType == btnLanjutkan) {
- //radio button mana yang dipilih
- if (((RadioButton) tgTipe.getSelectedToggle()) == rbBaru) {
- return "Baru:" + cbxPilihNota.getValue();
- } else if (((RadioButton) tgTipe.getSelectedToggle()) == rbAmbilDariCheckout) {
- return "Checkout:" + tfAmbilDariCheckout.getText();
- }
- }
- return "Batal";
- });
- setTitle("Tambah Nota");
- } catch (IOException ex) {
- Logger.getLogger(DialogKonfirmasiReturController.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
-
- }
|