swdgems Posted July 16, 2010 Posted July 16, 2010 Hello, I am using this module below. It's a zone.php module. I would like to set that only the order at USD100 or above can use this module. What should I add to this file below? Please advise. <?php /* $Id: zones.php,v 1.20 2003/06/15 19:48:09 thomasamoulton Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2003 osCommerce ##################################################### # MODDED BY: Chaveiro 8-5-2004 on MS2.2 # [email protected] # Now you can define zone countries in tax zones. # # HACKED BY: Gary Teo # [email protected] # Very simply force weights to "First x weight costs $a, every subsequent y weight costs $b ##################################################### Released under the GNU General Public License USAGE By default, the module comes with support for 1 zone. This can be easily changed by editing the line below in the zones constructor that defines $this->num_zones. Next, you will want to activate the module by going to the Admin screen, clicking on Modules, then clicking on Shipping. A list of all shipping modules should appear. Click on the green dot next to the one labeled zones.php. A list of settings will appear to the right. Click on the Edit button. PLEASE NOTE THAT YOU WILL LOSE YOUR CURRENT SHIPPING RATES AND OTHER SETTINGS IF YOU TURN OFF THIS SHIPPING METHOD. Make sure you keep a backup of your shipping settings somewhere at all times. If you want an additional handling charge applied to orders that use this method, set the Handling Fee field. Next, you will need to define which tax zone are in each zone. Determining this might take some time and effort. You should group a set of countries that has similar shipping charges for the same weight. For instance, when shipping from the US, the countries of Japan, Australia, New Zealand, and Singapore have similar shipping rates. Now you need to set up the shipping rate tables for each zone. Again, some time and effort will go into setting the appropriate rates. You prepare certain defined rates in a comma delimited list and enter them into the "Zone X Shipping Table" fields where "X" is the zone number. For example, this might be used for Zone 1: 3:7.5,4:6.6,6:5.3,7:4.2 means 1st 3KG costs $7.50 and Next 4KG costs $6.60 and Next 6KG costs $5.30 and subsequently every 7KG will cost an additional $4.20. Hence a 46KG item will cost $40.40 If you want to be able to ship to any country in the world, you will need to enter every country code into a tax zone. For most shops, you will not want to enter every country. This is often because of too much fraud from certain places. Zone 1 is prioritary to zone 2 and so on. If a country is in both zones, first zone it apears will be used. If that zone doesn't have mathed weights, next zone matched will be used. If a country is not listed at any zone, then the module will add a $0.00 shipping charge and will indicate that shipping is not available to that destination. PLEASE NOTE THAT THE ORDER CAN STILL BE COMPLETED AND PROCESSED! Lastly, there is a limit of 255 characters on each of the Zone Shipping Tables. */ class zones { var $code, $title, $description, $enabled, $num_zones; // class constructor function zones() { $this->code = 'zones'; $this->title = MODULE_SHIPPING_ZONES_TEXT_TITLE; $this->description = MODULE_SHIPPING_ZONES_TEXT_DESCRIPTION; $this->sort_order = MODULE_SHIPPING_ZONES_SORT_ORDER; // $this->icon = ''; $this->icon = DIR_WS_ICONS . 'shipping_ctt.gif'; $this->tax_class = MODULE_SHIPPING_ZONES_TAX_CLASS; $this->enabled = ((MODULE_SHIPPING_ZONES_STATUS == 'True') ? true : false); // CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED $this->num_zones = 8; } // class methods function quote($method = '') { global $order, $shipping_weight, $shipping_num_boxes; $dest_zone = 0; $error = false; for ($i=1; $i<=$this->num_zones; $i++) { $countries_table = constant('MODULE_SHIPPING_ZONES_COUNTRIES_' . $i); if ( ($this->enabled == true) && ((int)constant('MODULE_SHIPPING_ZONES_COUNTRIES_' . $i) > 0) ) { $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . $countries_table . "' and (zone_country_id = '" . $order->delivery['country']['id'] . "' or zone_country_id='0') order by zone_id"); while ($check = tep_db_fetch_array($check_query)) { if ( ($check['zone_id'] < 1) || ($check['zone_id'] == $order->delivery['zone_id']) ) { $dest_zone = $i; break; } } if ($dest_zone > 0) { $shipping = -1; $zones_cost = constant('MODULE_SHIPPING_ZONES_COST_' . $dest_zone); $zones_table = split("[:,]" , $zones_cost); $size = sizeof($zones_table); /*If zone shipping is 3:7.5,4:6.6,6:5.3,7:4.2 * This means first 3KG costs $7.50 * next 4KG costs $6.60 * next 6KG costs $5.30 * every 7KG after that costs $4.20 * * and if shipping weight is 46 */ if ($shipping_weight) { $shipping = 0; $tmpweight = $shipping_weight; $i = 0; for (; $i<$size-2 && $tmpweight > 0; $i+=2) { $tmpweight -= floatval($zones_table[$i]); $shipping += floatval($zones_table[$i+1]); /* [Round 0] * remaining tmpweight = 46 - 3 = 43KG * cost = 0 + 7.5 = $7.50 * * [Round 1] * remaining tmpweight = 43 - 4 = 39KG * cost = 7.5 + 6.6 = $14.10 * * [Round 2] * remaining tmpweight = 39 - 6 = 33KG * cost = 14.1 + 5.3 = $19.4 */ } if ($tmpweight > 0) { /* [Lastly] * cost = 19.4 + 4.2*5 = 40.4 */ $shipping += ceil($tmpweight/$zones_table[$i]) * $zones_table[$i+1]; } $shipping_method = MODULE_SHIPPING_ZONES_TEXT_WAY . ' ' . $order->delivery['country']['title'] . ' : ' . ($shipping_num_boxes > 1 ? $shipping_num_boxes . " x " : '') . $shipping_weight . ' ' . MODULE_SHIPPING_ZONES_TEXT_UNITS; } if ($shipping == -1) { $shipping_cost = 0; $shipping_method = MODULE_SHIPPING_ZONES_UNDEFINED_RATE; } else { $shipping_cost = ($shipping * $shipping_num_boxes) + constant('MODULE_SHIPPING_ZONES_HANDLING_' . $dest_zone); break; } } } } if ($dest_zone == 0) { $error = true; } $this->quotes = array('id' => $this->code, 'module' => MODULE_SHIPPING_ZONES_TEXT_TITLE, 'methods' => array(array('id' => $this->code, 'title' => $shipping_method, 'cost' => $shipping_cost))); 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'] = MODULE_SHIPPING_ZONES_INVALID_ZONE; return $this->quotes; } function check() { if (!isset($this->_check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_ZONES_STATUS'"); $this->_check = tep_db_num_rows($check_query); } return $this->_check; } function install() { tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('Enable Zones Method', 'MODULE_SHIPPING_ZONES_STATUS', 'True', 'Do you want to offer zone rate shipping?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_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 ('Tax Class', 'MODULE_SHIPPING_ZONES_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_SHIPPING_ZONES_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())"); for ($i = 1; $i <= $this->num_zones; $i++) { // $default_countries = ''; // if ($i == 1) { // $default_countries = 'US,CA'; // } // tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Countries', 'MODULE_SHIPPING_ZONES_COUNTRIES_" . $i ."', '" . $default_countries . "', 'Comma separated list of two character ISO country codes that are part of Zone " . $i . ".', '6', '0', now())"); tep_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 ('Zone " . $i ." Countries', 'MODULE_SHIPPING_ZONES_COUNTRIES_" . $i ."', '0', 'Must chose a Tax Zone to enable shipping method for zone" . $i . ".', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())"); //COBRANÇAS CTT: 20:1.95,50:2.06,100:2.16,500:2.79,2000:4.39 ,5000:8.05,10000:28.05 tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Shipping Table', 'MODULE_SHIPPING_ZONES_COST_" . $i ."', '', 'Shipping rates to Zone " . $i . " destinations. 3:7.5,4:6.6,6:5.3,7:4.2 means the 1st 3KG costs $7.50, the Next 4KG costs $6.60, the Next 6KG costs $5.30 and subsequently every 7KG costs $4.20 for Zone " . $i . " destinations. Hence a 46KG item will cost $40.40', '6', '0', now())"); tep_db_query("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_ZONES_HANDLING_" . $i."', '0', 'Handling Fee for this shipping zone', '6', '0', now())"); } } function remove() { tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { $keys = array('MODULE_SHIPPING_ZONES_STATUS', 'MODULE_SHIPPING_ZONES_TAX_CLASS', 'MODULE_SHIPPING_ZONES_SORT_ORDER'); for ($i=1; $i<=$this->num_zones; $i++) { $keys[] = 'MODULE_SHIPPING_ZONES_COUNTRIES_' . $i; $keys[] = 'MODULE_SHIPPING_ZONES_COST_' . $i; $keys[] = 'MODULE_SHIPPING_ZONES_HANDLING_' . $i; } return $keys; } } ?> Quote
swdgems Posted July 16, 2010 Author Posted July 16, 2010 www.clubosc.com/interactive-modules-in-oscommerce.html Problem solved!!! Thank you so much!! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.