On Sunday, October 23, 2005 3:23 PM, suppressed wrote:
Quoting John1 (suppressed):
I believe if I change AutoModifier to: AutoModifier products:shipping_cost:mv_sku it would then work for matrix option products but not standard products. How do I set it up so that the delivery cost is always looked up from the field shipping_cost in the products table, regardless of whether the cart item is a product with matrix options or a standard product.Hmm. I believe you are correct. Actually, I would want AutoModifier shipping_cost to work, as we should use item_common to populate it. But alas, it does not.
Great, thanks. So if I use ship.pm from the CVS my scenario should work now? I noticed the call to "item_common" to populate AutoModifier. What is item_common?
That is now fixed in CVS. It only works for the no-table case of the attribute (i.e. shipping_cost or other_mod=shipping_cost). It also might not be completely what would always be wanted, since it has the precedence: mv_ib->code mv_ib->mv_sku products->code products->mv_sku variants->code variants->mv_sku It is important in this case to make sure you have the table set in the item mv_ib pointer, as otherwise products->mv_sku will shadow variants->code.
I think I see what you are saying - are you saying that I must
explicitly define the table used for variants in catalog.cfg in order
for the variants->code to take precedence over products->mv_sku?
BTW, in the end I found another solution to my problem by creating a
[calc_shipping] user tag to be called via "f [calc_shipping]" in
shipping.asc
The user tag code is:
#######
UserTag calc_shipping Order
UserTag calc_shipping Routine <<EOR
sub {
my $total_shipping_cost;
for (@$Items) {
my $sku = $_->{mv_sku} || $_->{code};
unless (defined $_->{shipping_cost}) {$_->{deliv_cost} =
tag_data('products','shipping_cost',$sku);}
$total_deliv_cost += $_->{quantity} * $_->{shipping_cost};
}
return $total_shipping_cost;
}
EOR
#######
This seemed to do the trick, so I am happy. I am not much of a Perl
programmer so would be grateful for any suggestions on improving the
above code if necessary.
Now I have this [calc_shipping] tag I haven't even bothered setting
AutoModifier or MV_SHIP_MODIFIERS. Instead, I have tried to ensure the
database is only queried once by using "unless (defined
$_->{shipping_cost})" - is this a reasonable approach?
Thank you for your help Mike - it is always very much appreciated...
_______________________________________________
interchange-users mailing list
suppressed
http://www.icdevgroup.org/mailman/listinfo/interchange-users
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.