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 java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
|
||||
public class SettlementTransactionFragment extends DataBindingFragment implements DataBindingFragment.BackPressCallback{
|
||||
@ -54,6 +55,20 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
long refundAmount = 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
|
||||
protected void initViewModel() {
|
||||
settlementViewModel = getFragmentScopeViewModel(SettlementViewModel.class);
|
||||
@ -174,6 +189,7 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
caCount = payDetail.getSettleDataObj().getCashAdvanceCount();
|
||||
caAmount = payDetail.getSettleDataObj().getCashAdvanceAmount();
|
||||
|
||||
applyStoredCurrencyBreakdown(payDetail);
|
||||
|
||||
settlementViewModel.isNoData.setValue(false);
|
||||
|
||||
@ -226,20 +242,24 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
if((transType == TransactionType.SALE || "SALE".equalsIgnoreCase(transName)) && !payDetail.isCanceled){
|
||||
saleCount ++;
|
||||
saleAmount += payDetail.getAmount();
|
||||
addToCurrencyBucket(payDetail, BucketType.SALE);
|
||||
} else if((transType == TransactionType.PRE_SALE_COMPLETE
|
||||
|| "PREAUTH COMPLETION".equalsIgnoreCase(transName)
|
||||
|| "PRE_AUTH_COMPLETE".equalsIgnoreCase(transName)) && !payDetail.isCanceled){
|
||||
preCount ++;
|
||||
preAmount += payDetail.getAmount();
|
||||
addToCurrencyBucket(payDetail, BucketType.PRE_AUTH_COMPLETE);
|
||||
}
|
||||
else if(transType == TransactionType.REFUND || "REFUND".equalsIgnoreCase(transName)){
|
||||
refundCount ++;
|
||||
refundAmount += payDetail.getAmount();
|
||||
addToCurrencyBucket(payDetail, BucketType.REFUND);
|
||||
}else if(transType == TransactionType.CASH_ADVANCE
|
||||
|| "CASH_OUT".equalsIgnoreCase(transName)
|
||||
|| "CASH_ADVANCE".equalsIgnoreCase(transName)){
|
||||
caCount ++;
|
||||
caAmount += payDetail.getAmount();
|
||||
addToCurrencyBucket(payDetail, BucketType.CASH_ADVANCE);
|
||||
}
|
||||
}
|
||||
long totalAmount = saleAmount + preAmount + caAmount;
|
||||
@ -280,6 +300,8 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
preAmount = 0L;
|
||||
refundAmount = 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) {
|
||||
@ -291,6 +313,10 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
settlementViewModel.refund_amount.setValue(refundAmount);
|
||||
settlementViewModel.ca_count.setValue(caCount);
|
||||
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) {
|
||||
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(){
|
||||
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<Long> sale_amount = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<String> sale_breakdown = new SingleLiveEvent<>();
|
||||
|
||||
public SingleLiveEvent<Integer> pre_count = 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<Long> refund_amount = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<String> refund_breakdown = new SingleLiveEvent<>();
|
||||
|
||||
public SingleLiveEvent<Integer> ca_count = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<Long> ca_amount = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<String> ca_breakdown = new SingleLiveEvent<>();
|
||||
|
||||
public SingleLiveEvent<SettlementType> settlementType = new SingleLiveEvent<>();
|
||||
|
||||
@ -117,12 +121,16 @@ public class SettlementViewModel extends ViewModel {
|
||||
|
||||
sale_count.setValue(0);
|
||||
sale_amount.setValue(0L);
|
||||
sale_breakdown.setValue("");
|
||||
pre_count.setValue(0);
|
||||
pre_amount.setValue(0L);
|
||||
pre_breakdown.setValue("");
|
||||
refund_count.setValue(0);
|
||||
refund_amount.setValue(0L);
|
||||
refund_breakdown.setValue("");
|
||||
ca_count.setValue(0);
|
||||
ca_amount.setValue(0L);
|
||||
ca_breakdown.setValue("");
|
||||
|
||||
isoMsgX = new ISOMsgX.ISOMsgXBuilder(ISOVersion.VERSION_1993, ISOMode.BOTH_HEADER_TPDU,HostName.BPC)
|
||||
.build();
|
||||
|
||||
@ -74,11 +74,16 @@
|
||||
android:layout_marginTop="19dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
@ -96,7 +101,6 @@
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@={settleViewModel.sale_count+``}"
|
||||
tools:text="5"
|
||||
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
@ -109,6 +113,17 @@
|
||||
tools:text="65.00"
|
||||
android:textAlignment="textEnd"
|
||||
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>
|
||||
|
||||
@ -122,11 +137,16 @@
|
||||
android:layout_marginTop="19dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
@ -144,7 +164,6 @@
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@={settleViewModel.pre_count+``}"
|
||||
tools:text="0"
|
||||
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
@ -157,6 +176,17 @@
|
||||
tools:text="0.00"
|
||||
android:textAlignment="textEnd"
|
||||
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>
|
||||
|
||||
@ -170,11 +200,16 @@
|
||||
android:layout_marginTop="19dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
@ -190,10 +225,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
|
||||
android:text="@={settleViewModel.refund_count+``}"
|
||||
tools:text="0"
|
||||
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
@ -206,6 +239,17 @@
|
||||
tools:text="0.00"
|
||||
android:textAlignment="textEnd"
|
||||
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>
|
||||
|
||||
@ -219,12 +263,17 @@
|
||||
android:layout_marginTop="19dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{settleViewModel.ca_count > 0 ? 0 : 8}"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
@ -240,10 +289,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
|
||||
android:text="@={settleViewModel.ca_count+``}"
|
||||
tools:text="0"
|
||||
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
@ -256,6 +303,17 @@
|
||||
tools:text="0.00"
|
||||
android:textAlignment="textEnd"
|
||||
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>
|
||||
|
||||
|
||||
@ -11,6 +11,7 @@ public class CardSettleData implements Serializable {
|
||||
private String expDate;
|
||||
private String invoiceNum;
|
||||
private String transType;
|
||||
private String currencyCode;
|
||||
|
||||
private long amount;
|
||||
|
||||
@ -22,12 +23,13 @@ public class CardSettleData implements Serializable {
|
||||
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.cardNum = cardNum;
|
||||
this.expDate = expDate;
|
||||
this.invoiceNum = invoiceNum;
|
||||
this.transType = transType;
|
||||
this.currencyCode = currencyCode;
|
||||
this.amount = amount;
|
||||
this.transDate = transDate;
|
||||
this.transTime = transTime;
|
||||
@ -54,6 +56,10 @@ public class CardSettleData implements Serializable {
|
||||
this.transType = transType;
|
||||
}
|
||||
|
||||
public void setCurrencyCode(String currencyCode) {
|
||||
this.currencyCode = currencyCode;
|
||||
}
|
||||
|
||||
public void setAmount(long amount) {
|
||||
this.amount = amount;
|
||||
}
|
||||
@ -86,6 +92,10 @@ public class CardSettleData implements Serializable {
|
||||
return transType;
|
||||
}
|
||||
|
||||
public String getCurrencyCode() {
|
||||
return currencyCode;
|
||||
}
|
||||
|
||||
public long getAmount() {
|
||||
return amount;
|
||||
}
|
||||
@ -115,6 +125,7 @@ public class CardSettleData implements Serializable {
|
||||
cardSettleData.setExpDate(pay.getEXPDate());
|
||||
cardSettleData.setInvoiceNum(pay.getInvoiceNo());
|
||||
cardSettleData.setTransType(pay.getTransType());
|
||||
cardSettleData.setCurrencyCode(pay.getCurrencyCode());
|
||||
cardSettleData.setAmount(pay.getAmount());
|
||||
cardSettleData.setTransDate(pay.getTransDate());
|
||||
cardSettleData.setTransTime(pay.getTransTime());
|
||||
|
||||
@ -212,23 +212,34 @@ public abstract class BaseXPrint {
|
||||
}
|
||||
|
||||
protected void printTransDetailSettlement(PayDetail payDetail) {
|
||||
|
||||
|
||||
SettleData settleData = payDetail.getSettleDataObj();
|
||||
int totalCount = settleData.getSaleCount() + settleData.getPreAuthCompCount() + settleData.getRefundCount() + settleData.getCashAdvanceCount();
|
||||
long totalAmount = settleData.getSaleAmount() + settleData.getPreAuthCompAmount() + settleData.getCashAdvanceAmount();
|
||||
List<CardSettleData> cardSettleDataList = payDetail.getCardSettleData();
|
||||
CurrencySettlementSummary mmkSummary = new CurrencySettlementSummary();
|
||||
CurrencySettlementSummary usdSummary = new CurrencySettlementSummary();
|
||||
|
||||
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
|
||||
print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()));
|
||||
print3ColumnsString("PREAUTH COMP ", countStringFormat(settleData.getPreAuthCompCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getPreAuthCompAmount()));
|
||||
if (settleData.getCashAdvanceCount() != 0)
|
||||
print3ColumnsString("CASH ADVANCE ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount()));
|
||||
print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount()));
|
||||
print3ColumnsString("TOTAL"+ "(" + "MMK" +")" + " ", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount));
|
||||
if (cardSettleDataList != null && !cardSettleDataList.isEmpty()) {
|
||||
for (CardSettleData cardSettleData : cardSettleDataList) {
|
||||
CurrencySettlementSummary summary = "USD".equals(normalizeSettlementCurrency(cardSettleData.getCurrencyCode())) ? usdSummary : mmkSummary;
|
||||
applyCardSettlementSummary(summary, cardSettleData);
|
||||
}
|
||||
} else {
|
||||
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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
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) {
|
||||
String currencyText = "MMK";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user