diff --git a/src/pages/invoice/Detail.tsx b/src/pages/invoice/Detail.tsx index 7b8799d..a09ed0d 100644 --- a/src/pages/invoice/Detail.tsx +++ b/src/pages/invoice/Detail.tsx @@ -13,6 +13,7 @@ import type { InvoiceItem as ApiInvoiceItem } from './types/InvoiceTypes' import { Paths } from '@/config/Paths' import { useGetPaymentInvoice } from '../payment/hooks/usePaymentData' import InvoicePaymentList from './InvoicePaymentList' +import { formatItemDiscountDisplay } from './utils/invoiceItem' interface TableInvoiceItem extends RowDataType { id: string @@ -20,7 +21,8 @@ interface TableInvoiceItem extends RowDataType { title: string quantity: string unitPrice: string - discount: string + discountValue: string + discountPercent: string totalPrice: string confirmed: boolean confirmedAt: string | null @@ -57,17 +59,20 @@ const InvoiceDetail: FC = () => { : null const items: TableInvoiceItem[] = - invoice?.items?.map((item: ApiInvoiceItem) => ({ + invoice?.items?.map((item: ApiInvoiceItem) => { + const discounts = formatItemDiscountDisplay(item) + return { id: item.id, image: item.product?.images?.[0] ?? null, title: item.product?.title || '-', quantity: String(item.quantity), unitPrice: formatPrice(item.unitPrice), - discount: item.discount ? `${NumberFormat(item.discount)}٪` : '۰', + discountValue: discounts.value, + discountPercent: discounts.percent, totalPrice: formatPrice(item.total ?? 0), confirmed: !!item.confirmedAt, confirmedAt: item.confirmedAt, - })) ?? [] + }}) ?? [] const handlePrint = () => { window.print() @@ -97,8 +102,12 @@ const InvoiceDetail: FC = () => { title: 'مبلغ واحد', }, { - key: 'discount', - title: 'تخفیف', + key: 'discountValue', + title: 'تخفیف (مبلغ)', + }, + { + key: 'discountPercent', + title: 'تخفیف (درصد)', }, { key: 'totalPrice', @@ -253,10 +262,10 @@ const InvoiceDetail: FC = () => { جمع کل: {formatPrice(invoice.subTotal)} - {invoice.discount > 0 && ( + {(invoice.discount ?? 0) > 0 && (
تخفیف: - {formatPrice(invoice.discount)} + {formatPrice(invoice.discount ?? 0)}
)} {invoice.enableTax && invoice.taxAmount > 0 && ( diff --git a/src/pages/invoice/types/InvoiceTypes.ts b/src/pages/invoice/types/InvoiceTypes.ts index 47cb06a..c05b0ae 100644 --- a/src/pages/invoice/types/InvoiceTypes.ts +++ b/src/pages/invoice/types/InvoiceTypes.ts @@ -45,7 +45,8 @@ export type InvoiceItem = { quantity: number; unitPrice: number; subTotal: number | null; - discount: number; + discount: number | null; + discountPercent: number | null; total: number | null; description: string | null; confirmedAt: string | null; @@ -58,7 +59,7 @@ export type Invoice = { user: InvoiceUser; request: InvoiceRequest; invoiceNumber: number; - discount: number; + discount: number | null; subTotal: number; taxAmount: number; total: number; diff --git a/src/pages/invoice/utils/invoiceItem.ts b/src/pages/invoice/utils/invoiceItem.ts new file mode 100644 index 0000000..8b1e729 --- /dev/null +++ b/src/pages/invoice/utils/invoiceItem.ts @@ -0,0 +1,12 @@ +import { NumberFormat } from '@/config/func'; +import type { InvoiceItem } from '../types/InvoiceTypes'; + +export function formatItemDiscountDisplay(item: Pick): { + value: string; + percent: string; +} { + return { + value: item.discount != null && item.discount > 0 ? `${NumberFormat(item.discount)} ریال` : '-', + percent: item.discountPercent != null && item.discountPercent > 0 ? `${item.discountPercent}٪` : '-', + }; +}