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 preCount = 0;
|
||||||
int refundCount = 0;
|
int refundCount = 0;
|
||||||
int caCount = 0;
|
int caCount = 0;
|
||||||
|
int voidCount = 0;
|
||||||
long saleAmount = 0;
|
long saleAmount = 0;
|
||||||
long preAmount = 0;
|
long preAmount = 0;
|
||||||
long refundAmount = 0;
|
long refundAmount = 0;
|
||||||
long caAmount = 0;
|
long caAmount = 0;
|
||||||
|
long voidAmount = 0;
|
||||||
|
|
||||||
private final CurrencyBucket mmkBucket = new CurrencyBucket();
|
private final CurrencyBucket mmkBucket = new CurrencyBucket();
|
||||||
private final CurrencyBucket usdBucket = 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>>() {
|
settlementViewModel.getDeleteTrans(SystemParamsOperation.getInstance().getCurrentBatchNum()).observe(getViewLifecycleOwner(), new Observer<List<PayDetail>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(List<PayDetail> payDetails) {
|
public void onChanged(List<PayDetail> payDetails) {
|
||||||
|
settlementViewModel.deleteTrans.clear();
|
||||||
|
voidCount = 0;
|
||||||
|
voidAmount = 0L;
|
||||||
if(payDetails != null) {
|
if(payDetails != null) {
|
||||||
settlementViewModel.deleteTrans.addAll(payDetails);
|
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;
|
preCount = 0;
|
||||||
refundCount = 0;
|
refundCount = 0;
|
||||||
caCount = 0;
|
caCount = 0;
|
||||||
|
voidCount = 0;
|
||||||
saleAmount = 0L;
|
saleAmount = 0L;
|
||||||
preAmount = 0L;
|
preAmount = 0L;
|
||||||
refundAmount = 0L;
|
refundAmount = 0L;
|
||||||
caAmount = 0L;
|
caAmount = 0L;
|
||||||
|
voidAmount = 0L;
|
||||||
resetCurrencyBucket(mmkBucket);
|
resetCurrencyBucket(mmkBucket);
|
||||||
resetCurrencyBucket(usdBucket);
|
resetCurrencyBucket(usdBucket);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -271,7 +271,12 @@ public class SettlementViewModel extends ViewModel {
|
|||||||
this.isLast = isLast;
|
this.isLast = isLast;
|
||||||
SystemParamsOperation.getInstance().getIncrementBatchNo();
|
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);
|
requestDemoProcessSettlement(currencyBucket);
|
||||||
} else {
|
} else {
|
||||||
requestOnlineProcessSettlement(currencyBucket);
|
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
|
payDetail.setSettleList(currencyBucket.saleCount+ ":" + currencyBucket.saleAmount + "-" + currencyBucket.caCount + ":" + currencyBucket.caAmount + "-" + currencyBucket.refundCount + ":" + currencyBucket.refundAmount + "-" + currencyBucket.preCount + ":" + currencyBucket.preAmount); // for print receipt
|
||||||
/*POS*/
|
/*POS*/
|
||||||
SettleData settleData = new SettleData(currencyBucket.saleCount, currencyBucket.saleAmount, currencyBucket.preCount, currencyBucket.preAmount, currencyBucket.refundCount, currencyBucket.refundAmount, currencyBucket.caCount, currencyBucket.caAmount);
|
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.setSettleDataObj(settleData);
|
||||||
|
payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(buildCardPayDetailList()));
|
||||||
|
|
||||||
long totalAmount = currencyBucket.saleAmount + currencyBucket.preAmount + currencyBucket.refundAmount + currencyBucket.caAmount;
|
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
|
payDetail.setSettleList(currencyBucket.saleCount+ ":" + currencyBucket.saleAmount + "-" + currencyBucket.caCount + ":" + currencyBucket.caAmount + "-" + currencyBucket.refundCount + ":" + currencyBucket.refundAmount + "-" + currencyBucket.preCount + ":" + currencyBucket.preAmount); // for print receipt
|
||||||
/*POS*/
|
/*POS*/
|
||||||
SettleData settleData = new SettleData(currencyBucket.saleCount, currencyBucket.saleAmount, currencyBucket.preCount, currencyBucket.preAmount, currencyBucket.refundCount, currencyBucket.refundAmount, currencyBucket.caCount, currencyBucket.caAmount);
|
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.setSettleDataObj(settleData);
|
||||||
|
payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(buildCardPayDetailList()));
|
||||||
if(payDetails != null)
|
|
||||||
payDetail.setCardSettleData(CardSettleData.convertFromPayDetail(payDetails));
|
|
||||||
|
|
||||||
if(hostName == HostName.BPC) {
|
if(hostName == HostName.BPC) {
|
||||||
long totalAmount = currencyBucket.saleAmount + currencyBucket.preAmount + currencyBucket.refundAmount + currencyBucket.caAmount;
|
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) {
|
private void batchUploadProcess(boolean isLast) {
|
||||||
resultString.postValue(TransactionStatus.ON_BATCH_UPLOAD);
|
resultString.postValue(TransactionStatus.ON_BATCH_UPLOAD);
|
||||||
|
|
||||||
|
|||||||
@ -255,35 +255,28 @@ public abstract class BaseXPrint {
|
|||||||
|
|
||||||
for (CardSettleData cardSettleData : cardSettleDataList) {
|
for (CardSettleData cardSettleData : cardSettleDataList) {
|
||||||
print2SideStringMargin(cardSettleData.getCardType(), PrintUtils.getInstance().maskCardNumberPciDss(cardSettleData.getCardNum()));
|
print2SideStringMargin(cardSettleData.getCardType(), PrintUtils.getInstance().maskCardNumberPciDss(cardSettleData.getCardNum()));
|
||||||
print2SideStringMargin("XX/XX",cardSettleData.getInvoiceNum());
|
print2SideStringMargin("INV NO", cardSettleData.getInvoiceNum());
|
||||||
print2SideStringMargin(cardSettleData.getTransType(),"MMK "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isDecimalEnabled));
|
String cardCurrency = currencyCodeToText(cardSettleData.getCurrencyCode());
|
||||||
|
print2SideStringMargin(cardSettleData.getTransType(), cardCurrency + " " + PrintUtils.getInstance().getSeparatorNumberFormat(cardSettleData.getAmount(), isDecimalEnabled));
|
||||||
print2SideStringMargin(cardSettleData.getApprovalCode(), cardSettleData.getTransDate() + " " + cardSettleData.getTransTime());
|
print2SideStringMargin(cardSettleData.getApprovalCode(), cardSettleData.getTransDate() + " " + cardSettleData.getTransTime());
|
||||||
emptyLine(1);
|
emptyLine(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
lineBreak();
|
lineBreak();
|
||||||
SettleData settleData = payDetail.getSettleDataObj();
|
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);
|
printer.appendPrnStr("GRAND TOTAL", fontLarge, AlignEnum.LEFT, true);
|
||||||
emptyLine(1);
|
emptyLine(1);
|
||||||
// print3ColumnsString("TOTAL(MMK) ", countStringFormat(totalCount), PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount));
|
|
||||||
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
|
print3ColumnsString("TRX TYPE ", "CNT", "AMOUNT");
|
||||||
print3ColumnsString("SALE ", countStringFormat(settleData.getSaleCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount(), isDecimalEnabled));
|
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));
|
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("CASH ADV ", countStringFormat(settleData.getCashAdvanceCount()), PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getCashAdvanceAmount(), isDecimalEnabled));
|
||||||
print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount(), isDecimalEnabled));
|
print3ColumnsString("REFUND ", countStringFormat(settleData.getRefundCount()), "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getRefundAmount(), isDecimalEnabled));
|
||||||
|
dotBreak();
|
||||||
|
print3ColumnsString("TOTAL ", "", PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isDecimalEnabled));
|
||||||
emptyLine(2);
|
emptyLine(2);
|
||||||
|
|
||||||
|
|
||||||
@ -390,6 +383,7 @@ public abstract class BaseXPrint {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void printTransFooterForSettlement() {
|
protected void printTransFooterForSettlement() {
|
||||||
String receiptFooter = SystemParamsOperation.getInstance().getReceiptFooter();
|
String receiptFooter = SystemParamsOperation.getInstance().getReceiptFooter();
|
||||||
String finalVersion = SystemParamsOperation.getInstance().getFinalVersion();
|
String finalVersion = SystemParamsOperation.getInstance().getFinalVersion();
|
||||||
@ -436,7 +430,6 @@ public abstract class BaseXPrint {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
|
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
|
||||||
if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) {
|
if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) {
|
||||||
if (payDetail.getTransactionType() == TransactionType.CASH_ADVANCE) {
|
if (payDetail.getTransactionType() == TransactionType.CASH_ADVANCE) {
|
||||||
@ -1144,7 +1137,6 @@ public abstract class BaseXPrint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected void print3ColumnsString(String first, String second, String third) {
|
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);
|
||||||
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;
|
long total = 0;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void printTransDetailReport(List<PayDetail> lists, HostType hostType) {
|
protected void printTransDetailReport(List<PayDetail> lists, HostType hostType) {
|
||||||
|
|
||||||
// ✅ Summary holder (total + count per currency)
|
// ✅ Summary holder (total + count per currency)
|
||||||
@ -1552,7 +1545,6 @@ public abstract class BaseXPrint {
|
|||||||
emptyLine(4);
|
emptyLine(4);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void startPrintNex() {
|
protected void startPrintNex() {
|
||||||
@ -1667,6 +1659,7 @@ public abstract class BaseXPrint {
|
|||||||
|
|
||||||
dotBreak();
|
dotBreak();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void printTransHeader(PayDetail payDetail, HostType hostType) {
|
protected void printTransHeader(PayDetail payDetail, HostType hostType) {
|
||||||
String invoiceNo = payDetail.getInvoiceNo().isEmpty() ? SystemParamsOperation.getInstance().getCurrentInvoiceNum() : payDetail.getInvoiceNo();
|
String invoiceNo = payDetail.getInvoiceNo().isEmpty() ? SystemParamsOperation.getInstance().getCurrentInvoiceNum() : payDetail.getInvoiceNo();
|
||||||
String transType = payDetail.getTransType();
|
String transType = payDetail.getTransType();
|
||||||
|
|||||||
@ -192,7 +192,12 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
|||||||
printLogo();
|
printLogo();
|
||||||
printMerchantHeader();
|
printMerchantHeader();
|
||||||
printTransHeader(payDetail);
|
printTransHeader(payDetail);
|
||||||
|
List<com.utsmyanmar.paylibs.model.CardSettleData> cardSettleDataList = payDetail.getCardSettleData();
|
||||||
|
if (cardSettleDataList != null && !cardSettleDataList.isEmpty()) {
|
||||||
|
printTransDetailSettlement(payDetail, cardSettleDataList);
|
||||||
|
} else {
|
||||||
printTransDetailSettlement(payDetail);
|
printTransDetailSettlement(payDetail);
|
||||||
|
}
|
||||||
// printTransFooterSummary();
|
// printTransFooterSummary();
|
||||||
printTransFooterForSettlement();
|
printTransFooterForSettlement();
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user