diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java index 2d8d7f9..51cab50 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java @@ -170,9 +170,10 @@ public class TransactionResultFragment extends DataBindingFragment implements Da if (isNonApprovedTrade(payDetail) && isNonQRPayTransaction(transactionType)) { if (SystemParamsOperation.getInstance().getPrinterEnabled()) { - startPrintProcess(false); + startPrintErrorReceipt(); + } else { + isCardInside(); } - isCardInside(); } else if (transactionType == TransactionsType.SETTLEMENT || transactionType == TransactionsType.MMQR_SETTLEMENT) { handleSettlementTransaction(siriusReq); } else if (isQRPayNonSuccessTransaction(transactionType, payDetail)) { @@ -378,6 +379,50 @@ public class TransactionResultFragment extends DataBindingFragment implements Da }); } + private void startPrintErrorReceipt() { + PrintHelper.getInstance().checkPaperRollStatus(new PaperRollStatusCallback() { + @Override + public void printerReady() { + sharedViewModel.printErrorReceipt(new PrintXStatus() { + @Override + public void onSuccess() { + isCardInside(); + } + + @Override + public void onFailure() { + handleForEmptyPaperRoll(false); + } + }); + } + + @Override + public void paperRollIsEmpty() { + handleForEmptyPaperRoll(false); + } + + @Override + public void printNotComplete() { + handleForEmptyPaperRoll(false); + } + + @Override + public void printerTooHot() { + handleForEmptyPaperRoll(false); + } + + @Override + public void printerFailed() { + handleForEmptyPaperRoll(false); + } + + @Override + public void unknownStatusOccur(int code) { + handleForEmptyPaperRoll(false); + } + }); + } + private void handleForEmptyPaperRoll(boolean isSettle) { cancelTimeout(); @@ -392,7 +437,11 @@ public class TransactionResultFragment extends DataBindingFragment implements Da @Override public void onClickRetry() { dismissPrinterAlertDialog(); - startPrintProcess(isSettle); + if (isSettle) { + startPrintProcess(true); + } else { + startPrintErrorReceipt(); + } } }); diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java index 2a63635..7d288db 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java @@ -403,6 +403,10 @@ public class SharedViewModel extends ViewModel { }); } + public void printErrorReceipt(PrintXStatus printXStatus) { + PrintXReceipt.getInstance().printSmileReceipt(payDetail.getValue(), true, printXStatus); + } + public void startPrintReceipt(boolean isFirstPrint) { /* diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java index 48c994a..82be1a6 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java @@ -1648,6 +1648,7 @@ public abstract class BaseXPrint { if (printer.getStatus() != SdkResult.Success) { callbackStatus.onFailure(); + return; } printer.startPrint(true, new OnPrintListener() { diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java index cf73bf7..052f8b8 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java @@ -112,6 +112,9 @@ public class PrintXImpl extends BaseXPrint implements PrintX { } } catch (Exception e) { e.printStackTrace(); + if (callbackStatus != null) { + callbackStatus.onFailure(); + } } } @@ -177,6 +180,9 @@ public class PrintXImpl extends BaseXPrint implements PrintX { } catch (RemoteException | NullPointerException e) { e.printStackTrace(); + if (callbackStatus != null) { + callbackStatus.onFailure(); + } } } @@ -305,6 +311,9 @@ public class PrintXImpl extends BaseXPrint implements PrintX { } catch (RemoteException | NullPointerException e) { e.printStackTrace(); + if (callbackStatus != null) { + callbackStatus.onFailure(); + } } }