From cce279a60d525c71b49268d7d281e544196f434f Mon Sep 17 00:00:00 2001 From: Amirmahdi Nourkazemi Date: Sun, 2 Aug 2026 13:38:43 +0330 Subject: [PATCH] feat: add final numbers --- app/admin/purchases/page.tsx | 24 ++++++++++++++++++++++-- types/purchase.ts | 3 +++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/admin/purchases/page.tsx b/app/admin/purchases/page.tsx index fc773a1..d9c5d35 100644 --- a/app/admin/purchases/page.tsx +++ b/app/admin/purchases/page.tsx @@ -37,6 +37,26 @@ const emptyFilters: PurchaseFilters = { status: undefined, }; +// قیمت نهایی خرید (مبلغ قابل‌نمایش در جدول). +// وقتی محصول تخفیف دارد، مقدار نهایی همان «قیمت کلی تخفیف‌خورده» است؛ +// اما در پکیج‌هایی که تخفیف ندارند، «قیمت» خود محصول مقدار نهایی است. +const getPurchaseFinalPrice = (purchase: Purchase): number => { + const product = purchase.product; + + // اگر محصول تخفیف دارد، قیمت نهایی همان قیمت تخفیف‌خورده است + const discountedPrice = product?.discounted_price; + if (discountedPrice) { + const parsed = parseInt(discountedPrice.replace(/[^\d]/g, ''), 10); + if (!Number.isNaN(parsed) && parsed > 0) return parsed; + } + + // بدون تخفیف → قیمت اصلی محصول (فقط وقتی discount نداشته باشد) + if (product?.price) return product.price; + + // برگشت به مبلغ ثبت‌شدهٔ تراکنش وقتی محصول در دسترس نیست + return purchase.amount || 0; +}; + export default function PurchasesPage() { const { token } = useAuth(); const [packages, setPackages] = useState([]); @@ -209,7 +229,7 @@ export default function PurchasesPage() { کاربر پکیج محصول - مبلغ + قیمت نهایی منبع پرداخت وضعیت تاریخ @@ -241,7 +261,7 @@ export default function PurchasesPage() { - {formatPrice(purchase.amount)} تومان + {formatPrice(getPurchaseFinalPrice(purchase))} تومان diff --git a/types/purchase.ts b/types/purchase.ts index 851a0f7..aa1b570 100644 --- a/types/purchase.ts +++ b/types/purchase.ts @@ -19,6 +19,9 @@ export interface PurchaseProduct { type: number | null; package_name_id: number; package_name: PackageName | null; + // Display-only pricing (متن نمایشی — بدون محاسبه) + discounted_price: string | null; // قیمت کلی تخفیف‌خورده + discount: string | null; // تخفیف } // A purchase = a subscription transaction