e-receipt settlement

This commit is contained in:
moon 2026-07-20 12:02:06 +06:30
parent e613dfa246
commit 0c2ae391c3
6 changed files with 69 additions and 3 deletions

View File

@ -623,6 +623,10 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(cardTransactionsList)); payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(cardTransactionsList));
} }
if (qrTransactionsList != null && !qrTransactionsList.isEmpty()) {
payDetail.setQrSettleData(QRSettleData.convertFromPayDetail(qrTransactionsList));
}
sharedViewModel.payDetail.setValue(payDetail); sharedViewModel.payDetail.setValue(payDetail);
EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue()); EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue());

View File

@ -11,6 +11,7 @@ import com.utsmyanmar.paylibs.model.PayDetail;
import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.model.QRSettleData;
import com.utsmyanmar.paylibs.model.SettleData; import com.utsmyanmar.paylibs.model.SettleData;
import com.utsmyanmar.paylibs.system.BaseErrorCode; import com.utsmyanmar.paylibs.system.BaseErrorCode;
import com.utsmyanmar.paylibs.utils.LogUtil;
import com.utsmyanmar.paylibs.utils.POSUtil; import com.utsmyanmar.paylibs.utils.POSUtil;
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation; import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; 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()) String currentTimeStamp = new java.text.SimpleDateFormat("MMddHHmmss", java.util.Locale.getDefault())
.format(new java.util.Date()); .format(new java.util.Date());
EReceiptRequest request = new EReceiptRequest(); EReceiptRequest request = new EReceiptRequest();
String hostId = SystemParamsOperation.getInstance().getHostId();
request.setDE3(convertTransactionType(payDetail.getTransactionType())); request.setDE3(convertTransactionType(payDetail.getTransactionType()));
request.setDE7(currentTimeStamp); request.setDE7(currentTimeStamp);
request.setDE11(payDetail.getVoucherNo()); request.setDE11(payDetail.getVoucherNo());
request.setHostId(hostId);
if (payDetail.getTransactionType() == TransactionsType.SETTLEMENT.value) { if (payDetail.getTransactionType() == TransactionsType.SETTLEMENT.value) {
SettleData settleData = payDetail.getSettleDataObj(); SettleData settleData = payDetail.getSettleDataObj();
@ -188,7 +191,6 @@ public class EReceiptUtil {
request.setDE4(getDecimalAmount(totalAmt)); request.setDE4(getDecimalAmount(totalAmt));
request.setDE63_01(settleData.getSaleCount() + ""); request.setDE63_01(settleData.getSaleCount() + "");
request.setDE63_02(getDecimalAmount(settleData.getSaleAmount())); request.setDE63_02(getDecimalAmount(settleData.getSaleAmount()));
request.setDE63_03(settleData.getRefundCount() + ""); request.setDE63_03(settleData.getRefundCount() + "");
@ -209,11 +211,33 @@ public class EReceiptUtil {
request.setDE24(payDetail.getVoucherNo()); request.setDE24(payDetail.getVoucherNo());
request.setDE43(SystemParamsOperation.getInstance().getMerchantName()); request.setDE43(SystemParamsOperation.getInstance().getMerchantName());
request.setDE3("CST");
List<CardSettleData> cardSettleDataList = payDetail.getCardSettleData(); List<CardSettleData> cardSettleDataList = payDetail.getCardSettleData();
if (cardSettleDataList != null && !cardSettleDataList.isEmpty()) { if (cardSettleDataList != null && !cardSettleDataList.isEmpty()) {
request.setCardTransactions(buildCardTransactions(cardSettleDataList)); request.setCardTransactions(buildCardTransactions(cardSettleDataList));
} }
List<QRSettleData> 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 { } else {
request.setDE2(POSUtil.getInstance().getCardNumMasking(payDetail.getCardNo())); request.setDE2(POSUtil.getInstance().getCardNumMasking(payDetail.getCardNo()));
@ -358,7 +382,7 @@ public class EReceiptUtil {
); );
txn.setDate(pay.getDate()); // yyyyMMdd txn.setDate(pay.getDate()); // yyyyMMdd
txn.setTime(pay.getTime()); // HHmmss txn.setTime(pay.getTime()); // HHmmss
txn.setAmount(amount); txn.setAmount(pay.getTransactionType() == TransactionsType.MMQR_REFUND.value ? "-" + amount : amount);
list.add(txn); list.add(txn);
} }

View File

@ -223,6 +223,7 @@ public class TMSSetupsImpl implements TMSSetups{
// PRIMARY HOST (Card #1) // PRIMARY HOST (Card #1)
if (!cardHosts.isEmpty()) { if (!cardHosts.isEmpty()) {
SystemParamsOperation.getInstance().setHostId(cardHosts.get(0).getId());
SiriusHost primaryCard = cardHosts.get(0); SiriusHost primaryCard = cardHosts.get(0);
SystemParamsOperation.getInstance().setHostName(primaryCard.getName() == null ? "" : primaryCard.getName()); SystemParamsOperation.getInstance().setHostName(primaryCard.getName() == null ? "" : primaryCard.getName());
SystemParamsOperation.getInstance().setTerminalId(primaryCard.getTid() == null ? "" : primaryCard.getTid()); SystemParamsOperation.getInstance().setTerminalId(primaryCard.getTid() == null ? "" : primaryCard.getTid());
@ -233,7 +234,6 @@ public class TMSSetupsImpl implements TMSSetups{
String secondaryIp = primaryCard.getSecondaryIP(); String secondaryIp = primaryCard.getSecondaryIP();
SystemParamsOperation.getInstance().setSecIpAddress(secondaryIp != null && secondaryIp.contains(":") ? secondaryIp.trim() : ""); SystemParamsOperation.getInstance().setSecIpAddress(secondaryIp != null && secondaryIp.contains(":") ? secondaryIp.trim() : "");
if (!TextUtils.isEmpty(primaryCard.getCurrency())) { if (!TextUtils.isEmpty(primaryCard.getCurrency())) {
SystemParamsOperation.getInstance().setCurrencyType(currencyTextToCurrencyType(primaryCard.getCurrency())); SystemParamsOperation.getInstance().setCurrencyType(currencyTextToCurrencyType(primaryCard.getCurrency()));
} }

View File

@ -27,6 +27,8 @@ public class EReceiptRequest {
private String DE63_06; private String DE63_06;
private String DE63_07; private String DE63_07;
private String DE63_08; private String DE63_08;
private String DE63_09;
private String DE63_10;
private String serial; private String serial;
private String appId; private String appId;
@ -286,6 +288,22 @@ public class EReceiptRequest {
public List<CardTransaction> getCardTransactions() { return cardTransactions; } public List<CardTransaction> getCardTransactions() { return cardTransactions; }
public void setCardTransactions(List<CardTransaction> cardTransactions) { this.cardTransactions = cardTransactions; } public void setCardTransactions(List<CardTransaction> 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;
}
} }

View File

@ -1855,6 +1855,17 @@ public class SystemParamsOperation {
return paramsSettings.getSecHostId(); 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() { public String getMerchantAddress3() {
SystemParamsSettings paramsSettings = getSystemParamsSettings(); SystemParamsSettings paramsSettings = getSystemParamsSettings();
return paramsSettings.getMerchantAddress3(); return paramsSettings.getMerchantAddress3();

View File

@ -104,6 +104,7 @@ public class SystemParamsSettings implements Serializable {
private String hostName = ""; private String hostName = "";
private String secHostId = ""; private String secHostId = "";
private String hostId = "";
private String secHostName = ""; private String secHostName = "";
private String thirdHostName = ""; private String thirdHostName = "";
@ -1205,6 +1206,14 @@ public class SystemParamsSettings implements Serializable {
this.jcbTerminalCapability = jcbTerminalCapability; this.jcbTerminalCapability = jcbTerminalCapability;
} }
public String getHostId() {
return hostId;
}
public void setHostId(String hostId) {
this.hostId = hostId;
}
/* // 流水号起始 /* // 流水号起始
private String serialNum = Configs.getInstance().SERIAL_NUM(); private String serialNum = Configs.getInstance().SERIAL_NUM();
// 批次号起始 // 批次号起始