diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/InputRRNFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/InputRRNFragment.java index f7cf0a0..6e40d14 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/InputRRNFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/InputRRNFragment.java @@ -479,15 +479,19 @@ public class InputRRNFragment extends DataBindingFragment { } private void refundProcessEmv(boolean isECR) { - PayDetail payDetail = emvTransactionProcessViewModel.getPayDetail(); - payDetail.setReferNo(rrnNo); + rrnViewModel.searchPayDetail(cardNo, rrnNo).observe(getViewLifecycleOwner(), payDetail -> { + if (payDetail != null && isCurrentBatchUnsettled(payDetail)) { + terminatedTransRefund(isECR); + return; + } + PayDetail newPay = emvTransactionProcessViewModel.getPayDetail(); + newPay.setReferNo(rrnNo); + emvTransactionProcessViewModel.setPayDetail(newPay); - emvTransactionProcessViewModel.setPayDetail(payDetail); - - sharedViewModel.rrNNo.setValue(rrnNo); - - callNextScreen(); + sharedViewModel.rrNNo.setValue(rrnNo); + callNextScreen(); + }); } private void checkRRNRefund(boolean isECR) { @@ -518,6 +522,11 @@ public class InputRRNFragment extends DataBindingFragment { LogUtil.d(TAG,"Trans Type:"+payDetail.getTransactionType()); + if (isCurrentBatchUnsettled(payDetail)) { + terminatedTransRefund(isECR); + return; + } + if(payDetail.getTransactionType() != TransactionsType.SALE.value) { terminatedTransRefund(isECR); return; @@ -559,6 +568,17 @@ public class InputRRNFragment extends DataBindingFragment { } + private boolean isCurrentBatchUnsettled(PayDetail payDetail) { + if (payDetail == null) { + return false; + } + String currentBatch = SystemParamsOperation.getInstance().getCurrentBatchNum(); + String batchNo = payDetail.getBatchNo(); + return batchNo != null + && batchNo.equals(currentBatch) + && !payDetail.isSettle; + } + private void terminatedTransRefund(boolean isECR) { showDeclineDialog(getResourceString(R.string.txt_refund_not_allow)); if (isECR) {