import type { Order } from '@/model/order' import { usePrice } from '@core/utils/usePrice' import { getMainMetal } from '@/utils/metalLabels' export type OrderServiceFeeDisplay = { value: string /** از ریال / از مس / از طلا … */ source: string } /** * نمایش کارمزد سفارش با منبع کسر (fee_asset). * gold → از کیف فلز (گرم + معادل ریالی) * rial / خالی → از ریال */ export function formatOrderServiceFee(order?: Pick< Order, 'fee_asset' | 'service_charge' | 'service_charge_price' | 'order_metal_label' | 'amount_unit' > | null): OrderServiceFeeDisplay { const grams = Number(order?.service_charge ?? 0) const rial = Number(order?.service_charge_price ?? 0) if ((!Number.isFinite(grams) || grams <= 0) && (!Number.isFinite(rial) || rial <= 0)) { return { value: '۰', source: '' } } const fromMetal = String(order?.fee_asset ?? '').toLowerCase() === 'gold' if (fromMetal) { const metalName = (order?.order_metal_label || getMainMetal() || 'فلز').trim() const unit = (order?.amount_unit || 'گرم').trim() || 'گرم' const gramText = Number(grams || 0).toLocaleString('fa-IR', { maximumFractionDigits: 4 }) const rialText = usePrice(rial || 0, true, 'ریال') return { value: `${gramText} ${unit} ≈ ${rialText}`, source: `از ${metalName}`, } } return { value: usePrice(rial || 0, true, 'ریال'), source: 'از ریال', } }