settlement status
This commit is contained in:
parent
48add55380
commit
782dde479a
@ -104,7 +104,9 @@ fun SummaryCard(
|
|||||||
onClickLastSync: () -> Unit,
|
onClickLastSync: () -> Unit,
|
||||||
lastSyncTime: Long?,
|
lastSyncTime: Long?,
|
||||||
totalSaleCount: Int,
|
totalSaleCount: Int,
|
||||||
totalSaleAmount: Long
|
totalSaleAmount: Long,
|
||||||
|
settlementStatusText: String,
|
||||||
|
settlementDateTimeText: String
|
||||||
) {
|
) {
|
||||||
var now by remember { mutableLongStateOf(System.currentTimeMillis()) }
|
var now by remember { mutableLongStateOf(System.currentTimeMillis()) }
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
@ -145,8 +147,8 @@ fun SummaryCard(
|
|||||||
|
|
||||||
SummaryItem(
|
SummaryItem(
|
||||||
title = "Settlement",
|
title = "Settlement",
|
||||||
value = "Completed",
|
value = settlementStatusText,
|
||||||
subtitle = "Today 11:00 PM",
|
subtitle = settlementDateTimeText,
|
||||||
icon = Icons.Default.Check,
|
icon = Icons.Default.Check,
|
||||||
iconBg = Color.CrimsonRed
|
iconBg = Color.CrimsonRed
|
||||||
)
|
)
|
||||||
|
|||||||
@ -394,7 +394,9 @@ fun DashboardScreen2(
|
|||||||
onClickLastSync = onClickLastSync,
|
onClickLastSync = onClickLastSync,
|
||||||
lastSyncTime = dashboardUiState.lastSyncTime,
|
lastSyncTime = dashboardUiState.lastSyncTime,
|
||||||
totalSaleCount = dashboardUiState.totalSaleCount,
|
totalSaleCount = dashboardUiState.totalSaleCount,
|
||||||
totalSaleAmount = dashboardUiState.totalSaleAmount
|
totalSaleAmount = dashboardUiState.totalSaleAmount,
|
||||||
|
settlementStatusText = dashboardUiState.settlementStatusText,
|
||||||
|
settlementDateTimeText = dashboardUiState.settlementDateTimeText
|
||||||
)
|
)
|
||||||
Spacer(Modifier.height(12.dp))
|
Spacer(Modifier.height(12.dp))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,5 +15,7 @@ data class DashboardUiState(
|
|||||||
val lastSyncTime: Long? = null,
|
val lastSyncTime: Long? = null,
|
||||||
val carouselUrls: List<String> = emptyList(),
|
val carouselUrls: List<String> = emptyList(),
|
||||||
val totalSaleCount: Int = 0,
|
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 androidx.lifecycle.viewModelScope
|
||||||
import com.utsmyanmar.baselib.repo.Repository
|
import com.utsmyanmar.baselib.repo.Repository
|
||||||
import com.utsmyanmar.paylibs.model.PayDetail
|
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.core_utils.SystemParamsOperation
|
||||||
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType
|
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
@ -17,6 +18,7 @@ import kotlinx.coroutines.flow.update
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.math.BigDecimal
|
import java.math.BigDecimal
|
||||||
import java.text.DecimalFormat
|
import java.text.DecimalFormat
|
||||||
|
import java.util.Calendar
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
@ -31,11 +33,23 @@ class DashboardViewModel @Inject constructor(
|
|||||||
init {
|
init {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
repository.getLastTenTransactions().asFlow().collect { payDetails ->
|
repository.getLastTenTransactions().asFlow().collect { payDetails ->
|
||||||
|
val latestSettlement = payDetails.lastOrNull {
|
||||||
|
it.transactionType == TransactionsType.SETTLEMENT.value
|
||||||
|
}
|
||||||
|
val isCurrentBusinessSettlement = latestSettlement?.isCurrentBusinessSettlement() == true
|
||||||
_uiState.update {
|
_uiState.update {
|
||||||
it.copy(
|
it.copy(
|
||||||
recentTransactions = payDetails.map { pd -> pd.toRecord() },
|
recentTransactions = payDetails.map { pd -> pd.toRecord() },
|
||||||
totalSaleCount = payDetails.totalSaleCount(),
|
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')
|
val t = (time ?: "").padStart(6, '0')
|
||||||
return "${d.take(2)}/${d.drop(2).take(2)} ${t.take(2)}:${t.drop(2).take(2)}"
|
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