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