fixed not switching tid/mid for each settlement
This commit is contained in:
parent
1546e5dedc
commit
3833df3971
@ -682,9 +682,11 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
}
|
||||
|
||||
private boolean isUSDSettleNeeded() {
|
||||
return (usdBucket.saleCount != 0 || usdBucket.preCount != 0 || usdBucket.refundCount != 0 || usdBucket.caCount != 0);
|
||||
return (usdBucket.saleCount != 0 || usdBucket.preCount != 0 || usdBucket.refundCount != 0
|
||||
|| usdBucket.caCount != 0 || usdBucket.voidCount != 0);
|
||||
}
|
||||
private void networkCutOver() {
|
||||
|
||||
EchoTestProcess.getInstance().enqueueCutOver().startSignOn(new SignOnListener() {
|
||||
@Override
|
||||
public void onSuccessSignOn() {
|
||||
@ -693,6 +695,8 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
currencySelectionHelper.applyCardCurrencyAndHost("MMK");
|
||||
settlementViewModel.startSettlementProcess(mmkBucket,true);
|
||||
} else {
|
||||
|
||||
currencySelectionHelper.applyCardCurrencyAndHost("MMK");
|
||||
navigateToNext();
|
||||
}
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import com.utsmm.kbz.ui.settlement.model.CurrencyBucket;
|
||||
import com.utsmm.kbz.util.CurrencySelectionHelper;
|
||||
import com.utsmm.kbz.util.EReceiptUtil;
|
||||
import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest;
|
||||
import com.utsmyanmar.baselib.repo.Repository;
|
||||
@ -335,6 +336,14 @@ public class SettlementViewModel extends ViewModel {
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
public void startSettlementProcess(CurrencyBucket currencyBucket,boolean isLast) {
|
||||
this.isLast = isLast;
|
||||
|
||||
// Switch TID/MID/IP/currency before building ISO
|
||||
// isLast=false => USD pass; isLast=true => MMK pass.
|
||||
CurrencySelectionHelper.applyHostForCurrency(isLast ? "MMK" : "USD");
|
||||
LogUtil.d(TAG, "Settlement host switched for " + (isLast ? "MMK" : "USD")
|
||||
+ " TID=" + SystemParamsOperation.getInstance().getTerminalId()
|
||||
+ " MID=" + SystemParamsOperation.getInstance().getMerchantId());
|
||||
|
||||
SystemParamsOperation.getInstance().getIncrementBatchNo();
|
||||
|
||||
boolean bucketIsEmpty = currencyBucket.saleCount == 0
|
||||
@ -369,6 +378,8 @@ public class SettlementViewModel extends ViewModel {
|
||||
|
||||
TradeData tradeData = Params.newTrade(true);
|
||||
payDetail = tradeData.getPayDetail();
|
||||
payDetail.setTerminalNo(SystemParamsOperation.getInstance().getTerminalId());
|
||||
payDetail.setMerchantNo(SystemParamsOperation.getInstance().getMerchantId());
|
||||
|
||||
|
||||
bitmap = BitmapConfig.BPC_SETTLEMENT;
|
||||
@ -446,6 +457,9 @@ public class SettlementViewModel extends ViewModel {
|
||||
TradeData tradeData = Params.newTrade(true);
|
||||
payDetail = tradeData.getPayDetail();
|
||||
|
||||
payDetail.setTerminalNo(SystemParamsOperation.getInstance().getTerminalId());
|
||||
payDetail.setMerchantNo(SystemParamsOperation.getInstance().getMerchantId());
|
||||
|
||||
|
||||
//
|
||||
if(hostName == HostName.BPC) {
|
||||
@ -612,7 +626,11 @@ public class SettlementViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
private void enrichSettleDataWithVoids(SettleData settleData) {
|
||||
String settleCurrency = isLast ? "104" : "840";
|
||||
for (PayDetail pay : deleteTrans) {
|
||||
if (!matchesSettlementCurrency(pay.getCurrencyCode(), settleCurrency)) {
|
||||
continue;
|
||||
}
|
||||
if (pay.getTransactionType() == TransactionType.VOID && !pay.isCanceled) {
|
||||
settleData.setVoidSaleCount(settleData.getVoidSaleCount() + 1);
|
||||
settleData.setVoidSaleAmount(settleData.getVoidSaleAmount() + pay.getAmount());
|
||||
@ -624,9 +642,19 @@ public class SettlementViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
private List<PayDetail> buildCardPayDetailList() {
|
||||
String settleCurrency = isLast ? "104" : "840";
|
||||
List<PayDetail> list = new ArrayList<>();
|
||||
if (payDetails != null) list.addAll(payDetails);
|
||||
if (payDetails != null) {
|
||||
for (PayDetail pay : payDetails) {
|
||||
if (matchesSettlementCurrency(pay.getCurrencyCode(), settleCurrency)) {
|
||||
list.add(pay);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (PayDetail pay : deleteTrans) {
|
||||
if (!matchesSettlementCurrency(pay.getCurrencyCode(), settleCurrency)) {
|
||||
continue;
|
||||
}
|
||||
if (pay.getTransactionType() == TransactionType.VOID && !pay.isCanceled) {
|
||||
list.add(pay);
|
||||
} else if (pay.getTransactionType() == TransactionType.SALE && pay.isCanceled) {
|
||||
@ -636,6 +664,17 @@ public class SettlementViewModel extends ViewModel {
|
||||
return list;
|
||||
}
|
||||
|
||||
private boolean matchesSettlementCurrency(String currencyCode, String expectedNumeric) {
|
||||
if (currencyCode == null || currencyCode.trim().isEmpty()) {
|
||||
return "104".equals(expectedNumeric);
|
||||
}
|
||||
String value = currencyCode.trim().toUpperCase(Locale.getDefault());
|
||||
if ("840".equals(expectedNumeric)) {
|
||||
return "840".equals(value) || "USD".equals(value);
|
||||
}
|
||||
return "104".equals(value) || "MMK".equals(value) || (!"840".equals(value) && !"USD".equals(value));
|
||||
}
|
||||
|
||||
private void batchUploadProcess(boolean isLast) {
|
||||
resultString.postValue(TransactionStatus.ON_BATCH_UPLOAD);
|
||||
|
||||
|
||||
@ -89,39 +89,55 @@ public class CurrencySelectionHelper {
|
||||
}
|
||||
|
||||
public void applyCardCurrencyAndHost(String selectedCurrency) {
|
||||
cachePrimaryCardHostIfNeeded();
|
||||
applyHostForCurrency(selectedCurrency);
|
||||
if (sharedViewModel != null) {
|
||||
CurrencyType currencyType = SystemParamsOperation.getInstance().getCurrencyType();
|
||||
if (currencyType != null) {
|
||||
sharedViewModel.set_currencyText(currencyType.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String selected = normalizeCurrency(selectedCurrency);
|
||||
String secondaryCurrency = normalizeCurrency(SystemParamsOperation.getInstance().getThirdHostCurrency());
|
||||
boolean dualCurrencyEnabled = SystemParamsOperation.getInstance().getDuelCurrencyStatus();
|
||||
|
||||
boolean useSecondaryCardHost = dualCurrencyEnabled
|
||||
&& !TextUtils.isEmpty(SystemParamsOperation.getInstance().getThirdHostName())
|
||||
public static void applyHostForCurrency(String selectedCurrency) {
|
||||
cachePrimaryCardHostStatic();
|
||||
|
||||
SystemParamsOperation sp = SystemParamsOperation.getInstance();
|
||||
String selected = normalizeCurrencyStatic(selectedCurrency);
|
||||
String secondaryCurrency = normalizeCurrencyStatic(sp.getThirdHostCurrency());
|
||||
|
||||
boolean useSecondaryCardHost = !TextUtils.isEmpty(sp.getThirdHostName())
|
||||
&& !TextUtils.isEmpty(secondaryCurrency)
|
||||
&& secondaryCurrency.equals(selected);
|
||||
|
||||
if (useSecondaryCardHost) {
|
||||
SystemParamsOperation.getInstance().setHostName(SystemParamsOperation.getInstance().getThirdHostName());
|
||||
SystemParamsOperation.getInstance().setTerminalId(SystemParamsOperation.getInstance().getThirdHostTerminalId());
|
||||
SystemParamsOperation.getInstance().setMerchantId(SystemParamsOperation.getInstance().getThirdHostMerchantId());
|
||||
SystemParamsOperation.getInstance().setIpAddress(SystemParamsOperation.getInstance().getThirdHostIpAddress());
|
||||
SystemParamsOperation.getInstance().setSecIpAddress(SystemParamsOperation.getInstance().getThirdHostSecIpAddress());
|
||||
sp.setHostName(sp.getThirdHostName());
|
||||
sp.setTerminalId(sp.getThirdHostTerminalId());
|
||||
sp.setMerchantId(sp.getThirdHostMerchantId());
|
||||
sp.setIpAddress(sp.getThirdHostIpAddress());
|
||||
sp.setSecIpAddress(sp.getThirdHostSecIpAddress());
|
||||
sp.setCurrencyType(toCurrencyTypeStatic(selected));
|
||||
} else {
|
||||
SystemParamsOperation.getInstance().setHostName(primaryHostName);
|
||||
SystemParamsOperation.getInstance().setTerminalId(primaryTid);
|
||||
SystemParamsOperation.getInstance().setMerchantId(primaryMid);
|
||||
SystemParamsOperation.getInstance().setIpAddress(primaryIp);
|
||||
SystemParamsOperation.getInstance().setSecIpAddress(primarySecIp);
|
||||
}
|
||||
|
||||
CurrencyType currencyType = useSecondaryCardHost ? toCurrencyType(selected) : primaryCurrency;
|
||||
SystemParamsOperation.getInstance().setCurrencyType(currencyType);
|
||||
if (sharedViewModel != null) {
|
||||
sharedViewModel.set_currencyText(currencyType.name);
|
||||
sp.setHostName(globalPrimaryHostName);
|
||||
sp.setTerminalId(globalPrimaryTid);
|
||||
sp.setMerchantId(globalPrimaryMid);
|
||||
sp.setIpAddress(globalPrimaryIp);
|
||||
sp.setSecIpAddress(globalPrimarySecIp);
|
||||
sp.setCurrencyType(globalPrimaryCurrency == null ? CurrencyType.MMK : globalPrimaryCurrency);
|
||||
}
|
||||
}
|
||||
|
||||
private void cachePrimaryCardHostIfNeeded() {
|
||||
cachePrimaryCardHostStatic();
|
||||
primaryHostName = globalPrimaryHostName;
|
||||
primaryTid = globalPrimaryTid;
|
||||
primaryMid = globalPrimaryMid;
|
||||
primaryIp = globalPrimaryIp;
|
||||
primarySecIp = globalPrimarySecIp;
|
||||
primaryCurrency = globalPrimaryCurrency;
|
||||
}
|
||||
|
||||
private static void cachePrimaryCardHostStatic() {
|
||||
SystemParamsOperation sp = SystemParamsOperation.getInstance();
|
||||
String currentHostName = sp.getHostName();
|
||||
String secondaryHostName = sp.getThirdHostName();
|
||||
@ -144,17 +160,14 @@ public class CurrencySelectionHelper {
|
||||
globalPrimaryCurrency = activeCurrency == null ? CurrencyType.MMK : activeCurrency;
|
||||
globalPrimaryHostCached = true;
|
||||
}
|
||||
|
||||
primaryHostName = globalPrimaryHostName;
|
||||
primaryTid = globalPrimaryTid;
|
||||
primaryMid = globalPrimaryMid;
|
||||
primaryIp = globalPrimaryIp;
|
||||
primarySecIp = globalPrimarySecIp;
|
||||
primaryCurrency = globalPrimaryCurrency;
|
||||
}
|
||||
|
||||
private CurrencyType toCurrencyType(String value) {
|
||||
String normalized = normalizeCurrency(value);
|
||||
return toCurrencyTypeStatic(value);
|
||||
}
|
||||
|
||||
private static CurrencyType toCurrencyTypeStatic(String value) {
|
||||
String normalized = normalizeCurrencyStatic(value);
|
||||
try {
|
||||
return CurrencyType.valueOf(normalized);
|
||||
} catch (Exception ignored) {
|
||||
@ -163,6 +176,10 @@ public class CurrencySelectionHelper {
|
||||
}
|
||||
|
||||
private String normalizeCurrency(String raw) {
|
||||
return normalizeCurrencyStatic(raw);
|
||||
}
|
||||
|
||||
private static String normalizeCurrencyStatic(String raw) {
|
||||
if (TextUtils.isEmpty(raw)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user