e-receipt fix for qr settlement

This commit is contained in:
MooN 2025-12-23 12:05:46 +06:30
parent c96d68ff2f
commit 34b2fe8189
3 changed files with 79 additions and 6 deletions

View File

@ -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);
}

View File

@ -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 {

View File

@ -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";