x
Solved

# I am looking for a perl shipping formula

Posted on 2011-09-21
Medium Priority
401 Views
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;
``````
0
Question by:starview
• 3
• 2

LVL 38

Accepted Solution

wesly_chen earned 2000 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

wesly_chen earned 2000 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; }
``````
0

Author Comment

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

wesly_chen earned 2000 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 {
``````
0

Author Closing Comment

ID: 36584863
Thank you
0

## Featured Post

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.