settlement fix
This commit is contained in:
parent
2dd686d513
commit
0289013a58
@ -54,10 +54,12 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
int preCount = 0;
|
||||
int refundCount = 0;
|
||||
int caCount = 0;
|
||||
int voidCount = 0;
|
||||
long saleAmount = 0;
|
||||
long preAmount = 0;
|
||||
long refundAmount = 0;
|
||||
long caAmount = 0;
|
||||
long voidAmount = 0;
|
||||
|
||||
private final CurrencyBucket mmkBucket = new CurrencyBucket();
|
||||
private final CurrencyBucket usdBucket = new CurrencyBucket();
|
||||
@ -279,8 +281,20 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
settlementViewModel.getDeleteTrans(SystemParamsOperation.getInstance().getCurrentBatchNum()).observe(getViewLifecycleOwner(), new Observer<List<PayDetail>>() {
|
||||
@Override
|
||||
public void onChanged(List<PayDetail> payDetails) {
|
||||
settlementViewModel.deleteTrans.clear();
|
||||
voidCount = 0;
|
||||
voidAmount = 0L;
|
||||
if(payDetails != null) {
|
||||
settlementViewModel.deleteTrans.addAll(payDetails);
|
||||
for (PayDetail pay : payDetails) {
|
||||
if (pay.getTransactionType() == TransactionType.VOID && !pay.isCanceled) {
|
||||
voidCount++;
|
||||
voidAmount += pay.getAmount();
|
||||
}
|
||||
}
|
||||
if (voidCount > 0 && Boolean.TRUE.equals(settlementViewModel.isNoData.getValue())) {
|
||||
settlementViewModel.isNoData.setValue(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -291,10 +305,12 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
preCount = 0;
|
||||
refundCount = 0;
|
||||
caCount = 0;
|
||||
voidCount = 0;
|
||||
saleAmount = 0L;
|
||||
preAmount = 0L;
|
||||
refundAmount = 0L;
|
||||
caAmount = 0L;
|
||||
voidAmount = 0L;
|
||||
resetCurrencyBucket(mmkBucket);
|
||||
resetCurrencyBucket(usdBucket);
|
||||
}
|
||||
|
||||
@ -271,7 +271,12 @@ public class SettlementViewModel extends ViewModel {
|
||||
this.isLast = isLast;
|
||||
SystemParamsOperation.getInstance().getIncrementBatchNo();
|
||||
|
||||
if(SystemParamsOperation.getInstance().getDemoStatus()) {
|
||||
boolean bucketIsEmpty = currencyBucket.saleCount == 0
|
||||
&& currencyBucket.preCount == 0
|
||||
&& currencyBucket.refundCount == 0
|
||||
&& currencyBucket.caCount == 0;
|
||||
|
||||
if (bucketIsEmpty || SystemParamsOperation.getInstance().getDemoStatus()) {
|
||||
requestDemoProcessSettlement(currencyBucket);
|
||||
} else {
|
||||
requestOnlineProcessSettlement(currencyBucket);
|
||||
@ -318,7 +323,9 @@ public class SettlementViewModel extends ViewModel {
|
||||
payDetail.setSettleList(currencyBucket.saleCount+ ":" + currencyBucket.saleAmount + "-" + currencyBucket.caCount + ":" + currencyBucket.caAmount + "-" + currencyBucket.refundCount + ":" + currencyBucket.refundAmount + "-" + currencyBucket.preCount + ":" + currencyBucket.preAmount); // for print receipt
|
||||
/*POS*/
|
||||
SettleData settleData = new SettleData(currencyBucket.saleCount, currencyBucket.saleAmount, currencyBucket.preCount, currencyBucket.preAmount, currencyBucket.refundCount, currencyBucket.refundAmount, currencyBucket.caCount, currencyBucket.caAmount);
|
||||
enrichSettleDataWithVoids(settleData);
|
||||
payDetail.setSettleDataObj(settleData);
|
||||
payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(buildCardPayDetailList()));
|
||||
|
||||
long totalAmount = currencyBucket.saleAmount + currencyBucket.preAmount + currencyBucket.refundAmount + currencyBucket.caAmount;
|
||||
|
||||
@ -409,10 +416,9 @@ public class SettlementViewModel extends ViewModel {
|
||||
payDetail.setSettleList(currencyBucket.saleCount+ ":" + currencyBucket.saleAmount + "-" + currencyBucket.caCount + ":" + currencyBucket.caAmount + "-" + currencyBucket.refundCount + ":" + currencyBucket.refundAmount + "-" + currencyBucket.preCount + ":" + currencyBucket.preAmount); // for print receipt
|
||||
/*POS*/
|
||||
SettleData settleData = new SettleData(currencyBucket.saleCount, currencyBucket.saleAmount, currencyBucket.preCount, currencyBucket.preAmount, currencyBucket.refundCount, currencyBucket.refundAmount, currencyBucket.caCount, currencyBucket.caAmount);
|
||||
enrichSettleDataWithVoids(settleData);
|
||||
payDetail.setSettleDataObj(settleData);
|
||||
|
||||
if(payDetails != null)
|
||||
payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(payDetails));
|
||||
payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(buildCardPayDetailList()));
|
||||
|
||||
if(hostName == HostName.BPC) {
|
||||
long totalAmount = currencyBucket.saleAmount + currencyBucket.preAmount + currencyBucket.refundAmount + currencyBucket.caAmount;
|
||||
@ -539,6 +545,31 @@ public class SettlementViewModel extends ViewModel {
|
||||
});
|
||||
}
|
||||
|
||||
private void enrichSettleDataWithVoids(SettleData settleData) {
|
||||
for (PayDetail pay : deleteTrans) {
|
||||
if (pay.getTransactionType() == TransactionType.VOID && !pay.isCanceled) {
|
||||
settleData.setVoidSaleCount(settleData.getVoidSaleCount() + 1);
|
||||
settleData.setVoidSaleAmount(settleData.getVoidSaleAmount() + pay.getAmount());
|
||||
} else if (pay.getTransactionType() == TransactionType.SALE && pay.isCanceled) {
|
||||
settleData.setSaleCount(settleData.getSaleCount() + 1);
|
||||
settleData.setSaleAmount(settleData.getSaleAmount() + pay.getAmount());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<PayDetail> buildCardPayDetailList() {
|
||||
List<PayDetail> list = new ArrayList<>();
|
||||
if (payDetails != null) list.addAll(payDetails);
|
||||
for (PayDetail pay : deleteTrans) {
|
||||
if (pay.getTransactionType() == TransactionType.VOID && !pay.isCanceled) {
|
||||
list.add(pay);
|
||||
} else if (pay.getTransactionType() == TransactionType.SALE && pay.isCanceled) {
|
||||
list.add(pay);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private void batchUploadProcess(boolean isLast) {
|
||||
resultString.postValue(TransactionStatus.ON_BATCH_UPLOAD);
|
||||
|
||||
|
||||
@ -255,35 +255,28 @@ public abstract class BaseXPrint {
|
||||
|
||||
for (CardSettleData cardSettleData : cardSettleDataList) {
|
||||
print2SideStringMargin(cardSettleData.getCardType(), PrintUtils.getInstance().maskCardNumberPciDss(cardSettleData.getCardNum()));
|
||||
print2SideStringMargin("XX/XX",cardSettleData.getInvoiceNum());
|
||||
print2SideStringMargin(cardSettleData.getTransType(),"MMK "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isDecimalEnabled));
|
||||
print2SideStringMargin("INV NO", cardSettleData.getInvoiceNum());
|
||||
String cardCurrency = currencyCodeToText(cardSettleData.getCurrencyCode());
|
||||
print2SideStringMargin(cardSettleData.getTransType(), cardCurrency + " " + PrintUtils.getInstance().getSeparatorNumberFormat(cardSettleData.getAmount(), isDecimalEnabled));
|
||||
print2SideStringMargin(cardSettleData.getApprovalCode(), cardSettleData.getTransDate() + " " + cardSettleData.getTransTime());
|
||||
emptyLine(1);
|
||||
}
|
||||
|
||||
lineBreak();
|
||||
SettleData settleData = payDetail.getSettleDataObj();
|
||||
int totalCount = settleData.getSaleCount() + settleData.getPreAuthCompCount() + settleData.getRefundCount() + settleData.getCashAdvanceCount();
|
||||
long totalAmount = settleData.getSaleAmount() + settleData.getPreAuthCompAmount() + settleData.getCashAdvanceAmount();
|
||||
long totalAmount = settleData.getSaleAmount() + settleData.getPreAuthCompAmount() + settleData.getCashAdvanceAmount()
|
||||
- settleData.getVoidSaleAmount() - settleData.getRefundAmount();
|
||||
|
||||
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
|
||||
print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount(), isDecimalEnabled));
|
||||
print3ColumnsString("VOID SALE ", countStringFormat(settleData.getVoidSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getVoidSaleAmount(), isDecimalEnabled));
|
||||
print3ColumnsString("PREAUTH COMP ", countStringFormat(settleData.getPreAuthCompCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getPreAuthCompAmount(), isDecimalEnabled));
|
||||
if (settleData.getCashAdvanceCount() != 0)
|
||||
print3ColumnsString("CASH ADV ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount(), isDecimalEnabled));
|
||||
print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount(), isDecimalEnabled));
|
||||
emptyLine(1);
|
||||
printer.appendPrnStr("GRAND TOTAL", fontLarge, AlignEnum.LEFT, true);
|
||||
emptyLine(1);
|
||||
// print3ColumnsString("TOTAL(MMK) ", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount));
|
||||
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
|
||||
print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount(), isDecimalEnabled));
|
||||
print3ColumnsString("VOID SALE ", countStringFormat(settleData.getVoidSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getVoidSaleAmount(), isDecimalEnabled));
|
||||
print3ColumnsString("VOID SALE ", countStringFormat(settleData.getVoidSaleCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getVoidSaleAmount(), isDecimalEnabled));
|
||||
print3ColumnsString("PREAUTH COMP ", countStringFormat(settleData.getPreAuthCompCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getPreAuthCompAmount(), isDecimalEnabled));
|
||||
if (settleData.getCashAdvanceCount() != 0)
|
||||
print3ColumnsString("CASH ADV ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount(), isDecimalEnabled));
|
||||
print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount(), isDecimalEnabled));
|
||||
dotBreak();
|
||||
print3ColumnsString("TOTAL ", "", PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled));
|
||||
emptyLine(2);
|
||||
|
||||
|
||||
@ -390,6 +383,7 @@ public abstract class BaseXPrint {
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected void printTransFooterForSettlement() {
|
||||
String receiptFooter = SystemParamsOperation.getInstance().getReceiptFooter();
|
||||
String finalVersion = SystemParamsOperation.getInstance().getFinalVersion();
|
||||
@ -436,7 +430,6 @@ public abstract class BaseXPrint {
|
||||
// }
|
||||
|
||||
|
||||
|
||||
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
|
||||
if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) {
|
||||
if (payDetail.getTransactionType() == TransactionType.CASH_ADVANCE) {
|
||||
@ -1144,7 +1137,6 @@ public abstract class BaseXPrint {
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected void print3ColumnsString(String first, String second, String third) {
|
||||
// printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false);
|
||||
printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT, false);
|
||||
@ -1168,6 +1160,7 @@ public abstract class BaseXPrint {
|
||||
long total = 0;
|
||||
int count = 0;
|
||||
}
|
||||
|
||||
protected void printTransDetailReport(List<PayDetail> lists, HostType hostType) {
|
||||
|
||||
// ✅ Summary holder (total + count per currency)
|
||||
@ -1552,7 +1545,6 @@ public abstract class BaseXPrint {
|
||||
emptyLine(4);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected void startPrintNex() {
|
||||
@ -1667,6 +1659,7 @@ public abstract class BaseXPrint {
|
||||
|
||||
dotBreak();
|
||||
}
|
||||
|
||||
protected void printTransHeader(PayDetail payDetail, HostType hostType) {
|
||||
String invoiceNo = payDetail.getInvoiceNo().isEmpty() ? SystemParamsOperation.getInstance().getCurrentInvoiceNum() : payDetail.getInvoiceNo();
|
||||
String transType = payDetail.getTransType();
|
||||
|
||||
@ -192,7 +192,12 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
||||
printLogo();
|
||||
printMerchantHeader();
|
||||
printTransHeader(payDetail);
|
||||
List<com.utsmyanmar.paylibs.model.CardSettleData> cardSettleDataList = payDetail.getCardSettleData();
|
||||
if (cardSettleDataList != null && !cardSettleDataList.isEmpty()) {
|
||||
printTransDetailSettlement(payDetail, cardSettleDataList);
|
||||
} else {
|
||||
printTransDetailSettlement(payDetail);
|
||||
}
|
||||
// printTransFooterSummary();
|
||||
printTransFooterForSettlement();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user