/* * 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 implements Initializable { @FXML private AnchorPane apTambahNota; @FXML private ToggleGroup tgTipe; @FXML private RadioButton rbBaru; @FXML private ComboBox 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 mNotaReturObservable = posRx.getMNotaReturByNoNota(tfAmbilDariCheckout.getText()); MNotaRetur resultMNotaRetur = mNotaReturObservable.blockingFirst(); if (resultMNotaRetur != null) { notaExists = true; } break; default: Observable 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); } } }