settlement status
This commit is contained in:
parent
48add55380
commit
782dde479a
@ -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
|
||||
)
|
||||
|
||||
@ -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))
|
||||
}
|
||||
|
||||
@ -15,5 +15,7 @@ data class DashboardUiState(
|
||||
val lastSyncTime: Long? = null,
|
||||
val carouselUrls: List<String> = emptyList(),
|
||||
val totalSaleCount: Int = 0,
|
||||
val totalSaleAmount: Long = 0L
|
||||
val totalSaleAmount: Long = 0L,
|
||||
val settlementStatusText: String = "Pending",
|
||||
val settlementDateTimeText: String = "--/-- --:--"
|
||||
)
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user