feat: check category eligibility for update discount in frontend and backend
Some checks failed
Staging Build / build (push) Has been cancelled

This commit is contained in:
DanielS
2026-07-10 00:18:23 +02:00
parent 2038c4df3e
commit a3c5a66d3f
2 changed files with 9 additions and 7 deletions

View File

@@ -353,16 +353,14 @@ export function OrderWizard({
}) })
const totalItem = base + modulesSum const totalItem = base + modulesSum
if (prod.billing_interval === 'one_time') { if (prod.billing_interval === 'one_time') {
oneTime += totalItem const allowDiscount = (cat as any).allow_update_discount !== false
const finalItemTotal = allowDiscount ? (totalItem * updatePriceModifier.multiplier) : totalItem
oneTime += finalItemTotal
} else { } else {
monthly += totalItem monthly += totalItem
} }
}) })
} }
// Apply update modifier to oneTime total
if (updatePriceModifier.multiplier !== 1) {
oneTime = oneTime * updatePriceModifier.multiplier
}
return { monthlyTotal: monthly, oneTimeTotal: oneTime } return { monthlyTotal: monthly, oneTimeTotal: oneTime }
}, [selections, products, categories, moduleQuantities, updatePriceModifier]) }, [selections, products, categories, moduleQuantities, updatePriceModifier])

View File

@@ -183,10 +183,14 @@ export function buildOrderSnapshot(
multiplier = 0.90 multiplier = 0.90
} }
// Multiply only one_time item totals by multiplier // Multiply only one_time item totals by multiplier if category allows it
items.forEach(item => { items.forEach(item => {
if (item.billing_interval === 'one_time') { if (item.billing_interval === 'one_time') {
item.item_total = item.item_total * multiplier const cat = categories.find(c => c.id === item.category_id);
const allowDiscount = cat ? (cat as any).allow_update_discount !== false : true;
if (allowDiscount) {
item.item_total = item.item_total * multiplier;
}
} }
}) })
subtotal = items.reduce((acc, item) => acc + item.item_total, 0) subtotal = items.reduce((acc, item) => acc + item.item_total, 0)