fix detail report decimal
This commit is contained in:
parent
34b2fe8189
commit
063805e77a
@ -14,8 +14,8 @@ android {
|
||||
applicationId "com.utsmm.kbz"
|
||||
minSdk 24
|
||||
targetSdk 33
|
||||
versionCode 4
|
||||
versionName "1.03"
|
||||
versionCode 6
|
||||
versionName "1.05"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
|
||||
@ -312,7 +312,7 @@ public class QRTransactionFragment extends DataBindingFragment implements DataBi
|
||||
if(response.getResponse().getWalletIdentifier() != null) {
|
||||
payDetail.setCustomerMobile(response.getResponse().getWalletIdentifier());
|
||||
} else {
|
||||
payDetail.setCustomerMobile("KBZ PAY");
|
||||
payDetail.setCustomerMobile("KBZPay");
|
||||
}
|
||||
|
||||
if(response.getResponse().getMmqrRef() != null) {
|
||||
|
||||
@ -442,6 +442,8 @@ public class KPayRefund {
|
||||
}
|
||||
}
|
||||
|
||||
public static class CertificateDownloadRequest{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -225,6 +225,16 @@ public class PrintUtils {
|
||||
double amounts = Double.parseDouble(scaled.toString());
|
||||
return formatter.format(amounts);
|
||||
}
|
||||
public String getSeparatorNumberFormat(long amount, boolean isDecimal) {
|
||||
if (amount == 0) return isDecimal ? "0.00" : "0";
|
||||
|
||||
DecimalFormat formatter = new DecimalFormat(isDecimal ? "#,###.00" : "#,###");
|
||||
int x = 2;
|
||||
BigDecimal unscaled = new BigDecimal(amount);
|
||||
BigDecimal scaled = unscaled.scaleByPowerOfTen(-x);
|
||||
double amounts = Double.parseDouble(scaled.toString());
|
||||
return formatter.format(amounts);
|
||||
}
|
||||
|
||||
public String getSeparatorOnlyNumberFormat(long amount) {
|
||||
if (amount == 0) return "0";
|
||||
|
||||
@ -649,13 +649,15 @@ public abstract class BaseXPrint {
|
||||
if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) {
|
||||
print2ColumnsString("CARD NAME", "CARD NUMBER");
|
||||
print2ColumnsString("EXP DATE", "TRACE NO");
|
||||
print2ColumnsString("TRANSACTION", "AMOUNT");
|
||||
print2ColumnsString("TRANSACTION", "");
|
||||
print2ColumnsString("AMOUNT", "");
|
||||
print2ColumnsString("REF NUM", "");
|
||||
} else if (hostType == HostType.QR) {
|
||||
print2ColumnsString("PAYMENT NAME", "");
|
||||
print2ColumnsString("EXP DATE", "");
|
||||
print2ColumnsString("TRANSACTION", "TRACE NO");
|
||||
print2ColumnsString("TRXN ID", "AMOUNT");
|
||||
print2ColumnsString("TRXN ID", "");
|
||||
print2ColumnsString("AMOUNT", "");
|
||||
}
|
||||
|
||||
|
||||
@ -666,25 +668,26 @@ public abstract class BaseXPrint {
|
||||
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();
|
||||
if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) {
|
||||
print2ColumnsString(pay.getAccountType(), PrintUtils.getInstance().maskCardNumberPciDss(pay.getCardNo()));
|
||||
print2ColumnsString("**/**", pay.getVoucherNo());
|
||||
print2ColumnsString(pay.getTransType().replace("_", " "), isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount()) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount()));
|
||||
print2ColumnsString(pay.getTransType().replace("_", " "), isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled));
|
||||
print2ColumnsString(pay.getReferNo(), "");
|
||||
|
||||
} else if (hostType == HostType.QR) {
|
||||
if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
|
||||
print2ColumnsString("QR PAYMENT", "");
|
||||
} else {
|
||||
print2ColumnsString(pay.getCustomerMobile().toUpperCase(), "");
|
||||
print2ColumnsString(pay.getCustomerMobile(), "");
|
||||
}
|
||||
print2ColumnsString("**/**", "");
|
||||
print2ColumnsString(pay.getTransType().replace("_", " "), pay.getVoucherNo());
|
||||
if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
|
||||
print2ColumnsString(pay.getReferNo() + "(RRN)", isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount()) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount()));
|
||||
print2ColumnsString(pay.getReferNo() + "(RRN)", isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled));
|
||||
} else {
|
||||
print2ColumnsString(pay.getQrTransId(), isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount()) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount()));
|
||||
print2ColumnsString(pay.getQrTransId(), "");
|
||||
print2ColumnsString(isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) , "");
|
||||
}
|
||||
|
||||
}
|
||||
@ -699,21 +702,20 @@ public abstract class BaseXPrint {
|
||||
}
|
||||
|
||||
if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) {
|
||||
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
|
||||
print2ColumnsString("MPU", "");
|
||||
print2ColumnsString("CARD TYPE", "");
|
||||
print3ColumnsString("", "COUNT", "AMT");
|
||||
emptyLine(1);
|
||||
print3ColumnsString("MPU", countStringFormat(lists.size()), "MMK " + PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount));
|
||||
print3ColumnsString("MPU", countStringFormat(lists.size()), "MMK " + PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled));
|
||||
} else if (hostType == HostType.QR) {
|
||||
boolean isDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable();
|
||||
print2ColumnsString("PAYMENT", "");
|
||||
print3ColumnsString("TYPE", "COUNT", "AMT");
|
||||
emptyLine(1);
|
||||
print3ColumnsString("QR PAY", countStringFormat(lists.size()), "MMK " + PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount));
|
||||
print3ColumnsString("QR PAY", countStringFormat(lists.size()), "MMK " + PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled));
|
||||
}
|
||||
|
||||
emptyLine(2);
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected void printQRSettlementTransDetail(List<PayDetail> lists) {
|
||||
@ -806,9 +808,7 @@ public abstract class BaseXPrint {
|
||||
|
||||
emptyLine(0);
|
||||
// printer.appendPrnStr("I AGREE TO PAY THE ABOVE TOTAL AMOUNT", fontSmall, AlignEnum.CENTER,false);
|
||||
if (isQR) {
|
||||
// printer.appendPrnStr("ACCORDING TO THE ISSUER AGREEMENT", fontSmall, AlignEnum.CENTER,false);
|
||||
} else {
|
||||
if (!isQR) {
|
||||
printer.appendPrnStr("I AGREE TO PAY THE ABOVE TOTAL AMOUNT", fontSmall, AlignEnum.CENTER,false);
|
||||
printer.appendPrnStr("ACCORDING TO THE CARD ISSUER AGREEMENT", fontSmall, AlignEnum.CENTER,false);
|
||||
}
|
||||
@ -818,7 +818,7 @@ public abstract class BaseXPrint {
|
||||
} else {
|
||||
printer.appendPrnStr("***** CUSTOMER COPY *****", fontSmall, AlignEnum.CENTER,false);
|
||||
}
|
||||
printer.appendPrnStr(finalVersion, fontSmall, AlignEnum.CENTER,false);
|
||||
// printer.appendPrnStr(finalVersion, fontSmall, AlignEnum.CENTER,false);
|
||||
printer.appendPrnStr(receiptFooter, fontSmall, AlignEnum.CENTER,false);
|
||||
|
||||
|
||||
@ -885,11 +885,11 @@ public abstract class BaseXPrint {
|
||||
if(TextUtils.equals(terminalName, "") || terminalName == null){
|
||||
terminalName = "Terminal Name";
|
||||
}
|
||||
|
||||
printer.appendPrnStr(receiptHeader, fontNormal, AlignEnum.CENTER,false);
|
||||
emptyLine(1);
|
||||
// printer.appendPrnStr(receiptHeader, fontNormal, AlignEnum.CENTER,false);
|
||||
printer.appendPrnStr(terminalName, fontNormal, AlignEnum.CENTER, false);
|
||||
printer.appendPrnStr(merchantAddress, fontNormal, AlignEnum.CENTER,false);
|
||||
printer.appendPrnStr(merchantAddress2, fontNormal, AlignEnum.CENTER,false);
|
||||
printer.appendPrnStr(terminalName, fontNormal, AlignEnum.LEFT, false);
|
||||
// printer.appendPrnStr(merchantPhoneNo, fontNormal, AlignEnum.CENTER,false);
|
||||
// emptyLine(1);
|
||||
// dashBreak();
|
||||
@ -982,6 +982,47 @@ public abstract class BaseXPrint {
|
||||
|
||||
}
|
||||
|
||||
protected void printTransHeader(PayDetail payDetail, HostType hostType) {
|
||||
String invoiceNo = payDetail.getInvoiceNo().isEmpty() ? SystemParamsOperation.getInstance().getCurrentInvoiceNum() : payDetail.getInvoiceNo();
|
||||
String transType = payDetail.getTransType();
|
||||
String batchNum = "";
|
||||
String traceNum = payDetail.getVoucherNo();
|
||||
// String traceNum = SystemParamsOperation.getInstance().getCurrentSerialNum();
|
||||
String shortCode = SystemParamsOperation.getInstance().getShortCode();
|
||||
|
||||
|
||||
batchNum = payDetail.getBatchNo();
|
||||
|
||||
|
||||
// printer.appendPrnStr("DATE :" + payDetail.getTransDate() + " TIME:" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT,false);
|
||||
printer.appendPrnStr("DATE :" + POSUtil.getInstance().formatDisplayDate(payDetail.getTransDate()), fontNormal, AlignEnum.LEFT, false);
|
||||
printer.appendPrnStr("TIME :" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT, false);
|
||||
if (payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1) {
|
||||
printer.appendPrnStr("TRACE NO:" + traceNum + " INV NO:" + invoiceNo, fontNormal, AlignEnum.LEFT,false);
|
||||
} else if (!payDetail.getTransType().equals(SETTLEMENT) && !payDetail.getTransType().equals(SUMMARY) && payDetail.getTransactionType() != TransactionsType.MMQR_REFUND.value && payDetail.getTransactionType() != TransactionsType.MMQR.value) {
|
||||
printer.appendPrnStr("BTH NO :" + batchNum + " INV NO:" + invoiceNo, fontNormal, AlignEnum.LEFT,false);
|
||||
} else if (payDetail.getTransType().equals(SUMMARY)) {
|
||||
printer.appendPrnStr("HOST :" + HOST_NAME_MPU + "", fontNormal, AlignEnum.LEFT,false);
|
||||
}
|
||||
/* 17 Sept 2024 Yoma requested to changed slip design for QR*/
|
||||
// printer.printColumnsString(new String[]{"MID :" + payDetail.getMerchantNo(), ""}, new int[]{3, 1}, new int[]{0, 2}, innerResultCallback);
|
||||
// printer.printColumnsString(new String[]{"TID :" + payDetail.getTerminalNo(), ""}, new int[]{3, 1}, new int[]{0, 2}, innerResultCallback);
|
||||
if (hostType == HostType.QR){
|
||||
printer.appendPrnStr("SHORT CODE:" + shortCode, fontNormal, AlignEnum.LEFT,false);
|
||||
}else{
|
||||
printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false);
|
||||
printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT,false);
|
||||
}
|
||||
|
||||
emptyLine(1);
|
||||
printer.appendPrnStr(transType.replace("_", " "),fontNormal, AlignEnum.CENTER,true);
|
||||
|
||||
if (!(payDetail.getQrTransStatus() != 1 && (payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value || payDetail.getTransactionType() == TransactionsType.MMQR.value))) {
|
||||
printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected InnerResultCallback innerResultCallback = new InnerResultCallback() {
|
||||
@Override
|
||||
public void onRunResult(boolean isSuccess) throws RemoteException {
|
||||
|
||||
@ -231,7 +231,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
||||
setHeight(0x12);
|
||||
printLogo();
|
||||
printMerchantHeader();
|
||||
printTransHeader(payDetail);
|
||||
printTransHeader(payDetail, hostType);
|
||||
printTransDetailReport(lists,hostType);
|
||||
|
||||
// emptyLine(1);
|
||||
@ -311,7 +311,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
||||
|
||||
// payDetail.getCustomerMobile() // as channel type
|
||||
if(payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1 ) {
|
||||
print2ColumnsStringNoSpace("PAYMENT TYPE ",": "+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile().toUpperCase()));
|
||||
print2ColumnsStringNoSpace("PAYMENT TYPE ",": "+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile()));
|
||||
print2ColumnsStringNoSpace("TRXN REF ",": "+ payDetail.getReferNo());
|
||||
if(payDetail.getQrReferNo() != null && !payDetail.getQrReferNo().isEmpty()) {
|
||||
print2ColumnsStringNoSpace("MMQR REF ",": "+ payDetail.getQrReferNo());
|
||||
@ -325,7 +325,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
||||
print2ColumnsStringNoSpace("STATUS ",":"+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus()));
|
||||
|
||||
} else if(payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == -1) {
|
||||
print2ColumnsStringNoSpace("PAYMENT TYPE ",":"+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile().toUpperCase()));
|
||||
print2ColumnsStringNoSpace("PAYMENT TYPE ",":"+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile()));
|
||||
print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
|
||||
print2ColumnsStringNoSpace("TXN TIME ",":"+ (payDetail.getOriginalTransDate() == null || payDetail.getOriginalTransDate().isEmpty() ? POSUtil.getInstance().getCurrentDateTimeForQR(): payDetail.getOriginalTransDate()));
|
||||
}
|
||||
@ -339,8 +339,10 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
||||
if (payDetail.getQrTransStatus() == 1) {
|
||||
|
||||
boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value;
|
||||
boolean isQrDecimalEnable = SystemParamsOperation.getInstance().isQrDecimalEnable();
|
||||
|
||||
lineBreak();
|
||||
print2ColumnsStringBoldCenter("TOTAL MMK", isNeedMinusSign? "- "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()): PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()),fontLarge, AlignEnum.LEFT);
|
||||
print2ColumnsStringBoldCenter("TOTAL MMK", isNeedMinusSign? "- "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable): PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable),fontLarge, AlignEnum.LEFT);
|
||||
lineBreak();
|
||||
|
||||
// if(payDetail.getTransactionType() == TransactionsType.MMQR.value) {
|
||||
|
||||
@ -281,7 +281,7 @@ public class POSUtil {
|
||||
if(payDetail != null) {
|
||||
|
||||
if(payDetail.getTransactionType() == TransactionsType.MMQR.value) {
|
||||
return payDetail.getCustomerMobile().toUpperCase();
|
||||
return payDetail.getCustomerMobile();
|
||||
} else if(payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
|
||||
return "QR PAYMENT";
|
||||
} else {
|
||||
@ -555,7 +555,7 @@ public class POSUtil {
|
||||
|
||||
public String formatDisplayDate(String input){
|
||||
|
||||
SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
|
||||
SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MM/yy", Locale.getDefault());
|
||||
SimpleDateFormat outputFormat = new SimpleDateFormat("dd MMM yyyy", Locale.getDefault());
|
||||
|
||||
try {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user