wallet handling
This commit is contained in:
@@ -93,9 +93,47 @@ function formatRialNumber(value: number): string {
|
||||
return Math.round(value).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
||||
}
|
||||
|
||||
/** متن توضیح مودال دارایی ریالی — cash_wallet + assets_rial_value */
|
||||
export function formatRialAssetsInfoText(cashWallet: number, assetsRialValue: number): string {
|
||||
return `مجموع کیف پول ریالی (${formatRialNumber(cashWallet)} ریال) + معادل ریالی محصولات (${formatRialNumber(assetsRialValue)} ریال)`
|
||||
/** متن توضیح مودال دارایی ریالی */
|
||||
export function formatRialAssetsInfoText(cashWallet: number, metalRialValue: number): string {
|
||||
const total = cashWallet + metalRialValue
|
||||
return [
|
||||
`کیف پول ریالی: ${formatRialNumber(cashWallet)} ریال`,
|
||||
`ارزش ریالی طلا (وزن × قیمت زنده): ${formatRialNumber(metalRialValue)} ریال`,
|
||||
`مجموع: ${formatRialNumber(total)} ریال`,
|
||||
].join('\n')
|
||||
}
|
||||
|
||||
/** ارزش ریالی فلزات از وزن × قیمت زنده — fallback کلاینت قبل از deploy بکاند */
|
||||
export function computeMetalRialValue(
|
||||
metalTotals: Array<{ metal_id?: number; total_weight?: number }>,
|
||||
liveGoldPrice: number,
|
||||
livePricesByMetal?: Partial<Record<number, number>>
|
||||
): number {
|
||||
return metalTotals.reduce((sum, metal) => {
|
||||
const weight = Number(metal.total_weight ?? 0)
|
||||
if (weight <= 0) {
|
||||
return sum
|
||||
}
|
||||
|
||||
const metalId = Number(metal.metal_id ?? 0)
|
||||
const unitPrice =
|
||||
livePricesByMetal?.[metalId] ??
|
||||
(metalId === METAL_GOLD ? liveGoldPrice : 0)
|
||||
|
||||
return sum + weight * unitPrice
|
||||
}, 0)
|
||||
}
|
||||
|
||||
export function resolveAssetsRialValue(
|
||||
summary: { assets_rial_value?: number; metal_totals?: Array<{ metal_id?: number; total_weight?: number }> } | null | undefined,
|
||||
liveGoldPrice: number
|
||||
): number {
|
||||
const fromServer = Number(summary?.assets_rial_value ?? 0)
|
||||
if (fromServer > 0) {
|
||||
return fromServer
|
||||
}
|
||||
|
||||
return computeMetalRialValue(summary?.metal_totals ?? [], liveGoldPrice)
|
||||
}
|
||||
|
||||
export function formatInventoryCardValue(card: {
|
||||
|
||||
Reference in New Issue
Block a user