Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cce279a60d |
@@ -37,6 +37,26 @@ const emptyFilters: PurchaseFilters = {
|
|||||||
status: undefined,
|
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() {
|
export default function PurchasesPage() {
|
||||||
const { token } = useAuth();
|
const { token } = useAuth();
|
||||||
const [packages, setPackages] = useState<PackageName[]>([]);
|
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>
|
||||||
<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>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td className="px-4 py-3.5 text-sm text-gray-900 dark:text-gray-100 whitespace-nowrap font-medium">
|
<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>
|
||||||
<td className="px-4 py-3.5 whitespace-nowrap">
|
<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">
|
<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;
|
type: number | null;
|
||||||
package_name_id: number;
|
package_name_id: number;
|
||||||
package_name: PackageName | null;
|
package_name: PackageName | null;
|
||||||
|
// Display-only pricing (متن نمایشی — بدون محاسبه)
|
||||||
|
discounted_price: string | null; // قیمت کلی تخفیفخورده
|
||||||
|
discount: string | null; // تخفیف
|
||||||
}
|
}
|
||||||
|
|
||||||
// A purchase = a subscription transaction
|
// A purchase = a subscription transaction
|
||||||
|
|||||||
Reference in New Issue
Block a user