📄 ccship.pl
字号:
open(ZONE, "$zone_chart") || &error("Cant open zone_chart at $zone_chart in sub shipping");
while (<ZONE>) {
chop;
($code_range,$gr,$td,$sda,$sdaam,$ndas,$nda) = split(/\,/,$_);
($lowcode,$hicode) = split(/-/,$code_range);
if ($hicode) {
if ($zip3 >= $lowcode && $zip3 <= $hicode) {
last;
}
} elsif ($zip3 == $lowcode) {
last;
}
}
close(ZONE);
}
# End sub us_rate
#---------------------------------------------------------------------------------------
sub ups_canada_zone {
$zip3 = substr($post_query{'zip'},0,3);
$zip3 = uc $zip3;
open(ZONE, "$can_zone_chart") || &error("Cant open can_zone_chart at $can_zone_chart in sub shipping");
while (<ZONE>) {
chop;
($lowcode,$hicode,$zone) = split(/\,/,$_);
if ($hicode) {
if ($zip3 >= $lowcode && $zip3 <= $hicode) {
last;
}
} elsif ($zip3 == $lowcode) {
last;
}
}
close(ZONE);
}
sub ups_canada_rate {
# Routines to calculate UPS Shipping rates
$canstnd = $shipping_dir . "Canstnd.csv";
# ups to canada
open(RATE, "$canstnd") || &error("Cant open canstnd at $canstnd in sub shipping");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$z[51],$z[52],$z[53],$z[54],$z[55],$z[56]) = split(/\,/,$_);
if (($total_wt < 1 && $lbs == 1) || ($total_wt == $lbs) || ($total_wt < $lbs && $total_wt >= $lbs-1)) {
$ups_cost{'UPS Ground to Canada'} = $z[$zone];
last;
}
}
close(CODE);
}
sub ups {
# Routines to calculate UPS Shipping rates
if ($upsground) {
# ups commercial ground
open(RATE, "$upsgr") || &error("Cant open upsgr at $upsgr in sub shipping");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$z[2],$z[3],$z[4],$z[5],$z[6],$z[7],$z[8]) = split(/\,/,$_);
if (($total_wt < 1 && $lbs == 1) || ($total_wt == $lbs) || ($total_wt < $lbs && $total_wt >= $lbs-1)) {
$ups_cost{'UPS Ground'} = $z[$gr];
last;
}
}
close(CODE);
}
if ($ups2day) {
# ups second day air
# now open rate chart
open(RATE, "$ups2da") || &error("Cant open upsgr $upsgr in sub shipping");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$sdar{'202'},$sdar{'203'},$sdar{'204'},$sdar{'205'},$sdar{'206'},$sdar{'207'},$sdar{'208'},$sdar{'224'},$sdar{'225'},$sdar{'226'}) = split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'UPS 2nd Day Air'} = $sdar{$sda};
last;
}
}
close(RATE);
}
if ($ups2day) {
# ups second day air am service
open(RATE, "$ups2dam") || &error("Cant open ups2dam $up2dam in sub shipping");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$sdar{'242'},$sdar{'243'},$sdar{'244'},$sdar{'245'},$sdar{'246'}, $sdar{'248'}) = split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'UPS 2nd Day Air AM'} = $sdar{$sdaam};
last;
}
}
close(RATE);
}
if ($ups1day) {
# ups second day air am service
open(RATE, "$ups1d") || &error("Cant open ups1d $up1d in sub shipping");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$zn{'102'},$zn{'103'},$zn{'104'},$zn{'105'},$zn{'106'},$zn{'107'},$zn{'108'},$zn{'124'},$zn{'125'},$zn{'126'}) = split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'UPS Next Day Air'} = $zn{$nda};
last;
}
}
close(RATE);
}
if ($ups1daysav) {
# ups next day air saver
open(RATE, "$ups1ds") || &error("Cant open ups1ds $up1ds at line 526");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$zn{'132'},$zn{'133'},$zn{'134'},$zn{'135'},$zn{'136'},
$zn{'137'},$zn{'138'}) = split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'UPS Next Day Air Saver'} = $zn{$ndas};
last;
}
}
close(RATE);
}
if ($ups3daysel) {
# ups 3 day select
open(RATE, "$ups3d") || &error("Cant open ups3d $ups3d at line 542");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$zn{'302'},$zn{'303'},$zn{'304'},$zn{'305'},$zn{'306'},$zn{'307'},
$zn{'307'},$zn{'308'}) = split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'UPS 3 Day Select'} = $zn{$td};
last;
}
}
close(RATE);
}
}
# end ups
#--------------------------------------------------------------------#
sub usps {
# calculate USPS shipping rates
if ($usps_priority) {
# usps priority mail
open(RATE, "$uspspm") || &error("Cant open uspspm at $uspspm in sub shipping");
while (<RATE>) {
($lbs,$z[1],$z[2]) = split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
# $ups_cost{'USPS Priority Mail'} = $z[$gr];
$ups_cost{'USPS Priority Mail'} = $z[1];
last;
}
}
close(CODE);
}
if ($usps_express) {
# usps express mail
# now open rate chart
open(RATE, "$uspsem") || &error("Cant open uspspm at $uspsem at line 579");
while (<RATE>) {
($lbs,$z[2],$z[3],$z[4],$z[5],$z[6],$z[7],$z[8]) = split(/\,/,$_);
if (($lbs == 0.5 && $total_wt <= 0.5) || ($total_wt <= $lbs && $total_wt >= $lbs-1)) {
$ups_cost{'USPS Express Mail'} = $z[$gr];
last;
}
}
close(CODE);
}
if ($usps_mparcel) {
# usps machinable parcel service
open(RATE, "$uspsmp") || &error("Cant open uspspm at $uspsmp at line 593");
while (<RATE>) {
($lbs,$z[1],$z[2],$z[3],$z[4],$z[5],$z[6],$z[7],$z[8]) =split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'USPS Machinable Parcel'} = $z[$gr];
last;
}
}
close(CODE);
}
if ($usps_nmparcel) {
# usps non-machinable parcel service
open(RATE, "$uspsnmp") || &error("Cant open uspspm at $uspsnmp at line 606");
while (<RATE>) {
($lbs,$z[1],$z[2],$z[3],$z[4],$z[5],$z[6],$z[7],$z[8]) =split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'USPS Non-Machinable Parcel'} = $z[$gr];
last;
}
}
close(CODE);
}
}
# End sub usps
#-----------------------------------------------------------------------------
sub world_zone {
# Use the zone charts to find what zone order is in
$west ="AK,AZ,CA,CO,HI,ID,KS,LA,MN,MS,MT,NE,NV,NM,ND,OK,OR,SD,TX,UT,WA,WY";
$east ="AL,CT,DE,DC,FL,GA,IL,IN,IO,KY,MA,MD,MA,MI,MS,NH,NJ,NY,NC,OH,PN,RH,SC,TN,VT,VA,WI";
if ($west =~ m/$merchantstate/) {
$ups_world_zone = $shipping_dir . "Wwwzone.csv";
$ups_world_exp_rate = $shipping_dir . "Www-xpr.csv";
$ups_world_exd_rate = $shipping_dir . "Www-xpr.csv";
} else {
$ups_world_zone = $shipping_dir . "Ewwzone.csv";
$ups_world_exp_rate = $shipping_dir . "Eee-xpr.csv";
$ups_world_exd_rate = $shipping_dir . "Eee-xpr.csv";
}
# Determine World Zone zone
# zone chart: Country, Express,Expeditied, EAS
open(ZONE, "$ups_world_zone") || &error("Cant open ups_world_zone at $ups_world_zone in sub shipping");
while (<ZONE>) {
chop;
($country, $express, $expedited, $EAS) = split(/\,/,$_);
if ($country eq $post_query{'country'}) {
last;
}
}
close(ZONE);
}
# End sub world_zone
#----------------------------------------------------------------------------
sub world_ups_express {
# now open rate chart for ups express
open(RATE, "$ups_world_exp_rate") || &error("Cant open ups_world_exp_rate at $ups_world_exp_rate in sub shipping");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$w{'84'},$w{'901'},$w{'902'},$w{'903'},$w{'904'},$w{'905'},$w{'906'},$w{'907'},$w{'908'}) = split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'UPS World Wide Express'} = $w{$express};
last;
}
}
close(CODE);
}
# End sub world_ups_express
#-----------------------------------------------------------------------------
sub world_ups_expedited {
# now open rate chart
open(RATE, "$ups_world_exd_rate") || &error("Cant open usp_world_exd_rate at $ups_world_exd_rate in sub shipping");
while (<RATE>) {
s/ //g;
s/\$//g;
($lbs,$w{'74'},$w{'605'},$w{'606'},$w{'607'},$w{'608'}) = split(/\,/,$_);
if ($total_wt < $lbs && $total_wt >= $lbs-1) {
$ups_cost{'UPS World Wide Expedited'} = $w{$expedited};
last;
}
}
close(CODE);
}
# End sub world_ups_express
#-------------------------------------------------------------------------------
sub special_shipping {
# Determine Zone
# zone chart: Country, Express,Expeditied, EAS
if ($post_query{'country'} ne $shipping_base) {
$special_zone = $world_special_zone;
}
open(ZONE, "$special_zone") || &error("Cant open $special_zone in sub shipping");
while (<ZONE>) {
chop;
($country, $zone) = split(/\,/,$_);
$country =~ s/\"//ig;
# set this to check for a match either by country or state
if ($country eq $post_query{'country'} || $country eq $post_query{'state'}) {
last;
}
}
close(ZONE);
if ($post_query{'country'} ne $shipping_base) {
$special_rate = $world_special_rate;
}
open(RATE, "$special_rate") || &error("Cant open $special_rate");
while (<RATE>) {
($ni,$z[1],$z[2],$z[3],$z[4],$z[5],$z[6],$z[7],$z[8],$z[9],$z[10]) =split(/\,/,$_);
if ($shipping_cost eq "special_items" || $world_shipping_cost eq "special_items") {
if ($ni =~ m/\-/) {
($low,$high) = split(/\-/,$ni);
if ($num_items_ordered > $low && $num_items_ordered <= $high) {
$ups_cost{$special_name} = $z[$zone];
last;
}
} elsif ($ni == $num_items_ordered || $ni == $max_item_rate ) {
$ups_cost{$special_name} = $z[$zone];
last;
}
} elsif ($shipping_cost eq "special_weight" || $world_shipping_cost eq "special_weight") {
if (!$weight_inc) {
$weight_inc = 1;
}
if ($ni =~ m/\-/) {
($low,$high) = split(/\-/,$ni);
if ($total_wt > $low && $total_wt <= $high) {
$ups_cost{$special_name} = $z[$zone];
last;
}
} elsif (($total_wt < 1 && $ni == 1) || ($total_wt < $ni && $total_wt>=$ni-$weight_inc)) {
$ups_cost{$special_name} = $z[$zone];
last;
}
}
}
close(RATE);
# Routine for addition items or weight or max
if ((
($shipping_cost eq "special_items" && $post_query{'country'} eq $shipping_base) ||
($world_shipping_cost eq "special_items" && $post_query{'country'} ne $shipping_base)
) && $num_items_ordered > $max_item_rate) {
$add_cost = $add_item[$zone];
if ( ($num_items_ordered-$max_item_rate) % $item_inc == 0 ) {
$add_mod = int(($num_items_ordered-$max_item_rate)/$item_inc);
} else {
$add_mod = int(($num_items_ordered-$max_item_rate)/$item_inc) + 1;
}
$ups_cost{$special_name} += $add_cost * $add_mod;
}
# Routine for addition items or weight or max
if ((
($shipping_cost eq "special_weight" && $post_query{'country'} eq $shipping_base) ||
($world_shipping_cost eq "special_weight" && $post_query{'country'} ne $shipping_base)
) && $total_wt > $max_item_rate) {
$add_cost = $add_item[$zone];
$ups_cost{$special_name} += $add_cost * ($total_wt-$max_item_rate) + $z[$zone];
}
}
return 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -