Compare commits

..

3 Commits

Author SHA1 Message Date
moon
820dcf9aa6 fix of summary report bug 2026-04-06 00:13:41 +06:30
moon
2238988846 align col in summary report 2026-04-05 20:00:54 +06:30
moon
e6851cba3b decimal toggel in card Receipt 2026-04-05 19:09:52 +06:30
3 changed files with 263 additions and 116 deletions

View File

@ -14,8 +14,8 @@ android {
applicationId "com.utsmm.kbz" applicationId "com.utsmm.kbz"
minSdk 24 minSdk 24
targetSdk 33 targetSdk 33
versionCode 28 versionCode 26
versionName "2.8" versionName "2.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }

View File

@ -244,6 +244,7 @@ public abstract class BaseXPrint {
} }
protected void printTransDetailSettlement(PayDetail payDetail, List<CardSettleData> cardSettleDataList) { protected void printTransDetailSettlement(PayDetail payDetail, List<CardSettleData> cardSettleDataList) {
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
lineBreak(); lineBreak();
print2SideStringMargin("CARD TYPE ","CARD NUMBER"); print2SideStringMargin("CARD TYPE ","CARD NUMBER");
@ -255,7 +256,7 @@ public abstract class BaseXPrint {
for (CardSettleData cardSettleData:cardSettleDataList) { for (CardSettleData cardSettleData:cardSettleDataList) {
print2SideStringMargin(cardSettleData.getCardType(),PrintUtils.getInstance().maskCardNumberPciDss(cardSettleData.getCardNum())); print2SideStringMargin(cardSettleData.getCardType(),PrintUtils.getInstance().maskCardNumberPciDss(cardSettleData.getCardNum()));
print2SideStringMargin("XX/XX",cardSettleData.getInvoiceNum()); print2SideStringMargin("XX/XX",cardSettleData.getInvoiceNum());
print2SideStringMargin(cardSettleData.getTransType(),"MMK "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(),true)); print2SideStringMargin(cardSettleData.getTransType(),"MMK "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isDecimalEnabled));
print2SideStringMargin(cardSettleData.getApprovalCode(),cardSettleData.getTransDate() + " " + cardSettleData.getTransTime() ); print2SideStringMargin(cardSettleData.getApprovalCode(),cardSettleData.getTransDate() + " " + cardSettleData.getTransTime() );
emptyLine(1); emptyLine(1);
} }
@ -266,23 +267,23 @@ public abstract class BaseXPrint {
long totalAmount = settleData.getSaleAmount() + settleData.getPreAuthCompAmount() + settleData.getCashAdvanceAmount(); long totalAmount = settleData.getSaleAmount() + settleData.getPreAuthCompAmount() + settleData.getCashAdvanceAmount();
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT"); print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount())); print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount(), isDecimalEnabled));
print3ColumnsString("VOID SALE ", countStringFormat(settleData.getVoidSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getVoidSaleAmount())); print3ColumnsString("VOID SALE ", countStringFormat(settleData.getVoidSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getVoidSaleAmount(), isDecimalEnabled));
print3ColumnsString("PREAUTH COMP ", countStringFormat(settleData.getPreAuthCompCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getPreAuthCompAmount())); print3ColumnsString("PREAUTH COMP ", countStringFormat(settleData.getPreAuthCompCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getPreAuthCompAmount(), isDecimalEnabled));
if (settleData.getCashAdvanceCount() != 0) if (settleData.getCashAdvanceCount() != 0)
print3ColumnsString("CASH ADV ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount())); print3ColumnsString("CASH ADV ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount(), isDecimalEnabled));
print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount())); print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount(), isDecimalEnabled));
emptyLine(1); emptyLine(1);
printer.appendPrnStr("GRAND TOTAL", fontLarge, AlignEnum.LEFT,true); printer.appendPrnStr("GRAND TOTAL", fontLarge, AlignEnum.LEFT,true);
emptyLine(1); emptyLine(1);
// print3ColumnsString("TOTAL(MMK) ", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount)); // print3ColumnsString("TOTAL(MMK) ", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount));
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT"); print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount())); print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount(), isDecimalEnabled));
print3ColumnsString("VOID SALE ", countStringFormat(settleData.getVoidSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getVoidSaleAmount())); print3ColumnsString("VOID SALE ", countStringFormat(settleData.getVoidSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getVoidSaleAmount(), isDecimalEnabled));
print3ColumnsString("PREAUTH COMP ", countStringFormat(settleData.getPreAuthCompCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getPreAuthCompAmount())); print3ColumnsString("PREAUTH COMP ", countStringFormat(settleData.getPreAuthCompCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getPreAuthCompAmount(), isDecimalEnabled));
if (settleData.getCashAdvanceCount() != 0) if (settleData.getCashAdvanceCount() != 0)
print3ColumnsString("CASH ADV ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount())); print3ColumnsString("CASH ADV ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount(), isDecimalEnabled));
print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount())); print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount(), isDecimalEnabled));
emptyLine(2); emptyLine(2);
@ -292,19 +293,20 @@ public abstract class BaseXPrint {
if (!summary.hasAnyValue()) { if (!summary.hasAnyValue()) {
return; return;
} }
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
int totalCount = summary.saleCount + summary.preAuthCompCount + summary.refundCount + summary.cashAdvanceCount; int totalCount = summary.saleCount + summary.preAuthCompCount + summary.refundCount + summary.cashAdvanceCount;
long totalAmount = summary.saleAmount + summary.preAuthCompAmount + summary.cashAdvanceAmount - summary.refundAmount; long totalAmount = summary.saleAmount + summary.preAuthCompAmount + summary.cashAdvanceAmount - summary.refundAmount;
printString("CURRENCY : " + currencyLabel, true); printString("CURRENCY : " + currencyLabel, true);
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT"); print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
print3ColumnsString("SALE ", countStringFormat(summary.saleCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.saleAmount)); print3ColumnsString("SALE ", countStringFormat(summary.saleCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.saleAmount, isDecimalEnabled));
print3ColumnsString("PREAUTH COMP ", countStringFormat(summary.preAuthCompCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.preAuthCompAmount)); print3ColumnsString("PREAUTH COMP ", countStringFormat(summary.preAuthCompCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.preAuthCompAmount, isDecimalEnabled));
if (summary.cashAdvanceCount != 0) { if (summary.cashAdvanceCount != 0) {
print3ColumnsString("CASH ADVANCE ", countStringFormat(summary.cashAdvanceCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.cashAdvanceAmount)); print3ColumnsString("CASH ADVANCE ", countStringFormat(summary.cashAdvanceCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.cashAdvanceAmount, isDecimalEnabled));
} }
print3ColumnsString("REFUND ", countStringFormat(summary.refundCount), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(summary.refundAmount)); print3ColumnsString("REFUND ", countStringFormat(summary.refundCount), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(summary.refundAmount, isDecimalEnabled));
print3ColumnsString("TOTAL(" + currencyLabel + ")", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount)); print3ColumnsString("TOTAL(" + currencyLabel + ")", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled));
} }
private void applyCardSettlementSummary(CurrencySettlementSummary summary, CardSettleData cardSettleData) { private void applyCardSettlementSummary(CurrencySettlementSummary summary, CardSettleData cardSettleData) {
@ -428,10 +430,11 @@ public abstract class BaseXPrint {
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) { if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) {
if (payDetail.getTransactionType() == TransactionType.CASH_ADVANCE) { if (payDetail.getTransactionType() == TransactionType.CASH_ADVANCE) {
print2ColumnsStringNoSpace("TXN AMOUNT", ":" + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount())); print2ColumnsStringNoSpace("TXN AMOUNT", ":" + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isDecimalEnabled));
print2ColumnsStringNoSpace("TXN FEES", ":" + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAdditionalAmount())); print2ColumnsStringNoSpace("TXN FEES", ":" + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAdditionalAmount(), isDecimalEnabled));
} }
} }
dotBreak(); dotBreak();
@ -442,12 +445,12 @@ public abstract class BaseXPrint {
printer.appendPrnStr("MMK " + PrintUtils.getInstance().getBalanceInquiryNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("MMK " + PrintUtils.getInstance().getBalanceInquiryNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,false);
} else if (payDetail.getTransactionType() == TransactionType.VOID || payDetail.getTransactionType() == TransactionType.REFUND || payDetail.getTransactionType() == TransactionType.PRE_SALE_CANCEL || payDetail.getTransactionType() == TransactionType.PRE_SALE_COMPLETE_VOID) { } else if (payDetail.getTransactionType() == TransactionType.VOID || payDetail.getTransactionType() == TransactionType.REFUND || payDetail.getTransactionType() == TransactionType.PRE_SALE_CANCEL || payDetail.getTransactionType() == TransactionType.PRE_SALE_COMPLETE_VOID) {
print2SideString("AMT:" + currencySign, "- " + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount())); print2SideString("AMT:" + currencySign, "- " + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isDecimalEnabled));
} else if (payDetail.getTransactionType() == TransactionType.CASH_ADVANCE) { } else if (payDetail.getTransactionType() == TransactionType.CASH_ADVANCE) {
long totalAmount = payDetail.getAmount() + payDetail.getAdditionalAmount(); long totalAmount = payDetail.getAmount() + payDetail.getAdditionalAmount();
print2SideString("AMT:" + currencySign, PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount)); print2SideString("AMT:" + currencySign, PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled));
} else { } else {
print2SideString("AMT:" + currencySign, PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount())); print2SideString("AMT:" + currencySign, PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isDecimalEnabled));
} }
dotBreak(); dotBreak();
} else { } else {
@ -596,13 +599,14 @@ public abstract class BaseXPrint {
dotBreak(); dotBreak();
// check is pin change // check is pin change
if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) { if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) {
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
String currencySign = currencyCodeToText(payDetail.getCurrencyCode()); String currencySign = currencyCodeToText(payDetail.getCurrencyCode());
// CurrencyType currencySign = currencyTextToCurrencyType(payDetail.getCurrencyCode()); // CurrencyType currencySign = currencyTextToCurrencyType(payDetail.getCurrencyCode());
if (payDetail.getTransactionType() == TransactionType.BALANCE_INQUIRY) { if (payDetail.getTransactionType() == TransactionType.BALANCE_INQUIRY) {
printer.appendPrnStr("MMK " + PrintUtils.getInstance().getBalanceInquiryNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,true); printer.appendPrnStr("MMK " + PrintUtils.getInstance().getBalanceInquiryNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,true);
} else { } else {
print2SideString("AMT:" + currencySign, PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount())); print2SideString("AMT:" + currencySign, PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isDecimalEnabled));
// printer.appendPrnStr("AMOUNT:" + currencySign + " " + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,true); // printer.appendPrnStr("AMOUNT:" + currencySign + " " + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,true);
} }
dotBreak(); dotBreak();
@ -622,11 +626,12 @@ public abstract class BaseXPrint {
private void printColumnString(String label, int count, long amount, boolean isNegative) { private void printColumnString(String label, int count, long amount, boolean isNegative) {
if (count > 0) { if (count > 0) {
String amountString = PrintUtils.getInstance().getSeparatorNumberFormat(amount); boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
String amountString = PrintUtils.getInstance().getSeparatorNumberFormat(amount, isDecimalEnabled);
if (isNegative) { if (isNegative) {
amountString = "-" + amountString; amountString = "-" + amountString;
} }
printer.appendPrnStr(label + countStringFormat(count) + MMK + " " + PrintUtils.getInstance().getSeparatorNumberFormat(amount), fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr(label + countStringFormat(count) + MMK + " " + amountString, fontNormal, AlignEnum.LEFT,false);
} }
} }
@ -762,15 +767,169 @@ public abstract class BaseXPrint {
class TempSummary { class TempSummary {
int saleCount, voidSaleCount, refundCount, cashOutCount; int saleCount, voidSaleCount, refundCount, cashOutCount;
int preAuthSaleCount, preAuthVoidCount;
int qrPayCount, qrRefundCount; int qrPayCount, qrRefundCount;
int preAuthCompCount, preAuthCompVoidCount; int preAuthCompCount, preAuthCompVoidCount;
long saleAmount, voidSaleAmount, refundAmount, cashOutAmount; long saleAmount, voidSaleAmount, refundAmount, cashOutAmount;
long preAuthSaleAmount, preAuthVoidAmount;
long qrPayAmount, qrRefundAmount; long qrPayAmount, qrRefundAmount;
long preAuthCompAmount, preAuthCompVoidAmount; long preAuthCompAmount, preAuthCompVoidAmount;
} }
private void applyTempSummary(TempSummary summary, PayDetail item) {
int transactionType = item.getTransactionType();
long amount = item.getAmount();
if (transactionType == TransactionsType.SALE.value) {
summary.saleCount++;
summary.saleAmount += amount;
return;
}
if (transactionType == TransactionsType.VOID.value) {
summary.voidSaleCount++;
summary.voidSaleAmount += amount;
return;
}
if (transactionType == TransactionsType.REFUND.value) {
summary.refundCount++;
summary.refundAmount += amount;
return;
}
if (transactionType == TransactionsType.CASH_OUT.value) {
summary.cashOutCount++;
summary.cashOutAmount += amount;
return;
}
if (transactionType == TransactionsType.PRE_AUTH_SALE.value) {
summary.preAuthSaleCount++;
summary.preAuthSaleAmount += amount;
return;
}
if (transactionType == TransactionsType.PRE_AUTH_VOID.value) {
summary.preAuthVoidCount++;
summary.preAuthVoidAmount += amount;
return;
}
if (transactionType == TransactionsType.MMQR.value) {
summary.qrPayCount++;
summary.qrPayAmount += amount;
return;
}
if (transactionType == TransactionsType.MMQR_REFUND.value) {
summary.qrRefundCount++;
summary.qrRefundAmount += amount;
return;
}
if (transactionType == TransactionsType.PRE_AUTH_COMPLETE.value) {
summary.preAuthCompCount++;
summary.preAuthCompAmount += amount;
return;
}
if (transactionType == TransactionsType.PRE_AUTH_COMPLETE_VOID.value) {
summary.preAuthCompVoidCount++;
summary.preAuthCompVoidAmount += amount;
return;
}
String transType = item.getTransType() == null ? "" : item.getTransType().trim().toUpperCase(Locale.getDefault());
switch (transType) {
case "SALE":
summary.saleCount++;
summary.saleAmount += amount;
break;
case "VOID SALE":
case "VOID_SALE":
summary.voidSaleCount++;
summary.voidSaleAmount += amount;
break;
case "REFUND":
summary.refundCount++;
summary.refundAmount += amount;
break;
case "PRE-AUTH":
case "PRE_AUTH_SALE":
summary.preAuthSaleCount++;
summary.preAuthSaleAmount += amount;
break;
case "PREAUTH CANCELLATION":
case "PRE_AUTH_VOID":
summary.preAuthVoidCount++;
summary.preAuthVoidAmount += amount;
break;
case "CASH OUT":
case "CASH_OUT":
case "CASH_ADVANCE":
summary.cashOutCount++;
summary.cashOutAmount += amount;
break;
case "QR_PAY":
summary.qrPayCount++;
summary.qrPayAmount += amount;
break;
case "QR_REFUND":
summary.qrRefundCount++;
summary.qrRefundAmount += amount;
break;
case "PREAUTH COMPLETION":
case "PRE_AUTH_COMPLETE":
case "PREAUTH_COMP":
summary.preAuthCompCount++;
summary.preAuthCompAmount += amount;
break;
case "VOID PREAUTH COMPLETE":
case "PRE_AUTH_COMPLETE_VOID":
case "PREAUTH_COMP_VOID":
summary.preAuthCompVoidCount++;
summary.preAuthCompVoidAmount += amount;
break;
}
}
private boolean matchesSummaryHostType(PayDetail item, HostType hostType) {
if (hostType == null || item == null) {
return true;
}
int transactionType = item.getTransactionType();
if (hostType == HostType.QR) {
return transactionType == TransactionsType.MMQR.value
|| transactionType == TransactionsType.MMQR_REFUND.value;
}
if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) {
return transactionType != TransactionsType.MMQR.value
&& transactionType != TransactionsType.MMQR_REFUND.value;
}
return true;
}
protected void printTransDetailSummary(PayDetail payDetail, List<PayDetail> list) { protected void printTransDetailSummary(PayDetail payDetail, List<PayDetail> list) {
printTransDetailSummary(payDetail, list, null);
}
protected void printTransDetailSummary(PayDetail payDetail, List<PayDetail> list, HostType hostType) {
if (list == null || list.isEmpty()) { if (list == null || list.isEmpty()) {
printErrorBlock("NO TRANSACTION FOUND"); printErrorBlock("NO TRANSACTION FOUND");
@ -783,6 +942,7 @@ public abstract class BaseXPrint {
for (PayDetail item : list) { for (PayDetail item : list) {
if (item == null) continue; if (item == null) continue;
if (!matchesSummaryHostType(item, hostType)) continue;
String currency = item.getCurrencyCode(); String currency = item.getCurrencyCode();
TempSummary s = currencyMap.get(currency); TempSummary s = currencyMap.get(currency);
@ -792,51 +952,13 @@ public abstract class BaseXPrint {
currencyMap.put(currency, s); currencyMap.put(currency, s);
} }
String transType = item.getTransType(); applyTempSummary(s, item);
long amount = item.getAmount(); }
switch (transType) { if (currencyMap.isEmpty()) {
printErrorBlock("NO TRANSACTION FOUND");
case "SALE": printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false);
s.saleCount++; return;
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 isQrDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable();
@ -845,68 +967,88 @@ public abstract class BaseXPrint {
for (String currency : currencyMap.keySet()) { for (String currency : currencyMap.keySet()) {
TempSummary data = currencyMap.get(currency); TempSummary data = currencyMap.get(currency);
boolean isQrHost = hostType == HostType.QR;
printer.appendPrnStr( currencyCodeToText(currency) + " " +"Transactions", fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr( currencyCodeToText(currency) + " " +"Transactions", fontNormal, AlignEnum.LEFT, false);
emptyLine(1); emptyLine(1);
printer.appendPrnStr("(COUNT)TRANS", "AMOUNT(" + currencyCodeToText(currency) + ")", fontNormal, false); // printer.appendPrnStr("(COUNT)TRANS", "AMOUNT(" + currencyCodeToText(currency) + ")", fontNormal, false);
print3ColumnsStringWithAlign("COUNT", "TRANS", "AMOUNT" + "(" + currencyCodeToText(currency) + ")", fontNormal, false);
if (data.saleCount > 0) { if (isQrHost) {
printer.appendPrnStr("(" + data.saleCount + ")SALES", if (data.qrPayCount > 0) {
PrintUtils.getInstance().getSeparatorNumberFormat(data.saleAmount, isDecimalEnabled), print3ColumnsStringWithAlign("(" + data.qrPayCount + ")",
fontNormal, false); "QR PAY",
} PrintUtils.getInstance().getSeparatorNumberFormat(data.qrPayAmount, isQrDecimalEnabled),
fontNormal, false);
}
if (data.voidSaleCount > 0) { if (data.qrRefundCount > 0) {
printer.appendPrnStr("(" + data.voidSaleCount + ")VOID SALES", print3ColumnsStringWithAlign("(" + data.qrRefundCount + ")",
"- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.voidSaleAmount, isDecimalEnabled), "QR REFUND",
fontNormal, false); "- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.qrRefundAmount, isQrDecimalEnabled),
} fontNormal, false);
}
} else {
if (data.saleCount > 0) {
print3ColumnsStringWithAlign("(" + data.saleCount + ")",
"SALES",
PrintUtils.getInstance().getSeparatorNumberFormat(data.saleAmount, isDecimalEnabled),
fontNormal, false);
}
if (data.cashOutCount > 0) { if (data.voidSaleCount > 0) {
printer.appendPrnStr("(" + data.cashOutCount + ")CASH OUT", print3ColumnsStringWithAlign("(" + data.voidSaleCount + ")",
PrintUtils.getInstance().getSeparatorNumberFormat(data.cashOutAmount, isDecimalEnabled), "VOID",
fontNormal, false); "- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.voidSaleAmount, isDecimalEnabled),
} fontNormal, false);
}
if (data.refundCount > 0) { if (data.cashOutCount > 0) {
printer.appendPrnStr("(" + data.refundCount + ")REFUND", print3ColumnsStringWithAlign("(" + data.cashOutCount + ")",
"- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.refundAmount, isDecimalEnabled), "CASH ADV",
fontNormal, false); PrintUtils.getInstance().getSeparatorNumberFormat(data.cashOutAmount, isDecimalEnabled),
} fontNormal, false);
}
if (data.preAuthCompCount > 0) { if (data.preAuthSaleCount > 0) {
printer.appendPrnStr("(" + data.preAuthCompCount + ")PREAUTH COMP", print3ColumnsStringWithAlign("(" + data.preAuthSaleCount + ")",
PrintUtils.getInstance().getSeparatorNumberFormat(data.preAuthCompAmount, isDecimalEnabled), "PRE-AUTH",
fontNormal, false); PrintUtils.getInstance().getSeparatorNumberFormat(data.preAuthSaleAmount, isDecimalEnabled),
} fontNormal, false);
}
if (data.preAuthCompVoidCount > 0) { if (data.preAuthVoidCount > 0) {
printer.appendPrnStr("(" + data.preAuthCompVoidCount + ")VOID PREAUTH COMPLETE", print3ColumnsStringWithAlign("(" + data.preAuthVoidCount + ")",
"- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.preAuthCompVoidAmount, isDecimalEnabled), "PREAUTH VOID",
fontNormal, false); "- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.preAuthVoidAmount, isDecimalEnabled),
} fontNormal, false);
}
if (data.qrPayCount > 0) { if (data.refundCount > 0) {
printer.appendPrnStr("(" + data.qrPayCount + ")QR PAY", print3ColumnsStringWithAlign("(" + data.refundCount + ")",
PrintUtils.getInstance().getSeparatorNumberFormat(data.qrPayAmount, isQrDecimalEnabled), "REFUND",
fontNormal, false); "- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.refundAmount, isDecimalEnabled),
} fontNormal, false);
}
if (data.qrRefundCount > 0) { if (data.preAuthCompCount > 0) {
printer.appendPrnStr("(" + data.qrRefundCount + ")QR REFUND", print3ColumnsStringWithAlign("(" + data.preAuthCompCount + ")",
"- " + PrintUtils.getInstance().getSeparatorNumberFormat(data.qrRefundAmount, isQrDecimalEnabled), "PREAUTH COMP",
fontNormal, false); PrintUtils.getInstance().getSeparatorNumberFormat(data.preAuthCompAmount, isDecimalEnabled),
fontNormal, false);
}
} }
dotBreak(); dotBreak();
long totalAmount = long totalAmount = isQrHost
(data.saleAmount + data.cashOutAmount + data.preAuthCompAmount + data.qrPayAmount) ? data.qrPayAmount - data.qrRefundAmount
- (data.voidSaleAmount + data.refundAmount + data.preAuthCompVoidAmount + data.qrRefundAmount); : (data.saleAmount + data.cashOutAmount + data.preAuthSaleAmount + data.preAuthCompAmount)
- (data.voidSaleAmount + data.preAuthVoidAmount + data.refundAmount + data.preAuthCompVoidAmount);
printer.appendPrnStr(currencyCodeToText(currency) + " " + "TOTAL", printer.appendPrnStr( "TOTAL"+ " " + currencyCodeToText(currency),
PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isQrHost ? isQrDecimalEnabled : isDecimalEnabled),
fontNormal, false); fontNormal, false);
emptyLine(2); emptyLine(2);
@ -1006,6 +1148,11 @@ public abstract class BaseXPrint {
printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,isBold); printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,isBold);
} }
protected void print3ColumnsStringWithAlign(String first, String second, String third, int font, boolean isBold){
String fixedSizeString = String.format("%-5s", first);
printer.appendPrnStr(fixedSizeString + " " + second, third, font, isBold);
}
protected void dotBreak(){ protected void dotBreak(){
printer.appendPrnStr(new String(new char[29]).replace("\0", "."), fontNormal, AlignEnum.CENTER, false); printer.appendPrnStr(new String(new char[29]).replace("\0", "."), fontNormal, AlignEnum.CENTER, false);
} }

View File

@ -456,7 +456,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
printLogo(); printLogo();
printMerchantHeader(); printMerchantHeader();
printTranHeader("SUMMARY REPORT"); printTranHeader("SUMMARY REPORT");
printTransDetailSummary(payDetail, list); printTransDetailSummary(payDetail, list, hostType);
startPrintNex(); startPrintNex();
} catch (RemoteException e) { } catch (RemoteException e) {
e.printStackTrace(); e.printStackTrace();