[ic] price based shipping charges with a different price field (bug?)

Russell Mann tech at khouse.org
Fri Dec 12 14:49:25 EST 2003


Hello,

IC 4.8.3.  I have a membership that is delinated by the field "user_active"
being non zero, non null.  In my catalog.cfg, I have this:

--------------------------
PriceField     CommonAdjust

CommonAdjust   pricing:price_group,q3,q4,q5,q10, ;products:price, ;$
AutoModifier   pricing:price_group
AutoModifier   products:gift_cert

NonTaxableField nontaxable

UserDB         default    scratch    user_active

Autoload <<EOR
[perl]
    if($Scratch->{user_active}) {
            $Config->{CommonAdjust} = ' pricing:price_group,q3,q4,q5,q10,
;products:member_price, ;$';
    }
[/perl]
EOR
--------------------------

This works perfectly for changing the price on the product page when called
by: [item-price], and in the basket all the way through checkout to receipt.

The problem comes in calculating shipping.  One of my shipping options is
free shipping for orders over $10.00

This is what is in my products/shipping.asc file.

--------------------------
free    Free Shipping - U.S.    price   0       9.99    e Please select
$10.00 or more of products to get Free Shipping.
{'PriceDivide' => "1",}
free    Free Shipping - U.S.    price   10    99999999        0.00
{'PriceDivide' => "1",}
--------------------------

This works perfectly with this code in the ord/checkout.html page:

--------------------------
<select name="mv_shipmode">
[loop option=mv_shipmode
list=|[data table=country key='[default ship_country US]' col=shipmodes]|
]
[perl interpolate=1]
$sub = [shipping mode=[loop-code] noformat=1] + 0;
$weight = "[scratch weight]";
$code = "[loop-code]";
[if value ship_state]
$state = "[value ship_state]";
[/if]
[if session ship_message]
$ship_message =  "[data session ship_message]";
[/if]
return '<option value="[loop-code]">[shipping-desc [loop-code]] [shipping
mode=[loop-code]]</option>' if (($sub > 0) || (($code eq 'download') &&
($weight == 0)) || (($code eq 'free') && ($ship_message !~ 'Please
select')));
[/perl]
[/loop]
</select>
--------------------------


The problem comes when I set the regular price of the item to $11, and the
member price to $9.  The system seems to be calculating the "price" for the
shipping from the price FIELD, instead of the [item-price].  For example, in
this situation, the non-member should get the product for $11, and have free
shipping.  The member should get it for $9, but have no free shipping.  This
isn't what happens.  Instead, they both get the product for the right price
($11, and $9 resepectively) but both get free shipping.

This seems to be something in the internal workings of IC that might be a
bug.  Shouldn't price based shipping charges be calculated on the modified
price that the customer is seeing?  Where would I go to track this down?

Thanks,

Russell Mann




More information about the interchange-users mailing list