From 0c2ae391c31bf9b1e294ade83fd1cae31d9b5afb Mon Sep 17 00:00:00 2001 From: moon <56061215+MgKyawLay@users.noreply.github.com> Date: Mon, 20 Jul 2026 12:02:06 +0630 Subject: [PATCH] e-receipt settlement --- .../SettlementTransactionFragment.java | 4 +++ .../java/com/utsmm/kbz/util/EReceiptUtil.java | 28 +++++++++++++++++-- .../com/utsmm/kbz/util/tms/TMSSetupsImpl.java | 2 +- .../model/e_receipt/EReceiptRequest.java | 18 ++++++++++++ .../core_utils/SystemParamsOperation.java | 11 ++++++++ .../core_utils/SystemParamsSettings.java | 9 ++++++ 6 files changed, 69 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java index 2a37f96..8299239 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java @@ -623,6 +623,10 @@ public class SettlementTransactionFragment extends DataBindingFragment implement payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(cardTransactionsList)); } + if (qrTransactionsList != null && !qrTransactionsList.isEmpty()) { + payDetail.setQrSettleData(QRSettleData.convertFromPayDetail(qrTransactionsList)); + } + sharedViewModel.payDetail.setValue(payDetail); EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue()); 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 f4871e0..9f44435 100644 --- a/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java +++ b/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java @@ -11,6 +11,7 @@ import com.utsmyanmar.paylibs.model.PayDetail; import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.model.SettleData; import com.utsmyanmar.paylibs.system.BaseErrorCode; +import com.utsmyanmar.paylibs.utils.LogUtil; import com.utsmyanmar.paylibs.utils.POSUtil; import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation; import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; @@ -176,10 +177,12 @@ public class EReceiptUtil { String currentTimeStamp = new java.text.SimpleDateFormat("MMddHHmmss", java.util.Locale.getDefault()) .format(new java.util.Date()); EReceiptRequest request = new EReceiptRequest(); + String hostId = SystemParamsOperation.getInstance().getHostId(); request.setDE3(convertTransactionType(payDetail.getTransactionType())); request.setDE7(currentTimeStamp); request.setDE11(payDetail.getVoucherNo()); + request.setHostId(hostId); if (payDetail.getTransactionType() == TransactionsType.SETTLEMENT.value) { SettleData settleData = payDetail.getSettleDataObj(); @@ -188,7 +191,6 @@ public class EReceiptUtil { request.setDE4(getDecimalAmount(totalAmt)); - request.setDE63_01(settleData.getSaleCount() + ""); request.setDE63_02(getDecimalAmount(settleData.getSaleAmount())); request.setDE63_03(settleData.getRefundCount() + ""); @@ -209,11 +211,33 @@ public class EReceiptUtil { request.setDE24(payDetail.getVoucherNo()); request.setDE43(SystemParamsOperation.getInstance().getMerchantName()); + request.setDE3("CST"); + List cardSettleDataList = payDetail.getCardSettleData(); if (cardSettleDataList != null && !cardSettleDataList.isEmpty()) { request.setCardTransactions(buildCardTransactions(cardSettleDataList)); } + List qrSettleDataList = payDetail.getQrSettleData(); + if(qrSettleDataList != null && !qrSettleDataList.isEmpty()){ + request.setTransactions(buildTransactions(qrSettleDataList)); + + long qrRefundTotal = 0; + long qrSaleTotal = 0; + for (QRSettleData data : qrSettleDataList) { + if (data.getTransactionType() == TransactionsType.MMQR_REFUND.value) { + qrRefundTotal += data.getAmount(); + } else if (data.getTransactionType() == TransactionsType.MMQR.value) { + qrSaleTotal += data.getAmount(); + } + } + request.setDE63_09(getDecimalAmount(qrRefundTotal)); + request.setDE63_10(getDecimalAmount(qrSaleTotal)); + }else{ + LogUtil.d("KMK", "QR settle data is null"); + request.setDE63_09(getDecimalAmount(0)); + request.setDE63_10(getDecimalAmount(0)); + } } else { request.setDE2(POSUtil.getInstance().getCardNumMasking(payDetail.getCardNo())); @@ -358,7 +382,7 @@ public class EReceiptUtil { ); txn.setDate(pay.getDate()); // yyyyMMdd txn.setTime(pay.getTime()); // HHmmss - txn.setAmount(amount); + txn.setAmount(pay.getTransactionType() == TransactionsType.MMQR_REFUND.value ? "-" + amount : amount); list.add(txn); } diff --git a/app/src/main/java/com/utsmm/kbz/util/tms/TMSSetupsImpl.java b/app/src/main/java/com/utsmm/kbz/util/tms/TMSSetupsImpl.java index b762336..351fde0 100644 --- a/app/src/main/java/com/utsmm/kbz/util/tms/TMSSetupsImpl.java +++ b/app/src/main/java/com/utsmm/kbz/util/tms/TMSSetupsImpl.java @@ -223,6 +223,7 @@ public class TMSSetupsImpl implements TMSSetups{ // PRIMARY HOST (Card #1) if (!cardHosts.isEmpty()) { + SystemParamsOperation.getInstance().setHostId(cardHosts.get(0).getId()); SiriusHost primaryCard = cardHosts.get(0); SystemParamsOperation.getInstance().setHostName(primaryCard.getName() == null ? "" : primaryCard.getName()); SystemParamsOperation.getInstance().setTerminalId(primaryCard.getTid() == null ? "" : primaryCard.getTid()); @@ -233,7 +234,6 @@ public class TMSSetupsImpl implements TMSSetups{ String secondaryIp = primaryCard.getSecondaryIP(); SystemParamsOperation.getInstance().setSecIpAddress(secondaryIp != null && secondaryIp.contains(":") ? secondaryIp.trim() : ""); - if (!TextUtils.isEmpty(primaryCard.getCurrency())) { SystemParamsOperation.getInstance().setCurrencyType(currencyTextToCurrencyType(primaryCard.getCurrency())); } diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/network/model/e_receipt/EReceiptRequest.java b/baselib/src/main/java/com/utsmyanmar/baselib/network/model/e_receipt/EReceiptRequest.java index cc876ec..286715c 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/network/model/e_receipt/EReceiptRequest.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/network/model/e_receipt/EReceiptRequest.java @@ -27,6 +27,8 @@ public class EReceiptRequest { private String DE63_06; private String DE63_07; private String DE63_08; + private String DE63_09; + private String DE63_10; private String serial; private String appId; @@ -286,6 +288,22 @@ public class EReceiptRequest { public List getCardTransactions() { return cardTransactions; } public void setCardTransactions(List cardTransactions) { this.cardTransactions = cardTransactions; } + + public String getDE63_09() { + return DE63_09; + } + + public void setDE63_09(String DE63_09) { + this.DE63_09 = DE63_09; + } + + public String getDE63_10() { + return DE63_10; + } + + public void setDE63_10(String DE63_10) { + this.DE63_10 = DE63_10; + } } diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsOperation.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsOperation.java index 020a4dc..9b7f43c 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsOperation.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsOperation.java @@ -1855,6 +1855,17 @@ public class SystemParamsOperation { return paramsSettings.getSecHostId(); } + public String getHostId(){ + SystemParamsSettings paramsSettings = getSystemParamsSettings(); + return paramsSettings.getHostId(); + } + + public void setHostId(String hostId){ + SystemParamsSettings paramsSettings = getSystemParamsSettings(); + paramsSettings.setHostId(hostId); + saveSystemParamsSettings(paramsSettings); + } + public String getMerchantAddress3() { SystemParamsSettings paramsSettings = getSystemParamsSettings(); return paramsSettings.getMerchantAddress3(); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java index 1246cb1..8d4b4fe 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java @@ -104,6 +104,7 @@ public class SystemParamsSettings implements Serializable { private String hostName = ""; private String secHostId = ""; + private String hostId = ""; private String secHostName = ""; private String thirdHostName = ""; @@ -1205,6 +1206,14 @@ public class SystemParamsSettings implements Serializable { this.jcbTerminalCapability = jcbTerminalCapability; } + public String getHostId() { + return hostId; + } + + public void setHostId(String hostId) { + this.hostId = hostId; + } + /* // 流水号起始 private String serialNum = Configs.getInstance().SERIAL_NUM(); // 批次号起始