diff --git a/src/pages/orders/core/_models.ts b/src/pages/orders/core/_models.ts index 678049c..984437e 100644 --- a/src/pages/orders/core/_models.ts +++ b/src/pages/orders/core/_models.ts @@ -65,6 +65,20 @@ export interface OrderPayment { paid_at?: string; } +export interface OrderPaymentRecord { + id: number; + invoice_id: number; + user_id: number; + created_at: string; + updated_at: string; + payment_type: string; + status: string; + step?: string; + amount: number; + transaction_id?: string; + image_urls?: string[]; +} + export interface OrderCustomer { id: number; first_name: string; @@ -97,10 +111,12 @@ export interface Order { avatar?: string; }; payment_status?: PaymentStatus; + payments?: OrderPaymentRecord[]; net_total?: number; vat_total?: number; shipping_total?: number; discount_total?: number; + base_gold_price?: number; // legacy totals kept for compatibility subtotal?: number; tax_amount?: number; diff --git a/src/pages/orders/order-detail/OrderDetailPage.tsx b/src/pages/orders/order-detail/OrderDetailPage.tsx index 1340127..934ba6d 100644 --- a/src/pages/orders/order-detail/OrderDetailPage.tsx +++ b/src/pages/orders/order-detail/OrderDetailPage.tsx @@ -59,6 +59,20 @@ const formatDate = (dateString: string) => { }); }; +const formatPaymentType = (type?: string) => { + if (!type) return ''; + const key = type.toLowerCase().replace(/\s+/g, '-').replace(/_/g, '-'); + const mapping: Record = { + 'card-to-card': 'کارت به کارت', + 'credit-card': 'پرداخت بانکی', + 'debit-card': 'کارت بانکی', + 'bank-transfer': 'حواله بانکی', + 'cash-on-delivery': 'پرداخت در محل', + 'wallet': 'کیف پول', + }; + return mapping[key] || type; +}; + const OrderDetailPage = () => { const navigate = useNavigate(); const { id } = useParams(); @@ -206,8 +220,8 @@ const OrderDetailPage = () => {
{order?.items && order.items.length > 0 ? ( -
-
+
+
محصول
تعداد
وزن (گرم)
@@ -215,23 +229,49 @@ const OrderDetailPage = () => {
جمع
{order.items.map((item) => { - const baseWeight = (item.final_weight ?? item.weight ?? 0) as number; + const baseWeight = (item.weight ?? 0) as number; const weightGr = Math.round(baseWeight * 1000); const formatFa = (n: number) => new Intl.NumberFormat('fa-IR').format(n); return ( -
-
-
+
+
+
+
+ {item.product_name || `محصول شناسه: ${item.product_id}`} +
+
+ {item.product_variant_name || `واریانت شناسه: ${item.product_variant_id}`} +
+
+
{formatFa(item.quantity || 0)}
+
{formatFa(weightGr)}
+
{formatCurrency(item.unit_price || 0)}
+
{formatCurrency(item.total_price || 0)}
+
+
+
{item.product_name || `محصول شناسه: ${item.product_id}`}
{item.product_variant_name || `واریانت شناسه: ${item.product_variant_id}`}
+
+ تعداد + {formatFa(item.quantity || 0)} +
+
+ وزن (گرم) + {formatFa(weightGr)} +
+
+ قیمت واحد + {formatCurrency(item.unit_price || 0)} +
+
+ جمع + {formatCurrency(item.total_price || 0)} +
-
{formatFa(item.quantity || 0)}
-
{formatFa(weightGr)}
-
{formatCurrency(item.unit_price || 0)}
-
{formatCurrency(item.total_price || 0)}
); })} @@ -337,34 +377,40 @@ const OrderDetailPage = () => {
-
- جمع فرعی - {formatCurrency(order?.net_total || 0)} +
+ جمع اقلام + {formatCurrency(order?.net_total || 0)}
-
- مالیات - {formatCurrency(order?.vat_total || 0)} +
+ مالیات + {formatCurrency(order?.vat_total || 0)}
-
- هزینه ارسال - {formatCurrency(order?.shipping_total || 0)} + {order?.base_gold_price !== undefined && ( +
+ قیمت پایه طلا + {formatCurrency(order.base_gold_price)} +
+ )} +
+ هزینه ارسال + {formatCurrency(order?.shipping_total || 0)}
{(order?.discount_total || 0) > 0 && (
- تخفیف + تخفیف کل -{formatCurrency(order?.discount_total || 0)}
)}
-
- مجموع نهایی - {formatCurrency(order?.final_total || 0)} +
+ مجموع نهایی + {formatCurrency(order?.final_total || 0)}
-
- وضعیت پرداخت +
+ وضعیت پرداخت { {order?.payment_status === 'paid' ? 'پرداخت شده' : 'در انتظار پرداخت'}
+ {Array.isArray((data as any)?.payments) && (data as any)?.payments.length > 0 && ( +
+ روش پرداخت + {formatPaymentType((data as any).payments[0].payment_type)} +
+ )} {order?.invoice_id && ( -
- شماره فاکتور - {order.invoice_id} +
+ شماره فاکتور + {order.invoice_id} +
+ )} + {Array.isArray((data as any)?.payments) && (data as any)?.payments[0]?.transaction_id && ( +
+ شناسه تراکنش + {(data as any).payments[0].transaction_id} +
+ )} + {Array.isArray((data as any)?.payments) && (data as any)?.payments[0]?.image_urls?.length > 0 && ( +
+ رسید پرداخت + + رسید پرداخت +
)}