[ic] Promo pricing
Mike Heins
interchange-users@icdevgroup.org
Mon Apr 7 07:14:00 2003
Quoting Nicholas Cook (ncook@foxmillpets.com):
> I'm currently using 4.9.6 and I am trying to figure out how to set a new
> price for a product for the duration of a promo. After the promo
> expires, I want the price to go back it's regular price.
This is pretty easy to do with a custom pricing tag. I don't put this
in standard because it can impact performance.
UserTag promo_price Routine <<EOR
sub {
# $item is already set as part of pricing routines
my $mhash = tag_data( 'merchandising', undef, $item->{code}, { hash => 1 })
or return;
return unless $mhash->{timed_promotion};
my $currtime = POSIX::strftime('%Y%m%d%H%M%S', localtime());
return unless $mhash->{start_date} lt $currtime;
return unless $mhash->{finish_date} gt $currtime;
my $base = $item->{mv_ib} || 'products';
return tag_data($base, 'sale_price', $item->{code});
}
EOR
(That is a *global* UserTag.)
Then this CommonAdjust:
CommonAdjust [promo-price], ;:price
will implement it.
You can get better performance with:
AutoModifier merchandising:timed_promotion
CommonAdjust [promo-price], ;:price
UserTag promo_price Routine <<EOR
sub {
# $item is already set as part of pricing routines
return unless $item->{timed_promotion};
my $mhash = tag_data( 'merchandising', undef, $item->{code}, { hash => 1 })
or return;
my $currtime = POSIX::strftime('%Y%m%d%H%M%S', localtime());
return unless $mhash->{finish_date} gt $currtime;
return unless $mhash->{start_date} lt $currtime;
my $base = $item->{mv_ib} || 'products';
return tag_data($base, 'sale_price', $item->{code});
}
EOR
--
Mike Heins
Perusion -- Expert Interchange Consulting http://www.perusion.com/
phone +1.513.523.7621 <mike@perusion.com>
Few blame themselves until they have exhausted all other possibilities.
-- anonymous