QR settlement added crash handling

This commit is contained in:
kizzy 2025-12-16 00:31:22 +07:00
parent c46b8793a1
commit 7d8f9f5af2

View File

@ -146,6 +146,58 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
count = 0; count = 0;
totalAmount = 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<PayDetail> payDetailList = managementViewModel.payDetails.getValue();
if( payDetailList != null) {
qrTransactionsList.clear();
count = 0;
totalAmount = 0;
try {
for (PayDetail payDetail : payDetailList) { for (PayDetail payDetail : payDetailList) {
// Filter for QR transactions only // Filter for QR transactions only
if ((payDetail.getTransactionType() == TransactionsType.MMQR.value if ((payDetail.getTransactionType() == TransactionsType.MMQR.value
@ -163,50 +215,12 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
} }
} }
} }
} catch (IllegalStateException e) {
if (qrTransactionsList.isEmpty()) { // Handle cursor window size exceeded error
showEmptyDataView(); android.util.Log.e("QRSettlement", "Database cursor error in last settlement - likely due to large data size", e);
settlementViewModel.isNoData.setValue(true);
} else {
showDataView();
settlementViewModel.isNoData.setValue(false);
setupSettlementDisplayData();
}
// setupSettlementDisplayData();
} else {
showEmptyDataView(); showEmptyDataView();
settlementViewModel.isNoData.setValue(true); settlementViewModel.isNoData.setValue(true);
} return;
});
}
private void observeQRLastSettlementTransactions() {
List<PayDetail> 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();
}
}
} }
if (qrTransactionsList.isEmpty()) { if (qrTransactionsList.isEmpty()) {
@ -217,8 +231,6 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
settlementViewModel.isNoData.setValue(false); settlementViewModel.isNoData.setValue(false);
} }
} else { } else {
showEmptyDataView(); showEmptyDataView();
settlementViewModel.isNoData.setValue(true); settlementViewModel.isNoData.setValue(true);