Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Recommended Posts

Posted

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;

}

}

?>

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...