price calulator changed 8
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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) */
|
||||
|
||||
Reference in New Issue
Block a user