From 782dde479a4b9087592c288c6f31a1c156c6ee41 Mon Sep 17 00:00:00 2001 From: moon <56061215+MgKyawLay@users.noreply.github.com> Date: Wed, 1 Jul 2026 23:25:04 +0630 Subject: [PATCH] settlement status --- .../ui/dashboard/DashboardComponents.kt | 8 +++-- .../ui/dashboard/DashboardScreen.kt | 4 ++- .../ui/dashboard/DashboardUiState.kt | 4 ++- .../ui/dashboard/DashboardViewModel.kt | 31 ++++++++++++++++++- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardComponents.kt b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardComponents.kt index fcba6ed..45ad090 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardComponents.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardComponents.kt @@ -104,7 +104,9 @@ fun SummaryCard( onClickLastSync: () -> Unit, lastSyncTime: Long?, totalSaleCount: Int, - totalSaleAmount: Long + totalSaleAmount: Long, + settlementStatusText: String, + settlementDateTimeText: String ) { var now by remember { mutableLongStateOf(System.currentTimeMillis()) } LaunchedEffect(Unit) { @@ -145,8 +147,8 @@ fun SummaryCard( SummaryItem( title = "Settlement", - value = "Completed", - subtitle = "Today 11:00 PM", + value = settlementStatusText, + subtitle = settlementDateTimeText, icon = Icons.Default.Check, iconBg = Color.CrimsonRed ) diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen.kt b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen.kt index f3b9f9c..18a89bd 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardScreen.kt @@ -394,7 +394,9 @@ fun DashboardScreen2( onClickLastSync = onClickLastSync, lastSyncTime = dashboardUiState.lastSyncTime, totalSaleCount = dashboardUiState.totalSaleCount, - totalSaleAmount = dashboardUiState.totalSaleAmount + totalSaleAmount = dashboardUiState.totalSaleAmount, + settlementStatusText = dashboardUiState.settlementStatusText, + settlementDateTimeText = dashboardUiState.settlementDateTimeText ) Spacer(Modifier.height(12.dp)) } diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardUiState.kt b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardUiState.kt index 31205b8..6aa8b2b 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardUiState.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/dashboard/DashboardUiState.kt @@ -15,5 +15,7 @@ data class DashboardUiState( val lastSyncTime: Long? = null, val carouselUrls: List = emptyList(), val totalSaleCount: Int = 0, - val totalSaleAmount: Long = 0L + val totalSaleAmount: Long = 0L, + val settlementStatusText: String = "Pending", + val settlementDateTimeText: String = "--/-- --:--" ) 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 6cd4935..3c7979f 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 @@ -6,6 +6,7 @@ import androidx.lifecycle.asFlow import androidx.lifecycle.viewModelScope import com.utsmyanmar.baselib.repo.Repository import com.utsmyanmar.paylibs.model.PayDetail +import com.utsmyanmar.paylibs.system.SystemDateTime import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType import dagger.hilt.android.lifecycle.HiltViewModel @@ -17,6 +18,7 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import java.math.BigDecimal import java.text.DecimalFormat +import java.util.Calendar import javax.inject.Inject @HiltViewModel @@ -31,11 +33,23 @@ class DashboardViewModel @Inject constructor( init { viewModelScope.launch { repository.getLastTenTransactions().asFlow().collect { payDetails -> + val latestSettlement = payDetails.lastOrNull { + it.transactionType == TransactionsType.SETTLEMENT.value + } + val isCurrentBusinessSettlement = latestSettlement?.isCurrentBusinessSettlement() == true _uiState.update { it.copy( recentTransactions = payDetails.map { pd -> pd.toRecord() }, totalSaleCount = payDetails.totalSaleCount(), - totalSaleAmount = payDetails.totalSaleAmount() + totalSaleAmount = payDetails.totalSaleAmount(), + settlementStatusText = if (isCurrentBusinessSettlement) { + "Completed" + } else { + "Pending" + }, + settlementDateTimeText = latestSettlement + ?.let { buildDateTime(it.TradeDate, it.TradeTime) } + ?: "--/-- --:--" ) } } @@ -112,3 +126,18 @@ private fun buildDateTime(date: String?, time: String?): String { val t = (time ?: "").padStart(6, '0') return "${d.take(2)}/${d.drop(2).take(2)} ${t.take(2)}:${t.drop(2).take(2)}" } + +private fun PayDetail.isCurrentBusinessSettlement(): Boolean { + if (transactionType != TransactionsType.SETTLEMENT.value) return false + if (TradeDate != SystemDateTime.getMMDD()) return false + + val now = Calendar.getInstance() + val cutoff = Calendar.getInstance().apply { + set(Calendar.HOUR_OF_DAY, 23) + set(Calendar.MINUTE, 0) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + } + + return now.before(cutoff) +}