Results 1 to 3 of 3
  1. #1
    Join Date
    Sep 2009
    Posts
    24
    Plugin Contributions
    0

    Default Duplicate zones shipping module dose not work

    Hi,
    I duplicate the zones shipping module naming it "zonesair".
    For some reason, it dose not recognize the country's i add at the "Zone 1 Countries" table etc.
    Customer always gets the "No shipping available to the selected country" message.
    Can you see in the code what is wrong? (version 1.3.8a)

    <?php

    class zonesair {

    var $code, $title, $description, $enabled, $num_zoneair;

    // class constructor
    function zonesair() {
    $this->code = 'zonesair';
    $this->title = MODULE_SHIPPING_ZONESAIR_TEXT_TITLE;
    $this->description = MODULE_SHIPPING_ZONESAIR_TEXT_DESCRIPTION;
    $this->sort_order = MODULE_SHIPPING_ZONESAIR_SORT_ORDER;
    $this->icon = '';
    $this->tax_class = MODULE_SHIPPING_ZONESAIR_TAX_CLASS;
    $this->tax_basis = MODULE_SHIPPING_ZONESAIR_TAX_BASIS;

    // disable only when entire cart is free shipping
    if (zen_get_shipping_enabled($this->code)) {
    $this->enabled = ((MODULE_SHIPPING_ZONESAIR_STATUS == 'True') ? true : false);
    }

    // CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED
    $this->num_zonesair = 4;
    }

    // class methods
    function quote($method = '') {
    global $order, $shipping_weight, $shipping_num_boxes, $total_count;
    $dest_country = $order->delivery['country']['iso_code_2'];
    $dest_zone = 0;
    $error = false;

    $order_total_amount = $_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices() ;

    for ($i=1; $i<=$this->num_zonesair; $i++) {
    $countries_table = constant('MODULE_SHIPPING_ZONESPOST_COUNTRIES_' . $i);
    $countries_table = strtoupper(str_replace(' ', '', $countries_table));
    $country_zonesair = split("[,]", $countries_table);
    if (in_array($dest_country, $country_zonesair)) {
    $dest_zone = $i;
    break;
    }
    if (in_array('00', $country_zonesair)) {
    $dest_zone = $i;
    break;
    }
    }

    if ($dest_zone == 0) {
    $error = true;
    } else {
    $shipping = -1;
    $zonesair_cost = constant('MODULE_SHIPPING_ZONESAIR_COST_' . $dest_zone);

    $zonesair_table = split("[:,]" , $zonesair_cost);
    $size = sizeof($zonesair_table);
    $done = false;
    for ($i=0; $i<$size; $i+=2) {
    switch (MODULE_SHIPPING_ZONESAIR_METHOD) {
    case (MODULE_SHIPPING_ZONESAIR_METHOD == 'Weight'):
    if (round($shipping_weight,9) <= $zonesair_table[$i]) {
    $shipping = $zonesair_table[$i+1];

    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($shipping_weight * $shipping_num_boxes,2) . MODULE_SHIPPING_ZONESAIR_TEXT_UNITS . ')';
    break;
    default:
    $show_box_weight = ' (' . $shipping_num_boxes . ' x ' . number_format($shipping_weight,2) . MODULE_SHIPPING_ZONESAIR_TEXT_UNITS . ')';
    break;
    }

    // $shipping_method = MODULE_SHIPPING_ZONES_TEXT_WAY . ' ' . $dest_country . (SHIPPING_BOX_WEIGHT_DISPLAY >= 2 ? ' : ' . $shipping_weight . ' ' . MODULE_SHIPPING_ZONES_TEXT_UNITS : '');
    $shipping_method = MODULE_SHIPPING_ZONESAIR_TEXT_WAY . ' ' . $dest_country . $show_box_weight;
    $done = true;
    if (strstr($zonesair_table[$i+1], '%')) {
    $shipping = ($zonesair_table[$i+1]/100) * $order_total_amount;
    } else {
    $shipping = $zonesair_table[$i+1];
    }
    break;
    }
    break;
    case (MODULE_SHIPPING_ZONESAIR_METHOD == 'Price'):
    // shipping adjustment
    if (($_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices()) <= $zonesair_table[$i]) {
    $shipping = $zonesair_table[$i+1];
    $shipping_method = MODULE_SHIPPING_ZONESAIR_TEXT_WAY . ' ' . $dest_country;
    if (strstr($zonesair_table[$i+1], '%')) {
    $shipping = ($zonesair_table[$i+1]/100) * $order_total_amount;
    } else {
    $shipping = $zonesair_table[$i+1];
    }
    $done = true;
    break;
    }
    break;
    case (MODULE_SHIPPING_ZONESAIR_METHOD == 'Item'):
    // shipping adjustment
    if (($total_count - $_SESSION['cart']->free_shipping_items()) <= $zonesair_table[$i]) {
    $shipping = $zonesair_table[$i+1];
    $shipping_method = MODULE_SHIPPING_ZONESAIR_TEXT_WAY . ' ' . $dest_country;
    $done = true;
    if (strstr($zonesair_table[$i+1], '%')) {
    $shipping = ($zonesair_table[$i+1]/100) * $order_total_amount;
    } else {
    $shipping = $zonesair_table[$i+1];
    }
    break;
    }
    break;
    }
    if ($done == true) {
    break;
    }
    }

    if ($shipping == -1) {
    $shipping_cost = 0;
    $shipping_method = MODULE_SHIPPING_ZONESAIR_UNDEFINED_RATE;
    } else {
    switch (MODULE_SHIPPING_ZONESAIR_METHOD) {
    case (MODULE_SHIPPING_ZONESAIR_METHOD == 'Weight'):
    // charge per box when done by Price
    $shipping_cost = ($shipping * $shipping_num_boxes) + constant('MODULE_SHIPPING_ZONESAIR_HANDLING_' . $dest_zone);
    break;
    case (MODULE_SHIPPING_ZONESAIR_METHOD == 'Price'):
    // don't charge per box when done by Price
    $shipping_cost = ($shipping) + constant('MODULE_SHIPPING_ZONESAIR_HANDLING_' . $dest_zone);
    break;
    case (MODULE_SHIPPING_ZONESAIR_METHOD == 'Item'):
    // don't charge per box when done by Item
    $shipping_cost = ($shipping) + constant('MODULE_SHIPPING_ZONESAIR_HANDLING_' . $dest_zone);
    break;
    }
    }
    }
    $this->quotes = array('id' => $this->code,
    'module' => MODULE_SHIPPING_ZONESAIR_TEXT_TITLE,
    'methods' => array(array('id' => $this->code,
    'title' => $shipping_method,
    'cost' => $shipping_cost)));

    if ($this->tax_class > 0) {
    $this->quotes['tax'] = zen_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
    }

    if (zen_not_null($this->icon)) $this->quotes['icon'] = zen_image($this->icon, $this->title);

    if (strstr(MODULE_SHIPPING_ZONESAIR_SKIPPED, $dest_country)) {
    // don't show anything for this country
    $this->quotes = array();
    } else {
    if ($error == true) $this->quotes['error'] = MODULE_SHIPPING_ZONESAIR_INVALID_ZONE;
    }

    return $this->quotes;
    }

    function check() {
    global $db;
    if (!isset($this->_check)) {
    $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_ZONESAIR_STATUS'");
    $this->_check = $check_query->RecordCount();
    }
    return $this->_check;
    }

    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 ('Enable Zonesair Method', 'MODULE_SHIPPING_ZONESAIR_STATUS', 'True', 'Do you want to offer zoneair rate shipping?', '6', '0', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
    $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('Calculation Method', 'MODULE_SHIPPING_ZONESAIR_METHOD', 'Weight', 'Calculate cost based on Weight, Price or Item?', '6', '0', 'zen_cfg_select_option(array(\'Weight\', \'Price\', \'Item\'), ', now())");
    $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_SHIPPING_ZONESAIR_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())");
    $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Tax Basis', 'MODULE_SHIPPING_ZONESAIR_TAX_BASIS', 'Shipping', 'On what basis is Shipping Tax calculated. Options are<br />Shipping - Based on customers Shipping Address<br />Billing Based on customers Billing address<br />Store - Based on Store address if Billing/Shipping Zone equals Store zone', '6', '0', 'zen_cfg_select_option(array(\'Shipping\', \'Billing\', \'Store\'), ', now())");
    $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_SHIPPING_ZONESAIR_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
    $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Skip Countries, use a comma separated list of the two character ISO country codes', 'MODULE_SHIPPING_ZONESAIR_SKIPPED', '', 'Disable for the following Countries:', '6', '0', 'zen_cfg_textarea(', now())");

    for ($i = 1; $i <= $this->num_zonesair; $i++) {
    $default_countries = '';
    if ($i == 1) {
    $default_countries = 'US,CA';
    }
    $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Zone " . $i ." Countries', 'MODULE_SHIPPING_ZONESAIR_COUNTRIES_" . $i ."', '" . $default_countries . "', 'Comma separated list of two character ISO country codes that are part of Zone " . $i . ".<br />Set as 00 to indicate all two character ISO country codes that are not specifically defined.', '6', '0', 'zen_cfg_textarea(', now())");
    $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Zone " . $i ." Shipping Table', 'MODULE_SHIPPING_ZONESAIR_COST_" . $i ."', '3:8.50,7:10.50,99:20.00', 'Shipping rates to Zone " . $i . " destinations based on a group of maximum order weights/prices. Example: 3:8.50,7:10.50,... Weight/Price less than or equal to 3 would cost 8.50 for Zone " . $i . " destinations.<br />You can end the last amount as 10000:7% to charge 7% of the Order Total', '6', '0', 'zen_cfg_textarea(', now())");
    $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Handling Fee', 'MODULE_SHIPPING_ZONESAIR_HANDLING_" . $i."', '0', 'Handling Fee for this shipping zone', '6', '0', now())");
    }
    }

    function remove() {
    global $db;
    $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }

    function keys() {
    $keys = array('MODULE_SHIPPING_ZONESAIR_STATUS', 'MODULE_SHIPPING_ZONESAIR_METHOD', 'MODULE_SHIPPING_ZONESAIR_TAX_CLASS', 'MODULE_SHIPPING_ZONESAIR_TAX_BASIS', 'MODULE_SHIPPING_ZONESAIR_SORT_ORDER', 'MODULE_SHIPPING_ZONESAIR_SKIPPED');

    for ($i=1; $i<=$this->num_zonesair; $i++) {
    $keys[] = 'MODULE_SHIPPING_ZONESAIR_COUNTRIES_' . $i;
    $keys[] = 'MODULE_SHIPPING_ZONESAIR_COST_' . $i;
    $keys[] = 'MODULE_SHIPPING_ZONESAIR_HANDLING_' . $i;
    }

    return $keys;
    }
    }
    ?>

  2. #2
    Join Date
    Sep 2009
    Posts
    24
    Plugin Contributions
    0

    Default Re: Duplicate zones shipping module dose not work

    Duplicate zones shipping module for 1.3.8a

    I manage to fix it, now the duplicate module is working fine.
    I'm attaching the module so others can use it.
    The file name is zonesair.php. Don't forget to edit the English file (also attached)
    Attached Files Attached Files

  3. #3
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    69,402
    Plugin Contributions
    6

    Default Re: Duplicate zones shipping module dose not work

    ummm ... I think you zipped the language file twice ...
    Linda McGrath
    If you have to think ... you haven't been zenned ...

    Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!

    Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today!]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...
    Signup for our Announcements Forums to stay up to date on important changes and updates!

 

 

Similar Threads

  1. Search button dose not work!!!
    By uri1223 in forum Templates, Stylesheets, Page Layout
    Replies: 1
    Last Post: 9 Aug 2011, 06:41 PM
  2. Duplicate zones shipping module
    By Blkpower in forum Built-in Shipping and Payment Modules
    Replies: 6
    Last Post: 23 Dec 2010, 10:39 AM
  3. Can I duplicate the zones module?
    By chufty bill in forum Built-in Shipping and Payment Modules
    Replies: 17
    Last Post: 13 Sep 2009, 03:33 AM
  4. Zones module: Can I create shipping zones for different states?
    By Lisa in Vermont in forum Built-in Shipping and Payment Modules
    Replies: 6
    Last Post: 31 Dec 2008, 06:35 AM
  5. Replies: 3
    Last Post: 27 Aug 2007, 09:26 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg