settlement fix
This commit is contained in:
parent
07227ca9bb
commit
aabab54048
@ -32,6 +32,7 @@ import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
|
|||||||
import com.utsmm.kbz.util.ecr.CoreUtils;
|
import com.utsmm.kbz.util.ecr.CoreUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
|
||||||
public class SettlementTransactionFragment extends DataBindingFragment implements DataBindingFragment.BackPressCallback{
|
public class SettlementTransactionFragment extends DataBindingFragment implements DataBindingFragment.BackPressCallback{
|
||||||
@ -54,6 +55,20 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
|||||||
long refundAmount = 0;
|
long refundAmount = 0;
|
||||||
long caAmount = 0;
|
long caAmount = 0;
|
||||||
|
|
||||||
|
private static class CurrencyBucket {
|
||||||
|
int saleCount;
|
||||||
|
long saleAmount;
|
||||||
|
int preCount;
|
||||||
|
long preAmount;
|
||||||
|
int refundCount;
|
||||||
|
long refundAmount;
|
||||||
|
int caCount;
|
||||||
|
long caAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final CurrencyBucket mmkBucket = new CurrencyBucket();
|
||||||
|
private final CurrencyBucket usdBucket = new CurrencyBucket();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initViewModel() {
|
protected void initViewModel() {
|
||||||
settlementViewModel = getFragmentScopeViewModel(SettlementViewModel.class);
|
settlementViewModel = getFragmentScopeViewModel(SettlementViewModel.class);
|
||||||
@ -174,6 +189,7 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
|||||||
caCount = payDetail.getSettleDataObj().getCashAdvanceCount();
|
caCount = payDetail.getSettleDataObj().getCashAdvanceCount();
|
||||||
caAmount = payDetail.getSettleDataObj().getCashAdvanceAmount();
|
caAmount = payDetail.getSettleDataObj().getCashAdvanceAmount();
|
||||||
|
|
||||||
|
applyStoredCurrencyBreakdown(payDetail);
|
||||||
|
|
||||||
settlementViewModel.isNoData.setValue(false);
|
settlementViewModel.isNoData.setValue(false);
|
||||||
|
|
||||||
@ -226,20 +242,24 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
|||||||
if((transType == TransactionType.SALE || "SALE".equalsIgnoreCase(transName)) && !payDetail.isCanceled){
|
if((transType == TransactionType.SALE || "SALE".equalsIgnoreCase(transName)) && !payDetail.isCanceled){
|
||||||
saleCount ++;
|
saleCount ++;
|
||||||
saleAmount += payDetail.getAmount();
|
saleAmount += payDetail.getAmount();
|
||||||
|
addToCurrencyBucket(payDetail, BucketType.SALE);
|
||||||
} else if((transType == TransactionType.PRE_SALE_COMPLETE
|
} else if((transType == TransactionType.PRE_SALE_COMPLETE
|
||||||
|| "PREAUTH COMPLETION".equalsIgnoreCase(transName)
|
|| "PREAUTH COMPLETION".equalsIgnoreCase(transName)
|
||||||
|| "PRE_AUTH_COMPLETE".equalsIgnoreCase(transName)) && !payDetail.isCanceled){
|
|| "PRE_AUTH_COMPLETE".equalsIgnoreCase(transName)) && !payDetail.isCanceled){
|
||||||
preCount ++;
|
preCount ++;
|
||||||
preAmount += payDetail.getAmount();
|
preAmount += payDetail.getAmount();
|
||||||
|
addToCurrencyBucket(payDetail, BucketType.PRE_AUTH_COMPLETE);
|
||||||
}
|
}
|
||||||
else if(transType == TransactionType.REFUND || "REFUND".equalsIgnoreCase(transName)){
|
else if(transType == TransactionType.REFUND || "REFUND".equalsIgnoreCase(transName)){
|
||||||
refundCount ++;
|
refundCount ++;
|
||||||
refundAmount += payDetail.getAmount();
|
refundAmount += payDetail.getAmount();
|
||||||
|
addToCurrencyBucket(payDetail, BucketType.REFUND);
|
||||||
}else if(transType == TransactionType.CASH_ADVANCE
|
}else if(transType == TransactionType.CASH_ADVANCE
|
||||||
|| "CASH_OUT".equalsIgnoreCase(transName)
|
|| "CASH_OUT".equalsIgnoreCase(transName)
|
||||||
|| "CASH_ADVANCE".equalsIgnoreCase(transName)){
|
|| "CASH_ADVANCE".equalsIgnoreCase(transName)){
|
||||||
caCount ++;
|
caCount ++;
|
||||||
caAmount += payDetail.getAmount();
|
caAmount += payDetail.getAmount();
|
||||||
|
addToCurrencyBucket(payDetail, BucketType.CASH_ADVANCE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
long totalAmount = saleAmount + preAmount + caAmount;
|
long totalAmount = saleAmount + preAmount + caAmount;
|
||||||
@ -280,6 +300,8 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
|||||||
preAmount = 0L;
|
preAmount = 0L;
|
||||||
refundAmount = 0L;
|
refundAmount = 0L;
|
||||||
caAmount = 0L;
|
caAmount = 0L;
|
||||||
|
resetCurrencyBucket(mmkBucket);
|
||||||
|
resetCurrencyBucket(usdBucket);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setSettlementViewModelData(int saleCount,long saleAmount,int preCount,long preAmount,int refundCount,long refundAmount,int caCount,long caAmount) {
|
private void setSettlementViewModelData(int saleCount,long saleAmount,int preCount,long preAmount,int refundCount,long refundAmount,int caCount,long caAmount) {
|
||||||
@ -291,6 +313,10 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
|||||||
settlementViewModel.refund_amount.setValue(refundAmount);
|
settlementViewModel.refund_amount.setValue(refundAmount);
|
||||||
settlementViewModel.ca_count.setValue(caCount);
|
settlementViewModel.ca_count.setValue(caCount);
|
||||||
settlementViewModel.ca_amount.setValue(caAmount);
|
settlementViewModel.ca_amount.setValue(caAmount);
|
||||||
|
settlementViewModel.sale_breakdown.setValue(buildBreakdownText(mmkBucket.saleCount, mmkBucket.saleAmount, usdBucket.saleCount, usdBucket.saleAmount));
|
||||||
|
settlementViewModel.pre_breakdown.setValue(buildBreakdownText(mmkBucket.preCount, mmkBucket.preAmount, usdBucket.preCount, usdBucket.preAmount));
|
||||||
|
settlementViewModel.refund_breakdown.setValue(buildBreakdownText(mmkBucket.refundCount, mmkBucket.refundAmount, usdBucket.refundCount, usdBucket.refundAmount));
|
||||||
|
settlementViewModel.ca_breakdown.setValue(buildBreakdownText(mmkBucket.caCount, mmkBucket.caAmount, usdBucket.caCount, usdBucket.caAmount));
|
||||||
|
|
||||||
if(sharedViewModel.getTransMenu().getValue() == TransMenu.REVIEW_BATCH) {
|
if(sharedViewModel.getTransMenu().getValue() == TransMenu.REVIEW_BATCH) {
|
||||||
SettleData settleData = new SettleData(saleCount,saleAmount,preCount,preAmount,refundCount,refundAmount,caCount,caAmount);
|
SettleData settleData = new SettleData(saleCount,saleAmount,preCount,preAmount,refundCount,refundAmount,caCount,caAmount);
|
||||||
@ -304,6 +330,116 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private enum BucketType {
|
||||||
|
SALE,
|
||||||
|
PRE_AUTH_COMPLETE,
|
||||||
|
REFUND,
|
||||||
|
CASH_ADVANCE
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetCurrencyBucket(CurrencyBucket bucket) {
|
||||||
|
bucket.saleCount = 0;
|
||||||
|
bucket.saleAmount = 0L;
|
||||||
|
bucket.preCount = 0;
|
||||||
|
bucket.preAmount = 0L;
|
||||||
|
bucket.refundCount = 0;
|
||||||
|
bucket.refundAmount = 0L;
|
||||||
|
bucket.caCount = 0;
|
||||||
|
bucket.caAmount = 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addToCurrencyBucket(PayDetail payDetail, BucketType bucketType) {
|
||||||
|
CurrencyBucket bucket = getCurrencyBucket(payDetail.getCurrencyCode());
|
||||||
|
long amount = payDetail.getAmount();
|
||||||
|
switch (bucketType) {
|
||||||
|
case SALE:
|
||||||
|
bucket.saleCount++;
|
||||||
|
bucket.saleAmount += amount;
|
||||||
|
break;
|
||||||
|
case PRE_AUTH_COMPLETE:
|
||||||
|
bucket.preCount++;
|
||||||
|
bucket.preAmount += amount;
|
||||||
|
break;
|
||||||
|
case REFUND:
|
||||||
|
bucket.refundCount++;
|
||||||
|
bucket.refundAmount += amount;
|
||||||
|
break;
|
||||||
|
case CASH_ADVANCE:
|
||||||
|
bucket.caCount++;
|
||||||
|
bucket.caAmount += amount;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private CurrencyBucket getCurrencyBucket(String currencyCode) {
|
||||||
|
return "USD".equals(normalizeCurrency(currencyCode)) ? usdBucket : mmkBucket;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyStoredCurrencyBreakdown(PayDetail payDetail) {
|
||||||
|
resetCurrencyBucket(mmkBucket);
|
||||||
|
resetCurrencyBucket(usdBucket);
|
||||||
|
|
||||||
|
List<com.utsmyanmar.paylibs.model.CardSettleData> cardSettleDataList = payDetail.getCardSettleData();
|
||||||
|
if (cardSettleDataList != null && !cardSettleDataList.isEmpty()) {
|
||||||
|
for (com.utsmyanmar.paylibs.model.CardSettleData item : cardSettleDataList) {
|
||||||
|
applyStoredCardSettle(item);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String normalizedCurrency = normalizeCurrency(payDetail.getCurrencyCode());
|
||||||
|
CurrencyBucket bucket = "USD".equals(normalizedCurrency) ? usdBucket : mmkBucket;
|
||||||
|
bucket.saleCount = saleCount;
|
||||||
|
bucket.saleAmount = saleAmount;
|
||||||
|
bucket.preCount = preCount;
|
||||||
|
bucket.preAmount = preAmount;
|
||||||
|
bucket.refundCount = refundCount;
|
||||||
|
bucket.refundAmount = refundAmount;
|
||||||
|
bucket.caCount = caCount;
|
||||||
|
bucket.caAmount = caAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyStoredCardSettle(com.utsmyanmar.paylibs.model.CardSettleData item) {
|
||||||
|
CurrencyBucket bucket = getCurrencyBucket(item.getCurrencyCode());
|
||||||
|
String transType = item.getTransType() == null ? "" : item.getTransType().trim().toUpperCase(Locale.getDefault());
|
||||||
|
|
||||||
|
if ("SALE".equals(transType)) {
|
||||||
|
bucket.saleCount++;
|
||||||
|
bucket.saleAmount += item.getAmount();
|
||||||
|
} else if ("PREAUTH COMPLETION".equals(transType) || "PRE_AUTH_COMPLETE".equals(transType)) {
|
||||||
|
bucket.preCount++;
|
||||||
|
bucket.preAmount += item.getAmount();
|
||||||
|
} else if ("REFUND".equals(transType)) {
|
||||||
|
bucket.refundCount++;
|
||||||
|
bucket.refundAmount += item.getAmount();
|
||||||
|
} else if ("CASH_OUT".equals(transType) || "CASH_ADVANCE".equals(transType)) {
|
||||||
|
bucket.caCount++;
|
||||||
|
bucket.caAmount += item.getAmount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildBreakdownText(int mmkCount, long mmkAmount, int usdCount, long usdAmount) {
|
||||||
|
return "MMK " + mmkCount + " / " + POSUtil.getInstance().getDecimalAmountSeparatorFormat(mmkAmount)
|
||||||
|
+ " USD " + usdCount + " / " + POSUtil.getInstance().getDecimalAmountSeparatorFormat(usdAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String normalizeCurrency(String currencyCode) {
|
||||||
|
if (currencyCode == null) {
|
||||||
|
return "MMK";
|
||||||
|
}
|
||||||
|
|
||||||
|
String value = currencyCode.trim().toUpperCase(Locale.getDefault());
|
||||||
|
switch (value) {
|
||||||
|
case "840":
|
||||||
|
case "USD":
|
||||||
|
return "USD";
|
||||||
|
case "104":
|
||||||
|
case "MMK":
|
||||||
|
default:
|
||||||
|
return "MMK";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void navigateMainScreen(){
|
private void navigateMainScreen(){
|
||||||
routeId = R.id.action_settlementTransactionFragment_to_nav_main;
|
routeId = R.id.action_settlementTransactionFragment_to_nav_main;
|
||||||
|
|||||||
@ -75,15 +75,19 @@ public class SettlementViewModel extends ViewModel {
|
|||||||
|
|
||||||
public SingleLiveEvent<Integer> sale_count = new SingleLiveEvent<>();
|
public SingleLiveEvent<Integer> sale_count = new SingleLiveEvent<>();
|
||||||
public SingleLiveEvent<Long> sale_amount = new SingleLiveEvent<>();
|
public SingleLiveEvent<Long> sale_amount = new SingleLiveEvent<>();
|
||||||
|
public SingleLiveEvent<String> sale_breakdown = new SingleLiveEvent<>();
|
||||||
|
|
||||||
public SingleLiveEvent<Integer> pre_count = new SingleLiveEvent<>();
|
public SingleLiveEvent<Integer> pre_count = new SingleLiveEvent<>();
|
||||||
public SingleLiveEvent<Long> pre_amount = new SingleLiveEvent<>();
|
public SingleLiveEvent<Long> pre_amount = new SingleLiveEvent<>();
|
||||||
|
public SingleLiveEvent<String> pre_breakdown = new SingleLiveEvent<>();
|
||||||
|
|
||||||
public SingleLiveEvent<Integer> refund_count = new SingleLiveEvent<>();
|
public SingleLiveEvent<Integer> refund_count = new SingleLiveEvent<>();
|
||||||
public SingleLiveEvent<Long> refund_amount = new SingleLiveEvent<>();
|
public SingleLiveEvent<Long> refund_amount = new SingleLiveEvent<>();
|
||||||
|
public SingleLiveEvent<String> refund_breakdown = new SingleLiveEvent<>();
|
||||||
|
|
||||||
public SingleLiveEvent<Integer> ca_count = new SingleLiveEvent<>();
|
public SingleLiveEvent<Integer> ca_count = new SingleLiveEvent<>();
|
||||||
public SingleLiveEvent<Long> ca_amount = new SingleLiveEvent<>();
|
public SingleLiveEvent<Long> ca_amount = new SingleLiveEvent<>();
|
||||||
|
public SingleLiveEvent<String> ca_breakdown = new SingleLiveEvent<>();
|
||||||
|
|
||||||
public SingleLiveEvent<SettlementType> settlementType = new SingleLiveEvent<>();
|
public SingleLiveEvent<SettlementType> settlementType = new SingleLiveEvent<>();
|
||||||
|
|
||||||
@ -117,12 +121,16 @@ public class SettlementViewModel extends ViewModel {
|
|||||||
|
|
||||||
sale_count.setValue(0);
|
sale_count.setValue(0);
|
||||||
sale_amount.setValue(0L);
|
sale_amount.setValue(0L);
|
||||||
|
sale_breakdown.setValue("");
|
||||||
pre_count.setValue(0);
|
pre_count.setValue(0);
|
||||||
pre_amount.setValue(0L);
|
pre_amount.setValue(0L);
|
||||||
|
pre_breakdown.setValue("");
|
||||||
refund_count.setValue(0);
|
refund_count.setValue(0);
|
||||||
refund_amount.setValue(0L);
|
refund_amount.setValue(0L);
|
||||||
|
refund_breakdown.setValue("");
|
||||||
ca_count.setValue(0);
|
ca_count.setValue(0);
|
||||||
ca_amount.setValue(0L);
|
ca_amount.setValue(0L);
|
||||||
|
ca_breakdown.setValue("");
|
||||||
|
|
||||||
isoMsgX = new ISOMsgX.ISOMsgXBuilder(ISOVersion.VERSION_1993, ISOMode.BOTH_HEADER_TPDU,HostName.BPC)
|
isoMsgX = new ISOMsgX.ISOMsgXBuilder(ISOVersion.VERSION_1993, ISOMode.BOTH_HEADER_TPDU,HostName.BPC)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@ -74,11 +74,16 @@
|
|||||||
android:layout_marginTop="19dp"
|
android:layout_marginTop="19dp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="vertical"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -96,7 +101,6 @@
|
|||||||
android:fontFamily="@font/rubik_regular"
|
android:fontFamily="@font/rubik_regular"
|
||||||
android:text="@={settleViewModel.sale_count+``}"
|
android:text="@={settleViewModel.sale_count+``}"
|
||||||
tools:text="5"
|
tools:text="5"
|
||||||
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -109,6 +113,17 @@
|
|||||||
tools:text="65.00"
|
tools:text="65.00"
|
||||||
android:textAlignment="textEnd"
|
android:textAlignment="textEnd"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:fontFamily="@font/rubik_regular"
|
||||||
|
android:text="@{settleViewModel.sale_breakdown}"
|
||||||
|
android:textColor="@color/colorTextContent"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text="MMK 2 / 10,000.00 USD 1 / 25.00" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -122,11 +137,16 @@
|
|||||||
android:layout_marginTop="19dp"
|
android:layout_marginTop="19dp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="vertical"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -144,7 +164,6 @@
|
|||||||
android:fontFamily="@font/rubik_regular"
|
android:fontFamily="@font/rubik_regular"
|
||||||
android:text="@={settleViewModel.pre_count+``}"
|
android:text="@={settleViewModel.pre_count+``}"
|
||||||
tools:text="0"
|
tools:text="0"
|
||||||
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -157,6 +176,17 @@
|
|||||||
tools:text="0.00"
|
tools:text="0.00"
|
||||||
android:textAlignment="textEnd"
|
android:textAlignment="textEnd"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:fontFamily="@font/rubik_regular"
|
||||||
|
android:text="@{settleViewModel.pre_breakdown}"
|
||||||
|
android:textColor="@color/colorTextContent"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text="MMK 1 / 8,000.00 USD 1 / 15.00" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -170,11 +200,16 @@
|
|||||||
android:layout_marginTop="19dp"
|
android:layout_marginTop="19dp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="vertical"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -190,10 +225,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:fontFamily="@font/rubik_regular"
|
android:fontFamily="@font/rubik_regular"
|
||||||
|
|
||||||
android:text="@={settleViewModel.refund_count+``}"
|
android:text="@={settleViewModel.refund_count+``}"
|
||||||
tools:text="0"
|
tools:text="0"
|
||||||
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -206,6 +239,17 @@
|
|||||||
tools:text="0.00"
|
tools:text="0.00"
|
||||||
android:textAlignment="textEnd"
|
android:textAlignment="textEnd"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:fontFamily="@font/rubik_regular"
|
||||||
|
android:text="@{settleViewModel.refund_breakdown}"
|
||||||
|
android:textColor="@color/colorTextContent"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text="MMK 0 / 0.00 USD 1 / 10.00" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -219,12 +263,17 @@
|
|||||||
android:layout_marginTop="19dp"
|
android:layout_marginTop="19dp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="vertical"
|
||||||
android:visibility="@{settleViewModel.ca_count > 0 ? 0 : 8}"
|
android:visibility="@{settleViewModel.ca_count > 0 ? 0 : 8}"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -240,10 +289,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:fontFamily="@font/rubik_regular"
|
android:fontFamily="@font/rubik_regular"
|
||||||
|
|
||||||
android:text="@={settleViewModel.ca_count+``}"
|
android:text="@={settleViewModel.ca_count+``}"
|
||||||
tools:text="0"
|
tools:text="0"
|
||||||
|
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -256,6 +303,17 @@
|
|||||||
tools:text="0.00"
|
tools:text="0.00"
|
||||||
android:textAlignment="textEnd"
|
android:textAlignment="textEnd"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:fontFamily="@font/rubik_regular"
|
||||||
|
android:text="@{settleViewModel.ca_breakdown}"
|
||||||
|
android:textColor="@color/colorTextContent"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text="MMK 1 / 5,000.00 USD 0 / 0.00" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,7 @@ public class CardSettleData implements Serializable {
|
|||||||
private String expDate;
|
private String expDate;
|
||||||
private String invoiceNum;
|
private String invoiceNum;
|
||||||
private String transType;
|
private String transType;
|
||||||
|
private String currencyCode;
|
||||||
|
|
||||||
private long amount;
|
private long amount;
|
||||||
|
|
||||||
@ -22,12 +23,13 @@ public class CardSettleData implements Serializable {
|
|||||||
public CardSettleData() {
|
public CardSettleData() {
|
||||||
|
|
||||||
}
|
}
|
||||||
public CardSettleData(String cardType, String cardNum, String expDate, String invoiceNum, String transType, long amount, String transDate, String transTime, String approvalCode) {
|
public CardSettleData(String cardType, String cardNum, String expDate, String invoiceNum, String transType, String currencyCode, long amount, String transDate, String transTime, String approvalCode) {
|
||||||
this.cardType = cardType;
|
this.cardType = cardType;
|
||||||
this.cardNum = cardNum;
|
this.cardNum = cardNum;
|
||||||
this.expDate = expDate;
|
this.expDate = expDate;
|
||||||
this.invoiceNum = invoiceNum;
|
this.invoiceNum = invoiceNum;
|
||||||
this.transType = transType;
|
this.transType = transType;
|
||||||
|
this.currencyCode = currencyCode;
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
this.transDate = transDate;
|
this.transDate = transDate;
|
||||||
this.transTime = transTime;
|
this.transTime = transTime;
|
||||||
@ -54,6 +56,10 @@ public class CardSettleData implements Serializable {
|
|||||||
this.transType = transType;
|
this.transType = transType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCurrencyCode(String currencyCode) {
|
||||||
|
this.currencyCode = currencyCode;
|
||||||
|
}
|
||||||
|
|
||||||
public void setAmount(long amount) {
|
public void setAmount(long amount) {
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
}
|
}
|
||||||
@ -86,6 +92,10 @@ public class CardSettleData implements Serializable {
|
|||||||
return transType;
|
return transType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getCurrencyCode() {
|
||||||
|
return currencyCode;
|
||||||
|
}
|
||||||
|
|
||||||
public long getAmount() {
|
public long getAmount() {
|
||||||
return amount;
|
return amount;
|
||||||
}
|
}
|
||||||
@ -115,6 +125,7 @@ public class CardSettleData implements Serializable {
|
|||||||
cardSettleData.setExpDate(pay.getEXPDate());
|
cardSettleData.setExpDate(pay.getEXPDate());
|
||||||
cardSettleData.setInvoiceNum(pay.getInvoiceNo());
|
cardSettleData.setInvoiceNum(pay.getInvoiceNo());
|
||||||
cardSettleData.setTransType(pay.getTransType());
|
cardSettleData.setTransType(pay.getTransType());
|
||||||
|
cardSettleData.setCurrencyCode(pay.getCurrencyCode());
|
||||||
cardSettleData.setAmount(pay.getAmount());
|
cardSettleData.setAmount(pay.getAmount());
|
||||||
cardSettleData.setTransDate(pay.getTransDate());
|
cardSettleData.setTransDate(pay.getTransDate());
|
||||||
cardSettleData.setTransTime(pay.getTransTime());
|
cardSettleData.setTransTime(pay.getTransTime());
|
||||||
|
|||||||
@ -212,23 +212,34 @@ public abstract class BaseXPrint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void printTransDetailSettlement(PayDetail payDetail) {
|
protected void printTransDetailSettlement(PayDetail payDetail) {
|
||||||
|
|
||||||
|
|
||||||
SettleData settleData = payDetail.getSettleDataObj();
|
SettleData settleData = payDetail.getSettleDataObj();
|
||||||
int totalCount = settleData.getSaleCount() + settleData.getPreAuthCompCount() + settleData.getRefundCount() + settleData.getCashAdvanceCount();
|
List<CardSettleData> cardSettleDataList = payDetail.getCardSettleData();
|
||||||
long totalAmount = settleData.getSaleAmount() + settleData.getPreAuthCompAmount() + settleData.getCashAdvanceAmount();
|
CurrencySettlementSummary mmkSummary = new CurrencySettlementSummary();
|
||||||
|
CurrencySettlementSummary usdSummary = new CurrencySettlementSummary();
|
||||||
|
|
||||||
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
|
if (cardSettleDataList != null && !cardSettleDataList.isEmpty()) {
|
||||||
print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()));
|
for (CardSettleData cardSettleData : cardSettleDataList) {
|
||||||
print3ColumnsString("PREAUTH COMP ", countStringFormat(settleData.getPreAuthCompCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getPreAuthCompAmount()));
|
CurrencySettlementSummary summary = "USD".equals(normalizeSettlementCurrency(cardSettleData.getCurrencyCode())) ? usdSummary : mmkSummary;
|
||||||
if (settleData.getCashAdvanceCount() != 0)
|
applyCardSettlementSummary(summary, cardSettleData);
|
||||||
print3ColumnsString("CASH ADVANCE ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount()));
|
}
|
||||||
print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount()));
|
} else {
|
||||||
print3ColumnsString("TOTAL"+ "(" + "MMK" +")" + " ", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount));
|
mmkSummary.saleCount = settleData.getSaleCount();
|
||||||
|
mmkSummary.saleAmount = settleData.getSaleAmount();
|
||||||
|
mmkSummary.preAuthCompCount = settleData.getPreAuthCompCount();
|
||||||
|
mmkSummary.preAuthCompAmount = settleData.getPreAuthCompAmount();
|
||||||
|
mmkSummary.refundCount = settleData.getRefundCount();
|
||||||
|
mmkSummary.refundAmount = settleData.getRefundAmount();
|
||||||
|
mmkSummary.cashAdvanceCount = settleData.getCashAdvanceCount();
|
||||||
|
mmkSummary.cashAdvanceAmount = settleData.getCashAdvanceAmount();
|
||||||
|
}
|
||||||
|
|
||||||
|
printSettlementCurrencySection("MMK", mmkSummary);
|
||||||
|
if (usdSummary.hasAnyValue()) {
|
||||||
|
emptyLine(1);
|
||||||
|
printSettlementCurrencySection("USD", usdSummary);
|
||||||
|
}
|
||||||
|
|
||||||
emptyLine(2);
|
emptyLine(2);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void printTransDetailSettlement(PayDetail payDetail, List<CardSettleData> cardSettleDataList) {
|
protected void printTransDetailSettlement(PayDetail payDetail, List<CardSettleData> cardSettleDataList) {
|
||||||
@ -276,6 +287,72 @@ public abstract class BaseXPrint {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void printSettlementCurrencySection(String currencyLabel, CurrencySettlementSummary summary) {
|
||||||
|
if (!summary.hasAnyValue()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int totalCount = summary.saleCount + summary.preAuthCompCount + summary.refundCount + summary.cashAdvanceCount;
|
||||||
|
long totalAmount = summary.saleAmount + summary.preAuthCompAmount + summary.cashAdvanceAmount - summary.refundAmount;
|
||||||
|
|
||||||
|
printString("CURRENCY : " + currencyLabel, true);
|
||||||
|
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
|
||||||
|
print3ColumnsString("SALE ", countStringFormat(summary.saleCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.saleAmount));
|
||||||
|
print3ColumnsString("PREAUTH COMP ", countStringFormat(summary.preAuthCompCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.preAuthCompAmount));
|
||||||
|
if (summary.cashAdvanceCount != 0) {
|
||||||
|
print3ColumnsString("CASH ADVANCE ", countStringFormat(summary.cashAdvanceCount), PrintUtils.getInstance().getSeparatorNumberFormat(summary.cashAdvanceAmount));
|
||||||
|
}
|
||||||
|
print3ColumnsString("REFUND ", countStringFormat(summary.refundCount), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(summary.refundAmount));
|
||||||
|
print3ColumnsString("TOTAL(" + currencyLabel + ")", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyCardSettlementSummary(CurrencySettlementSummary summary, CardSettleData cardSettleData) {
|
||||||
|
String transType = cardSettleData.getTransType() == null ? "" : cardSettleData.getTransType().trim().toUpperCase(Locale.getDefault());
|
||||||
|
long amount = cardSettleData.getAmount();
|
||||||
|
|
||||||
|
if ("SALE".equals(transType)) {
|
||||||
|
summary.saleCount++;
|
||||||
|
summary.saleAmount += amount;
|
||||||
|
} else if ("PREAUTH COMPLETION".equals(transType) || "PRE_AUTH_COMPLETE".equals(transType)) {
|
||||||
|
summary.preAuthCompCount++;
|
||||||
|
summary.preAuthCompAmount += amount;
|
||||||
|
} else if ("REFUND".equals(transType)) {
|
||||||
|
summary.refundCount++;
|
||||||
|
summary.refundAmount += amount;
|
||||||
|
} else if ("CASH_OUT".equals(transType) || "CASH_ADVANCE".equals(transType)) {
|
||||||
|
summary.cashAdvanceCount++;
|
||||||
|
summary.cashAdvanceAmount += amount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String normalizeSettlementCurrency(String currencyCode) {
|
||||||
|
if (currencyCode == null) {
|
||||||
|
return "MMK";
|
||||||
|
}
|
||||||
|
|
||||||
|
String value = currencyCode.trim().toUpperCase(Locale.getDefault());
|
||||||
|
if ("840".equals(value) || "USD".equals(value)) {
|
||||||
|
return "USD";
|
||||||
|
}
|
||||||
|
return "MMK";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class CurrencySettlementSummary {
|
||||||
|
int saleCount;
|
||||||
|
long saleAmount;
|
||||||
|
int preAuthCompCount;
|
||||||
|
long preAuthCompAmount;
|
||||||
|
int refundCount;
|
||||||
|
long refundAmount;
|
||||||
|
int cashAdvanceCount;
|
||||||
|
long cashAdvanceAmount;
|
||||||
|
|
||||||
|
boolean hasAnyValue() {
|
||||||
|
return saleCount > 0 || preAuthCompCount > 0 || refundCount > 0 || cashAdvanceCount > 0
|
||||||
|
|| saleAmount > 0 || preAuthCompAmount > 0 || refundAmount > 0 || cashAdvanceAmount > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private String currencyCodeToText(String currencyCode) {
|
private String currencyCodeToText(String currencyCode) {
|
||||||
String currencyText = "MMK";
|
String currencyText = "MMK";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user