Optional inclusion of “free shipping” products in cart value for threshold rules
Use case
We configure shipping so that standard shipping is free from a minimum order value (e.g. 50 €), using price-based shipping costs on the shipping method.
Current behaviour
Products marked “free shipping” are excluded from the value used for all shipping price calculations (via getWithoutDeliveryFree() in DeliveryCalculator::matches()). That means:
If the cart mixes free-shipping and regular products, only the non–free-shipping lines count toward the threshold.
Example: total cart 60 €, but only 40 € from non–free-shipping lines → the customer is below the 50 € free-shipping threshold and pays shipping, even though the visible cart total is above 50 €.
Expected / desired behaviour
For price-based rules (minimum order value / free shipping from X €), we need the full cart value (or a configurable choice) to determine the tier, not only the sum excluding free-shipping products.
Products marked “free shipping” should still ship without their own fee when they are the only items, but when combined with other products, they should count toward the threshold so behaviour matches merchant and customer expectations.
Suggestion
Please consider one of:
A configuration option on the shipping method or globally: “include free-shipping products in cart value for price-based shipping rules”, or
an extension point (e.g. protected method, strategy, or event) so projects can implement this without forking DeliveryCalculator.