history show reversal records in label

This commit is contained in:
moon 2026-08-20 15:40:47 +06:30
parent 66c969873e
commit f0799455cb
6 changed files with 34 additions and 11 deletions

View File

@ -12,8 +12,9 @@
### version 3.4 ### version 3.4
* disable display always on * disable display always on
[//]: # (* auto-settlement) * auto-settlement
* show expiry date as "`**`/`**`" * show expiry date as "`**`/`**`"
* align the customer name, in paper slip * align the customer name, in paper slip
* settlement fixed in both UI and system * settlement fixed in both UI and system
* amount, date, time fixed in Void Preview * amount, date, time fixed in Void Preview
* show reversal status in trans records

View File

@ -88,7 +88,12 @@ class DashboardViewModel @Inject constructor(
private fun PayDetail.toRecord(): TrnxRecord { private fun PayDetail.toRecord(): TrnxRecord {
val baseType = transType?.takeIf { it.isNotBlank() }?.let { formatTypeLabel(it) } ?: "Transaction" 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 displayAmount = displayAmount()
val amountText = "MMK ${formatAmount(displayAmount)}" val amountText = "MMK ${formatAmount(displayAmount)}"
val card = CardNo?.takeIf { it.length >= 4 }?.let { "**** ${it.takeLast(4)}" } ?: "----" val card = CardNo?.takeIf { it.length >= 4 }?.let { "**** ${it.takeLast(4)}" } ?: "----"

View File

@ -49,7 +49,7 @@ internal fun HistoryTransactionCard(
horizontalArrangement = Arrangement.SpaceBetween horizontalArrangement = Arrangement.SpaceBetween
) { ) {
Text( Text(
text = payDetail.transType.ifBlank { "UNKNOWN" }, text = displayTransactionTitle(payDetail),
color = Color.LegacyRed, color = Color.LegacyRed,
style = MaterialTheme.typography.titleSmall style = MaterialTheme.typography.titleSmall
) )
@ -81,7 +81,7 @@ internal fun HistoryTransactionDetailCard(payDetail: PayDetail) {
verticalArrangement = Arrangement.spacedBy(8.dp) verticalArrangement = Arrangement.spacedBy(8.dp)
) { ) {
Text( Text(
text = payDetail.transType.ifBlank { "Transaction" }, text = displayTransactionTitle(payDetail),
color = Color.LegacyRed, color = Color.LegacyRed,
style = MaterialTheme.typography.titleMedium style = MaterialTheme.typography.titleMedium
) )
@ -92,7 +92,7 @@ internal fun HistoryTransactionDetailCard(payDetail: PayDetail) {
SummaryLine("Approval", payDetail.approvalCode.orEmpty()) SummaryLine("Approval", payDetail.approvalCode.orEmpty())
SummaryLine("Date", payDetail.tradeDate) SummaryLine("Date", payDetail.tradeDate)
SummaryLine("Time", payDetail.tradeTime) SummaryLine("Time", payDetail.tradeTime)
SummaryLine("Status", payDetail.tradeAnswerCode.orEmpty()) SummaryLine("Status", displayTransactionStatus(payDetail))
} }
} }
} }

View File

@ -26,6 +26,22 @@ internal fun prepareReprintPayDetail(payDetail: PayDetail): PayDetail {
return 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 { internal fun isValidForReprint(payDetail: PayDetail): Boolean {
if (payDetail.transactionType == TransactionsType.SETTLEMENT.value) return false if (payDetail.transactionType == TransactionsType.SETTLEMENT.value) return false
if (payDetail.transactionType == TransactionsType.WAVEPAY.value && payDetail.qrTransStatus != 1) { if (payDetail.transactionType == TransactionsType.WAVEPAY.value && payDetail.qrTransStatus != 1) {

View File

@ -38,6 +38,8 @@ import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.mob.utsmyanmar.ui.components.appbar.AppBar 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.theme.Color
import com.mob.utsmyanmar.ui.transaction_result.TransactionResultState import com.mob.utsmyanmar.ui.transaction_result.TransactionResultState
import com.mob.utsmyanmar.ui.transaction_result.TransactionResultViewModel import com.mob.utsmyanmar.ui.transaction_result.TransactionResultViewModel
@ -240,11 +242,11 @@ fun ReceiptPreview(
ReceiptRow("Merchant", state.payDetail?.merchantName.toString() ) ReceiptRow("Merchant", state.payDetail?.merchantName.toString() )
ReceiptRow("Terminal ID", state.payDetail?.terminalNo.toString() ) ReceiptRow("Terminal ID", state.payDetail?.terminalNo.toString() )
ReceiptRow("Trace No", state.payDetail?.voucherNo.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("Amount", POSUtil.getInstance().getDecimalAmountSeparatorFormat(state.payDetail?.amount?:0))
ReceiptRow("Card Type", state.payDetail?.accountType.toString()) ReceiptRow("Card Type", state.payDetail?.accountType.toString())
ReceiptRow("Card No", state.payDetail?.cardNo.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("Date", state.payDetail?.transDate.toString() )
ReceiptRow("Time", state.payDetail?.transTime.toString()) ReceiptRow("Time", state.payDetail?.transTime.toString())
ReceiptRow("Ref No", state.payDetail?.referNo.toString()) ReceiptRow("Ref No", state.payDetail?.referNo.toString())

View File

@ -57,13 +57,12 @@ public class ReversalAction {
public ReversalAction setData(TradeData tradeData) { public ReversalAction setData(TradeData tradeData) {
this.tradeData = tradeData; this.tradeData = tradeData;
payDetail = tradeData.getPayDetail(); payDetail = tradeData.getPayDetail();
payDetail.setTransactionType(TransactionsType.REVERSAL.value);
// payDetail.setTransType(REVERSAL);
if (TextUtils.equals(payDetail.getAccountType(), MPU)) { if (TextUtils.equals(payDetail.getAccountType(), MPU)) {
BITMAP = getBitmapMPU(payDetail); BITMAP = getBitmapMPU(payDetail);
} else { } else {
BITMAP = getBitmapUPI(payDetail); BITMAP = getBitmapUPI(payDetail);
} }
payDetail.setTransactionType(TransactionsType.REVERSAL.value);
return INSTANCE; return INSTANCE;
} }