diff --git a/src/model/product.ts b/src/model/product.ts
index cae1cc8..998b6c3 100644
--- a/src/model/product.ts
+++ b/src/model/product.ts
@@ -24,6 +24,7 @@ export interface Product{
open_sell: boolean
show: boolean
show_in_assets?: boolean
+ use_last_price_if_zero?: boolean
title: string
updated_at: string
methodOption: number
diff --git a/src/pages/menuPages/customers/base/hooks/fundsColumns.tsx b/src/pages/menuPages/customers/base/hooks/fundsColumns.tsx
index f980126..2acab57 100644
--- a/src/pages/menuPages/customers/base/hooks/fundsColumns.tsx
+++ b/src/pages/menuPages/customers/base/hooks/fundsColumns.tsx
@@ -40,13 +40,14 @@ export const cols: BaseTableColumn[] = [
// className: 'column-money'
},
{
- title: 'نام قلک',
- dataIndex: 'fund.title',
- key: 'fund.title',
- type: 'Text'
+ title: 'نام محصول',
+ dataIndex: 'product.title',
+ key: 'product.title',
+ type: 'Text',
+ customRender: (record: any) => record.record?.product?.title ?? '-'
},
{
- title: 'موجودی طلا',
+ title: 'موجودی',
dataIndex: 'gold',
key: 'gold',
type: 'Number'
diff --git a/src/pages/menuPages/products/base/components/ProductEditorFormBody.vue b/src/pages/menuPages/products/base/components/ProductEditorFormBody.vue
index 8eff604..9adb9b5 100644
--- a/src/pages/menuPages/products/base/components/ProductEditorFormBody.vue
+++ b/src/pages/menuPages/products/base/components/ProductEditorFormBody.vue
@@ -46,6 +46,12 @@
مثبت = گرانتر، منفی = ارزانتر نسبت به قیمت مرجع.
+
+
+
+ اگر provider قیمت نداد (صفر)، با آخرین قیمت ذخیرهشده معامله شود
+
+
@@ -113,6 +119,12 @@
مثبت = گرانتر، منفی = ارزانتر نسبت به قیمت اتوماتیک. مثلاً ۵ یعنی ۵٪ بالاتر از مرجع.
+
+
+
+ اگر provider قیمت نداد (صفر)، با آخرین قیمت ذخیرهشده معامله شود
+
+
diff --git a/src/pages/menuPages/products/base/index.vue b/src/pages/menuPages/products/base/index.vue
index 73ce627..d71aa29 100644
--- a/src/pages/menuPages/products/base/index.vue
+++ b/src/pages/menuPages/products/base/index.vue
@@ -280,6 +280,7 @@ async function edit(record: Product) {
form.value = normalizeProductOrderLimitForm({
...productData,
+ show_in_assets: productData.show_in_assets ?? false,
price_offset_percent: productData.price_offset_percent ?? 0,
direct_price: productData.direct_price ?? 0,
auto_open_at: start.isValid() ? start : dayjs('00:00:00', 'HH:mm:ss'),
@@ -320,7 +321,8 @@ function resetData() {
file_id: undefined,
file: undefined,
order_limit_enabled: false,
- show_in_assets: true,
+ show_in_assets: false,
+ use_last_price_if_zero: false,
min_order_cash: undefined,
max_order_cash: undefined,
auto_open_at: dayjs('00:00:00', 'HH:mm:ss'),
diff --git a/src/utils/productEditorPrice.ts b/src/utils/productEditorPrice.ts
index 7d16092..42c3f9e 100644
--- a/src/utils/productEditorPrice.ts
+++ b/src/utils/productEditorPrice.ts
@@ -56,12 +56,24 @@ export type ProductEditorPricePreview =
| { status: 'ready'; amount: number; source: string }
| { status: 'empty'; message: string }
+function resolveStoredFallbackPrice(
+ storedPrice: number | null | undefined,
+ useLastPriceIfZero: boolean | undefined
+): number {
+ if (!useLastPriceIfZero) {
+ return 0
+ }
+
+ return Number(storedPrice) || 0
+}
+
export function computeProductEditorPricePreview(input: {
form: {
group_type?: string
price?: number | null
reading_method?: string | null
price_offset_percent?: number | null
+ use_last_price_if_zero?: boolean | null
}
methodOption: string
meltedPriceOption: MeltedPriceSource
@@ -99,11 +111,17 @@ export function computeProductEditorPricePreview(input: {
return { status: 'empty', message: '' }
}
const { base, profit } = normalizeReferenceBase(entry)
- return {
- status: 'ready',
- amount: adjustedProductPrice(base, profit, offsetPercent),
- source: entry.name
+ const liveAmount = adjustedProductPrice(base, profit, offsetPercent)
+ if (liveAmount > 0) {
+ return { status: 'ready', amount: liveAmount, source: entry.name }
}
+ const fallback = resolveStoredFallbackPrice(
+ input.form.price,
+ input.form.use_last_price_if_zero ?? false
+ )
+ return fallback > 0
+ ? { status: 'ready', amount: fallback, source: 'آخرین قیمت ذخیرهشده' }
+ : { status: 'empty', message: 'قیمت provider صفر است' }
}
if (input.methodOption === '1') {
@@ -121,9 +139,15 @@ export function computeProductEditorPricePreview(input: {
return { status: 'empty', message: '' }
}
const { base, profit } = normalizeReferenceBase(entry)
- return {
- status: 'ready',
- amount: adjustedProductPrice(base, profit, offsetPercent),
- source: entry.name
+ const liveAmount = adjustedProductPrice(base, profit, offsetPercent)
+ if (liveAmount > 0) {
+ return { status: 'ready', amount: liveAmount, source: entry.name }
}
+ const fallback = resolveStoredFallbackPrice(
+ input.form.price,
+ input.form.use_last_price_if_zero ?? false
+ )
+ return fallback > 0
+ ? { status: 'ready', amount: fallback, source: 'آخرین قیمت ذخیرهشده' }
+ : { status: 'empty', message: 'قیمت provider صفر است' }
}