Extend discounting system
Include mix-and-match and aggregate discounts. For example "Buy any 5 from this list of products", or "buy all of these products together". The aggregate discount in particular would be a great alternative to complex (and tedious to create) kits that are composed of many items with many variations.
For example, we like to offer our customers diving packages (we sell scuba gear). An example of one of these packages could contain all of the following:
- BCD (4 variations by size)
- Wetsuit (men's or women's in various sizes and possibly colors - could be a couple dozen variations at least)
- Hood/Beanie (4 variations by size)
- Gloves (6 variations by size)
- Boots (12 variations by size)
- Fins (dozens of variations by size and color)
- Mask (a few variations by color)
- Snorkel (a few variations by color)
- Gauge (a few choices, with varying features and prices)
- Bag
Now, as you might imagine, kitting this monstrosity is not fun, and is highly prone to breaking. But, if I were able to instead offer an aggregate discount on the purchase of these items together, it would be on the customer to create their perfect customized package, and as long as they included all the required items they would get a nice discount on their purchase, and I wouldn't have to worry about my kits breaking because a manufacturer decided to change which colors or sizes were being offered for a wetsuit this year.
Essentially, this kind of discount system would probably necessitate that discounts follow the Specification pattern, though that would be up to your software designers to decide for sure.
