I wish I had a chance to re-design quantity discount for Dynamics Retail Discount Engine.
Let’s review the basics first.
One discount method for one quantity discount: either unit price, or percentage off. (We could add unit amount off in the future.)
Once a product reaches a quantity level, we apply the discount to all quantities of the product. We allow multiple quantity levels. Recently, we added restriction that discount cannot be worse off as quantity level increases.
As in discount offer, we can configure a discount line definition in three ways: product, variant and category, and as in discount offer, we can have multiple discount line definitions.
If we configure a line for a single product (non-master product), or variant, then it is a straightforward quantity discount: if you reach a quantity level, you get the discount for the product.
If we configure a line for a category or a master product, then it is actually a mix and match with variable quantity, disguised as a quantity discount. For example, it is straightforward to configure the wine discount of buying 6+ wines and getting additional 10% off – a common promotion in many US grocery stores – with quantity level 6 and wine category.
In short, we are mixing two types of discounts in quantity discount. It gets more complicated when we have multiple discount line definitions. By design, we treat each discount line definition as independent discount for competition. If the discount is compounded and multiple discount lines in the same discount covers the same product, then they cannot compound on top of each other for the product. The current setup can bring non-obvious and non-trivial internal competition when multiple discount lines in the same discount cover the same product.
By now, you can see why I wish I could re-design it in two different types of discounts.