From d145cf321f97a7f9cac782478f1e5e59b5f84df7 Mon Sep 17 00:00:00 2001 From: moon <56061215+MgKyawLay@users.noreply.github.com> Date: Wed, 1 Apr 2026 00:56:59 +0630 Subject: [PATCH] summary report fixed for Duel currency --- .../TransactionSummaryFragment.java | 11 +- .../paylibs/print/printx/BaseXPrint.java | 153 ++++++++++++++++++ .../paylibs/print/printx/PrintX.java | 2 + .../paylibs/print/printx/PrintXImpl.java | 18 ++- .../paylibs/print/printx/PrintXReceipt.java | 3 + 5 files changed, 181 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/utsmm/kbz/ui/management/TransactionSummaryFragment.java b/app/src/main/java/com/utsmm/kbz/ui/management/TransactionSummaryFragment.java index 9b618f6..3ba9106 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/management/TransactionSummaryFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/management/TransactionSummaryFragment.java @@ -51,6 +51,8 @@ public class TransactionSummaryFragment extends DataBindingFragment { final Calendar myCalendar = Calendar.getInstance(); final Calendar myCalendar2 = Calendar.getInstance(); + ArrayList filteredLists = new ArrayList<>(); + @Override protected void initViewModel() { managementViewModel = getFragmentScopeViewModel(ManagementViewModel.class); @@ -251,13 +253,12 @@ public class TransactionSummaryFragment extends DataBindingFragment { Counter refund = new Counter(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy HH:mm", Locale.getDefault()); - ArrayList filteredLists = new ArrayList<>(); - - // Filter transactions by date + for (PayDetail pay : payDetailList) { try { Date transDate = formatter.parse(pay.getTransDate()); - if (yesterday.compareTo(transDate) <= 0) { + if ((transDate.after(start) || transDate.equals(start)) && + (transDate.before(end) || transDate.equals(end))) { filteredLists.add(pay); } } catch (ParseException e) { @@ -366,7 +367,7 @@ public class TransactionSummaryFragment extends DataBindingFragment { private void printReceipt(PayDetail payDetail) { try { LogUtil.d(TAG, "Starting receipt print"); - PrintXReceipt.getInstance().printSmileSummaryReport(payDetail, sharedViewModel.hostType.getValue(), new PrintXStatus() { + PrintXReceipt.getInstance().printSmileSummaryReport(payDetail, filteredLists, sharedViewModel.hostType.getValue(), new PrintXStatus() { @Override public void onSuccess() { LogUtil.d(TAG, "Receipt printed successfully"); 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 6f98e9e..57c48f7 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 @@ -760,6 +760,159 @@ public abstract class BaseXPrint { } + class TempSummary { + int saleCount, voidSaleCount, refundCount, cashOutCount; + int qrPayCount, qrRefundCount; + int preAuthCompCount, preAuthCompVoidCount; + + long saleAmount, voidSaleAmount, refundAmount, cashOutAmount; + long qrPayAmount, qrRefundAmount; + long preAuthCompAmount, preAuthCompVoidAmount; + } + + protected void printTransDetailSummary(PayDetail payDetail, List list) { + + if (list == null || list.isEmpty()) { + printErrorBlock("NO TRANSACTION FOUND"); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + return; + } + + Map currencyMap = new HashMap<>(); + + for (PayDetail item : list) { + + if (item == null) continue; + + String currency = item.getCurrencyCode(); + TempSummary s = currencyMap.get(currency); + + if (s == null) { + s = new TempSummary(); + currencyMap.put(currency, s); + } + + String transType = item.getTransType(); + long amount = item.getAmount(); + + switch (transType) { + + case "SALE": + s.saleCount++; + s.saleAmount += amount; + break; + + case "VOID_SALE": + s.voidSaleCount++; + s.voidSaleAmount += amount; + break; + + case "REFUND": + s.refundCount++; + s.refundAmount += amount; + break; + + case "CASH_OUT": + s.cashOutCount++; + s.cashOutAmount += amount; + break; + + case "QR_PAY": + s.qrPayCount++; + s.qrPayAmount += amount; + break; + + case "QR_REFUND": + s.qrRefundCount++; + s.qrRefundAmount += amount; + break; + + case "PREAUTH_COMP": + s.preAuthCompCount++; + s.preAuthCompAmount += amount; + break; + + case "PREAUTH_COMP_VOID": + s.preAuthCompVoidCount++; + s.preAuthCompVoidAmount += amount; + break; + } + } + + boolean isQrDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable(); + boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable(); + + for (String currency : currencyMap.keySet()) { + + TempSummary data = currencyMap.get(currency); + + printer.appendPrnStr( currencyCodeToText(currency) + " " +"Transactions", fontNormal, AlignEnum.LEFT, false); + emptyLine(1); + + printer.appendPrnStr("(COUNT)TRANS", "AMOUNT(" + currencyCodeToText(currency) + ")", fontNormal, false); + + if (data.saleCount > 0) { + printer.appendPrnStr("(" + data.saleCount + ")SALES", + PrintUtils.getInstance().getSeparatorNumberFormat(data.saleAmount, isDecimalEnabled), + fontNormal, false); + } + + if (data.voidSaleCount > 0) { + printer.appendPrnStr("(" + data.voidSaleCount + ")VOID SALES", + "- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.voidSaleAmount, isDecimalEnabled), + fontNormal, false); + } + + if (data.cashOutCount > 0) { + printer.appendPrnStr("(" + data.cashOutCount + ")CASH OUT", + PrintUtils.getInstance().getSeparatorNumberFormat(data.cashOutAmount, isDecimalEnabled), + fontNormal, false); + } + + if (data.refundCount > 0) { + printer.appendPrnStr("(" + data.refundCount + ")REFUND", + "- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.refundAmount, isDecimalEnabled), + fontNormal, false); + } + + if (data.preAuthCompCount > 0) { + printer.appendPrnStr("(" + data.preAuthCompCount + ")PREAUTH COMP", + PrintUtils.getInstance().getSeparatorNumberFormat(data.preAuthCompAmount, isDecimalEnabled), + fontNormal, false); + } + + if (data.preAuthCompVoidCount > 0) { + printer.appendPrnStr("(" + data.preAuthCompVoidCount + ")VOID PREAUTH COMPLETE", + "- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.preAuthCompVoidAmount, isDecimalEnabled), + fontNormal, false); + } + + if (data.qrPayCount > 0) { + printer.appendPrnStr("(" + data.qrPayCount + ")QR PAY", + PrintUtils.getInstance().getSeparatorNumberFormat(data.qrPayAmount, isQrDecimalEnabled), + fontNormal, false); + } + + if (data.qrRefundCount > 0) { + printer.appendPrnStr("(" + data.qrRefundCount + ")QR REFUND", + "- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.qrRefundAmount, isQrDecimalEnabled), + fontNormal, false); + } + + dotBreak(); + + long totalAmount = + (data.saleAmount + data.cashOutAmount + data.preAuthCompAmount + data.qrPayAmount) + - (data.voidSaleAmount + data.refundAmount + data.preAuthCompVoidAmount + data.qrRefundAmount); + + printer.appendPrnStr(currencyCodeToText(currency) + " " + "TOTAL", + PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled), + fontNormal, false); + + emptyLine(2); + } + } + /* private void backup(){ SettleData settleData = payDetail.getSettleDataObj(); 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 97c8e5a..871de4e 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 @@ -20,6 +20,8 @@ public interface PrintX { void printSmileSummaryReport(PayDetail payDetail, HostType hostType, PrintXStatus printXStatus); + void printSmileSummaryReport(PayDetail payDetail, List list, HostType hostType, PrintXStatus printXStatus); + void printSmileSettlementReport(PayDetail payDetail,PrintXStatus printXStatus); void printQRSettlementReport(PayDetail payDetail, List list, 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 44c43d0..b521e8c 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 @@ -222,6 +222,8 @@ public class PrintXImpl extends BaseXPrint implements PrintX { e.printStackTrace(); } } + + @Override public void printDetailReport(PayDetail payDetail, List lists, HostType hostType,PrintXStatus printXStatus) { @@ -431,7 +433,6 @@ public class PrintXImpl extends BaseXPrint implements PrintX { this.callbackStatus = printXStatus; try { // LogUtil.d(TAG, payDetail.getSettleDataObj().toString()); - setHeight(0x12); printLogo(); printMerchantHeader(); @@ -447,6 +448,21 @@ public class PrintXImpl extends BaseXPrint implements PrintX { } } + @Override + public void printSmileSummaryReport(PayDetail payDetail, List list, HostType hostType, PrintXStatus printXStatus) { + this.callbackStatus = printXStatus; + try { + setHeight(0x12); + printLogo(); + printMerchantHeader(); + printTranHeader("SUMMARY REPORT"); + printTransDetailSummary(payDetail, list); + startPrintNex(); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + @Override public void printTerminalConfig(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 8db6d73..4f13d7b 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 @@ -59,6 +59,9 @@ public class PrintXReceipt { public void printSmileSummaryReport(PayDetail payDetail, HostType hostType, PrintXStatus printXStatus) { printX.printSmileSummaryReport(payDetail, hostType, printXStatus); } + public void printSmileSummaryReport(PayDetail payDetail,List list, HostType hostType, PrintXStatus printXStatus) { + printX.printSmileSummaryReport(payDetail, list, hostType, printXStatus); + } public void printTerminalHostConfig(PrintXStatus printXStatus){ printX.printTerminalConfig(printXStatus);