From 7276f8c572d86eafe2477b60e77cd3c19c19bd74 Mon Sep 17 00:00:00 2001 From: MooN <56061215+MgKyawLay@users.noreply.github.com> Date: Mon, 29 Dec 2025 02:19:58 +0630 Subject: [PATCH] settlement QR setup --- app/build.gradle | 4 +- .../utsmm/kbz/service/AutoSettleService.java | 2 +- .../QRSettlementTransactionFragment.java | 2 +- .../java/com/utsmm/kbz/util/EReceiptUtil.java | 37 +++++++++++-- .../model/e_receipt/EReceiptRequest.java | 14 +++++ .../network/model/e_receipt/Transaction.java | 52 +++++++++++++++++++ 6 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 baselib/src/main/java/com/utsmyanmar/baselib/network/model/e_receipt/Transaction.java diff --git a/app/build.gradle b/app/build.gradle index 92f77ec..5702ca0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,8 +14,8 @@ android { applicationId "com.utsmm.kbz" minSdk 24 targetSdk 33 - versionCode 8 - versionName "1.07" + versionCode 9 + versionName "1.08" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/utsmm/kbz/service/AutoSettleService.java b/app/src/main/java/com/utsmm/kbz/service/AutoSettleService.java index 8f16e9d..eda454c 100644 --- a/app/src/main/java/com/utsmm/kbz/service/AutoSettleService.java +++ b/app/src/main/java/com/utsmm/kbz/service/AutoSettleService.java @@ -404,7 +404,7 @@ public class AutoSettleService extends Service { // Push e-receipt data using repository directly try { - EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(payDetail); + EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(payDetail, qrTransactionsList); sendEReceipt(request); LogUtil.d(TAG, "QR Settlement e-receipt data prepared and sent"); } catch (Exception e) { 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 a4909ec..202a44c 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 @@ -331,7 +331,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme } private void updateData() { // EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue()); - EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(sharedViewModel.payDetail.getValue()); + EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(sharedViewModel.payDetail.getValue(), qrTransactionsList); sharedViewModel.pushReceipt(request); } 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 bcd1e5a..243601e 100644 --- a/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java +++ b/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java @@ -4,6 +4,7 @@ import com.utsmm.kbz.BuildConfig; import com.utsmm.kbz.util.enums.TransResultStatus; import com.utsmm.kbz.util.tms.TMSUtil; import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest; +import com.utsmyanmar.baselib.network.model.e_receipt.Transaction; import com.utsmyanmar.paylibs.model.PayDetail; import com.utsmyanmar.paylibs.model.SettleData; import com.utsmyanmar.paylibs.system.BaseErrorCode; @@ -12,6 +13,8 @@ import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation; import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; public class EReceiptUtil { @@ -225,7 +228,7 @@ public class EReceiptUtil { return request; } - public EReceiptRequest generateQRSettlement(PayDetail payDetail) { + public EReceiptRequest generateQRSettlement(PayDetail payDetail, List transactions) { double realAmount = payDetail.getAmount() / 100.0; DecimalFormat df = new DecimalFormat("0.00"); @@ -237,13 +240,15 @@ public class EReceiptUtil { String terminalId = SystemParamsOperation.getInstance().getTerminalIdForEreceipt(); EReceiptRequest request = new EReceiptRequest(); - request.setDE3(convertTransactionType(payDetail.getTransactionType())); +// request.setDE3(convertTransactionType(payDetail.getTransactionType())); + request.setDE3("QRST"); 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); + request.setTransactions(buildTransactions(transactions)); SettleData settleData = payDetail.getSettleDataObj(); @@ -251,8 +256,6 @@ public class EReceiptUtil { 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() + ""); @@ -275,6 +278,32 @@ public class EReceiptUtil { return request; } + private static List buildTransactions(List payDetails) { + List list = new ArrayList<>(); + + + for (PayDetail pay : payDetails) { + + double realAmount = pay.getAmount() / 100.0; + DecimalFormat df = new DecimalFormat("0.00"); + String amount = df.format(realAmount); + + Transaction txn = new Transaction(); + txn.setTran_id(pay.getVoucherNo()); // or ref no + txn.setStatus( + pay.getTransactionType() == TransactionsType.MMQR_REFUND.value + ? "REFUND_SUCCESS" + : "PAY_SUCCESS" + ); + txn.setDate(pay.getTransDate()); // yyyyMMdd + txn.setTime(pay.getTransTime()); // HHmmss + txn.setAmount(amount); + + list.add(txn); + } + return list; + } + public String convertTransactionType(int transactionType) { if (transactionType == TransactionsType.SALE.value) { return "S"; 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 fa7a1ed..153ed8e 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 @@ -1,5 +1,7 @@ package com.utsmyanmar.baselib.network.model.e_receipt; +import java.util.List; + public class EReceiptRequest { private String DE2; private String DE3; @@ -41,8 +43,18 @@ public class EReceiptRequest { private String hostId; private String paymentIdentifier; + private List transactions; + public EReceiptRequest() {} + public List getTransactions(){ + return transactions; + } + + public void setTransactions(List transactions){ + this.transactions = transactions; + } + // GETTERS public String getPaymentIdentifier(){ @@ -258,3 +270,5 @@ public class EReceiptRequest { } public void setMmqrRef(String mmqrRef){ this.mmqrRef = mmqrRef; } } + + diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/network/model/e_receipt/Transaction.java b/baselib/src/main/java/com/utsmyanmar/baselib/network/model/e_receipt/Transaction.java new file mode 100644 index 0000000..eae5628 --- /dev/null +++ b/baselib/src/main/java/com/utsmyanmar/baselib/network/model/e_receipt/Transaction.java @@ -0,0 +1,52 @@ +package com.utsmyanmar.baselib.network.model.e_receipt; + +public class Transaction { + + private String tran_id; + private String status; + private String date; + private String time; + private String amount; + + public Transaction() {} + + public String getTran_id() { + return tran_id; + } + + public void setTran_id(String tran_id) { + this.tran_id = tran_id; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } +} \ No newline at end of file