55 lines
1.3 KiB
TypeScript
55 lines
1.3 KiB
TypeScript
export type ProductCashFeeSource = {
|
|
cash_fee_buy?: number | null
|
|
cash_fee_sell?: number | null
|
|
cash_fee_buy_is_percent?: boolean | null
|
|
cash_fee_sell_is_percent?: boolean | null
|
|
}
|
|
|
|
/** 0.5 => 0.5% ، 5 => 5% */
|
|
export function resolveCashFeePercentRatio(percentValue?: number | null) {
|
|
const offset = Number(percentValue ?? 0)
|
|
if (!offset || !Number.isFinite(offset)) {
|
|
return 0
|
|
}
|
|
|
|
return offset / 100
|
|
}
|
|
|
|
export function resolveProductCashFeeRial(
|
|
feeValue: number | null | undefined,
|
|
isPercent: boolean | null | undefined,
|
|
basePriceRial: number,
|
|
) {
|
|
const raw = Number(feeValue ?? 0)
|
|
if (!raw || !Number.isFinite(raw)) {
|
|
return 0
|
|
}
|
|
|
|
if (!isPercent) {
|
|
return Math.round(raw)
|
|
}
|
|
|
|
const base = Number(basePriceRial)
|
|
if (!base || base <= 0) {
|
|
return 0
|
|
}
|
|
|
|
return Math.round(Math.abs(base * resolveCashFeePercentRatio(raw)))
|
|
}
|
|
|
|
export function resolveProductCashFeeBuyRial(product: ProductCashFeeSource, basePriceRial: number) {
|
|
return resolveProductCashFeeRial(
|
|
product.cash_fee_buy,
|
|
product.cash_fee_buy_is_percent,
|
|
basePriceRial,
|
|
)
|
|
}
|
|
|
|
export function resolveProductCashFeeSellRial(product: ProductCashFeeSource, basePriceRial: number) {
|
|
return resolveProductCashFeeRial(
|
|
product.cash_fee_sell,
|
|
product.cash_fee_sell_is_percent,
|
|
basePriceRial,
|
|
)
|
|
}
|