2 Révisions

Auteur SHA1 Message Date
  Ronaldo Christnawan a08b2fe770 Bug fix Shortcut CTRL + T il y a 5 ans
  Ronaldo Christnawan 3fc1451ac8 Bug fix error login tidak muncul error il y a 5 ans
9 fichiers modifiés avec 169 ajouts et 76 suppressions
  1. +5
    -1
      src/main/java/id/amigogroup/posterminal/FormUtamaController.java
  2. +4
    -3
      src/main/java/id/amigogroup/posterminal/bayar/FormBayarReturController.java
  3. +53
    -18
      src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java
  4. +15
    -0
      src/main/java/id/amigogroup/posterminal/pencarian/DialogCariBarangController.java
  5. +38
    -40
      src/main/java/id/amigogroup/posterminal/pencarian/DialogCariNotaTundaController.java
  6. +9
    -4
      src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java
  7. +3
    -0
      src/main/java/id/amigogroup/posterminal/transaksi/DialogTambahNotaController.java
  8. +17
    -0
      src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java
  9. +25
    -10
      src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java

+ 5
- 1
src/main/java/id/amigogroup/posterminal/FormUtamaController.java Voir le fichier

@@ -168,6 +168,7 @@ public class FormUtamaController implements Initializable {
case FormConstanta.TRANSAKSI_TUNAI:
if (notaContent.nodeTunai != null) {
node = notaContent.nodeTunai;
notaContent.controllerTunai.initShortcuts();
} else {
loader.setLocation(getClass().getResource("/fxml/FormTransaksiTunai.fxml"));
node = loader.load();
@@ -483,7 +484,7 @@ public class FormUtamaController implements Initializable {
notaContent.setBtnTunai(buttonBaru);
break;
}
if (buttonBaru != null) {
navigasi.add(buttonBaru);
vbNavigasi.getChildren().add(buttonBaru);
@@ -585,6 +586,9 @@ public class FormUtamaController implements Initializable {
"Pelanggan dengan kode member tersebut tidak ditemukan.");
alert.initOwner(bpMain.getScene().getWindow());
alert.show();
break;
default:
Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, bpMain.getScene().getWindow());


+ 4
- 3
src/main/java/id/amigogroup/posterminal/bayar/FormBayarReturController.java Voir le fichier

@@ -5,7 +5,6 @@
*/
package id.amigogroup.posterminal.bayar;

import id.amigogroup.posterminal.FormUtamaController;
import id.amigogroup.posterminal.api.AmigoPosRx;
import id.amigogroup.posterminal.model.MNotaRetur;
import id.amigogroup.posterminal.util.AlertUtil;
@@ -13,7 +12,6 @@ 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.ResourceBundle;
import java.util.logging.Level;
@@ -75,7 +73,7 @@ public class FormBayarReturController implements Initializable {
if (parent != null && parent.getBayarContent() != null
&& parent.getBayarContent().getNodeTunai() != null) {
lblNominalRetur.setText(Fucout.formatRupiah(mNotaRetur.getTotalDiskon()));
parent.getBayarContent().setBayarRetur(mNotaRetur.getTotalDiskon());
parent.updateKurangBayarView();
}
@@ -93,6 +91,9 @@ public class FormBayarReturController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormBayarReturController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());


+ 53
- 18
src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java Voir le fichier

@@ -7,6 +7,7 @@ package id.amigogroup.posterminal.keamanan;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import id.amigogroup.posterminal.SystemValue;
import id.amigogroup.posterminal.api.AmigoPosRx;
@@ -17,6 +18,7 @@ import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ResourceBundle;
@@ -77,12 +79,12 @@ public class FormLoginController implements Initializable {
public void btnLoginOnAction(ActionEvent event) {
if (!fldNamaPengguna.getText().equals("") && !fldKataSandi.getText().equals("")) {
String nik = fldNamaPengguna.getText();
Observable.zip(
posRx.getKaryawanByNik(fldNamaPengguna.getText()),
posRx.loginKaryawanByNikPin(nik, fldKataSandi.getText()),
(Karyawan k, ResponseBody response) -> {
return new KaryawanLogin(k,response);
return new KaryawanLogin(k, response);
}).subscribe(karyawanLoginObserver);
} else {
Alert alert = AlertUtil.getAlertWarning(
@@ -106,15 +108,14 @@ public class FormLoginController implements Initializable {
try {
JsonNode jsonNode = mapper.readTree(k.result.string());
ObjectNode objectNode = jsonNode.deepCopy();

if(objectNode.get("status").asBoolean()){
if (objectNode.get("status").asBoolean()) {
SystemValue.karyawanLogin = k.karyawan;
generateNewWindow("/fxml/FormUtama.fxml").show();
Stage thisStage = (Stage) apMain.getScene().getWindow();
thisStage.hide();
}
else{
} else {
System.out.println("Gagal ");
Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_KARYAWAN_TIDAK_BOLEH_AKSES_TITLE,
objectNode.get("message").asText());
@@ -127,7 +128,7 @@ public class FormLoginController implements Initializable {
"Terjadi error yang tidak diduga sehingga karyawan tidak boleh mengakses.");
alert.initOwner((Stage) apMain.getScene().getWindow());
alert.show();
Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
@@ -142,13 +143,46 @@ public class FormLoginController implements Initializable {
@Override
public void onError(Throwable error) {
if (error instanceof HttpException) {
switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND:
Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
"Karyawan dengan nomor tersebut tidak ditemukan.");
alert.initOwner(apMain.getScene().getWindow());
alert.show();
HttpException httpError = (HttpException) error;
Alert alert;

ObjectMapper mapper = new ObjectMapper();
try {
JsonNode jsonNode = null;
ObjectNode objectNode = new ObjectNode(JsonNodeFactory.instance);
objectNode.put("message", "Login invalid. Username/password salah");
if (httpError.response() != null && httpError.response().errorBody() != null) {
jsonNode = mapper.readTree(httpError.response().errorBody().string());
objectNode = jsonNode.deepCopy();
}
switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND:
alert = AlertUtil.getAlertError(
AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
"Karyawan dengan nomor tersebut tidak ditemukan.");
alert.initOwner(apMain.getScene().getWindow());
alert.show();
break;
case HttpURLConnection.HTTP_BAD_REQUEST:
alert = AlertUtil.getAlertError(
AlertUtil.ERROR_KARYAWAN_TIDAK_BOLEH_AKSES_TITLE,
objectNode.get("message").asText());
alert.initOwner(apMain.getScene().getWindow());
alert.show();
break;
default:
Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, error);
}
} catch (IOException ex) {
alert = AlertUtil.getAlertError(
AlertUtil.ERROR_KARYAWAN_TIDAK_BOLEH_AKSES_TITLE,
"Terjadi error yang tidak diduga sehingga karyawan tidak boleh mengakses.");
alert.initOwner((Stage) apMain.getScene().getWindow());
alert.show();

Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -159,8 +193,9 @@ public class FormLoginController implements Initializable {
public void onComplete() {
}
};
private class KaryawanLogin{

private class KaryawanLogin {

private Karyawan karyawan;
private ResponseBody result;

@@ -168,5 +203,5 @@ public class FormLoginController implements Initializable {
this.karyawan = karyawan;
this.result = result;
}
}
}
}

+ 15
- 0
src/main/java/id/amigogroup/posterminal/pencarian/DialogCariBarangController.java Voir le fichier

@@ -213,6 +213,9 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In
"Barang dengan kode tersebut tidak ditemukan.");
alert.initOwner(apContent.getScene().getWindow());
alert.show();
break;
default:
Logger.getLogger(DialogCariBarangController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
@@ -245,6 +248,9 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In
alert.initOwner(apContent.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(DialogCariBarangController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
@@ -306,6 +312,9 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In
alert.initOwner(apContent.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(DialogCariBarangController.class.getName()).log(Level.SEVERE, null, error);
}
} else if (error instanceof InterruptedIOException) {
daftarTabelBarang.clear();
@@ -356,6 +365,9 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In
alert.initOwner(apContent.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(DialogCariBarangController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
@@ -390,6 +402,9 @@ public class DialogCariBarangController extends Dialog<BarangFull> implements In
alert.initOwner(apContent.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(DialogCariBarangController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());


+ 38
- 40
src/main/java/id/amigogroup/posterminal/pencarian/DialogCariNotaTundaController.java Voir le fichier

@@ -18,7 +18,6 @@ import java.net.URL;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
@@ -33,9 +32,6 @@ import javafx.scene.control.ComboBox;
import javafx.scene.control.Dialog;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Window;
import retrofit2.HttpException;
@@ -46,7 +42,7 @@ import retrofit2.HttpException;
* @author ronal
*/
public class DialogCariNotaTundaController extends Dialog<String> implements Initializable {
@FXML
AnchorPane apContent;
@FXML
@@ -85,14 +81,13 @@ public class DialogCariNotaTundaController extends Dialog<String> implements Ini
public void initialize(URL url, ResourceBundle rb) {
getDialogPane().getButtonTypes().add(new ButtonType("Tutup", ButtonData.CANCEL_CLOSE));
//
}
}

public DialogCariNotaTundaController(/*FormPresensiController parent*/) {
try {
Window window = getDialogPane().getScene().getWindow();
window.setOnCloseRequest(event -> this.close());
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCariNotaTunda.fxml"));
loader.setController(this);
// DialogCariBarangController controller = loader.<DialogCariBarangController>getController();
@@ -109,42 +104,45 @@ public class DialogCariNotaTundaController extends Dialog<String> implements Ini
.getName()).log(Level.SEVERE, null, e);
}
}
@FXML
void cbxNotaTundaOnAction(ActionEvent event) {

@FXML
void cbxNotaTundaOnAction(ActionEvent event) {

}

public Observer<Pagination<MNotaTunai>> getNotaTunaiTundaObserver = new Observer<Pagination<MNotaTunai>>() {
@Override
public void onSubscribe(Disposable dspsbl) {
}
public Observer<Pagination<MNotaTunai>> getNotaTunaiTundaObserver = new Observer<Pagination<MNotaTunai>>() {
@Override
public void onSubscribe(Disposable dspsbl) {
}

@Override
public void onNext(Pagination<MNotaTunai> daftarMNotaTunai) {
for (MNotaTunai mNotaTunai : daftarMNotaTunai.getData()){
cbxCariNotaTunda.getItems().add(mNotaTunai.getNoNota());
}
@Override
public void onNext(Pagination<MNotaTunai> daftarMNotaTunai) {
for (MNotaTunai mNotaTunai : daftarMNotaTunai.getData()) {
cbxCariNotaTunda.getItems().add(mNotaTunai.getNoNota());
}
}

@Override
public void onError(Throwable error) {
if (error instanceof HttpException) {
switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND:
Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
"Nota Tunda Tidak Ditemukan");
alert.initOwner(apContent.getScene().getWindow());
alert.show();
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
@Override
public void onError(Throwable error) {
if (error instanceof HttpException) {
switch (((HttpException) error).code()) {
case HttpURLConnection.HTTP_NOT_FOUND:
Alert alert = AlertUtil.getAlertError(
AlertUtil.ERROR_TIDAK_DITEMUKAN_TITLE,
"Nota Tunda Tidak Ditemukan");
alert.initOwner(apContent.getScene().getWindow());
alert.show();
break;
default:
Logger.getLogger(DialogCariNotaTundaController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
}
}

@Override
public void onComplete() {
}
};
@Override
public void onComplete() {
}
};
}

+ 9
- 4
src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java Voir le fichier

@@ -5,7 +5,6 @@
*/
package id.amigogroup.posterminal.pencarian;

import id.amigogroup.posterminal.FormUtamaController;
import id.amigogroup.posterminal.api.AmigoPosRx;
import id.amigogroup.posterminal.model.Pagination;
import id.amigogroup.posterminal.model.Pelanggan;
@@ -125,18 +124,18 @@ public class DialogCariPelangganController extends Dialog<Pelanggan> implements
public void updateTabelPelanggan(List<Pelanggan> daftarPelanggan) {
daftarTabelPelanggan.clear();
for (Pelanggan pelanggan : daftarPelanggan) {
TabelPelanggan tp = new TabelPelanggan(
TabelPelanggan tp = new TabelPelanggan(
pelanggan.getAlias(),
pelanggan.getNama(),
pelanggan.getAlamat(),
pelanggan.getTelp() + " / " + pelanggan.getPonsel(),
pelanggan.getUpline());
tp.setData(pelanggan);
daftarTabelPelanggan.add(tp);
}
}
@FXML
void tfPencarianOnKeyReleased(KeyEvent event) {
daftarTabelPelanggan.clear();
@@ -198,6 +197,9 @@ public class DialogCariPelangganController extends Dialog<Pelanggan> implements
"Pelanggan dengan kode member tersebut tidak ditemukan.");
alert.initOwner(apContent.getScene().getWindow());
alert.show();
break;
default:
Logger.getLogger(DialogCariPelangganController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());
@@ -231,6 +233,9 @@ public class DialogCariPelangganController extends Dialog<Pelanggan> implements
"Pelanggan dengan kode member tersebut tidak ditemukan.");
alert.initOwner(apContent.getScene().getWindow());
alert.show();
break;
default:
Logger.getLogger(DialogCariPelangganController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apContent.getScene().getWindow());


+ 3
- 0
src/main/java/id/amigogroup/posterminal/transaksi/DialogTambahNotaController.java Voir le fichier

@@ -133,6 +133,9 @@ public class DialogTambahNotaController extends Dialog<String> implements Initia
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());


+ 17
- 0
src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiReturController.java Voir le fichier

@@ -23,6 +23,8 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
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;
@@ -295,6 +297,9 @@ public class FormTransaksiReturController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiReturController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -466,6 +471,9 @@ public class FormTransaksiReturController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiReturController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -508,6 +516,9 @@ public class FormTransaksiReturController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiReturController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -542,6 +553,9 @@ public class FormTransaksiReturController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiReturController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -583,6 +597,9 @@ public class FormTransaksiReturController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiReturController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());


+ 25
- 10
src/main/java/id/amigogroup/posterminal/transaksi/FormTransaksiTunaiController.java Voir le fichier

@@ -26,6 +26,8 @@ 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;
@@ -34,8 +36,6 @@ import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
@@ -145,13 +145,12 @@ public class FormTransaksiTunaiController implements Initializable {
setTanggal();
}

private void initShortcuts() {
public void initShortcuts() {
Map<KeyCombination, Runnable> listShortcuts = new HashMap<>();

KeyCombination kcTundaNota = new KeyCodeCombination(KeyCode.T, KeyCombination.CONTROL_DOWN);
Runnable rnTundaNota = () -> {
List<DNotaTunai> daftarDNotaTunai = new ArrayList<>();

if (noNota != null && !noNota.equals("")) {
for (TabelBarangTunai tbt : daftarTabelTransaksi) {
tbt.getData().setNoNota(noNota);
@@ -196,7 +195,9 @@ public class FormTransaksiTunaiController implements Initializable {
};
listShortcuts.put(kcTundaNota, rnTundaNota);

apMain.getScene().getAccelerators().putAll(listShortcuts);
Platform.runLater(() -> {
apMain.getScene().getAccelerators().putAll(listShortcuts);
});
}

public void setTanggal() {
@@ -433,6 +434,9 @@ public class FormTransaksiTunaiController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiTunaiController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -474,6 +478,9 @@ public class FormTransaksiTunaiController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiTunaiController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -523,6 +530,9 @@ public class FormTransaksiTunaiController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiTunaiController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -558,6 +568,9 @@ public class FormTransaksiTunaiController implements Initializable {
alert.initOwner(apMain.getScene().getWindow());
alert.show();
});
break;
default:
Logger.getLogger(FormTransaksiTunaiController.class.getName()).log(Level.SEVERE, null, error);
}
} else {
AmigoPosRx.handleGenericError(error, apMain.getScene().getWindow());
@@ -626,12 +639,14 @@ public class FormTransaksiTunaiController implements Initializable {

@Override
public void onComplete() {
if (parent != null) {
parent.notaContent.setControllerTunai(null);
parent.notaContent.setNodeTunai(null);
Platform.runLater(() -> {
if (parent != null) {
parent.notaContent.setControllerTunai(null);
parent.notaContent.setNodeTunai(null);

parent.removeNota(parent.notaContent.getBtnTunai());
}
parent.removeNota(parent.notaContent.getBtnTunai());
}
});
}
};
}

Chargement…
Annuler
Enregistrer