chinamail.php
来自「全新且完善的强大网上商店系统」· PHP 代码 · 共 196 行
PHP
196 行
<?php
//最关键的是在用户注册时的省市名称要和送贷模块中的地址表要名称一致
class chinamail {
var $code, $title, $description, $enabled, $num_domestic_zones, $num_inter_zones, $num_zones,$safe_mode_value;
// class constructor
function chinamail() {
global $safe_mode_value;
$this->code = 'chinamail';
$this->title = MODULE_SHIPPING_CHINAMAIL_TEXT_TITLE;
$this->description = MODULE_SHIPPING_CHINAMAIL_TEXT_DESCRIPTION;
$this->sort_order = MODULE_SHIPPING_CHINAMAIL_SORT_ORDER;
$this->icon = '';
$this->tax_class = MODULE_SHIPPING_CHINAMAIL_TAX_CLASS;
$this->enabled = ((MODULE_SHIPPING_CHINAMAIL_STATUS == 'True') ? true : false);
$this->safe_mode_value = $safe_mode_value;
// CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED
$this->num_domestic_zones = 10;
$this->num_inter_zones = 0;
$this->num_zones = $this->num_domestic_zones + $this->num_inter_zones;
}
// class methods
function quote($method = '') {
global $order, $shipping_weight;
$packge_fee = 5;
$dest_country = $order->delivery['country']['iso_code_2'];
$dest_province = $order->delivery['state'];
$dest_city = $order->delivery['city'];
$dest_zone_id;
// get the safe mode money
$safe_money = $order->info['total'] / 100;
// A zone inside china is a group of provinces.
if($dest_country == "CN") {
$dest_zone_id = $dest_province.':'.$dest_city;
} else {
$dest_zone_id = $dest_country;
}
$dest_zone = 0;
$error = false;
$err_msg;
for ($i=1; $i<=$this->num_zones; $i++) {
$zones_table = @constant('MODULE_SHIPPING_CHINAMAIL_ZONES_' . $i);
$zones = split("[,]", $zones_table);
$dest_zone_array = explode(':',$dest_zone_id);
if (in_array($dest_zone_array[0], $zones) || in_array($dest_zone_array[1],$zones)) {
$dest_zone = $i;
break;
}
}
if ($dest_zone == 0) {
$error = true;
$err_msg = MODULE_SHIPPING_CHINAMAIL_INVALID_ZONE;
} else {
$shipping = -1;
$zones_cost = @constant('MODULE_SHIPPING_CHINAMAIL_COST_' . $dest_zone);
$cost_table = split("[:]" , $zones_cost);
if ($shipping_weight <= $cost_table[0]) {
$shipping = $cost_table[3];
$shipping_method = MODULE_SHIPPING_CHINAMAIL_TEXT_WAY . ' ' . $dest_zone_id . ' : ' . $shipping_weight . ' ' . MODULE_SHIPPING_CHINAMAIL_TEXT_UNITS;
} else if ($shipping_weight <= $cost_table[1] && $shipping_weight > $cost_table[0]){
$shipping_weight_add = $shipping_weight - $cost_table[0];
for ($mail_num=0;$shipping_weight_add >=0; $shipping_weight_add = $shipping_weight_add - $cost_table[2]) {
$mail_num++;
}
$shipping = $cost_table[3] + $mail_num * $cost_table[4];
$shipping_method = MODULE_SHIPPING_CHINAMAIL_TEXT_WAY . ' ' . $dest_zone_id . ' : ' . $shipping_weight . ' ' . MODULE_SHIPPING_CHINAMAIL_TEXT_UNITS;
} else if($shipping_weight > $cost_table[1]){
$shipping_weight_add = $shipping_weight - $cost_table[0];
for ($mail_num=0;$shipping_weight_add >=0; $shipping_weight_add = $shipping_weight_add - $cost_table[2]) {
$mail_num++;
}
$shipping = $cost_table[3] + $mail_num * $cost_table[5];
$shipping_method = MODULE_SHIPPING_CHINAMAIL_TEXT_WAY . ' ' . $dest_zone_id . ' : ' . $shipping_weight . ' ' . MODULE_SHIPPING_CHINAMAIL_TEXT_UNITS;
}
}
if ($shipping == -1) {
//$shipping_cost = 0;
//$shipping_method = MODULE_SHIPPING_CHINAPOST_UNDEFINED_RATE;
$error = true;
$err_msg = MODULE_SHIPPING_CHINAMAIL_UNDEFINED_RATE;
} else {
$shipping_cost = ($shipping + @constant('MODULE_SHIPPING_CHINAMAIL_HANDLING_' . $dest_zone) + $packge_fee);
}
if($this->safe_mode_value == 0){
$shipping_cost = $shipping_cost + $safe_money;
$shipping_method .= " ".MODULE_SHIPPING_CHINAMAIL_SAFE;
}
//$shipping_method .= MODULE_SHIPPING_CHINAMAIL_DETAIL;
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_CHINAMAIL_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => $shipping_method,
'cost' => $shipping_cost,
'later' => false)));
if ($this->tax_class > 0) {
$this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
}
if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);
if ($error == true) $this->quotes['error'] = $err_msg;//MODULE_SHIPPING_CHINAPOST_INVALID_ZONE;
return $this->quotes;
}
function check() {
global $db,$table_configuration;
if (!isset($this->_check)) {
$check_query = $db->query("select configuration_value from $table_configuration where configuration_key = 'MODULE_SHIPPING_CHINAMAIL_STATUS'");
$this->_check = $db->num_rows($check_query);
}
return $this->_check;
}
function install() {
global $db,$table_configuration;
$mail_zones[0] = array('北京市,重庆市,西安,保定,天津市,沧州,太原,宁武,临汾,运城,离石,南京,淮阴,盐城,合肥,蚌埠,阜阳,济南,德州,滨州,究州,临沂,聊城,恩施,兴义,昆明,南充,内江,万县,达川,宝鸡,天水,平凉,庆阳,涪陵,商州','1:5:0.5:9:4:2.2','0');
$mail_zones[1] = array('上海市,石家庄,邯郸,长治,无锡,徐州,宁波,温州,芜湖,黄山,赤峰,漳州,泉州,福安,荷泽,洛阳,三门峡,商丘,新乡,安阳,荆州,宜昌,十堰,贵阳,遵义,安顺,凯里,铜仁,思南,毕节,六盘水','1:5:0.5:8:3.5:1.9', '0');
$mail_zones[2] = array('云南省,成都,宁夏,陕西省,昌黎,张家口,承德,大同,集宁,东胜,太仆寺旗,锡林浩特,通辽,沈阳,锦州,建平,潍坊,青岛,烟台,雅安,康定,西昌,昭觉,乐山,锦阳,宜滨,阿坝,马尔康,武都,临夏,甘南,西宁,海南,黄南,海北,巴中','1:5:0.5:10:4.5:2.5', '0');
$mail_zones[3] = array('吉林省,黑龙江省,临河,巴林左旗,白城,大连,丹东,张掖,酒泉,安西,玉树,果洛,大柴旦,格尔木,哈密,昌都,丁胄,甘孜','1:5:0.5:12:5.5:3.1', '0');
$mail_zones[4] = array('杭州,金华,安庆,福州,建阳,三明,九江,上饶,抚州,吉安,郑州,许昌,南阳,信阳,武汉,黄石,襄樊,怀化,吉首,南宁,柳州,百色,河池,钦州,都匀','1:5:0.5:7:3:1.6','0');
$mail_zones[5] = array('南昌,长沙,湘潭,益阳,邵阳,永州,常德,海口,桂林,玉林','1:5:0.5:6:2.5:1.3','0');
$mail_zones[6] = array('广东省,赣州,衡阳,郴州,梧州','1:5:0.5:5:2:1','0');
$mail_zones[7] = array('拉萨,那曲,茫崖,乌鲁木齐,乌苏,库尔勒','1:5:0.5:14:6.5:3.7','0');
$mail_zones[8] = array('阿里,和田','1:5:0.5:20:9:6','0');
$mail_zones[9] = array('新疆,日喀则,亚东,山南,林芝','1:5:0.5:16:7.5:4.3','0');
$db->query("insert into $table_configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('提供国内快递包裹服务', 'MODULE_SHIPPING_CHINAMAIL_STATUS', 'True', '你想为顾客提供邮政包裹快递服务吗?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'No\'), ', now())");
$db->query("insert into $table_configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('税别', 'MODULE_SHIPPING_CHINAMAIL_TAX_CLASS', '0', '按以下税别对邮费收税。', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
$db->query("insert into $table_configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('排序顺序', 'MODULE_SHIPPING_CHINAMAIL_SORT_ORDER', '0', '邮政包裹快递的显示顺序。', '6', '0', now())");
for ($i = 1; $i <= $this->num_zones; $i++) {
$default_countries = '';
$zone_name = ' ';
$zone_desc1 = ' ';
$zone_desc2 = ' ';
if ($i <= $this->num_domestic_zones) {
$zone_name = '国内快送区 '. $i;
$zone_desc1 = $zone_name . ' 省/市/自治区';
$zone_desc2 = '列出该区所属省/市/自治区简称,并用逗号分开。';
} else {
$j = $i - $this->num_domestic_zones;
$zone_name = '国际邮区 ' . $j;
$zone_desc1 = $zone_name . ' 国家/地区';
$zone_desc2 = '列出该区所属国家/地区的2位ISO代码,并用逗号分开。';
}
$k = $i - 1;
$db->query("insert into $table_configuration (configuration_title, configuration_key, configuration_value,
configuration_description, configuration_group_id, sort_order, date_added) values ('" . $zone_desc1 . "',
'MODULE_SHIPPING_CHINAMAIL_ZONES_" . $i ."', '" . $mail_zones[$k][0] . "', '" . $zone_desc2 . " ', '6', '0', now())");
$db->query("insert into $table_configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('". $zone_name ." 资费表', 'MODULE_SHIPPING_CHINAMAIL_COST_" . $i ."', '" . $mail_zones[$k][1] ." ', '例如:1:5:0.5:16:7.5:4.3 首重1公斤16元,续重0.5公斤,5公斤以下续重为7.5元,5公斤以上续重为4.3元。', '6', '0', now())");
$db->query("insert into $table_configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('". $zone_name ." 手续费', 'MODULE_SHIPPING_CHINAMAIL_HANDLING_" . $i."', '". $mail_zones[$k][2] ." ', '" . $zone_name . " 送货的手续费。', '6', '0', now())");
}
}
function remove() {
global $db,$table_configuration;
$db->query("delete from $table_configuration where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
function keys() {
$keys = array('MODULE_SHIPPING_CHINAMAIL_STATUS', 'MODULE_SHIPPING_CHINAMAIL_TAX_CLASS', 'MODULE_SHIPPING_CHINAMAIL_SORT_ORDER');
for ($i=1; $i<=$this->num_zones; $i++) {
$keys[] = 'MODULE_SHIPPING_CHINAMAIL_ZONES_' . $i;
$keys[] = 'MODULE_SHIPPING_CHINAMAIL_COST_' . $i;
$keys[] = 'MODULE_SHIPPING_CHINAMAIL_HANDLING_' . $i;
}
return $keys;
}
}
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?