7/7/1405
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import type { Product } from '@/types'
|
||||
|
||||
export type QuantityMode = 'meter' | 'roll'
|
||||
|
||||
export function rollMetersForProduct(product: Product): number {
|
||||
if (product.rollMeters && product.rollMeters > 0) return product.rollMeters
|
||||
if (product.minMeterage > 0) return product.minMeterage
|
||||
return 50
|
||||
}
|
||||
|
||||
export function orderMultiplierForProduct(product: Product): number {
|
||||
const step = product.orderMultiplier ?? product.orderStep
|
||||
return step && step > 0 ? step : 10
|
||||
}
|
||||
|
||||
export function meterageFromQuantity(product: Product, mode: QuantityMode, value: number): number {
|
||||
if (mode === 'roll') return value * rollMetersForProduct(product)
|
||||
return value
|
||||
}
|
||||
|
||||
export function rollsFromMeterage(product: Product, meterage: number): number {
|
||||
const rollMeters = rollMetersForProduct(product)
|
||||
return rollMeters > 0 ? meterage / rollMeters : 0
|
||||
}
|
||||
|
||||
/** همان قواعد سرور هنگام ثبت سفارش */
|
||||
export function validateOrderMeterage(
|
||||
product: Product,
|
||||
meterage: number,
|
||||
minRollsSetting = 1,
|
||||
): string | null {
|
||||
if (!meterage || meterage <= 0) {
|
||||
return 'مقدار باید بزرگتر از صفر باشد.'
|
||||
}
|
||||
if (meterage < product.minMeterage) {
|
||||
return `حداقل متراژ برای ${product.name} برابر ${product.minMeterage} است`
|
||||
}
|
||||
const multiplier = orderMultiplierForProduct(product)
|
||||
const rem = Math.round((meterage / multiplier) * 1000) / 1000
|
||||
if (Math.abs(rem - Math.round(rem)) > 1e-6) {
|
||||
return `متراژ ${product.name} باید مضرب ${multiplier} باشد`
|
||||
}
|
||||
const rollMeters = rollMetersForProduct(product)
|
||||
const minRolls = minRollsSetting > 0 ? minRollsSetting : 1
|
||||
if (meterage / rollMeters + 1e-9 < minRolls) {
|
||||
return `حداقل سفارش برای ${product.name} برابر ${minRolls} طاقه است`
|
||||
}
|
||||
return null
|
||||
}
|
||||
Reference in New Issue
Block a user