1
  • I have a flat rate of $2.50 for every order.
  • I have extra +$1 for every extra item added to cart.

So, if I order 1 item, total shipping is $2.50, but if I order 2 items total shipping is $3.50.

My problem is that in 2nd case, I get total shipping of $4.50 for 2 items instead of $3.50. It calculates the +$1 for both items.

I added the rule condition Total product quantity comparison to apply +$1 if quantity is > 1. So if I add only item, it doesn't calculate the extra shipping, but as soon as I add more items, it calculates the extra shipping for initial item.

Here's my calculation rule: enter image description here

I followed this guide: https://vimeo.com/32813567

  • I think your "Add an amount to the unit price" should be outside of the loop function. – jmu Aug 29 '17 at 14:17
  • @jmu then you will get 'Error: Data selector result for parameter amount is invalid' error. – user3108268 Aug 29 '17 at 17:46
1

From the screenprint of your calculation rule it's hard to tell what exactly the logic is that you implemented (an exported rule, created with the Rules UI, provides ALL the details).

Anyway, it seems that your Rules Loop is adding $1 for EACH line item, so also for the very first line item. While your requirement (in your question) states "+$1 for every extra item" ... If "extra" is to be translated to "but do not add $1 for the very first item", then clearly in your Rules Loop you should not have added $1 for the very first item.

The easiest way to correct this, is to subtract $1 after your Rules Loop is finished (consider it like a discount for the very first item). If you rather want to go for a slightly more complicated solution, then you could use the Conditional Rules module to add an extra test (Rules Condition!) within your Rules Loop to NOT perform that +$1 for the very first line item (I presume you know what such test should look like). My 2 cents: go for the easiest way via the extra correction after the Rules Loop is finished.

|improve this answer|||||
  • You're right, I already solved it with adding subtraction outside loop. – user3108268 Aug 29 '17 at 21:24
  • @user3108268 merci for the feedback (+ accept/upvote) ... curious to ever hear your feedback about my answer to your other question (which might take a little longer to digest maybe ...) – Pierre.Vriens Aug 29 '17 at 21:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.