CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
INDEX
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN

Home: Perl Programming Help: Intermediate:
Store Discount

 



MattC
Novice

Jan 23, 2013, 9:00 AM

Post #1 of 1 (1053 views)
Store Discount Can't Post

Posted this in another forum, but thought I would try here as well.

I am trying to figure out the best way to do this. So where I work, there is a manufacturer that has a "5/6" Discount, here it is explained:


Quote
For every 5 pieces of Wee Forest Folk you purchase, receive a 50% Discount on the 6th piece:

6th Piece's retail price must not be greater than one of the first 5 pieces. If so, then the discount will only be up to 50% of the highest price of one of the first 5 pieces.


The majority of this code was written by the previous developer and I am trying to fix it. I have everything working fine, except I need to exclude the most recent piece if the price of it was more than the previous ones. I am unsure of the best way to do this. Every purchase of this manufacturer is stored in it's own table and it grabs the highest price once they have ordered the right amount.

Here is what I have right now:

Code
if ($summary[15] > 0) { 
$billing_phone=$FORM{billing_phone};
$billing_phone=~s/\D//g;
if ($FORM{email}) {
$sql = qq{
SELECT
SUM(weeforest.quantity)
FROM
weeforest,orders
WHERE
weeforest.ordernumber = orders.number
AND weeforest.email="$FORM{email}"
AND weeforest.email <> "noemail\@cherrylanekeepsakes.com"
AND weeforest.email <> "test\@test.com"
AND (
orders.order_status="New"
OR orders.order_status="shipped"
OR orders.order_status="Pending"
)
GROUP BY email
};
}

else {

$sql = qq{
SELECT
SUM(weeforest.quantity)
FROM
weeforest,
orders
WHERE
weeforest.ordernumber = orders.number
AND weeforest.phone="$billing_phone"
AND (
orders.order_status="New"
OR orders.order_status="shipped"
OR orders.order_status="Pending"
)
GROUP BY phone
};
}

$sth=$dbh->prepare ($sql);
$sth->execute;
($weequantity) = $sth->fetchrow_array ();

$weetotal=$weequantity + $summary[15];

if ($FORM{email}) {
$sql=qq{
SELECT
price
FROM
weeforest,
orders
WHERE
weeforest.ordernumber = orders.number
AND weeforest.email="$FORM{'email'}"
AND weeforest.email <> "noemail\@cherrylanekeepsakes.com"
AND weeforest.email <> "test\@test.com"
AND (
orders.order_status="New"
OR orders.order_status="shipped"
OR orders.order_status="Pending"
) ORDER BY price
};
}
else {
$sql=qq{
SELECT
price
FROM
weeforest,
orders
WHERE
weeforest.ordernumber = orders.number
AND weeforest.phone="$billing_phone"
AND (
orders.order_status="New"
OR orders.order_status="shipped"
OR orders.order_status="Pending"
)
ORDER BY price
};
}

$sth=$dbh->prepare ($sql);
$sth->execute;

while(($weeprice) = $sth->fetchrow_array ()) {
$weeprice[$k]=$weeprice;
$k++;
}

$sql = qq[
SELECT
c.price
FROM
cartdata c,
$config{database}{db_view} p
WHERE
c.product = p.number
AND
c.customer="$FORM{uid}"
AND
p.manufacturer LIKE '%wee%'
];

$sth=$dbh->prepare ($sql);
$sth->execute;
while(($weeprice) = $sth->fetchrow_array ()) {
$weeprice[$k]=$weeprice;
$k++;
}

@weeprice=sort numerically_desc (@weeprice);

if ($weetotal >= 6) {

if ($discount_display ne "") {$and=" and";} else {$and="";}
$weediscount=$weeprice[0]/2;
$discount=$discount+$weediscount;
$discount_display="Wee Forest Folk Discount $and $discount_display";
$FORM{'weeforest_discounts'}++;
}
}


 
 


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives