[ic] shipping.asc not working right

Luiz Carlos Maciel Junior lmacielj at terra.com.br
Tue Jun 25 13:13:17 UTC 2013


Le 25/06/2013 09:09, Kerry Blalock a écrit :
>> On 2013-06-23, at 10:18 AM, kerry blalock wrote:
>>
>>> I am trying to add an additions shipping method to my site and seem to
>>> be having a problem with the logic. Here is the code that is giving me
>>> an error on the truckbig method:
>>>
>>> truckbigger:      Oversize Truck Shipping
>>>          criteria <<EOC
>>> [calcn]
>>>          foreach my $item (@$Items) {
>>>                  if ($item->{width} >= 160) {
>>>                          # We have to use this shipping method
>>>                          return 1;
>>>                  }
>>>          }
>>>          return 0;
>>> [/calcn]
>>> EOC
>>>          min     1
>>>          max     1
>>>          cost    170.00
>>>
>>> truckbig:	Truck Shipping
>>> 	criteria <<EOC
>>> [calcn]
>>> 	foreach my $item (@$Items) {
>>> 		if (($item->{width} >= 108 and ($item->{width} <=160)) {
>>> 			# We have to use truckbigger shipping method
>>> 			return 1;
>>> 		}
>>>         }
>>>         return 0;
>>> [/calcn]
>>> EOC
>>>          min     1
>>>          max     1
>>>          cost    85.00
>>>
>>> Truckbigger works as is. But when I want to charge less for rods between
>>> 108 and 160, I get an error,
>>>
>>> Note: No match found for mode 'ground', quantity '', returning 0.
>>> Shipping defaults to the shippin method just below truckbig method. Need
>>> fresh eyes to help me figure out why this is not working.
>>>
>>> Kerry
>>> _______________________________________________
>>> interchange-users mailing list
>>> interchange-users at icdevgroup.org
>>> http://www.icdevgroup.org/mailman/listinfo/interchange-users
>>
>>
>>> 		if (($item->{width} >= 108 and ($item->{width} <=160)) {
>>
>> Looks like you are missing a closing bracket between "108" and "and".
>> HTH
>> Angus
>>
>>
>> ---
>> Angus Rogerson, BMath, BScN, RN
>>
>> Duct Tape Programmer
>> University of Waterloo | Retail Services | Information Systems
>>
>> Visit Us Online & Right On Campus www.retailservices.uwaterloo.ca
>>
>>
>>
>>
>>
>> _______________________________________________
>> interchange-users mailing list
>> interchange-users at icdevgroup.org
>> http://www.icdevgroup.org/mailman/listinfo/interchange-users
>>
> Thanks Angus,
>
> I did find the missing bracket and added, but it still did not work.
>
> I finally have it kinda working with this:
>
> truckbig:       Truck Shipping
>          criteria <<EOC
> [calcn]
>          foreach my $item (@$Items) {
>                  if ($item->{width} >= 160) {
>                          # We have to use truckbigger shipping method
>                          return 2;
>                 }
>
>                 if ($item->{width} >= 108) {
>                          # We have to use truckbig shipping method
>                          return 1;
>                 }
>         }
>         return 0;
> [/calcn]
> EOC
>          min     1
>          max     1
>          cost    85.00
>
>          min     2
>          max     2
>          cost    170.00
>
>          min     3
>          max     3
>          cost    200.00
>
> The problem I have now is if a customer adds a item that is 144" and
> then adds another that is 192", to the same cart, it does not pick up
> the higher shipping cost. That was why I was trying to use the
> conditional statement and two different methods.
>
> Not sure why the one above is not picking up the higher cost, but itt
> seems to hold the first if statement used by each method. If I add a
> 192" and then add a 144", it retains the higher cost for the 192" which
> is fine, but the other way around is not.
>
> Odds are that most customers will not order the combination so I am
> leaving it active for now until I can come up with the correct solution.
>
> Thanks,
>
> Kerry
>>
>
> BasicQ Inc
> http://decor.basicq.com
> 800-448-0655
>
>
> _______________________________________________
> interchange-users mailing list
> interchange-users at icdevgroup.org
> http://www.icdevgroup.org/mailman/listinfo/interchange-users
>
>
>
Hi Kerry,

I am not a Perl expert but in your situation I think that you should try 
like:

[calcn]
         foreach my $item (@$Items) {
                 if ($item->{width} >= 160) {
                         # We have to use truckbigger shipping method
                         return 2;
                }

                if ($item->{width} >= 108_and <= 159_) {
                         # We have to use truckbig shipping method
                         return 1;
                }
        }
        return 0;
[/calcn]


I will explain.

If width is 192 as you said, the first and the second "if" is true. So 
you will end with 1 when you want "2".

Limiting the second "if" between 108 and 159 will make the second "if" 
not work anymore with values above 159 and you will end with a "2".

I hope this help you.

Luiz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.icdevgroup.org/pipermail/interchange-users/attachments/20130625/935da150/attachment.html>


More information about the interchange-users mailing list