/* * 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.bayar; import id.amigogroup.posterminal.pencarian.DialogCariBarangController; import id.amigogroup.posterminal.util.Fucout; import java.io.IOException; 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.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.control.ButtonBar; import javafx.scene.control.ButtonType; import javafx.scene.control.CheckBox; import javafx.scene.control.Dialog; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.stage.Window; /** * FXML Controller class * * @author ronal */ public class DialogSelesaiBayarTidakLunasController extends Dialog implements Initializable, BayarInterface { @FXML private CheckBox chkTunai; @FXML private CheckBox chkKartu; @FXML private CheckBox chkPromo; @FXML private CheckBox chkRetur; @FXML private CheckBox chkGopay; @FXML private CheckBox chkOvo; @FXML private CheckBox chkPoin; @FXML private VBox vbContent; @FXML private Label lblPerluBayar; private BayarInterface parent; private int kurangBayar; private List daftarChkBayarSyarat; private List daftarChkBayarOpsional; public BayarContent bayarContent = new BayarContent(); /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { daftarChkBayarSyarat.add(chkTunai); daftarChkBayarSyarat.add(chkKartu); daftarChkBayarOpsional.add(chkPromo); daftarChkBayarOpsional.add(chkRetur); daftarChkBayarOpsional.add(chkGopay); daftarChkBayarOpsional.add(chkOvo); daftarChkBayarOpsional.add(chkPoin); getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonBar.ButtonData.CANCEL_CLOSE)); } public DialogSelesaiBayarTidakLunasController(BayarInterface parent, int kurangBayar) { this.daftarChkBayarSyarat = new ArrayList<>(); this.daftarChkBayarOpsional = new ArrayList<>(); this.parent = parent; bayarContent.setTotalPerluBayar(kurangBayar); try { Window window = getDialogPane().getScene().getWindow(); window.setOnCloseRequest(event -> this.close()); FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogSelesaiBayarTidakLunas.fxml")); loader.setController(this); Parent root = loader.load(); getDialogPane().setContent(root); setTitle("Pembayaran Belum Lunas!"); lblPerluBayar.setText(Fucout.getTextColon(Fucout.formatRupiah( bayarContent.getTotalPerluBayar()))); } catch (IOException e) { Logger.getLogger(DialogCariBarangController.class .getName()).log(Level.SEVERE, null, e); } } @FXML void chkPilihanOnAction(ActionEvent event) { CheckBox chkSource = (CheckBox) event.getSource(); FXMLLoader loader = new FXMLLoader(); Node node = null; try { switch (chkSource.getText()) { case FormBayarController.BAYAR_TUNAI: if (bayarContent.getNodeTunai() == null && chkSource.selectedProperty().get()) { loader.setLocation(getClass().getResource("/fxml/FormBayarTunai.fxml")); node = loader.load(); FormBayarTunaiController fbtc = loader.getController(); fbtc.initData(this); vbContent.getChildren().add(node); bayarContent.setNodeTunai(node); } else { if (bayarContent.getNodeTunai() != null) { vbContent.getChildren().remove(bayarContent.getNodeTunai()); bayarContent.setNodeTunai(null); } } break; case FormBayarController.BAYAR_KARTU: if (bayarContent.getNodeKartu() == null && chkSource.selectedProperty().get()) { loader.setLocation(getClass().getResource("/fxml/FormBayarKartu.fxml")); node = loader.load(); vbContent.getChildren().add(node); bayarContent.setNodeKartu(node); } else { if (bayarContent.getNodeKartu() != null) { vbContent.getChildren().remove(bayarContent.getNodeKartu()); bayarContent.setNodeKartu(null); } } break; case FormBayarController.BAYAR_RETUR: if (bayarContent.getNodeRetur() == null && chkSource.selectedProperty().get()) { loader.setLocation(getClass().getResource("/fxml/FormBayarRetur.fxml")); node = loader.load(); vbContent.getChildren().add(node); bayarContent.setNodeRetur(node); } else { if (bayarContent.getNodeRetur() != null) { vbContent.getChildren().remove(bayarContent.getNodeRetur()); bayarContent.setNodeRetur(null); } } break; case FormBayarController.BAYAR_PROMO: if (bayarContent.getNodePromo() == null && chkSource.selectedProperty().get()) { loader.setLocation(getClass().getResource("/fxml/FormBayarVoucherPromo.fxml")); node = loader.load(); vbContent.getChildren().add(node); bayarContent.setNodePromo(node); } else { if (bayarContent.getNodePromo() != null) { vbContent.getChildren().remove(bayarContent.getNodePromo()); bayarContent.setNodePromo(null); } } break; case FormBayarController.BAYAR_GOPAY: break; case FormBayarController.BAYAR_OVO: break; case FormBayarController.BAYAR_POIN: if (bayarContent.getNodePoin() == null && chkSource.selectedProperty().get()) { loader.setLocation(getClass().getResource("/fxml/FormBayarPoin.fxml")); node = loader.load(); vbContent.getChildren().add(node); bayarContent.setNodePoin(node); } else { if (bayarContent.getNodePoin() != null) { vbContent.getChildren().remove(bayarContent.getNodePoin()); bayarContent.setNodePoin(null); } } break; } if (daftarChkBayarSyarat.contains(chkSource)) { chkSyaratValueOnChanged(); } } catch (IOException ex) { Logger.getLogger(FormBayarController.class.getName()).log(Level.SEVERE, null, ex); } } private void chkSyaratValueOnChanged() { boolean isSyaratTerpenuhi = false; for (CheckBox chkSyarat : daftarChkBayarSyarat) { if (chkSyarat.selectedProperty().get()) { isSyaratTerpenuhi = true; break; } } if (isSyaratTerpenuhi) { for (CheckBox chk : daftarChkBayarOpsional) { chk.setDisable(false); } } else { for (CheckBox chk : daftarChkBayarOpsional) { if (chk.selectedProperty().get()) { chk.fire(); } chk.setDisable(true); } } } @Override public BayarContent getBayarContent() { return bayarContent; } @Override public void updateKurangBayarView() { lblPerluBayar.setText(Fucout.getTextColon(Fucout.formatRupiah( bayarContent.getTotalPerluBayar() - bayarContent.getTotalBayar()))); } }