From 7b8728da8f5c38883fa7f03c794527e743074c0d Mon Sep 17 00:00:00 2001 From: MooN <56061215+MgKyawLay@users.noreply.github.com> Date: Mon, 9 Feb 2026 21:53:41 +0630 Subject: [PATCH] seperated QR and Card Latest Transaction Records --- .../ui/management/ReprintReceiptFragment.java | 6 +- .../kbz/ui/management/SelectHostFragment.java | 83 ++++++++++++------- .../SettlementTransactionFragment.java | 16 +++- 3 files changed, 72 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/utsmm/kbz/ui/management/ReprintReceiptFragment.java b/app/src/main/java/com/utsmm/kbz/ui/management/ReprintReceiptFragment.java index 49f472b..82ee67b 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/management/ReprintReceiptFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/management/ReprintReceiptFragment.java @@ -27,6 +27,8 @@ import java.util.List; import com.utsmyanmar.paylibs.utils.LogUtil; import com.utsmyanmar.paylibs.utils.enums.HostType; +import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; +import com.utsmyanmar.paylibs.utils.POSUtil; public class ReprintReceiptFragment extends DataBindingFragment { @@ -150,6 +152,8 @@ public class ReprintReceiptFragment extends DataBindingFragment { navigateMainScreen(); return; } + sharedViewModel.totalAmount.postValue(payDetail.getAmount()); + sharedViewModel.setAmount(POSUtil.getInstance().getDecimalAmountSeparatorFormat(payDetail.getAmount())); String transType = payDetail.getTransType(); if (transType == null) { transType = ""; @@ -177,7 +181,7 @@ public class ReprintReceiptFragment extends DataBindingFragment { private void printReceipt(PayDetail payDetail) { - if(sharedViewModel.hostType.getValue() == HostType.QR) { + if (payDetail.getTransactionType() == TransactionsType.MMQR_SETTLEMENT.value) { PrintXReceipt.getInstance().printQRSettlementReport(payDetail, payDetail.getQrSettleData(), printXStatus); diff --git a/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java b/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java index 733be93..668d63d 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java @@ -265,38 +265,59 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi }); } - private void observeLastSettlement() { - managementViewModel.getLastSettlement(SystemParamsOperation.getInstance().getCurrentSerialNum()).observe(getViewLifecycleOwner(), new Observer>() { - @Override - public void onChanged(List payDetails) { - if (payDetails != null) { - if (!payDetails.isEmpty()) { - managementViewModel.payDetails.setValue(payDetails); - - PayDetail payDetail = payDetails.get(payDetails.size() - 1); - - if(sharedViewModel.hostType.getValue() == HostType.QR && payDetail.getTransactionType() == TransactionsType.MMQR_SETTLEMENT.value) { - routeId = R.id.action_selectHostFragment_to_QRSettlementTransactionFragment; - } else if(sharedViewModel.hostType.getValue() != HostType.MPU && payDetail.getTransactionType() == TransactionsType.SETTLEMENT.value) { - routeId = R.id.action_selectHostFragment_to_settlementTransactionFragment; - } else { - showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); - routeId = R.id.action_selectHostFragment_to_nav_main; - } - - - } else { - showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); - routeId = R.id.action_selectHostFragment_to_nav_main; - } - safeNavigateToRouteId(); - } else { - showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); - routeId = R.id.action_selectHostFragment_to_nav_main; - safeNavigateToRouteId(); - } + private PayDetail findLastByType(List payDetails, int transactionType) { + if (payDetails == null) { + return null; + } + for (int i = payDetails.size() - 1; i >= 0; i--) { + PayDetail payDetail = payDetails.get(i); + if (payDetail != null && payDetail.getTransactionType() == transactionType) { + return payDetail; } - }); + } + return null; + } + + private void observeLastSettlement() { + HostType hostType = sharedViewModel.hostType.getValue(); + if (hostType == HostType.QR) { + managementViewModel.getLastSettlementQR(SystemParamsOperation.getInstance().getCurrentSerialNum()) + .observe(getViewLifecycleOwner(), payDetails -> handleLastSettlement(payDetails, HostType.QR)); + } else { + managementViewModel.getLastSettlement(SystemParamsOperation.getInstance().getCurrentSerialNum()) + .observe(getViewLifecycleOwner(), payDetails -> handleLastSettlement(payDetails, hostType)); + } + } + + private void handleLastSettlement(List payDetails, HostType hostType) { + if (payDetails == null || payDetails.isEmpty()) { + showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); + routeId = R.id.action_selectHostFragment_to_nav_main; + safeNavigateToRouteId(); + return; + } + + PayDetail payDetail; + if (hostType == HostType.QR) { + payDetail = findLastByType(payDetails, TransactionsType.MMQR_SETTLEMENT.value); + if (payDetail != null) { + managementViewModel.payDetails.setValue(java.util.Collections.singletonList(payDetail)); + routeId = R.id.action_selectHostFragment_to_QRSettlementTransactionFragment; + } else { + showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); + routeId = R.id.action_selectHostFragment_to_nav_main; + } + } else { + payDetail = findLastByType(payDetails, TransactionsType.SETTLEMENT.value); + if (payDetail != null) { + routeId = R.id.action_selectHostFragment_to_settlementTransactionFragment; + } else { + showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); + routeId = R.id.action_selectHostFragment_to_nav_main; + } + } + + safeNavigateToRouteId(); } 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 640b5ee..be15042 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 @@ -142,7 +142,20 @@ public class SettlementTransactionFragment extends DataBindingFragment implement settlementViewModel.getLastSettlement(SystemParamsOperation.getInstance().getCurrentSerialNum()).observe(getViewLifecycleOwner(), payDetails -> { if (payDetails != null) { if (!payDetails.isEmpty()) { - PayDetail payDetail = payDetails.get(payDetails.size() - 1); + PayDetail payDetail = null; + for (int i = payDetails.size() - 1; i >= 0; i--) { + PayDetail candidate = payDetails.get(i); + if (candidate != null && candidate.getTransactionType() == TransactionsType.SETTLEMENT.value) { + payDetail = candidate; + break; + } + } + + if (payDetail == null) { + settlementViewModel.isNoData.setValue(true); + setSettlementViewModelData(0, 0, 0, 0, 0, 0, 0, 0); + return; + } saleCount = payDetail.getSettleDataObj().getSaleCount(); @@ -164,6 +177,7 @@ public class SettlementTransactionFragment extends DataBindingFragment implement settlementViewModel.setPayDetails(payDetails); managementViewModel.payDetail.setValue(payDetail); + sharedViewModel.payDetail.setValue(payDetail); }