diff --git a/src/utils/storeHours.ts b/src/utils/storeHours.ts
index 6a41347..7173084 100644
--- a/src/utils/storeHours.ts
+++ b/src/utils/storeHours.ts
@@ -7,6 +7,14 @@ export interface StoreTradingHours {
closePriceEnabled: boolean
}
+export interface EffectiveTradingHours {
+ start: string
+ end: string
+ enforced: boolean
+}
+
+let productTradingHours: { start: string; end: string } | null = null
+
function parseTimeToSeconds(time: string): number {
const parts = time.trim().split(':').map(Number)
const [hours = 0, minutes = 0, seconds = 0] = parts
@@ -24,6 +32,12 @@ export function formatTradingTimeDisplay(time: string): string {
return time
}
+export function setProductTradingHours(start?: string | null, end?: string | null) {
+ if (start && end) {
+ productTradingHours = { start, end }
+ }
+}
+
export function getStoreTradingHours(): StoreTradingHours {
const settings = useSettingsStore()
const closeRaw = settings.getSettingByKey('close_price')
@@ -39,9 +53,34 @@ export function getStoreTradingHours(): StoreTradingHours {
}
}
+export function getEffectiveTradingHours(): EffectiveTradingHours {
+ const settings = getStoreTradingHours()
+ if (settings.closePriceEnabled) {
+ return {
+ start: settings.start,
+ end: settings.end,
+ enforced: true,
+ }
+ }
+
+ if (productTradingHours?.start && productTradingHours?.end) {
+ return {
+ start: productTradingHours.start,
+ end: productTradingHours.end,
+ enforced: true,
+ }
+ }
+
+ return {
+ start: settings.start,
+ end: settings.end,
+ enforced: false,
+ }
+}
+
export function isStoreClosedBySchedule(now = new Date()): boolean {
- const { start, end, closePriceEnabled } = getStoreTradingHours()
- if (!closePriceEnabled) {
+ const { start, end, enforced } = getEffectiveTradingHours()
+ if (!enforced) {
return false
}
@@ -60,4 +99,9 @@ export function isStoreClosed(): boolean {
return isStoreClosedBySchedule()
}
-export const STORE_CLOSED_MESSAGE = 'فروشگاه در حال حاضر بسته است.'
+export function getStoreClosedMessage(): string {
+ const { start, end } = getEffectiveTradingHours()
+ const open = formatTradingTimeDisplay(start)
+ const close = formatTradingTimeDisplay(end)
+ return `فروشگاه در حال حاضر بسته است. ساعت کاری از ${open} تا ${close} میباشد.`
+}
diff --git a/src/views/base/copper&silver/index.vue b/src/views/base/copper&silver/index.vue
index ebd927c..b28432f 100644
--- a/src/views/base/copper&silver/index.vue
+++ b/src/views/base/copper&silver/index.vue
@@ -239,7 +239,7 @@ import {useConfigStore} from "@/store/configStore";
import { calcFeeInGrams } from '@/utils/serviceFee'
import { formatCashWalletBalanceText, formatGoldWalletBalanceText } from '@/utils/productDealMethod'
import { getCashWalletBalance } from '@/utils/productAssets'
-import { isStoreClosed, STORE_CLOSED_MESSAGE } from '@/utils/storeHours'
+import { isStoreClosed, getStoreClosedMessage } from '@/utils/storeHours'
const infoVisible = ref(false)
const walletStore = useWalletStore()
@@ -643,7 +643,7 @@ async function initPrice() {
function okConfirm() {
if (isStoreClosed()) {
- message.warning(STORE_CLOSED_MESSAGE)
+ message.warning(getStoreClosedMessage())
return
}
confirmAction.value = true
@@ -651,7 +651,7 @@ function okConfirm() {
async function ok() {
if (isStoreClosed()) {
- message.warning(STORE_CLOSED_MESSAGE)
+ message.warning(getStoreClosedMessage())
return
}
try {
diff --git a/src/views/base/gold/index.vue b/src/views/base/gold/index.vue
index c17c89b..3296c9e 100644
--- a/src/views/base/gold/index.vue
+++ b/src/views/base/gold/index.vue
@@ -236,7 +236,7 @@ import type { Product } from '@/models/products'
import { useFundUserStore } from '@/store/fundStore'
import {useConfigStore} from "@/store/configStore";
import { calcFeeInGrams, loadServiceFeeFromSettings } from '@/utils/serviceFee'
-import { isStoreClosed, STORE_CLOSED_MESSAGE } from '@/utils/storeHours'
+import { isStoreClosed, getStoreClosedMessage } from '@/utils/storeHours'
import { formatCashWalletBalanceText, getWeightUnit } from '@/utils/productDealMethod'
import { formatProductWalletBalanceText, getCashWalletBalance, getProductInventoryQuantity } from '@/utils/productAssets'
import { useWalletAssets } from '@/composables/useWalletAssets'
@@ -636,7 +636,7 @@ async function initPrice() {
function okConfirm() {
if (isStoreClosed()) {
- message.warning(STORE_CLOSED_MESSAGE)
+ message.warning(getStoreClosedMessage())
return
}
if (cashValidationMessage.value) {
@@ -648,7 +648,7 @@ function okConfirm() {
async function ok() {
if (isStoreClosed()) {
- message.warning(STORE_CLOSED_MESSAGE)
+ message.warning(getStoreClosedMessage())
return
}
try {
diff --git a/src/views/base/home/index.vue b/src/views/base/home/index.vue
index 0c50ce7..8963b25 100644
--- a/src/views/base/home/index.vue
+++ b/src/views/base/home/index.vue
@@ -38,7 +38,7 @@
{{ storeClosedMessage }}
+از همراهی و اعتماد شما سپاسگزاریم.🤍
+فروشگاه در حال حاضر بسته است.
-ساعت کاری فروشگاه از {{ openTime }} تا {{ closeTime }} میباشد.
+{{ storeClosedMessage }}
از همراهی و اعتماد شما سپاسگزاریم.🤍