Skip to content

Ensure "Amount Off" discounts are applied once per cart#112

Merged
duncanmcclean merged 2 commits intomainfrom
discount-calculations
Jan 17, 2026
Merged

Ensure "Amount Off" discounts are applied once per cart#112
duncanmcclean merged 2 commits intomainfrom
discount-calculations

Conversation

@duncanmcclean
Copy link
Owner

This pull request ensures that "Amount Off" discounts are applied once per cart, rather than applied per line item. Mirroring how LunarPHP handles fixed amount discounts.

Problem

The AmountOff::calculate() method returned the full discount amount for every line item.

For example: with a £1 discount and two different products, customers were receiving £2 off instead of £1 off.

Solution

This PR fixes it by distributing the fixed amount proportionally across all eligible line items based on their subtotals.

In this case, a £1 discount on a cart with two equal-value line items now gives £0.50 off each line item.

This test ensures that percentage discounts continue to be calculated correctly (each line item gets its percentage independently, which naturally sums to the correct total).
@duncanmcclean duncanmcclean merged commit d5ab625 into main Jan 17, 2026
13 checks passed
@duncanmcclean duncanmcclean deleted the discount-calculations branch January 17, 2026 17:23
@github-actions
Copy link

Released as part of v1.0.0-alpha.15.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant