From f0799455cb9023526a2ebf80a71934f8b4f19187 Mon Sep 17 00:00:00 2001 From: moon <56061215+MgKyawLay@users.noreply.github.com> Date: Thu, 20 Aug 2026 15:40:47 +0630 Subject: [PATCH] history show reversal records in label --- app/changelog.md | 5 +++-- .../ui/dashboard/DashboardViewModel.kt | 7 ++++++- .../ui/history_functions/HistoryComponents.kt | 6 +++--- .../ui/history_functions/HistoryFilters.kt | 16 ++++++++++++++++ .../ui/print_receipt/PrintReceiptScreen.kt | 8 +++++--- .../paylibs/reversal/ReversalAction.java | 3 +-- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/app/changelog.md b/app/changelog.md index 9eb531e..499d67c 100644 --- a/app/changelog.md +++ b/app/changelog.md @@ -12,8 +12,9 @@ ### version 3.4 * disable display always on -[//]: # (* auto-settlement) +* auto-settlement * show expiry date as "`**`/`**`" * align the customer name, in paper slip * settlement fixed in both UI and system -* amount, date, time fixed in Void Preview \ No newline at end of file +* amount, date, time fixed in Void Preview +* show reversal status in trans records \ No newline at end of file diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardViewModel.kt index c093dee..3a99946 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardViewModel.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardViewModel.kt @@ -88,7 +88,12 @@ class DashboardViewModel @Inject constructor( private fun PayDetail.toRecord(): TrnxRecord { val baseType = transType?.takeIf { it.isNotBlank() }?.let { formatTypeLabel(it) } ?: "Transaction" - val type = if (isCanceled) "Void" else baseType + val type = when { + transactionType == TransactionsType.REVERSAL.value && !baseType.equals("Reversal", ignoreCase = true) -> + "$baseType (Reversal)" + isCanceled -> "Void" + else -> baseType + } val displayAmount = displayAmount() val amountText = "MMK ${formatAmount(displayAmount)}" val card = CardNo?.takeIf { it.length >= 4 }?.let { "**** ${it.takeLast(4)}" } ?: "----" diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/history_functions/HistoryComponents.kt b/app/src/main/java/com/mob/utsmyanmar/ui/history_functions/HistoryComponents.kt index 93b43a2..196acba 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/history_functions/HistoryComponents.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/history_functions/HistoryComponents.kt @@ -49,7 +49,7 @@ internal fun HistoryTransactionCard( horizontalArrangement = Arrangement.SpaceBetween ) { Text( - text = payDetail.transType.ifBlank { "UNKNOWN" }, + text = displayTransactionTitle(payDetail), color = Color.LegacyRed, style = MaterialTheme.typography.titleSmall ) @@ -81,7 +81,7 @@ internal fun HistoryTransactionDetailCard(payDetail: PayDetail) { verticalArrangement = Arrangement.spacedBy(8.dp) ) { Text( - text = payDetail.transType.ifBlank { "Transaction" }, + text = displayTransactionTitle(payDetail), color = Color.LegacyRed, style = MaterialTheme.typography.titleMedium ) @@ -92,7 +92,7 @@ internal fun HistoryTransactionDetailCard(payDetail: PayDetail) { SummaryLine("Approval", payDetail.approvalCode.orEmpty()) SummaryLine("Date", payDetail.tradeDate) SummaryLine("Time", payDetail.tradeTime) - SummaryLine("Status", payDetail.tradeAnswerCode.orEmpty()) + SummaryLine("Status", displayTransactionStatus(payDetail)) } } } diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/history_functions/HistoryFilters.kt b/app/src/main/java/com/mob/utsmyanmar/ui/history_functions/HistoryFilters.kt index 2d7e9ca..29950e3 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/history_functions/HistoryFilters.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/history_functions/HistoryFilters.kt @@ -26,6 +26,22 @@ internal fun prepareReprintPayDetail(payDetail: PayDetail): PayDetail { return payDetail } +internal fun displayTransactionStatus(payDetail: PayDetail): String { + if (payDetail.transactionType == TransactionsType.REVERSAL.value) { + return if (payDetail.isNeedReversal) "REVERSAL FAILED" else "REVERSAL SUCCESS" + } + return POSUtil.getInstance().getResponse(payDetail.tradeAnswerCode.orEmpty().ifBlank { "-" }) +} + +internal fun displayTransactionTitle(payDetail: PayDetail): String { + val title = payDetail.transType.ifBlank { "TRANSACTION" } + return if (payDetail.transactionType == TransactionsType.REVERSAL.value) { + "$title (REVERSAL)" + } else { + title + } +} + internal fun isValidForReprint(payDetail: PayDetail): Boolean { if (payDetail.transactionType == TransactionsType.SETTLEMENT.value) return false if (payDetail.transactionType == TransactionsType.WAVEPAY.value && payDetail.qrTransStatus != 1) { diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/print_receipt/PrintReceiptScreen.kt b/app/src/main/java/com/mob/utsmyanmar/ui/print_receipt/PrintReceiptScreen.kt index b4e9bd6..02e99c7 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/print_receipt/PrintReceiptScreen.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/print_receipt/PrintReceiptScreen.kt @@ -38,6 +38,8 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.mob.utsmyanmar.ui.components.appbar.AppBar +import com.mob.utsmyanmar.ui.history_functions.displayTransactionStatus +import com.mob.utsmyanmar.ui.history_functions.displayTransactionTitle import com.mob.utsmyanmar.ui.theme.Color import com.mob.utsmyanmar.ui.transaction_result.TransactionResultState import com.mob.utsmyanmar.ui.transaction_result.TransactionResultViewModel @@ -240,11 +242,11 @@ fun ReceiptPreview( ReceiptRow("Merchant", state.payDetail?.merchantName.toString() ) ReceiptRow("Terminal ID", state.payDetail?.terminalNo.toString() ) ReceiptRow("Trace No", state.payDetail?.voucherNo.toString() ) - ReceiptRow("Transaction", state.payDetail?.transType.toString()) + ReceiptRow("Transaction", state.payDetail?.let(::displayTransactionTitle).orEmpty()) ReceiptRow("Amount", POSUtil.getInstance().getDecimalAmountSeparatorFormat(state.payDetail?.amount?:0)) ReceiptRow("Card Type", state.payDetail?.accountType.toString()) ReceiptRow("Card No", state.payDetail?.cardNo.toString()) - ReceiptRow("Status", POSUtil.getInstance().getResponse(state.payDetail?.tradeAnswerCode?: "-")) + ReceiptRow("Status", state.payDetail?.let(::displayTransactionStatus).orEmpty()) ReceiptRow("Date", state.payDetail?.transDate.toString() ) ReceiptRow("Time", state.payDetail?.transTime.toString()) ReceiptRow("Ref No", state.payDetail?.referNo.toString()) @@ -311,4 +313,4 @@ fun PreviewPrintReceiptScreen() { onPrintFinished = {} ) } -} \ No newline at end of file +} diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/reversal/ReversalAction.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/reversal/ReversalAction.java index 3588fda..c3f3c65 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/reversal/ReversalAction.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/reversal/ReversalAction.java @@ -57,13 +57,12 @@ public class ReversalAction { public ReversalAction setData(TradeData tradeData) { this.tradeData = tradeData; payDetail = tradeData.getPayDetail(); - payDetail.setTransactionType(TransactionsType.REVERSAL.value); -// payDetail.setTransType(REVERSAL); if (TextUtils.equals(payDetail.getAccountType(), MPU)) { BITMAP = getBitmapMPU(payDetail); } else { BITMAP = getBitmapUPI(payDetail); } + payDetail.setTransactionType(TransactionsType.REVERSAL.value); return INSTANCE; }