Retail Discount Concurrency Control – Direct Override

It’s obvious that we can have one discount override another discount directly for discount overriding scenarios we talked about earlier.

It’s direct. And simple, or so it appears. Let’s examine it in details.

Simple discount. It’s straightforward as we would expect: if a product is in the overriding discount, then apply the overriding discount; if not, try to apply the base discount.

Multi-item discount. Take mix and match for example, say we have a base discount: buy one get least expensive one free (B1G1 free) for keyboards, and we want to override it with another mix and match.

  • Overriding has the exact same product set and discount product setup, for example, B1G1 50% off. This would be a perfect override.
  • Overriding has the exact same product set, but different discount product setup, for example B2G1 free. If we have 3 keyboards in the transaction, we apply the overriding discount. What if we have 2 keyboards? Or 4, or 5?
  • Overriding has a small product set, and same discount setup. For example, the overriding discount doesn’t cover the ergo keyboard. What happens if you buy 3 regular keyboards and 1 ergo keyboard?
  • We can keep on with more variations.

I don’t mean to discredit override option here. In fact, any solution would have to deal with same issues. The point is that we need to understand all the ramifications of the feature. For things we can’t handle, disable them, or else we’d get unexpected results.

If I were to make it work, I’d impose the following.

  1. To keep it simple, one level of override, i.e. no chained override. So far, I don’t see much value of multi-level override. And in general, I tend to delay the complexity until it’s necessary.
  2. For simple discounts, no restrictions and we have already discussed the behavior.
  3. For multi-item discount, overriding one needs to cover the entire product set defined in the base discount, and overriding one completely disables the base one.

One alternative is to apply overriding one first, left-over for the base one. This is only a half-baked solution – maybe I shouldn’t even suggest it – what happens if we have a third discount with overlapping product set?

All in all, while direct override is a localized solution, it is a handy tool and it should be part of our arsenal.

Related: Retail Discount Concurrency Control - Examples