import { TRADE_WEIGHT_UNIT_GRAM, TRADE_WEIGHT_UNIT_KILOGRAM } from '@/utils/weightUnit' export const METAL_ID_GOLD = 1 export const METAL_ID_SILVER = 2 export const METAL_ID_COPPER = 3 /** واحد نمایش موجودی/تراز هر فلز — مس کیلوگرم، بقیه گرم */ export function metalDisplayUnit(metalId: number): string { return metalId === METAL_ID_COPPER ? TRADE_WEIGHT_UNIT_KILOGRAM : TRADE_WEIGHT_UNIT_GRAM } export function isMetalKilogram(metalId: number): boolean { return metalId === METAL_ID_COPPER } /** تبدیل مقدار ذخیره‌شده به گرم (برای محاسبات ریالی) */ export function gramsToMetalDisplay(grams: number, metalId: number): number { return isMetalKilogram(metalId) ? grams / 1000 : grams } /** مقدار نمایشی از گرم */ export function formatMetalWeightFromGrams( grams: number, metalId: number, decimals = 3 ): string { const value = gramsToMetalDisplay(grams, metalId) return formatMetalDisplayValue(value, metalId, decimals) } /** مقدار از قبل در واحد نمایشی فلز */ export function formatMetalDisplayValue( value: number, metalId: number, decimals = 3 ): string { const unit = metalDisplayUnit(metalId) return `${Number(Number(value).toFixed(decimals))} ${unit}` } export function formatMetalDisplayValuePlain( value: number, metalId: number, decimals = 3 ): string { return Number(Number(value).toFixed(decimals)).toLocaleString('fa-IR', { maximumFractionDigits: decimals }) } export function metalCellValue( record: Record, metalId: number, prefix = 'metal_gold' ): number { const flatKey = `${prefix}_${metalId}` if (record[flatKey] != null) { return Number(record[flatKey]) } const mapKey = prefix === 'wallet_metal_gold' ? 'wallet_metal_gold' : 'metal_gold' const map = record[mapKey] as Record | undefined if (!map) { return 0 } return Number(map[String(metalId)] ?? 0) }