Currently you would need modify core logic to achieve this (you'll need source code), however, very soon we'll be releasing our add-in model which will allow you to easily define logic to alter the contents of the shopping cart from a "plug-in" without modifying core logic...and it would work perfectly for what you are trying to accomplish here.
What you may want to do instead (instead of modifying the source code that is...unless you want to of course
), is create 3 coupons. Each of the coupons should have a different code and each coupon should have a coupon type of
Product - this coupon ONLY applies to the specified product(s). Now for the first coupon, set the
Requires Minimum Order Amount to 50.00 and set
Valid For Product(s) to
10001. For the second coupon, set the
Requires Minimum Order Amount to 75.00 and set
Valid For Product(s) to
15001. For the last coupon, set the
Requires Minimum Order Amount to 100.00 and set
Valid For Product(s) to
12345. For all 3 coupons, set the discount percent to 100, or the discount amount to the amount of the free gift product for which the coupon is valid for.
After you've created those, you can just use the CartPageFooter topic to list the coupons, product links, and order amounts telling your customers that they can receive a free gift using the coupon codes, and each of the coupons will only work for the specified product when the order amount is over $x.xx.
If you wanted it to be a little more dynamic, you could also use a little known feature to enable a header for the shopping cart page. Create a new appconfig parameter called
XmlPackage.ShoppingCartPageHeader and give this appconfig parameter the value of an xmlpackage name (let's call it shoppingcart.pageheader.xml.config). Then, create a new xmlpackage called
shoppingcart.pageheader.xml.config (or whatever value you set in the appconfig parameter). You can then in this xmlpackage, check the subtotal of items in the cart, and depending on the subtotal either show nothing if the order is under $50.00 (or some teaser saying something about a free gift at $50.00+) or show only the product link and the coupon code that is valid for that amount.
Granted both of these create a few extra clicks for the end-user, but ultimately most will follow the links in order to get their free gift and by having the end-users browse to one final product page you have the potential to upsell the customer by adding upsell or related products to those free gift products.