Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cce279a60d |
@@ -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<PackageName[]>([]);
|
||||
@@ -209,7 +229,7 @@ export default function PurchasesPage() {
|
||||
<th className="px-4 py-3">کاربر</th>
|
||||
<th className="px-4 py-3">پکیج</th>
|
||||
<th className="px-4 py-3">محصول</th>
|
||||
<th className="px-4 py-3">مبلغ</th>
|
||||
<th className="px-4 py-3">قیمت نهایی</th>
|
||||
<th className="px-4 py-3">منبع پرداخت</th>
|
||||
<th className="px-4 py-3">وضعیت</th>
|
||||
<th className="px-4 py-3">تاریخ</th>
|
||||
@@ -241,7 +261,7 @@ export default function PurchasesPage() {
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-4 py-3.5 text-sm text-gray-900 dark:text-gray-100 whitespace-nowrap font-medium">
|
||||
{formatPrice(purchase.amount)} تومان
|
||||
{formatPrice(getPurchaseFinalPrice(purchase))} تومان
|
||||
</td>
|
||||
<td className="px-4 py-3.5 whitespace-nowrap">
|
||||
<span className="px-2.5 py-1 inline-flex text-xs leading-5 font-semibold rounded-lg bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300">
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user