diff --git a/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java index f3a6556..787ad63 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java @@ -146,6 +146,58 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme count = 0; totalAmount = 0; + try { + for (PayDetail payDetail : payDetailList) { + // Filter for QR transactions only + if ((payDetail.getTransactionType() == TransactionsType.MMQR.value + || payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) + && payDetail.getQrTransStatus() == 1 + && POSUtil.getInstance().getYesterdayDate().compareTo(POSUtil.getInstance().getDateByString(payDetail.transDate)) < 1) { + + boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value; + qrTransactionsList.add(payDetail); + count++; + if (isNeedMinusSign) { + totalAmount -= payDetail.getAmount(); + } else { + totalAmount += payDetail.getAmount(); + } + } + } + } catch (IllegalStateException e) { + // Handle cursor window size exceeded error + android.util.Log.e("QRSettlement", "Database cursor error - likely due to large data size", e); + showEmptyDataView(); + settlementViewModel.isNoData.setValue(true); + return; + } + + if (qrTransactionsList.isEmpty()) { + showEmptyDataView(); + settlementViewModel.isNoData.setValue(true); + } else { + + showDataView(); + settlementViewModel.isNoData.setValue(false); + + setupSettlementDisplayData(); + } + + } else { + showEmptyDataView(); + settlementViewModel.isNoData.setValue(true); + } + }); + } + + private void observeQRLastSettlementTransactions() { + List payDetailList = managementViewModel.payDetails.getValue(); + if( payDetailList != null) { + qrTransactionsList.clear(); + count = 0; + totalAmount = 0; + + try { for (PayDetail payDetail : payDetailList) { // Filter for QR transactions only if ((payDetail.getTransactionType() == TransactionsType.MMQR.value @@ -163,50 +215,12 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme } } } - - if (qrTransactionsList.isEmpty()) { - showEmptyDataView(); - settlementViewModel.isNoData.setValue(true); - } else { - - showDataView(); - settlementViewModel.isNoData.setValue(false); - - setupSettlementDisplayData(); - } - -// setupSettlementDisplayData(); - - } else { + } catch (IllegalStateException e) { + // Handle cursor window size exceeded error + android.util.Log.e("QRSettlement", "Database cursor error in last settlement - likely due to large data size", e); showEmptyDataView(); settlementViewModel.isNoData.setValue(true); - } - }); - } - - private void observeQRLastSettlementTransactions() { - List payDetailList = managementViewModel.payDetails.getValue(); - if( payDetailList != null) { - qrTransactionsList.clear(); - count = 0; - totalAmount = 0; - - for (PayDetail payDetail : payDetailList) { - // Filter for QR transactions only - if ((payDetail.getTransactionType() == TransactionsType.MMQR.value - || payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) - && payDetail.getQrTransStatus() == 1 - && POSUtil.getInstance().getYesterdayDate().compareTo(POSUtil.getInstance().getDateByString(payDetail.transDate)) < 1) { - - boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value; - qrTransactionsList.add(payDetail); - count++; - if (isNeedMinusSign) { - totalAmount -= payDetail.getAmount(); - } else { - totalAmount += payDetail.getAmount(); - } - } + return; } if (qrTransactionsList.isEmpty()) { @@ -217,8 +231,6 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme settlementViewModel.isNoData.setValue(false); } - - } else { showEmptyDataView(); settlementViewModel.isNoData.setValue(true);