Forums / Built-in Shipping and Payment Modules / Duplicate zones shipping module dose not work

Duplicate zones shipping module dose not work

Locked

Views: 956

Results 1 to 3 of 3
This thread is locked. New replies are disabled.
22 Dec 2010, 10:35 AM
#1
joe1joe1 avatar

joe1joe1

New Zenner

Join Date:
Sep 2009
Posts:
24
Plugin Contributions:
0

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; } } ?>
23 Dec 2010, 9:36 AM
#2
joe1joe1 avatar

joe1joe1

New Zenner

Join Date:
Sep 2009
Posts:
24
Plugin Contributions:
0

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)

23 Dec 2010, 3:13 PM
#3
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Location:
Ohio
Posts:
62,757
Plugin Contributions:
1

Re: Duplicate zones shipping module dose not work

ummm ... I think you zipped the language file twice ... :unsure:

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!