Backwards Incompatible Change --
Some products should simply not be discounted. For example, a non-profit has a "donation" product with variants as $5, $10, $25, $50, and $100 and a members discount of 20%. Using the members discount should not make a $50 donation $40.
This patch adds a flag to the Product model that allows exemption from discounts.
If there is a $10 flat discount on an order with two $6 products and one of them is exempted from discount, the total discount is $6. If there is a $10 flat discount on an order with one product exempted from discount, the total discount is $0.
Unit tests included.
Reported by jag