📄 ups.php
字号:
<?php
/**
* @package shippingMethod
* @copyright Copyright 2003-2007 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: ups.php 5849 2007-02-20 01:28:43Z drbyte $
*/
/**
* UPS Shipping Module class
*
*/
class ups extends base {
/**
* Declare shipping module alias code
*
* @var string
*/
var $code;
/**
* Shipping module display name
*
* @var string
*/
var $title;
/**
* Shipping module display description
*
* @var string
*/
var $description;
/**
* Shipping module icon filename/path
*
* @var string
*/
var $icon;
/**
* Shipping module status
*
* @var boolean
*/
var $enabled;
/**
* Shipping module list of supported countries (unique to USPS/UPS)
*
* @var array
*/
var $types;
/**
* Constructor
*
* @return ups
*/
function ups() {
global $order, $db, $template;
$this->code = 'ups';
$this->title = MODULE_SHIPPING_UPS_TEXT_TITLE;
$this->description = MODULE_SHIPPING_UPS_TEXT_DESCRIPTION;
$this->sort_order = MODULE_SHIPPING_UPS_SORT_ORDER;
$this->icon = $template->get_template_dir('shipping_ups.gif', DIR_WS_TEMPLATE, $current_page_base,'images/icons'). '/' . 'shipping_ups.gif';
$this->tax_class = MODULE_SHIPPING_UPS_TAX_CLASS;
$this->tax_basis = MODULE_SHIPPING_UPS_TAX_BASIS;
// disable only when entire cart is free shipping
if (zen_get_shipping_enabled($this->code)) {
$this->enabled = ((MODULE_SHIPPING_UPS_STATUS == 'True') ? true : false);
}
if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_UPS_ZONE > 0) ) {
$check_flag = false;
$check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_UPS_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
while (!$check->EOF) {
if ($check->fields['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check->fields['zone_id'] == $order->delivery['zone_id']) {
$check_flag = true;
break;
}
$check->MoveNext();
}
if ($check_flag == false) {
$this->enabled = false;
}
}
$this->types = array('1DM' => 'Next Day Air Early AM',
'1DML' => 'Next Day Air Early AM Letter',
'1DA' => 'Next Day Air',
'1DAL' => 'Next Day Air Letter',
'1DAPI' => 'Next Day Air Intra (Puerto Rico)',
'1DP' => 'Next Day Air Saver',
'1DPL' => 'Next Day Air Saver Letter',
'2DM' => '2nd Day Air AM',
'2DML' => '2nd Day Air AM Letter',
'2DA' => '2nd Day Air',
'2DAL' => '2nd Day Air Letter',
'3DS' => '3 Day Select',
'GND' => 'Ground',
'GNDCOM' => 'Ground Commercial',
'GNDRES' => 'Ground Residential',
'STD' => 'Canada Standard',
'XPR' => 'Worldwide Express',
'XPRL' => 'worldwide Express Letter',
'XDM' => 'Worldwide Express Plus',
'XDML' => 'Worldwide Express Plus Letter',
'XPD' => 'Worldwide Expedited',
'WXS' => 'Worldwide Saver');
}
/**
* Get quote from shipping provider's API:
*
* @param string $method
* @return array of quotation results
*/
function quote($method = '') {
global $_POST, $order, $shipping_weight, $shipping_num_boxes;
if ( (zen_not_null($method)) && (isset($this->types[$method])) ) {
$prod = $method;
// BOF: UPS USPS
} else if ($order->delivery['country']['iso_code_2'] == 'CA') {
$prod = 'STD';
// EOF: UPS USPS
} else {
$prod = 'GNDRES';
}
if ($method) $this->_upsAction('3'); // return a single quote
$this->_upsProduct($prod);
$ups_shipping_weight = ($shipping_weight < 0.1 ? 0.1 : $shipping_weight);
$country_name = zen_get_countries(SHIPPING_ORIGIN_COUNTRY, true);
$this->_upsOrigin(SHIPPING_ORIGIN_ZIP, $country_name['countries_iso_code_2']);
$this->_upsDest($order->delivery['postcode'], $order->delivery['country']['iso_code_2']);
$this->_upsRate(MODULE_SHIPPING_UPS_PICKUP);
$this->_upsContainer(MODULE_SHIPPING_UPS_PACKAGE);
$this->_upsWeight($ups_shipping_weight);
$this->_upsRescom(MODULE_SHIPPING_UPS_RES);
$upsQuote = $this->_upsGetQuote();
if ( (is_array($upsQuote)) && (sizeof($upsQuote) > 0) ) {
switch (SHIPPING_BOX_WEIGHT_DISPLAY) {
case (0):
$show_box_weight = '';
break;
case (1):
$show_box_weight = ' (' . $shipping_num_boxes . ' ' . TEXT_SHIPPING_BOXES . ')';
break;
case (2):
$show_box_weight = ' (' . number_format($ups_shipping_weight * $shipping_num_boxes,2) . TEXT_SHIPPING_WEIGHT . ')';
break;
default:
$show_box_weight = ' (' . $shipping_num_boxes . ' x ' . number_format($ups_shipping_weight,2) . TEXT_SHIPPING_WEIGHT . ')';
break;
}
$this->quotes = array('id' => $this->code,
'module' => $this->title . $show_box_weight);
$methods = array();
// BOF: UPS USPS
$allowed_methods = explode(", ", MODULE_SHIPPING_UPS_TYPES);
$std_rcd = false;
// EOF: UPS USPS
$qsize = sizeof($upsQuote);
for ($i=0; $i<$qsize; $i++) {
list($type, $cost) = each($upsQuote[$i]);
// BOF: UPS USPS
if ($type=='STD') {
if ($std_rcd) continue;
else $std_rcd = true;
}
if (!in_array($type, $allowed_methods)) continue;
// EOF: UPS USPS
$methods[] = array('id' => $type,
'title' => $this->types[$type],
'cost' => ($cost + MODULE_SHIPPING_UPS_HANDLING) * $shipping_num_boxes);
}
$this->quotes['methods'] = $methods;
if ($this->tax_class > 0) {
$this->quotes['tax'] = zen_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
}
} else {
$this->quotes = array('module' => $this->title,
'error' => 'We are unable to obtain a rate quote for UPS shipping.<br />Please contact the store if no other alternative is shown.');
}
if (zen_not_null($this->icon)) $this->quotes['icon'] = zen_image($this->icon, $this->title);
return $this->quotes;
}
/**
* check status of module
*
* @return boolean
*/
function check() {
global $db;
if (!isset($this->_check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_UPS_STATUS'");
$this->_check = $check_query->RecordCount();
}
return $this->_check;
}
/**
* Install this module
*
*/
function install() {
global $db;
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('鎵撳紑UPS閰嶉
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -