export interface BulkDiscountTierLike { code: string; minQuantity: number; percent: number; } /** * Reine Zuordnungsfunktionen ohne Datenbankzugriff — analog zu * shipping-calc.ts. Mengenrabatte sind normale DiscountCode-Zeilen mit * gesetztem minQuantity (im Admin-Bereich unter Gutscheine editierbar), diese * Funktionen waehlen daraus die passende(n) Stufe fuer Anzeige/Anwendung. */ export function resolveBulkDiscount( tiers: BulkDiscountTierLike[], totalQuantity: number ): BulkDiscountTierLike | null { const sorted = [...tiers].sort((a, b) => a.minQuantity - b.minQuantity); let best: BulkDiscountTierLike | null = null; for (const tier of sorted) { if (totalQuantity >= tier.minQuantity) best = tier; } return best; } export function getNextBulkDiscountTier( tiers: BulkDiscountTierLike[], totalQuantity: number ): { unitsUntilNext: number; percent: number } | null { const sorted = [...tiers].sort((a, b) => a.minQuantity - b.minQuantity); const next = sorted.find((tier) => tier.minQuantity > totalQuantity); if (!next) return null; return { unitsUntilNext: next.minQuantity - totalQuantity, percent: next.percent }; }