Aplikasi POS Amigo, dibangun dengan JavaFX dengan Maven
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
5.4 KiB

  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package id.amigogroup.posterminal.pencarian;
  7. import id.amigogroup.posterminal.api.AmigoPosRx;
  8. import id.amigogroup.posterminal.model.MNotaTunai;
  9. import id.amigogroup.posterminal.model.Pagination;
  10. import id.amigogroup.posterminal.transaksi.TabelBarangTunai;
  11. import id.amigogroup.posterminal.util.AlertUtil;
  12. import io.reactivex.Observer;
  13. import io.reactivex.disposables.Disposable;
  14. import java.io.IOException;
  15. import java.net.HttpURLConnection;
  16. import java.net.URL;
  17. import java.util.ResourceBundle;
  18. import java.util.logging.Level;
  19. import java.util.logging.Logger;
  20. import javafx.beans.property.ReadOnlyObjectWrapper;
  21. import javafx.collections.FXCollections;
  22. import javafx.collections.ObservableList;
  23. import javafx.event.ActionEvent;
  24. import javafx.fxml.FXML;
  25. import javafx.fxml.FXMLLoader;
  26. import javafx.fxml.Initializable;
  27. import javafx.scene.Parent;
  28. import javafx.scene.control.Alert;
  29. import javafx.scene.control.ButtonBar.ButtonData;
  30. import javafx.scene.control.ButtonType;
  31. import javafx.scene.control.ComboBox;
  32. import javafx.scene.control.Dialog;
  33. import javafx.scene.control.TableColumn;
  34. import javafx.scene.control.TableView;
  35. import javafx.scene.control.cell.PropertyValueFactory;
  36. import javafx.scene.input.KeyCode;
  37. import javafx.scene.input.KeyEvent;
  38. import javafx.scene.layout.AnchorPane;
  39. import javafx.stage.Window;
  40. import retrofit2.HttpException;
  41. /**
  42. * FXML Controller class
  43. *
  44. * @author ronal
  45. */
  46. public class DialogCariNotaTundaController extends Dialog<String> implements Initializable {
  47. @FXML
  48. AnchorPane apContent;
  49. @FXML
  50. private ComboBox<String> cbxCariNotaTunda;
  51. @FXML
  52. private TableView<TabelBarangTunai> tbvBarangTunda;
  53. @FXML
  54. private TableColumn<TabelBarangTunai, Integer> tcNo;
  55. @FXML
  56. private TableColumn<TabelBarangTunai, String> tcKode;
  57. @FXML
  58. private TableColumn<TabelBarangTunai, String> tcNama;
  59. @FXML
  60. private TableColumn<TabelBarangTunai, String> tcUkur;
  61. @FXML
  62. private TableColumn<TabelBarangTunai, String> tcJml;
  63. @FXML
  64. private TableColumn<TabelBarangTunai, String> tcHarga;
  65. @FXML
  66. private TableColumn<TabelBarangTunai, String> tcDisc1;
  67. @FXML
  68. private TableColumn<TabelBarangTunai, String> tcDisc2;
  69. @FXML
  70. private TableColumn<TabelBarangTunai, String> tcSubTotal;
  71. @FXML
  72. private TableColumn<TabelBarangTunai, String> tcPromo;
  73. @FXML
  74. private TableColumn<TabelBarangTunai, String> tcPramuniaga;
  75. final ObservableList<TabelBarangTunai> daftarTabelBarangTunai = FXCollections.observableArrayList();
  76. AmigoPosRx posRx = new AmigoPosRx();
  77. /**
  78. * Initializes the controller class.
  79. */
  80. @Override
  81. public void initialize(URL url, ResourceBundle rb) {
  82. getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE));
  83. //
  84. }
  85. public DialogCariNotaTundaController(/*FormPresensiController parent*/) {
  86. try {
  87. Window window = getDialogPane().getScene().getWindow();
  88. window.setOnCloseRequest(event -> this.close());
  89. FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCariNotaTunda.fxml"));
  90. loader.setController(this);
  91. // DialogCariBarangController controller = loader.<DialogCariBarangController>getController();
  92. Parent root = loader.load();
  93. getDialogPane().setContent(root);
  94. setTitle("Cari Nota Tunda");
  95. posRx.getMNotaTunaiByStatus("T", 25).subscribe(getNotaTunaiTundaObserver);
  96. // getDialogPane().getButtonTypes().add(ButtonType.CANCEL);
  97. // setResultConverter(buttonType -> {
  98. // return str;
  99. // });
  100. } catch (IOException e) {
  101. Logger.getLogger(DialogCariBarangController.class
  102. .getName()).log(Level.SEVERE, null, e);
  103. }
  104. }
  105. @FXML
  106. void cbxNotaTundaOnAction(ActionEvent event) {
  107. }
  108. public Observer<Pagination<MNotaTunai>> getNotaTunaiTundaObserver = new Observer<Pagination<MNotaTunai>>() {
  109. @Override
  110. public void onSubscribe(Disposable dspsbl) {
  111. }
  112. @Override
  113. public void onNext(Pagination<MNotaTunai> daftarMNotaTunai) {
  114. for (MNotaTunai mNotaTunai : daftarMNotaTunai.getData()){
  115. cbxCariNotaTunda.getItems().add(mNotaTunai.getNoNota());
  116. }
  117. }
  118. @Override
  119. public void onError(Throwable error) {
  120. if (error instanceof HttpException) {
  121. switch (((HttpException) error).code()) {
  122. case HttpURLConnection.HTTP_NOT_FOUND:
  123. Alert alert = AlertUtil.getAlertError(
  124. AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
  125. "Nota Tunda Tidak Ditemukan");
  126. alert.initOwner(apContent.getScene().getWindow());
  127. alert.show();
  128. }
  129. } else {
  130. AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
  131. }
  132. }
  133. @Override
  134. public void onComplete() {
  135. }
  136. };
  137. }