sent in the following
hack. here is what he had
to say about the code....
This is a hack for the Webstore for ordering with a
discount of buy 3 get the 4th item (least value of the 4) free. It will
display the Number of free items they will receive, and will put the
discount into the calculations starting at the order form.
As I am
constrained for time and not a Perl programmer I utilized 2 globals to
accomplish this. $store_discount is the actual monetary variable that
holds the total discount amount, and $temp_discount, which holds the
number of free items.
The way the discount is calculated is by calling
up sort.pl which will open the cart, add a field and then place a copy
of the quantity in that field. This is used to decrement with so as not
to disturb the actual quantity field.
Then it sorts the cart from
lowest price to highest price, as the discount will start with the
lowest price items.
From there it decrements the total_discount
counter (which is the original number of free items), adds the lowest
price item to the $store_discount variable, and decrements the field
that has the copied quantity.
When that field reaches zero, but with
free items ($total_quantity) still existing, it moves to the next item
in the cart (the second lowest priced item).
Then, after a little
magic, it writes the info back to the cart.