OK, here is your shipping charges expressed in a php function:
<?php
function getShipCharge($cartQuantity) {
$shipZone = isset($_SESSION['ship_stg'])?$_SESSION['ship_stg']:1;
$shipMethod = isset($_SESSION['ship_method'])?$_SESSION['ship_method']:1;
if ($cartQuantity < 100) { // 1-99 cards purchased
switch ($shipZone) {
case 1: // CT, DE, MA, ME, NH, NJ, NY, PA, RI, VT
switch ($shipMethod) {
case 1: // UPS Ground
return 10;
break;
}
break;
case 2: // DC, MD, NC, OH, SC, VA, WV
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 3: // USPS Express
return 30;
break;
}
break;
case 3: // AL, FL, GA, IA, IL, IN, KY, MI, MN, MO,TN, WI
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 2: // USPS Priority
return 18;
break;
case 3: // USPS Express
return 35;
break;
}
break;
case 4: // AK, AR, AZ, CA, CO, HI, ID, KS, LA, MS, MT, ND, NE, NM, NV, OK, OR, SD, TX, UT, WA, WY
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 2: // USPS Priority
return 18;
break;
case 3: // USPS Express
return 42;
break;
}
break;
case 5: // United Kingdom & Ireland
switch ($shipMethod) {
case 2: // USPS Priority
return 35;
break;
case 3: // USPS Express
return 45;
break;
}
break;
case 6: // Canada
switch ($shipMethod) {
case 2: // USPS Priority
return 28;
break;
case 3: // USPS Express
return 42;
break;
}
break;
}
} else if ($cartQuantity < 150) { // 100 - 149 cards purchased
switch ($shipZone) {
case 1: // CT, DE, MA, ME, NH, NJ, NY, PA, RI, VT
switch ($shipMethod) {
case 1: // UPS Ground
return 10;
break;
}
break;
case 2: // DC, MD, NC, OH, SC, VA, WV
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 3: // USPS Express
return 42;
break;
}
break;
case 3: // AL, FL, GA, IA, IL, IN, KY, MI, MN, MO,TN, WI
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 2: // USPS Priority
return 18;
break;
case 3: // USPS Express
return 45;
break;
}
break;
case 4: // AK, AR, AZ, CA, CO, HI, ID, KS, LA, MS, MT, ND, NE, NM, NV, OK, OR, SD, TX, UT, WA, WY
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 2: // USPS Priority
return 22;
break;
case 3: // USPS Express
return 48;
break;
}
break;
case 5: // United Kingdom & Ireland
switch ($shipMethod) {
case 2: // USPS Priority
return 45;
break;
case 3: // USPS Express
return 55;
break;
}
break;
case 6: // Canada
switch ($shipMethod) {
case 2: // USPS Priority
return 30;
break;
case 3: // USPS Express
return 45;
break;
}
break;
}
} else { // 150 or more cards purchased
switch ($shipZone) {
case 1: // CT, DE, MA, ME, NH, NJ, NY, PA, RI, VT
switch ($shipMethod) {
case 1: // UPS Ground
return 12.5;
break;
}
break;
case 2: // DC, MD, NC, OH, SC, VA, WV
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 3: // USPS Express
return 45;
break;
}
break;
case 3: // AL, FL, GA, IA, IL, IN, KY, MI, MN, MO,TN, WI
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 2: // USPS Priority
return 20;
break;
case 3: // USPS Express
return 52;
break;
}
break;
case 4: // AK, AR, AZ, CA, CO, HI, ID, KS, LA, MS, MT, ND, NE, NM, NV, OK, OR, SD, TX, UT, WA, WY
switch ($shipMethod) {
case 1: // UPS Ground
return 15;
break;
case 2: // USPS Priority
return 25;
break;
case 3: // USPS Express
return 52;
break;
}
break;
case 5: // United Kingdom & Ireland
switch ($shipMethod) {
case 2: // USPS Priority
return 55;
break;
case 3: // USPS Express
return 65;
break;
}
break;
case 6: // Canada
switch ($shipMethod) {
case 2: // USPS Priority
return 35;
break;
case 3: // USPS Express
return 55;
break;
}
break;
}
}
return 0;
}
?>
If you either add that code to an include file, or add the code itself, and put in on every page that has an ecart object on it.
Then go to the cart object definition Calculations tab and add a calculation that uses this function like:
RowShipping = getShipCharge([Quantity]);
Then you can create a single shipping rule to charge the total column value of the RowShipping calculation created.