Login
Register

VirtueMart

WooCommerce

Others

Docs

Support

Blog

About

Shipping by Rules for VirtueMart

IMPORTANT ANNOUNCEMENT: Plugin development ceased, all plugins made available freely (GPL)

With great sadness we have to announce that we are ceasing development of all our VirtueMart, WooCommerce and Joomla plugins. Effective immediately, all our plugins -- even those that were paid downloads -- are made available for free from our homepage (GPL license still applies), but we cannot and will not provide any support anymore.

It has been a great pleasure to be part of the thriving development communities of VirtueMart as well as WooCommerce. However, during the last year it became painstakingly clear that in addition to a full-time job, a young family and several other time-consuming hobbies at professional level (like being a professional singer) the plugin development and the support that it requires is not sustainable and is taking its toll. It has been an honor, but it is now time to say good bye!

×

Notice

The forum is in read only mode.
Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC:

Free shipping on some items 11 Mar 2014 12:42 #1

  • slumley
  • slumley's Avatar Topic Author
Hi,

Please help, we have purchased Virtuemart 2 shipping plugin from you.

We have the following issue.

We need to offer free postage on certain products.

We have created the following for the chargeable shipping:

Name={Weight}; Weight<=0.5; Shipping=35.1
Name={Weight}; 30>Weight>=0.6; Shipping=35.1 + Weight*4.7


Do we create a new shipping option or do we add to the one above?

We need the software to not provide the free shipping option when a product is added that does not have free shipping, even if the cart contains a product that is free shipping.

Free shipping on some items 11 Mar 2014 14:56 #2

How do you identify products with free shipping?

If all products with free shipping belong to one category (and only to that category!), then you can use the check "Categories==list(13)".
If you describe all free shipping products only by their SKUs then you can check whether the SKUs in the order are a subset of the list of products with free shipping. The check then would be "issubset(SKUs, list("your-SKU-1", "your-SKU-2", "your-SKU-3", ...))".

The corresponding rule with these conditions need to be placed before your two existing rules (because the plugin uses the first matching rule that it finds).

Best regards,
Reinhold

Free shipping on some items 12 Mar 2014 07:02 #3

  • slumley
  • slumley's Avatar Topic Author
Hi,

Thanks for the guide so far, however we still have a problem that when you add and item that does not have free shipping/postage then it does not charge for that item.

You are welcome to test at www.4home.co.za/v2


Name=Free Postage; issubset(SKUs, list("HD9300/03", "HR1871/10", "HD2698/00"));Shipping=0
Name={Weight}; Weight<=0.5; Shipping=35.1
Name={Weight}; 30>Weight>=0.6; Shipping=35.1 + Weight*4.7

Free shipping on some items 12 Mar 2014 15:44 #4

Sorry, I don't understand your problem. If you have two items in the cart, i.e. "HD9300/03" and "DummySKU/01", then free shipping should not apply. Rather the shipping cost will be calculated depending on the total order weight as 35.1+4.7*weight (if weight>0.5).

Is this what you want? The rules should produce exactly that result.

Please note that rather than Weight>=0.6 you should use Weight>0.5, because otherwise an order of e.g. 0.55kg will NOT match any of the rules.

Best regards,
Reinhold

Free shipping on some items 13 Mar 2014 09:51 #5

  • slumley
  • slumley's Avatar Topic Author
HI,

Yes this is what we need to happen.

The rule is setup as follows:

Name=Free Postage; issubset(SKUs, list("HD9300/03", "HR1871/10", "HD2698/00"));Shipping=0
Name={Weight}; Weight<=0.5; Shipping=35.1
Name={Weight}; 30>Weight>=0.6; Shipping=35.1 + Weight*4.7

However it is not working as it is still giving free postage when we add a product that is not in the list.

You are welcome to test at www.4home.co.za/v2

Free shipping on some items 14 Mar 2014 14:41 #6

Ah, sorry, I missed a small, but very important detail: the plugin does NOT detect the issubset(...) call as a condition (because the plugin will only detect conditions when they contain any comparison operator like ==, <, >, <=, etc.). So you have to explicitly mark that part of the rule as a condition:
Name=Free Postage; Condition=issubset(SKUs, list("HD9300/03", "HR1871/10", "HD2698/00"));Shipping=0

I'm aware of this limitation, but I have not yet found a good way to automatically detect whether a rule part gives a condition of the shipping cost. In your case, issubset will return either 0 (for false) or 1 (if the condition applies), so the plugin really has no way to decide whether that 0 or 1 should be the shipping cost or a condition. Thus there is the need to explicitly mark it as a condition.

Best regards,
Reinhold
  • Page:
  • 1