price calulator changed 8

This commit is contained in:
2026-07-02 21:23:55 +03:30
parent 874424f853
commit 0bcd9ce551
5 changed files with 75 additions and 10 deletions
+54
View File
@@ -13,6 +13,7 @@ import {
usesQuantityTrade,
} from '@/utils/productCategories'
import { formatInventoryCardValue } from '@/utils/productAssets'
import { formatGoldAmount } from '@/utils/usePrice'
/** @deprecated از isMeltedTradeGroup استفاده کنید */
export const BOURSECU_GROUP_ABSHODE = PRODUCT_CATEGORY_ABSHODE
@@ -635,6 +636,59 @@ export function resolveTransactionTradeProduct(
return item.wallet?.product ?? null
}
const MELTED_GOLD_TRANSACTION_DECIMALS = 5
/** معامله آبشده / کیف طلای اصلی — نه سکه و محصول تعدادی */
export function isMeltedGoldTransaction(
item?: (TransactionTradeProductSource & { type?: number | null; title?: string | null }) | null,
): boolean {
if (!item) {
return false
}
const tradeProduct = resolveTransactionTradeProduct(item)
if (tradeProduct) {
if (usesQuantityTrade(tradeProduct) && !isMeltedTradeGroup(tradeProduct.group_type)) {
return false
}
if (isMeltedTradeGroup(tradeProduct.group_type)) {
return true
}
if (isCountBasedProduct(tradeProduct)) {
return false
}
}
const title = (item.title ?? '').trim()
const meltedLabel = getMeltedGoldTradeLabel()
if (title.includes(PRODUCT_CATEGORY_ABSHODE) || (meltedLabel && title.includes(meltedLabel))) {
return true
}
if (item.type !== 1 && item.type !== 2) {
return false
}
if (isMeltedTradeGroup(item.wallet?.product?.group_type)) {
return true
}
const tradeTitle = (tradeProduct?.title ?? '').trim()
if (tradeTitle === meltedLabel || tradeTitle.includes(PRODUCT_CATEGORY_ABSHODE)) {
return true
}
return !item.wallet?.product && !tradeTitle
}
export function formatTransactionGoldAmount(
item?: (TransactionTradeProductSource & { type?: number | null; title?: string | null }) | null,
amount?: number | null,
): string {
const decimals = isMeltedGoldTransaction(item) ? MELTED_GOLD_TRANSACTION_DECIMALS : 3
return formatGoldAmount(amount, decimals)
}
/** برچسب قیمت حین معامله — نام و واحد همان محصول معامله‌شده */
export function getTransactionTradePriceLabel(product?: (ProductUnitSource & { title?: string | null }) | null) {
if (!product) {
+2 -2
View File
@@ -143,10 +143,10 @@ export function getTransactionGoldAmount(item: TransactionPriceSource): number {
return gold
}
export function formatGoldAmount(amount?: number | null): string {
export function formatGoldAmount(amount?: number | null, decimals = 3): string {
const num = Number(amount)
if (!Number.isFinite(num)) return '0'
return formatGroupedPrice(Number(num.toFixed(3)), false)
return formatGroupedPrice(Number(num.toFixed(decimals)), false)
}
/** وزن فلز (گرم/کیلو) — بدون گرد کردن به بالا (برخلاف usePriceWithoutType) */