From 2b114dab5e14b6db667ab34775753822bf1c0366 Mon Sep 17 00:00:00 2001 From: MooN <56061215+MgKyawLay@users.noreply.github.com> Date: Fri, 20 Feb 2026 23:52:44 +0630 Subject: [PATCH] settlement fix for amount always 0 --- .../SettlementTransactionFragment.java | 63 ++++++++++--------- .../baselib/db/dao/PayDetailDao.java | 28 ++++++++- 2 files changed, 59 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java index be15042..902694c 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java @@ -212,29 +212,31 @@ public class SettlementTransactionFragment extends DataBindingFragment implement } settlementViewModel.getSettlementPOS().observe(getViewLifecycleOwner(), payDetails -> { - if(!payDetails.isEmpty()) { + resetSettlementCounters(); + if(payDetails != null && !payDetails.isEmpty()) { for(PayDetail payDetail:payDetails) { + int transType = payDetail.getTransactionType(); + String transName = payDetail.getTransType(); -// if(payDetail.isSettlementEnabled()) { - if(payDetail.getTransactionType() == TransactionType.SALE && !payDetail.isCanceled){ - saleCount ++; - saleAmount += payDetail.getAmount(); - } else if(payDetail.getTransactionType() == TransactionType.PRE_SALE_COMPLETE && !payDetail.isCanceled){ - preCount ++; - preAmount += payDetail.getAmount(); - } - else if(payDetail.getTransactionType() == TransactionType.REFUND){ - refundCount ++; - refundAmount += payDetail.getAmount(); - }else if(payDetail.getTransactionType() == TransactionType.CASH_ADVANCE){ - caCount ++; - caAmount += payDetail.getAmount(); - } -// } - - -// sharedViewModel.payDetail.setValue(payDetail); + if((transType == TransactionType.SALE || "SALE".equalsIgnoreCase(transName)) && !payDetail.isCanceled){ + saleCount ++; + saleAmount += payDetail.getAmount(); + } else if((transType == TransactionType.PRE_SALE_COMPLETE + || "PREAUTH COMPLETION".equalsIgnoreCase(transName) + || "PRE_AUTH_COMPLETE".equalsIgnoreCase(transName)) && !payDetail.isCanceled){ + preCount ++; + preAmount += payDetail.getAmount(); + } + else if(transType == TransactionType.REFUND || "REFUND".equalsIgnoreCase(transName)){ + refundCount ++; + refundAmount += payDetail.getAmount(); + }else if(transType == TransactionType.CASH_ADVANCE + || "CASH_OUT".equalsIgnoreCase(transName) + || "CASH_ADVANCE".equalsIgnoreCase(transName)){ + caCount ++; + caAmount += payDetail.getAmount(); + } } long totalAmount = saleAmount + preAmount + caAmount; sharedViewModel.totalAmount.postValue(totalAmount); @@ -247,16 +249,6 @@ public class SettlementTransactionFragment extends DataBindingFragment implement } else { - - int saleCount = 0; - int preCount = 0; - int refundCount = 0; - int caCount = 0; - long saleAmount = 0; - long preAmount = 0; - long refundAmount = 0; - long caAmount = 0; - settlementViewModel.isNoData.setValue(true); sharedViewModel.setAmount(POSUtil.getInstance().getDecimalAmountSeparatorFormat(0)); @@ -275,6 +267,17 @@ public class SettlementTransactionFragment extends DataBindingFragment implement }); } + private void resetSettlementCounters() { + saleCount = 0; + preCount = 0; + refundCount = 0; + caCount = 0; + saleAmount = 0L; + preAmount = 0L; + refundAmount = 0L; + caAmount = 0L; + } + private void setSettlementViewModelData(int saleCount,long saleAmount,int preCount,long preAmount,int refundCount,long refundAmount,int caCount,long caAmount) { settlementViewModel.sale_count.setValue(saleCount); settlementViewModel.sale_amount.setValue(saleAmount); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java b/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java index aa79b7a..24da99c 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java @@ -46,11 +46,35 @@ public interface PayDetailDao { LiveData> getSettlement(); // 1 = SALE & 7 = PRE_SALE_COMPLETE & 4 = REFUND & 9 = CASH_ADVANCE & 18 = TIP ADJUSTMENT - @Query("SELECT * FROM paydetail WHERE isSettle = 0 AND isCanceled = 0 AND transactionType = 1 OR transactionType = 7 AND isSettle = 0 AND isCanceled = 0 OR transactionType = 4 AND isSettle = 0 OR transactionType = 9 AND isSettle = 0 ") + @Query("SELECT * FROM paydetail " + + "WHERE isSettle = 0 AND (" + + "((transactionType = 1 OR transactionType = 7) AND isCanceled = 0) " + + "OR transactionType = 4 " + + "OR transactionType = 9 " + + "OR (transactionType = 0 AND isCanceled = 0 AND (" + + "transType = 'SALE' " + + "OR transType = 'PREAUTH COMPLETION' " + + "OR transType = 'PRE_AUTH_COMPLETE' " + + "OR transType = 'REFUND' " + + "OR transType = 'CASH_OUT' " + + "OR transType = 'CASH_ADVANCE')))") LiveData> getSettlementPOS(); // 1 = SALE & 7 = PRE_SALE_COMPLETE & 4 = REFUND & 9 = CASH_ADVANCE & 18 = TIP ADJUSTMENT & 6 = PRE_AUTH_VOID & 20 = WALLET - @Query("SELECT * FROM paydetail WHERE isSettle = 0 AND isCanceled = 0 AND transactionType = 1 OR transactionType = 7 AND isSettle = 0 AND isCanceled = 0 OR transactionType = 4 AND isSettle = 0 OR transactionType = 9 AND isSettle = 0 OR transactionType = 6 AND isSettle = 0") + @Query("SELECT * FROM paydetail " + + "WHERE isSettle = 0 AND (" + + "((transactionType = 1 OR transactionType = 7 OR transactionType = 6) AND isCanceled = 0) " + + "OR transactionType = 4 " + + "OR transactionType = 9 " + + "OR (transactionType = 0 AND isCanceled = 0 AND (" + + "transType = 'SALE' " + + "OR transType = 'PREAUTH COMPLETION' " + + "OR transType = 'PRE_AUTH_COMPLETE' " + + "OR transType = 'PREAUTH CANCELLATION' " + + "OR transType = 'PRE_AUTH_VOID' " + + "OR transType = 'REFUND' " + + "OR transType = 'CASH_OUT' " + + "OR transType = 'CASH_ADVANCE')))") LiveData> getSettlementPOSClearBatch(); // 6 = PRE AUTH CANCEL, 7= PRE_AUTH_COMPLETE , 5 = PRE AUTH