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
* 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
* show reversal status in trans records

View File

@ -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)}" } ?: "----"

View File

@ -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))
}
}
}

View File

@ -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) {

View File

@ -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())

View File

@ -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;
}