[ic] Many to many price schema

Renato Enea interchange-users@lists.akopia.com
Fri May 11 03:27:00 2001


Hello, thank you for reply.
The suggestion is good but i think that this routine is useful using the
[order] tag.
But i have a result page with a single form to order items using
mv_order_item and mv_order_quantity, so what do you suggest me ??
It is necessary to change the result page using always the [order] tag ??

Regards
Renato

----- Original Message -----
From: "Stefan Hornburg (Racke)" <racke@linuxia.de>
To: <interchange-users@lists.akopia.com>
Sent: Thursday, May 10, 2001 7:48 PM
Subject: Re: [ic] Many to many price schema


> "Renato Enea" <renea@enter.it> writes:
>
> > I have to create a price schema according to my database.
> > This is the problem...for any product the customer can insert various
prices
> > according to item quantity for any users or for a specifical user.
> > So i have a many to many relationship table with products and userdb
tables
> > with the following structure:
> >
> > COUNTER - SKU - USER ID - QUANTITY RANGE - PRICE
> >
> > So i can have for a single product (example: sku=1) many prices
according to
> > quantity and users....
> >
> > 1 - 1 - 1 - 0,10 - 100   SKU=1 PRICE=100 QUANTITY RANGE = from 0 to 10
price
> > specific for USERID = 1
> > 2 - 1 -  - 0,10 - 110   SKU=1 PRICE=110 QUANTITY RANGE = from 0 to 10
price
> > for any users (except for userid =1)
> >
> > 3 - 1 - 1 - 10,20 - 90   SKU=1 PRICE=90 QUANTITY RANGE = from 10 to 20
price
> > specific for USERID = 1
> > 4 - 1 -  - 10,20 - 100   SKU=1 PRICE=100 QUANTITY RANGE = from 10 to 20
> > price for any users (except for userid =1)
> >
> > and so on....
> >
> > How can i solve this problem ??
>
> I don't know if this is the best solution for your problem,
> but you can define your own price calculator like this:
>
> # Pricing
> UserTag calc_price Order code quantity
> UserTag calc_price Routine <<EOF
> sub {
>     my ($code, $quantity);
>
> if ($Vend::Interpolate::item) {
> $code = $Vend::Interpolate::item->{code};
> $quantity = $Vend::Interpolate::item->{quantity};
> } else {
> ($code, $quantity) = @_;
>     }
>
> # sanity check
> if ($code !~ /^\d+$/ || $quantity !~ /^\d+$/) {
> Log ("Wrong input for calc_price: CODE $code QUANTITY $quantity");
>         return;
>     }
>
>     my $db = Vend::Data::database_exists_ref('price');
> my $keys = $db->query ("select price,min from price where component_idf =
$code order by min");
> my $price;
>
> if (@$keys) {
> # fallback price
> $price = $keys->[0]->[0];
> # check for appropriate price
> for (my $i = 0; $i < @$keys; $i++) {
> if ($quantity > $keys->[$i]->[1]) {
> $price = $keys->[$i]->[0];
> }
> }
> }
> $price * 1.95583;
> }
> EOF
>
> CommonAdjust [calc_price]
>
> Ciao
>         Racke
>
> --
> Master of Swiss Web 2001: http://www.zweifel.ch/
>
> For projects and other business stuff please refer to COBOLT NetServices
> (URL: http://www.cobolt.net; Email: info@cobolt.net; Phone:
0041-1-3884400)
> _______________________________________________
> Interchange-users mailing list
> Interchange-users@lists.akopia.com
> http://lists.akopia.com/mailman/listinfo/interchange-users
>