wallet handling

This commit is contained in:
2026-06-15 12:05:00 +03:30
parent 38e0cffe86
commit 23311cee01
5 changed files with 65 additions and 21 deletions
+41 -3
View File
@@ -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: {