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 }