From c4f49bc44033152bcf3fc2e4acfb2b8707a7c732 Mon Sep 17 00:00:00 2001 From: moon <56061215+MgKyawLay@users.noreply.github.com> Date: Thu, 10 Sep 2026 22:54:39 +0630 Subject: [PATCH] settlement fixed --- .../utsmyanmar/ui/navigation/AppNavGraph.kt | 5 +++- .../ui/settlement/SettlementViewModel.kt | 26 ++++++++++++++----- .../TransactionResultViewModel.kt | 11 +++++++- .../utsmyanmar/viewmodel/SharedViewModel.kt | 12 +++++++-- 4 files changed, 43 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt b/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt index 8d639cd..d84156a 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt @@ -2,6 +2,7 @@ package com.mob.utsmyanmar.ui.navigation import android.annotation.SuppressLint import android.os.Build +import android.widget.Toast import androidx.activity.ComponentActivity import androidx.annotation.RequiresApi import androidx.compose.runtime.Composable @@ -842,7 +843,9 @@ fun AppNavGraph( }, onShowError = {}, onShowSuccess = {}, - onShowPrinterDialog = {} + onShowPrinterDialog = { message -> + Toast.makeText(activity, message, Toast.LENGTH_LONG).show() + } ) } diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/settlement/SettlementViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/ui/settlement/SettlementViewModel.kt index fefd4ab..e96e9dd 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/settlement/SettlementViewModel.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/settlement/SettlementViewModel.kt @@ -82,6 +82,7 @@ class SettlementViewModel @Inject constructor( private var flag = false private var errorFlag = false + private var settlementApproved = false private var isSecondCall = false private var batchIndex = 0 @@ -269,6 +270,10 @@ class SettlementViewModel @Inject constructor( private fun requestOnlineProcessSettlement() { val state = _uiState.value + // Keep the local batch until this request receives an approved response. + settlementApproved = false + errorFlag = false + val hostName = HostName.MPU val field60 = SystemParamsOperation.getInstance().getCurrentBatchNum() @@ -407,15 +412,23 @@ class SettlementViewModel @Inject constructor( when { resultStr == Constant.ANSWER_CODE_ACCEPT || resultStr == Constant.ANSWER_CODE_APPROVED -> { + settlementApproved = true currentPayDetail.isNeedReversal = false } resultStr == "95" || resultStr == "095" -> { + settlementApproved = false currentPayDetail.isNeedReversal = !flag } + + else -> { + settlementApproved = false + currentPayDetail.isNeedReversal = false + } } } else { errorFlag = true + settlementApproved = false } } @@ -447,13 +460,12 @@ class SettlementViewModel @Inject constructor( flag = false batchIndex = 0 - updateDB() - insertPayDetail(currentPayDetail) - - if (errorFlag) { - postStatus(TransactionStatus.ON_ERROR) - } else { + if (!errorFlag && settlementApproved) { + updateDB() + insertPayDetail(currentPayDetail) postStatus(TransactionStatus.ON_SUCCESS) + } else { + postStatus(TransactionStatus.ON_ERROR) } _uiState.update { @@ -520,4 +532,4 @@ class SettlementViewModel @Inject constructor( _events.send(SettlementEvent.ShowStatus(status)) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/transaction_result/TransactionResultViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/ui/transaction_result/TransactionResultViewModel.kt index 17146cb..50fd314 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/transaction_result/TransactionResultViewModel.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/transaction_result/TransactionResultViewModel.kt @@ -220,7 +220,16 @@ class TransactionResultViewModel @Inject constructor( override fun paperRollIsReady() { if (isSettlement) { - sharedViewModel.startPrintProcessSettlement() + sharedViewModel.startPrintProcessSettlement( + onSuccess = ::navigateMain, + onFailure = { + sendUiEvent( + TransactionResultUiEvent.ShowPrinterDialog( + "Settlement report printing failed" + ) + ) + } + ) } else { sharedViewModel.startPrintProcess() } diff --git a/app/src/main/java/com/mob/utsmyanmar/viewmodel/SharedViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/viewmodel/SharedViewModel.kt index 998abb7..936ecef 100644 --- a/app/src/main/java/com/mob/utsmyanmar/viewmodel/SharedViewModel.kt +++ b/app/src/main/java/com/mob/utsmyanmar/viewmodel/SharedViewModel.kt @@ -419,17 +419,25 @@ class SharedViewModel @Inject constructor( } } - fun startPrintProcessSettlement() { + fun startPrintProcessSettlement( + onSuccess: () -> Unit, + onFailure: () -> Unit + ) { - val detail = payDetail.value ?: return + val detail = payDetail.value ?: run { + onFailure() + return + } PrintXReceipt.getInstance() .printSmileSettlementReport(detail, object : PrintXStatus { override fun onSuccess() { + onSuccess() } override fun onFailure() { + onFailure() } }) }