Solved

I am looking for a perl shipping formula

Posted on 2011-09-21
5
377 Views
Last Modified: 2013-12-25
I have the following perl formula and I would like to find a way to change the Home_Accessories part only where it will calculate the shipping charges by using a 25% of the subtotal.
sub custom4
 {
 local ($shipMethod, $subtotal, $weight, $total_shipping, 
 $category_count) = @_; local ($shipping_price);

 if ($category_count{'Home_Accessories!'} eq "1") {

     if ($subtotal <= 100.00)      { $shipping_price = 0.00;  }

       elsif ($subtotal >= 101.00 && $subtotal <= 250.00)   { $shipping_price
 = 0.00;  }
       elsif ($subtotal >= 250.00 && $subtotal <= 1500.00)   { $shipping_price
 = 0.00; }
       
       # All orders over the previous value
       else { $shipping_price = 0.00; }
    

 } else {

if ($category_count{'Cookware!'} eq "1") {

     if ($subtotal <= 100.00)      { $shipping_price = 0.00;  }

       elsif ($subtotal >= 101.00 && $subtotal <= 250.00)   { $shipping_price
 = 0.00;  }
       elsif ($subtotal >= 250.00 && $subtotal <= 1500.00)   { $shipping_price
 = 0.00; }
       
       # All orders over the previous value
       else { $shipping_price = 0.00; }
    

 } else {
 if ($category_count{'Clocks!'} eq "1") {

     if ($subtotal <= 100.00)      { $shipping_price = 0.00;  }

       elsif ($subtotal >= 101.00 && $subtotal <= 250.00)   { $shipping_price
 = 0.00;  }
       elsif ($subtotal >= 250.00 && $subtotal <= 1500.00)   { $shipping_price
 = 0.00; }
       
       # All orders over the previous value
       else { $shipping_price = 0.00; }
    

 } else {

 if ($category_count{'Western_Accessories!'} eq "1") {
 if ($subtotal <= 29.99)      { $shipping_price = 8.50;  }

       elsif ($subtotal >= 30.00 && $subtotal <= 39.99)   { $shipping_price =
 11.50;  }
       elsif ($subtotal >= 40.00 && $subtotal <= 49.99)   { $shipping_price =
 12.00; }
       elsif ($subtotal >= 50.00 && $subtotal <= 59.99)   { $shipping_price =
 13.50; }
       elsif ($subtotal >= 60.00 && $subtotal <= 69.99)   { $shipping_price =
 15.00; }
       elsif ($subtotal >= 70.00 && $subtotal <= 79.99)   { $shipping_price =
 19.00; }
       elsif ($subtotal >= 80.00 && $subtotal <= 89.99)   { $shipping_price =
 23.00; }
       elsif ($subtotal >= 90.00 && $subtotal <= 99.99)   { $shipping_price =
 27.00; }
       elsif ($subtotal >= 100.00 && $subtotal <= 119.99)  { 
 $shipping_price = 31.00; }
       elsif ($subtotal >= 120.00 && $subtotal <= 129.99)  { 
 $shipping_price = 35.00; }
 elsif ($subtotal >= 130.00 && $subtotal <= 139.99)  { 
 $shipping_price = 39.00; }
 elsif ($subtotal >= 140.00 && $subtotal <= 149.99)  { 
 $shipping_price = 43.00; }
 elsif ($subtotal >= 150.00 && $subtotal <= 159.99)  { 
 $shipping_price = 47.00; }
 elsif ($subtotal >= 160.00 && $subtotal <= 169.99)  { 
 $shipping_price = 52.00; }     
       
       # All orders over the previous value
       else { $shipping_price = 0.00; }
    
} else {
 if ($subtotal <= 29.99)      { $shipping_price = 8.50;  }

       elsif ($subtotal >= 30.00 && $subtotal <= 39.99)   { $shipping_price =
 11.50;  }
       elsif ($subtotal >= 40.00 && $subtotal <= 49.99)   { $shipping_price =
 12.00; }
       elsif ($subtotal >= 50.00 && $subtotal <= 59.99)   { $shipping_price =
 13.50; }
       elsif ($subtotal >= 60.00 && $subtotal <= 69.99)   { $shipping_price =
 15.00; }
       elsif ($subtotal >= 70.00 && $subtotal <= 79.99)   { $shipping_price =
 19.00; }
       elsif ($subtotal >= 80.00 && $subtotal <= 89.99)   { $shipping_price =
 23.00; }
       elsif ($subtotal >= 90.00 && $subtotal <= 99.99)   { $shipping_price =
 27.00; }
       elsif ($subtotal >= 100.00 && $subtotal <= 119.99)  { 
 $shipping_price = 31.00; }
       elsif ($subtotal >= 120.00 && $subtotal <= 129.99)  { 
 $shipping_price = 35.00; }
 elsif ($subtotal >= 130.00 && $subtotal <= 139.99)  { 
 $shipping_price = 39.00; }
 elsif ($subtotal >= 140.00 && $subtotal <= 149.99)  { 
 $shipping_price = 43.00; }
 elsif ($subtotal >= 150.00 && $subtotal <= 159.99)  { 
 $shipping_price = 47.00; }
 elsif ($subtotal >= 160.00 && $subtotal <= 169.99)  { 
 $shipping_price = 52.00; }
     
       # All orders over the previous value
       else { $shipping_price = 0.00; }
  
}
    return ($shipping_price);
}}
}

}
 1;

Open in new window

0
Comment
Question by:starview
  • 3
  • 2
5 Comments
 
LVL 38

Accepted Solution

by:
wesly_chen earned 500 total points
ID: 36577669
if ($category_count{'Home_Accessories!'} eq "1") {

     $subtotal *= 0.25;   # add this line
     if ($subtotal <= 100.00)      { $shipping_price = 0.00;  }

       elsif ($subtotal >= 101.00 && $subtotal <= 250.00)   { $shipping_price
 = 0.00;  }
       elsif ($subtotal >= 250.00 && $subtotal <= 1500.00)   { $shipping_price
 = 0.00; }
       
       # All orders over the previous value
       else { $shipping_price = 0.00; }
   

 } else {
0
 
LVL 38

Assisted Solution

by:wesly_chen
wesly_chen earned 500 total points
ID: 36577774
> it will calculate the shipping charges by using a 25% of the subtotal.
So the $shipping_price = 25% of $subtotal ?

Then change to $shipping_price = $subtotal * 0.25;  in line 6 ~16
if ($category_count{'Home_Accessories!'} eq "1") {

     if ($subtotal <= 100.00)      { $shipping_price = 0.00;  }

       elsif ($subtotal >= 101.00 && $subtotal <= 250.00)   { $shipping_price = $subtotal * 0.25;  }
       elsif ($subtotal >= 250.00 && $subtotal <= 1500.00)   { $shipping_price = $subtotal * 0.25; }
       
       # All orders over the previous value
       else { $shipping_price = $subtotal * 0.25; }

Open in new window

0
 

Author Comment

by:starview
ID: 36577883
Is there a way to calculalte the 25% shipping charge of the subtotal  no matter what the subtotal is ?
and no use the:
if ($subtotal <= 100.00)      { $shipping_price = 0.00;  }
       elsif ($subtotal >= 101.00 && $subtotal <= 250.00)   { $shipping_price = $subtotal * 0.25;  }
       elsif ($subtotal >= 250.00 && $subtotal <= 1500.00)   { $shipping_price = $subtotal * 0.25; }
       
0
 
LVL 38

Assisted Solution

by:wesly_chen
wesly_chen earned 500 total points
ID: 36577969
> no matter what the subtotal is ?
Replace line 6 to line 19 to

if ($category_count{'Home_Accessories!'} eq "1") {

     $shipping_price = $subtotal * 0.25;

 } else {

Open in new window

0
 

Author Closing Comment

by:starview
ID: 36584863
Thank you
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
AWS CLI issues with Tags 3 89
Disk Ram Peak 1 49
Example unit tests with AngularJS 3 47
parse a file and get data out 11 80
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

820 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question