From 34b2fe8189fb9c0c713d8a3fef8a2f1340fb0ff7 Mon Sep 17 00:00:00 2001 From: MooN <56061215+MgKyawLay@users.noreply.github.com> Date: Tue, 23 Dec 2025 12:05:46 +0630 Subject: [PATCH] e-receipt fix for qr settlement --- .../QRSettlementTransactionFragment.java | 6 +- .../settlement/SelectSettlementFragment.java | 4 +- .../java/com/utsmm/kbz/util/EReceiptUtil.java | 75 +++++++++++++++++++ 3 files changed, 79 insertions(+), 6 deletions(-) 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 a978288..a4909ec 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 @@ -297,11 +297,8 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme } private void navigateToResult() { - routeId = R.id.action_QRSettlementTransactionFragment_to_transactionResultFragment; safeNavigateToRouteId(); - - } private void processData() { @@ -333,7 +330,8 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme } } private void updateData() { - EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue()); +// EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue()); + EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(sharedViewModel.payDetail.getValue()); sharedViewModel.pushReceipt(request); } diff --git a/app/src/main/java/com/utsmm/kbz/ui/settlement/SelectSettlementFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settlement/SelectSettlementFragment.java index 0f22580..c1178a8 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settlement/SelectSettlementFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settlement/SelectSettlementFragment.java @@ -92,8 +92,8 @@ public class SelectSettlementFragment extends DataBindingFragment implements Dat public void onQRSettlement() { - if (TMSUtil.getInstance().checkParams().isStatus() == ValidityStatus.FAILURE) { - showDeclineDialog(getResourceString(R.string.txt_please_download_config)+"\n"+TMSUtil.getInstance().checkParams().getMessage()); + if (TMSUtil.getInstance().checkQRParams().isStatus() == ValidityStatus.FAILURE) { + showDeclineDialog(getResourceString(R.string.txt_please_download_config)+"\n"+TMSUtil.getInstance().checkQRParams().getMessage()); } else if (!Connectivity.isConnectedWifi(getContext()) && !Connectivity.isConnectedMobile(getContext())) { showSingleInfoDialog(getResourceString(R.string.txt_please_enable_internet)); } else { diff --git a/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java b/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java index 1cca851..73d147b 100644 --- a/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java +++ b/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java @@ -228,6 +228,81 @@ public class EReceiptUtil { return request; } + public EReceiptRequest generateQRSettlement(PayDetail payDetail) { + + double realAmount = payDetail.getAmount() / 100.0; + DecimalFormat df = new DecimalFormat("0.00"); + String amount = df.format(realAmount); + + String currentTimeStamp = new java.text.SimpleDateFormat("MMddHHmmss", java.util.Locale.getDefault()) + .format(new java.util.Date()); + + String terminalId = SystemParamsOperation.getInstance().getTerminalIdForEreceipt(); + + EReceiptRequest request = new EReceiptRequest(); + request.setDE3(convertTransactionType(payDetail.getTransactionType())); + request.setDE7(currentTimeStamp); + request.setDE11(payDetail.getVoucherNo()); + String hostId = SystemParamsOperation.getInstance().getSecHostId(); + request.setHostId(hostId); + request.setTerminalId(terminalId);//terminalId is not tid + request.setShortCode(qrMerchantId); + + if(payDetail.getTransactionType() == TransactionsType.SETTLEMENT.value) { + SettleData settleData = payDetail.getSettleDataObj(); + + long totalAmt = settleData.getSaleAmount() + settleData.getRefundAmount() + settleData.getPreAuthCompAmount() + settleData.getCashAdvanceAmount(); + double realTotalAmount = totalAmt / 100.0; + String totalAmount = df.format(realTotalAmount); + request.setDE4(totalAmount); + + + request.setDE63_01(settleData.getSaleCount()+""); + request.setDE63_02(settleData.getSaleAmount()+""); + request.setDE63_03(settleData.getRefundCount()+""); + request.setDE63_04(settleData.getRefundAmount()+""); + request.setDE63_05(settleData.getPreAuthCompCount()+""); + request.setDE63_06(settleData.getPreAuthCompAmount()+""); + request.setDE63_07(settleData.getCashAdvanceCount()+""); + request.setDE63_08(settleData.getCashAdvanceAmount()+""); + invoiceNo = SystemParamsOperation.getInstance().getIncrementInvoiceNum(); + request.setBatchNumber(batchNumber); + request.setInvoiceNumber(invoiceNo); + request.setDescription("success"); + request.setDE39("A"); + request.setDE37("0000"); + request.setDE49("MMK"); + } else { + request.setDE2(POSUtil.getInstance().getCardNumMasking(payDetail.getCardNo())); + + request.setDE4(amount); + + + request.setDE37(payDetail.getReferNo()); + request.setDE38(payDetail.getApprovalCode()); + // will check it later for currency code + request.setDE49("MMK"); + request.setInvoiceNumber(payDetail.getInvoiceNo()); + request.setCardLabel("MPU"); + + if(payDetail.getTradeAnswerCode().equals("000") || payDetail.getTradeAnswerCode().equals("00") ) { + + request.setDescription("success"); + request.setDE39("A"); + } else { + request.setDescription(BaseErrorCode.getErrorMessage(payDetail.getTradeAnswerCode())); + request.setDE39("E"); + } + } + request.setDE41(terminalId); + request.setDE42(merchantId); + + request.setSerial(serialNum); + request.setAppId(packageName); + + return request; + } + public String convertTransactionType(int transactionType) { if(transactionType == TransactionsType.SALE.value) { return "S";