diff --git a/app/src/main/res/layout/item_view_detail_report.xml b/app/src/main/res/layout/item_view_detail_report.xml
index ca3e691..80a1ec1 100644
--- a/app/src/main/res/layout/item_view_detail_report.xml
+++ b/app/src/main/res/layout/item_view_detail_report.xml
@@ -77,6 +77,35 @@
tools:text="000045" />
+
+
+
+
+
+
+
lists, HostType hostType) {
-
- if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) {
- // Use the same line-by-line style as QR detail report
- } else if (hostType == HostType.QR) {
-// print2ColumnsString("PAYMENT NAME", "");
-// print2ColumnsString("DATE", "TIME");
-// print2ColumnsString("TRANSACTION", "TRACE NO");
-// print2ColumnsString("TRXN ID", "");
-// print2ColumnsString("AMOUNT", "");
+ // ✅ Summary holder (total + count per currency)
+ class CurrencySummary {
+ long total = 0;
+ int count = 0;
}
-
-// breakingLine();
-
- long totalAmount = 0;
+ Map currencyMap = new HashMap<>();
for (PayDetail pay : lists) {
- boolean isNeedMinusSign = pay.getTransactionType() == TransactionsType.VOID.value || pay.getTransactionType() == TransactionsType.REFUND.value || pay.getTransactionType() == TransactionsType.MMQR_REFUND.value;
- boolean isDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable();
+ boolean isNeedMinusSign =
+ pay.getTransactionType() == TransactionsType.VOID.value ||
+ pay.getTransactionType() == TransactionsType.REFUND.value ||
+ pay.getTransactionType() == TransactionsType.MMQR_REFUND.value;
+
+ boolean isDecimalEnabledQr = SystemParamsOperation.getInstance().isQrDecimalEnable();
+ String currency = currencyCodeToText(pay.getCurrencyCode());
+
+ // =============================
+ // PRINT DETAIL
+ // =============================
if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) {
+
boolean isDecimalEnabledCard = SystemParamsOperation.getInstance().getDecimalEnable();
+
printString("CARD TYPE:" + pay.getAccountType());
printString("CARD NO :" + PrintUtils.getInstance().maskCardNumberPciDss(pay.getCardNo()));
printString("TRACE NO :" + pay.getVoucherNo());
@@ -887,12 +895,11 @@ public abstract class BaseXPrint {
printString("DATE :" + POSUtil.getInstance().formatDisplayDate(pay.getTransDate()) + " " + pay.getTransTime());
printString("TYPE :" + pay.getTransType().replace("_", " "));
printString("AMOUNT :" +
- (isNeedMinusSign
- ? "-" + PrintUtils.getInstance()
- .getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabledCard)
- : PrintUtils.getInstance()
- .getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabledCard))
- + " " + "MMK");
+ (isNeedMinusSign
+ ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabledCard)
+ : PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabledCard))
+ + " " + currency);
+
dotBreak();
} else if (hostType == HostType.QR) {
@@ -900,64 +907,88 @@ public abstract class BaseXPrint {
printString("TRANS ID:" + pay.getQrTransId());
printString("STATUS :" + pay.getTC());
printString("SOURCE :" +
- (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value
- ? "QR PAYMENT"
- : pay.getCustomerMobile())
- );
-// printString("TXN NAME:" + pay.getTransType().replace("_", " "));
+ (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value
+ ? "QR PAYMENT"
+ : pay.getCustomerMobile()));
printString("DATE :" + POSUtil.getInstance().formatDisplayDate(pay.getTransDate()) + " " + pay.getTransTime());
printString("TRACE NO:" + pay.getVoucherNo());
+
if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
printString("RRN :" + pay.getReferNo());
}
+
printString("AMOUNT :" +
- (isNeedMinusSign
- ? "-" + PrintUtils.getInstance()
- .getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled)
- : PrintUtils.getInstance()
- .getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled))
- + " " +"MMK");
+ (isNeedMinusSign
+ ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabledQr)
+ : PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabledQr))
+ + " " + currency);
+
dotBreak();
-
-// if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
-// print2ColumnsString("QR PAYMENT", "");
-// } else {
-// print2ColumnsString(pay.getCustomerMobile(), "");
-// }
-// print2ColumnsString(pay.getTransDate(), pay.getTransTime());
-// print2ColumnsString(pay.getTransType().replace("_", " "), pay.getVoucherNo());
-// if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
-// print2ColumnsString(pay.getReferNo() + "(RRN)", "");
-// print2ColumnsString(isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled), "");
-// } else {
-// print2ColumnsString(pay.getQrTransId(), "");
-// print2ColumnsString(isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) , "");
-// }
-
}
emptyLine(1);
+ // =============================
+ // ✅ ACCUMULATE TOTAL + COUNT PER CURRENCY
+ // =============================
+ CurrencySummary summary = currencyMap.getOrDefault(currency, new CurrencySummary());
+
if (isNeedMinusSign) {
- totalAmount -= pay.getAmount();
+ summary.total -= pay.getAmount();
} else {
- totalAmount += pay.getAmount();
+ summary.total += pay.getAmount();
}
+
+ summary.count++; // ✅ count per currency
+
+ currencyMap.put(currency, summary);
}
+ // =============================
+ // PRINT SUMMARY
+ // =============================
if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) {
+
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
+
print2ColumnsString("CARD", "");
print3ColumnsString("TYPE ", "COUNT", "AMOUNT");
- print3ColumnsString("CARD", " " + countStringFormat(lists.size()), "MMK " + PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled), true);
+
+ for (Map.Entry entry : currencyMap.entrySet()) {
+
+ String currency = entry.getKey();
+ CurrencySummary summary = entry.getValue();
+
+ print3ColumnsString(
+ "CARD",
+ " " + countStringFormat(summary.count),
+ currency + " " + PrintUtils.getInstance()
+ .getSeparatorNumberFormat(summary.total, isDecimalEnabled),
+ true
+ );
+ }
+
} else if (hostType == HostType.QR) {
+
boolean isDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable();
+
print2ColumnsString("PAYMENT", "");
print3ColumnsString("TYPE ", "COUNT", "AMOUNT");
-// emptyLine(1);
- print3ColumnsString("QR PAY", " "+ countStringFormat(lists.size()), "MMK " + PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled), true);
+
+ for (Map.Entry entry : currencyMap.entrySet()) {
+
+ String currency = entry.getKey();
+ CurrencySummary summary = entry.getValue();
+
+ print3ColumnsString(
+ "QR PAY",
+ " " + countStringFormat(summary.count),
+ currency + " " + PrintUtils.getInstance()
+ .getSeparatorNumberFormat(summary.total, isDecimalEnabled),
+ true
+ );
+ }
}
-// emptyLine(2);
}
protected void printQRSettlementTransDetail(List lists) {