added percent in product fee 5
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
:disabled="props.disabled"
|
||||
:placeHolder="props.placeHolder"
|
||||
:size="props.size"
|
||||
:step="props.step"
|
||||
:type="props.type"
|
||||
class=""
|
||||
@change="handlerChange"
|
||||
@@ -23,6 +24,7 @@
|
||||
:disabled="props.disabled"
|
||||
:placeHolder="props.placeHolder"
|
||||
:size="props.size"
|
||||
:step="props.step"
|
||||
:type="props.type === 'price' ? 'tel' : props.type"
|
||||
class=""
|
||||
@change="handlerChange"
|
||||
@@ -48,6 +50,7 @@ interface Prop {
|
||||
addonBgColor?: String
|
||||
addonTextColor?: String
|
||||
placeHolder?: String
|
||||
step?: String | Number
|
||||
}
|
||||
|
||||
const addonBgColor = computed(() => props.addonBgColor)
|
||||
|
||||
@@ -263,9 +263,10 @@
|
||||
v-model:value="form.cash_fee_buy"
|
||||
:addon-before="form.cash_fee_buy_is_percent ? '%' : 'ریال'"
|
||||
:type="form.cash_fee_buy_is_percent ? 'number' : 'price'"
|
||||
:step="form.cash_fee_buy_is_percent ? 'any' : undefined"
|
||||
size="large"
|
||||
class="w-full product-cash-fee-input"
|
||||
:placeHolder="form.cash_fee_buy_is_percent ? 'مثلاً 5' : 'مثلاً 100000'"
|
||||
:placeHolder="form.cash_fee_buy_is_percent ? 'مثلاً 0.5 یا 5' : 'مثلاً 100000'"
|
||||
/>
|
||||
</div>
|
||||
</a-form-item>
|
||||
@@ -286,9 +287,10 @@
|
||||
v-model:value="form.cash_fee_sell"
|
||||
:addon-before="form.cash_fee_sell_is_percent ? '%' : 'ریال'"
|
||||
:type="form.cash_fee_sell_is_percent ? 'number' : 'price'"
|
||||
:step="form.cash_fee_sell_is_percent ? 'any' : undefined"
|
||||
size="large"
|
||||
class="w-full product-cash-fee-input"
|
||||
:placeHolder="form.cash_fee_sell_is_percent ? 'مثلاً 10' : 'مثلاً 200000'"
|
||||
:placeHolder="form.cash_fee_sell_is_percent ? 'مثلاً 0.5 یا 10' : 'مثلاً 200000'"
|
||||
/>
|
||||
</div>
|
||||
</a-form-item>
|
||||
@@ -463,12 +465,12 @@ const inventoryHelp: DashboardHelp = {
|
||||
|
||||
const cashFeeBuyHelp: DashboardHelp = {
|
||||
description: 'مبلغ اضافه روی قیمت پایه برای خرید — نقدی (ریال ثابت) یا درصدی از مظنه.',
|
||||
formula: 'نقدی: +۱۰۰٬۰۰۰ ریال | درصدی: ۵٪ از قیمت پایه',
|
||||
formula: 'نقدی: +۱۰۰٬۰۰۰ ریال | درصدی: ۰.۵٪ یا ۵٪ از قیمت پایه',
|
||||
}
|
||||
|
||||
const cashFeeSellHelp: DashboardHelp = {
|
||||
description: 'مبلغ کسر از قیمت پایه برای فروش — نقدی (ریال ثابت) یا درصدی از مظنه.',
|
||||
formula: 'نقدی: −۲۰۰٬۰۰۰ ریال | درصدی: ۱۰٪ از قیمت پایه',
|
||||
formula: 'نقدی: −۲۰۰٬۰۰۰ ریال | درصدی: ۰.۵٪ یا ۱۰٪ از قیمت پایه',
|
||||
}
|
||||
|
||||
const showInAssetsHelp: DashboardHelp = {
|
||||
|
||||
@@ -1,25 +1,13 @@
|
||||
import type { BaseTableColumn } from '@core/type/baseTable'
|
||||
import CustomTag from '@/components/CustomTag.vue'
|
||||
import { isStoreApp } from '@/utils/config'
|
||||
import { formatAdminCashFeeLabel } from '@/utils/productCashFee'
|
||||
import { usePrice } from '@core/utils/usePrice'
|
||||
|
||||
function formatMoney(value: number | null | undefined) {
|
||||
return usePrice(value ?? 0, true, '').trim()
|
||||
}
|
||||
|
||||
function formatProductCashFee(value: number | null | undefined, isPercent?: boolean | null) {
|
||||
const raw = Number(value ?? 0)
|
||||
if (!raw) {
|
||||
return '۰'
|
||||
}
|
||||
|
||||
if (isPercent) {
|
||||
return `${raw}%`
|
||||
}
|
||||
|
||||
return formatMoney(raw)
|
||||
}
|
||||
|
||||
const inventoryColumn: BaseTableColumn = {
|
||||
title: 'موجودی',
|
||||
dataIndex: 'inventory',
|
||||
@@ -99,14 +87,14 @@ export function getProductColumns(): BaseTableColumn[] {
|
||||
dataIndex: 'cash_fee_buy',
|
||||
key: 'cash_fee_buy',
|
||||
type: 'Number',
|
||||
customRender: ({ record }) => formatProductCashFee(record.cash_fee_buy, record.cash_fee_buy_is_percent)
|
||||
customRender: ({ record }) => formatAdminCashFeeLabel(record.cash_fee_buy, record.cash_fee_buy_is_percent)
|
||||
},
|
||||
{
|
||||
title: 'هزینه فروش',
|
||||
dataIndex: 'cash_fee_sell',
|
||||
key: 'cash_fee_sell',
|
||||
type: 'Number',
|
||||
customRender: ({ record }) => formatProductCashFee(record.cash_fee_sell, record.cash_fee_sell_is_percent)
|
||||
customRender: ({ record }) => formatAdminCashFeeLabel(record.cash_fee_sell, record.cash_fee_sell_is_percent)
|
||||
},
|
||||
...(isStoreApp() ? [inventoryColumn] : []),
|
||||
{
|
||||
|
||||
@@ -1,10 +1,20 @@
|
||||
/** پارس مقدار هزینه خرید/فروش (نقدی یا درصدی) قبل از ارسال به API */
|
||||
function normalizeDecimalString(value: string) {
|
||||
const trimmed = value.trim()
|
||||
if (!trimmed.includes(',') || trimmed.includes('.')) {
|
||||
return trimmed.replaceAll(',', '')
|
||||
}
|
||||
|
||||
// 0,5 => 0.5
|
||||
return trimmed.replace(',', '.')
|
||||
}
|
||||
|
||||
export function parseCashFeeValue(value: unknown): number {
|
||||
if (value === undefined || value === null) {
|
||||
return 0
|
||||
}
|
||||
|
||||
const raw = String(value).trim().replaceAll(',', '')
|
||||
const raw = normalizeDecimalString(String(value))
|
||||
if (raw === '') {
|
||||
return 0
|
||||
}
|
||||
@@ -31,7 +41,8 @@ export function formatAdminCashFeeLabel(
|
||||
}
|
||||
|
||||
if (isPercent) {
|
||||
return `${raw}%`
|
||||
const text = Number.isInteger(raw) ? String(raw) : String(parseFloat(raw.toFixed(4)))
|
||||
return `${text}%`
|
||||
}
|
||||
|
||||
return String(raw)
|
||||
|
||||
Reference in New Issue
Block a user