Hi. I'm hoping this post will help out a bit with developing the concept for the ubercart discount system.
Here are a few questions we may consider:
1. Would it be possible (and wise) to have a single contrib module that could perform most of the basic discount functions needed, and thus replace all three of (uc_discount, uc_gift_certificate, and uc_coupon)?
2. Would it be possible and smart to have an additional basic api added to the uc core that would support these types of discount functions? Is there something that could be built into core that would be helpful for this, yet generic enough to allow for contrib module development?
Here is a summary of needed discounts:
1. Roll based discounts (coupons).
2. Paid for discounts (gift certs).
3. Granted discounts (gift certs, coupons).
Here is a summary of related functions:
1. Price display updates, at least in the checkout page.
2. Diminishing of discounts when a discount is used. E.g. a user is removed from a roll or forfeits a gift cert after making a purchase, or a coupon’s value diminished according to how much of it was used.
3. Display of discounts in user accounts and on the checkout page.
4. Users have the option to either apply their discount or not.
Notes:
1. Discounts are of two types. They are either earned or granted.
- They can be earned by making purchases (uc_rolls) or by making community contribution (userpoints).
- They can be granted by admins (coupons or gift certs) or granted by other users (gift certs).
- Gift certs are granted to single users, Coupons are granted to either single users or groups (via rolls). A coupon granted to a single user has the same function as a gift cert.
2. Discounts can be used up by making a single purchase regardless of the value, or they can be used up by deducting the purchase price from the value of the discount.
4. Discounts that apply to single users need unique id’s in order to allow the anonymous use of the store.
Please feel free to add to these thoughts...



