VirtueMart Forum
VirtueMart 1.1.x [ Old version  no longer supported ] => Products, Prices, Tax and Categories VM 1.1 => Topic started by: Willem Couwenberg on July 14, 2009, 14:07:52 pm

Hi,
How can you set up quantity discount for a category op products? ???
I have a postcard & poster shop vm 1.1.3 . I would like to give the 5th card for free if they buy 5 cards.
There has been posted on this subject here:http://forum.virtuemart.net/index.php?topic=40421.0 (http://forum.virtuemart.net/index.php?topic=40421.0)
but no solutions given yet.
Thanks for your trouble,
Regards,
WillemHein

Well sometimes luck is with you in the world of open source ;D: Lee Willis had a partial solution for quantity discount per category applicable to only one category.
See his website: http://www.leewillis.co.uk/virtuemartcategorydiscounts/ (http://www.leewillis.co.uk/virtuemartcategorydiscounts/)for this solution. Works like charm on my http://www.vespaghetti.eu (http://www.vespaghetti.eu) website
Now I'm trying to figure out how all categories can have category discount.
Regards,
Willemhein

Willem had asked over on my blog if he thought my solution could work for "multiple categories". I previously said no  however a bit of elaboration below!
As I see it there are 2 main solutions that you might want:
Scenario a:
My related products are spread across multiple products (A, B, C). If I buy 2 or more products (Which are all priced identically) from any of these categories then I should receive a discount.
Scenario b:
I have 2 categories (A and B). Each category contains different products both of which have their own discount scheme. If I buy 2+ products from cat A then I receive a special price. If I buy 2+ products from cat B then I receive a special price. However  if I buy 1 product from category A and 1 from category B then there is no discount.
Solution A can be achieved easily with my solution (I do it myself for baby shoes where the products are split across 2 categories  one for boys styles, and one for girls). (Basically you just turn the
if ($sesprodcat == 28)
check into an OR condition, e.g.
if ($sesprodcat == 28  $sesprodcat == 29) {
Solution B could be made to work I think but it'd be a bit more work ...

Now that write about it: there is always a need for more, it seems.... actually I wanted both scenario's but it looked to complicated to fix.
1. a quantum discount within each of the 5 categories, if you buy 5 or more products from the same category you get a lower price.
plus
2. If you buy a combination of 3 products (postcards for €2,85) from category A and product B2 (a poster for €17.95) from Category B you get a discount.
scenario 1 is the most important for me, do you see an solution for this within your hack?

Hmm. Thinking about it some more....
The changes I put in my last reply will achieve your scenario 1. So if your categories were IDs 1,2,3,4,5 then it would be:
if ($sesprodcat == 1 
$sesprodcat == 2 
$sesprodcat == 3 
$sesprodcat == 4 
$sesprodcat == 5) {
If you want to allow a discount based on products from different categories the fix is slightly different (& more complicated!)

Here is a mod to make this work across multiple categories. Basically you need to copy the list of category ids you used around the if statement at line 1619:
if ($sesprodcat == 4 
$sesprodcat == 5 
$sesprodcat == 6 
$sesprodcat == 7 
$sesprodcat == 10 
$sesprodcat == 13) {
Down to line 1651 so that they match:
if ($sesprodchildcat == 4  $sesprodchildcat == 5 $sesprodchildcat == 6 $sesprodchildcat == 7 $sesprodchildcat == 10 $sesprodchildcat == 13) {
$quantity += $cart[$i]["quantity"];
}
} else {
Hope this helps.

You need to be fairly careful with these changes as there are quite a few subtly different results that can be achieved and you need to be sure which one you want!
My post (#4) above is:
Multiple discounts applied if you buy >1 product within cat 1 OR >1 product within cat 2. The discount is based on the number of products being purchase in that category, e.g. If you buy 2 products in cat 1, and 3 products in cat 2 then the products in cat 1 are charged at the price for "2 items" and the products in cat 2 are charged at the price for "3 items".
Steven's post is
Multiple discounts applied if you buy >1 product within cat 1 OR >1 product within cat 2. The discount is based on the number of products being purchase over all participating categories, e.g. If you buy 2 products in cat 1, and 3 products in cat 2 then the products in both categories are charged at the price for "5 items".

Correct. In our case the store sells greeting cards and everything is priced at $3.75 per card. Cards are in several categories and our client wanted a blanket policy allowing any cards from any categories of cards to calculate at the same breaks. In this case, you purchase 59 cards they are $3.00 even and 10+ are $2.50.
The other thing this allows you to do is omit other categories from the bulk discount. We have a section of invitations that are not included so that category is omitted from the code above.
Certainly this is not a good solution for all the scenarios, but it seems perfect for out case.

Hi,
I have the exact same scenario where I want to have discounts across multiple categories (buy any grouping from categories A,B,C that adds up to at least 12 items, get them for $XX.00, but Category D is excluded from all discounts). I have read and reread both the original blog post and all these informative forum posts, but not being very confident with code of this complexity, I was hoping to find a helpful soul who will lead me by the hand step by step through the process. Do I still need to change all my items to the bulk pricing within VM? And exactly what file and line numbers am I looking for to edit?
This seems like such a vital choice to have in any online store, it's hard to understand why it's not a part of VM's core...
By the way, I'm using J1.5, VM1.1.3
Thanks so much in advance!!
M Snyder

Hello, i don't know if this is what you're looking for? But it´s worth the try: http://www.bureauvanvliet.com/virtuemartcategorydiscount.html

Hello, i don't know if this is what you're looking for? But it´s worth the try: http://www.bureauvanvliet.com/virtuemartcategorydiscount.html
Wow, this was close. I just needed one more step to assign the discount to a group. So, it would be category / discount / group.
It can be done for each product. I may have to see if I can create this solution.

thank you for the hack
it workes perfectly
thank you

I have been searching for an answer for weeks.
I am looking for what I think is a combination of the two hacks mentioned above.
My scenario:
If the total quantity ordered is more than 5 items, all the individual category discounts apply.
All products in each category has the same price, but each category has different prices. I am trying find a way around the customer not getting any discounts if they order less than 5 items from each category.
Could anybody please point me in the right direction. Does anyone know of a free or commercial plugin that can achieve this? Any help will be appreciated!

Hello, i don't know if this is what you're looking for? But it´s worth the try: http://www.bureauvanvliet.com/virtuemartcategorydiscount.html
Nice, but not what this topic was meant for. We want to apply bulk pricing for all products in selected categories. That component, while a great idea(no hacking needed) only applies a discount to a category, it doesn't allow for using bulk pricing.

Never mind, got it to work using the topic link above, just had to add another category using .
Would be nice if there's someway to hack it to allow using the parent category (e.g. I have a parent category with no items in it, but I subdivided it into 3 categories. I'd rather just put the parent category in the patch rather than all 3 child categories. I tried it and it only works if you put in categories with actual itemsin my case the child categories).

Hello,
Would like to know if it is possible to make a Quantity Discount like this:
Number of items in Cart (from all categories):
2 = $5 Discount
3 = $12 Discount
4+ = $20 Discount
Also, I wanted the cart to show:
Product A: 2 x $10
Product B: 1 x $15
Discount: $12
Total: $23
Thank you in advance.
Valter

if they discount can be calculated after the customer enters a coupon, then AwoCoupon pro can do the discounting.