From 9e119e7c7ee7b0340ce0b821d064586db59eebda Mon Sep 17 00:00:00 2001 From: moon <56061215+MgKyawLay@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:25:52 +0630 Subject: [PATCH] combined settlement receipt --- .../ui/core_viewmodel/SharedViewModel.java | 6 +++- .../QRSettlementTransactionFragment.java | 2 +- .../SettlementTransactionFragment.java | 2 +- .../paylibs/print/printx/BaseXPrint.java | 32 +++++++++++++++++++ .../paylibs/print/printx/PrintX.java | 2 ++ .../paylibs/print/printx/PrintXImpl.java | 23 +++++++++++++ .../paylibs/print/printx/PrintXReceipt.java | 4 +++ 7 files changed, 68 insertions(+), 3 deletions(-) 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 a04652a..4ca7aa2 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 @@ -494,7 +494,11 @@ public class SharedViewModel extends ViewModel { if (payDetail.getValue() == null) return; - PrintXReceipt.getInstance().printSmileSettlementReport(payDetail.getValue(), printXStatus); + if (payDetails.getValue() != null && !payDetails.getValue().isEmpty()) { + PrintXReceipt.getInstance().printSmileSettlementReport(payDetail.getValue(), QRSettleData.convertFromPayDetail(payDetails.getValue()), printXStatus); + } else { + PrintXReceipt.getInstance().printSmileSettlementReport(payDetail.getValue(), printXStatus); + } } private void startPrintProcessQRSettlement(PrintXStatus printXStatus) { diff --git a/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java index 55593b8..04d4772 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java @@ -331,7 +331,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme sharedViewModel.setAmount(POSUtil.getInstance().getDecimalAmountSeparatorFormat(totalAmount)); - sharedViewModel.payDetails.setValue(qrTransactionsList); + sharedViewModel.payDetails.setValue(new ArrayList<>(qrTransactionsList)); sharedViewModel.payDetail.setValue(payDetail); for (PayDetail pay : qrTransactionsList) { diff --git a/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java index 9a00c55..f7a600c 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java @@ -612,7 +612,7 @@ public class SettlementTransactionFragment extends DataBindingFragment implement sharedViewModel.insertPayDetail(payDetail); } - sharedViewModel.payDetails.setValue(qrTransactionsList); + sharedViewModel.payDetails.setValue(new ArrayList<>(qrTransactionsList)); for (PayDetail pay : qrTransactionsList) { settlementViewModel.deletePayDetail(pay); 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 5a33de5..5493e65 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 @@ -267,6 +267,38 @@ public abstract class BaseXPrint { } + protected void printMMQRReport(List qrList) { + if (qrList == null || qrList.isEmpty()) return; + + boolean isDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable(); + long saleTotal = 0; + long refundTotal = 0; + int saleCount = 0; + int refundCount = 0; + + for (QRSettleData data : qrList) { + if (data.getTransactionType() == TransactionsType.MMQR_REFUND.value) { + refundTotal += data.getAmount(); + refundCount++; + } else { + saleTotal += data.getAmount(); + saleCount++; + } + } + + long grandTotal = saleTotal - refundTotal; + + emptyLine(1); + dashBreak(); + printString("MMQR REPORT", true); + dashBreak(); + print3ColumnsString("QR SALE ", countStringFormat(saleCount), "MMK " + PrintUtils.getInstance().getSeparatorNumberFormat(saleTotal, isDecimalEnabled)); + print3ColumnsString("QR REFUND ", countStringFormat(refundCount), "MMK -" + PrintUtils.getInstance().getSeparatorNumberFormat(refundTotal, isDecimalEnabled)); + dotBreak(); + print3ColumnsString("QR TOTAL ", countStringFormat(saleCount + refundCount), "MMK " + PrintUtils.getInstance().getSeparatorNumberFormat(grandTotal, isDecimalEnabled)); + emptyLine(1); + } + private void printSettlementCurrencySection(String currencyLabel, CurrencySettlementSummary summary) { // if (!summary.hasAnyValue()) { // return; diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintX.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintX.java index 871de4e..f4329db 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintX.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintX.java @@ -24,6 +24,8 @@ public interface PrintX { void printSmileSettlementReport(PayDetail payDetail,PrintXStatus printXStatus); + void printSmileSettlementReport(PayDetail payDetail, List qrList, PrintXStatus printXStatus); + void printQRSettlementReport(PayDetail payDetail, List list, PrintXStatus printXStatus); void printDetailReport(PayDetail payDetail, List lists, HostType hostType,PrintXStatus printXStatus); 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 3f0a970..05f4b5f 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 @@ -203,6 +203,29 @@ public class PrintXImpl extends BaseXPrint implements PrintX { } } + @Override + public void printSmileSettlementReport(PayDetail payDetail, List qrList, PrintXStatus printXStatus) { + + this.callbackStatus = printXStatus; + + try { + LogUtil.d(TAG, payDetail.getSettleDataObj().toString()); + + setHeight(0x12); + printLogo(); + printMerchantHeader(); + printTransHeader(payDetail); + printTransDetailSettlement(payDetail); + printMMQRReport(qrList); + printTransFooterForSettlement(); + + emptyLine(1); + startPrintNex(); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + @Override public void printQRSettlementReport(PayDetail payDetail, List list, PrintXStatus printXStatus) { this.callbackStatus = printXStatus; diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXReceipt.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXReceipt.java index 4f13d7b..ef496ac 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXReceipt.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXReceipt.java @@ -36,6 +36,10 @@ public class PrintXReceipt { printX.printSmileSettlementReport(payDetail,printXStatus); } + public void printSmileSettlementReport(PayDetail payDetail, List qrList, PrintXStatus printXStatus) { + printX.printSmileSettlementReport(payDetail, qrList, printXStatus); + } + public void printQRSettlementReport(PayDetail payDetail, List lists, PrintXStatus printXStatus) { printX.printQRSettlementReport(payDetail,lists,printXStatus); }