diff --git a/src/constant/routes.ts b/src/constant/routes.ts index 03e6e5d..4db9a25 100644 --- a/src/constant/routes.ts +++ b/src/constant/routes.ts @@ -38,11 +38,11 @@ export const API_ROUTES = { DELETE_PERMISSION: (id: string) => `permissions/${id}`, // Product Options APIs (non-admin) - GET_PRODUCT_OPTIONS: "api/v1/product-options", - GET_PRODUCT_OPTION: (id: string) => `api/v1/product-options/${id}`, - CREATE_PRODUCT_OPTION: "api/v1/product-options", - UPDATE_PRODUCT_OPTION: (id: string) => `api/v1/product-options/${id}`, - DELETE_PRODUCT_OPTION: (id: string) => `api/v1/product-options/${id}`, + GET_PRODUCT_OPTIONS: "products/options", + GET_PRODUCT_OPTION: (id: string) => `products/options/${id}`, + CREATE_PRODUCT_OPTION: "products/options", + UPDATE_PRODUCT_OPTION: (id: string) => `products/options/${id}`, + DELETE_PRODUCT_OPTION: (id: string) => `products/options/${id}`, // Categories APIs (non-admin) GET_CATEGORIES: "api/v1/products/categories", @@ -79,7 +79,7 @@ export const API_ROUTES = { DELETE_IMAGE: (imageId: string) => `api/v1/products/images/${imageId}`, // Landing Hero APIs - GET_LANDING_HERO: "api/v1/settings/landing/hero", // non-admin + GET_LANDING_HERO: "settings/landing/hero", // non-admin UPDATE_LANDING_HERO: "settings/landing/hero", // admin // Discount Codes APIs diff --git a/src/pages/orders/core/_models.ts b/src/pages/orders/core/_models.ts index 94e2602..678049c 100644 --- a/src/pages/orders/core/_models.ts +++ b/src/pages/orders/core/_models.ts @@ -22,25 +22,37 @@ export interface OrderItem { product_image?: string; variant_id?: number; variant_name?: string; + product_variant_id?: number; + product_variant_name?: string; quantity: number; unit_price: number; total_price: number; discount_amount?: number; + weight?: number; + final_weight?: number; } export interface OrderAddress { id: number; - type: "billing" | "shipping"; - first_name: string; - last_name: string; + type?: "billing" | "shipping"; + // legacy fields + first_name?: string; + last_name?: string; company?: string; - address_line_1: string; + address_line_1?: string; address_line_2?: string; - city: string; - state: string; - postal_code: string; - country: string; + city?: string; + state?: string; + postal_code?: string; + country?: string; phone?: string; + // new fields + name?: string; + address?: string; + region?: string; + plaque?: number; + unit?: number; + receiving_address?: string; } export interface OrderPayment { @@ -65,18 +77,37 @@ export interface Order { order: { id: number; order_number: string; - customer: OrderCustomer; + customer?: OrderCustomer; status: OrderStatus; items: OrderItem[]; billing_address: OrderAddress; shipping_address: OrderAddress; - payment: OrderPayment; - subtotal: number; - tax_amount: number; - shipping_amount: number; - discount_amount: number; - total_amount: number; - final_total: number; + payment?: OrderPayment; + // new flat fields from API + invoice_id?: number; + user_id?: number; + user?: { + id: number; + phone_number: string; + first_name: string; + last_name: string; + email: string; + national_code?: string; + verified: boolean; + avatar?: string; + }; + payment_status?: PaymentStatus; + net_total?: number; + vat_total?: number; + shipping_total?: number; + discount_total?: number; + // legacy totals kept for compatibility + subtotal?: number; + tax_amount?: number; + shipping_amount?: number; + discount_amount?: number; + total_amount?: number; + final_total?: number; currency: string; notes?: string; tracking_number?: string; diff --git a/src/pages/orders/order-detail/OrderDetailPage.tsx b/src/pages/orders/order-detail/OrderDetailPage.tsx index 5ba7183..1340127 100644 --- a/src/pages/orders/order-detail/OrderDetailPage.tsx +++ b/src/pages/orders/order-detail/OrderDetailPage.tsx @@ -169,10 +169,7 @@ const OrderDetailPage = () => {
{order?.updated_at ? formatDate(order.updated_at) : 'نامشخص'}
-{order?.shipping_method_id || 'تعریف نشده'}
-- {item.product_variant_name || `واریانت شناسه: ${item.product_variant_id}`} -
-- شناسه آیتم: {item.id} -
-- {formatCurrency(item.total_price || 0)} -
-- محصولی در این سفارش یافت نشد -
- )} + {order.items.map((item) => { + const baseWeight = (item.final_weight ?? item.weight ?? 0) as number; + const weightGr = Math.round(baseWeight * 1000); + const formatFa = (n: number) => new Intl.NumberFormat('fa-IR').format(n); + return ( ++ محصولی در این سفارش یافت نشد +
+ )} +نام: {order?.shipping_address?.name || 'نام نامشخص'}
+آدرس: {order?.shipping_address?.address || 'آدرس نامشخص'}
+شهر: {order?.shipping_address?.city || 'شهر نامشخص'}, استان: {order?.shipping_address?.state || 'استان نامشخص'}
+کشور: {order?.shipping_address?.country || 'کشور نامشخص'}
+منطقه: {order?.shipping_address?.region || 'منطقه نامشخص'}
+کد پستی: {order?.shipping_address?.postal_code || 'نامشخص'}
+ {order?.shipping_address?.plaque && ( +پلاک: {order.shipping_address.plaque}, واحد: {order.shipping_address.unit || 'ندارد'}
+ )} + {order?.shipping_address?.receiving_address && ( +آدرس تحویل: {order.shipping_address.receiving_address}
+ )} +- {order.customer.first_name || 'نامشخص'} {order.customer.last_name || ''} -
-{order.customer.email || 'ایمیل نامشخص'}
-{order.customer.phone}
-اطلاعات مشتری در دسترس نیست
- )} -نام: {order?.shipping_address?.name || 'نام نامشخص'}
-آدرس: {order?.shipping_address?.address || 'آدرس نامشخص'}
-شهر: {order?.shipping_address?.city || 'شهر نامشخص'}, استان: {order?.shipping_address?.state || 'استان نامشخص'}
-کشور: {order?.shipping_address?.country || 'کشور نامشخص'}
-منطقه: {order?.shipping_address?.region || 'منطقه نامشخص'}
-کد پستی: {order?.shipping_address?.postal_code || 'نامشخص'}
- {order?.shipping_address?.plaque && ( -پلاک: {order.shipping_address.plaque}, واحد: {order.shipping_address.unit || 'ندارد'}
- )} - {order?.shipping_address?.receiving_address && ( -آدرس تحویل: {order.shipping_address.receiving_address}
- )} -