Hello
My client wants me to set up their store with three different tables of shipping fees based around the total value
UK
Up to £5.00 - £1.95
£5.01 to £15.00 - £2.95
£15.01 to £25.00 - £3.95
£25.01 and above - Free of Charge
EUROPE
Up to £15.00 - £5.50
£15.01 to £25.00 - £6.50
£25.01 and above - £7.50
REST OF WORLD
Up to £15.00 - £7.50
£15.01 to £25.00 - £8.50
£25.01 and above - £9.50
Using the table rate shipping module I can set up 1 of these but not all three? Using the zones module I can set up three, but this is weight based not value based?
Any help gratefully received.
Latest News: (loading..)
3x zones Table Rate shipping Module
Started by Alan Culpitt, Feb 16 2010, 15:42
10 replies to this topic
#1
Posted 16 February 2010, 15:42
#2
Posted 16 February 2010, 15:46
Duplicate the table.php file 2 more times. Change the name so you know which is which and then set up your shipping rates. Be sure to also create your zones and assign each table to that zone only.
Chris
Chris
:|: Was this post helpful ? Click the LIKE THIS button :|:
:|: Click Here to learn how I can help you with custom coding, add ons, security and templates :|:
:|: Need an Area Calculator, Pre-Paid Account, Virtual Pin, Auction or Layaway Add on ? Click Here :|:
:|: Click Here to learn how I can help you with custom coding, add ons, security and templates :|:
:|: Need an Area Calculator, Pre-Paid Account, Virtual Pin, Auction or Layaway Add on ? Click Here :|:
#3
Posted 16 February 2010, 17:09
DunWeb, on 16 February 2010, 15:46, said:
Duplicate the table.php file 2 more times. Change the name so you know which is which and then set up your shipping rates. Be sure to also create your zones and assign each table to that zone only.
Chris
Chris
I've created three new files, tableUK.php tableEur.php and tableRest.php as copies of table.php in catalogue/modules/shipping & catalog/includes/languages/engllish/modules/shipping. I'm now getting an error message
Fatal error: Cannot redeclare class table in /home/sites/lakelandchildrensbooks.co.uk/public_html/includes/modules/shipping/tableEur.php on line 13
can you explain a bit more?
thanks
#4
Posted 27 February 2010, 17:51
Alan Culpitt, on 16 February 2010, 17:09, said:
Thanks for the pointer on this. I know php but I'm not an oscommerce expert so you will have to bear with me here a bit.
I've created three new files, tableUK.php tableEur.php and tableRest.php as copies of table.php in catalogue/modules/shipping & catalog/includes/languages/engllish/modules/shipping. I'm now getting an error message
Fatal error: Cannot redeclare class table in /home/sites/lakelandchildrensbooks.co.uk/public_html/includes/modules/shipping/tableEur.php on line 13
can you explain a bit more?
thanks
I've created three new files, tableUK.php tableEur.php and tableRest.php as copies of table.php in catalogue/modules/shipping & catalog/includes/languages/engllish/modules/shipping. I'm now getting an error message
Fatal error: Cannot redeclare class table in /home/sites/lakelandchildrensbooks.co.uk/public_html/includes/modules/shipping/tableEur.php on line 13
can you explain a bit more?
thanks
You have to rename table through the whole file to the new name. Here is an example of a file called table2.php
<?php
/*
$Id: table.php 1739 2007-12-20 00:52:16Z hpdl $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2003 osCommerce
Released under the GNU General Public License
*/
class table2 {
var $code, $title, $description, $icon, $enabled;
// class constructor
function table2() {
global $order;
$this->code = 'table2';
$this->title = MODULE_SHIPPING_TABLE2_TEXT_TITLE;
$this->description = MODULE_SHIPPING_TABLE2_TEXT_DESCRIPTION;
$this->sort_order = MODULE_SHIPPING_TABLE2_SORT_ORDER;
$this->icon = '';
$this->tax_class = MODULE_SHIPPING_TABLE2_TAX_CLASS;
$this->enabled = ((MODULE_SHIPPING_TABLE2_STATUS == 'True') ? true : false);
if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TABLE2_ZONE > 0) ) {
$check_flag = false;
$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_TABLE2_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
while ($check = tep_db_fetch_array($check_query)) {
if ($check['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check['zone_id'] == $order->delivery['zone_id']) {
$check_flag = true;
break;
}
}
if ($check_flag == false) {
$this->enabled = false;
}
}
}
// class methods
function quote($method = '') {
global $order, $cart, $shipping_weight, $shipping_num_boxes;
if (MODULE_SHIPPING_TABLE2_MODE == 'price') {
$order_total = $cart->show_total();
} else {
$order_total = $shipping_weight;
}
$table_cost = split("[:,]" , MODULE_SHIPPING_TABLE2_COST);
$size = sizeof($table_cost);
for ($i=0, $n=$size; $i<$n; $i+=2) {
if ($order_total <= $table_cost[$i]) {
$pos = strpos($table_cost[$i+1], '%');
if ($pos === false) {
$shipping = $table_cost[$i+1];
}
else {
$shipping_cost_temp = split("%", $table_cost[$i+1]);
$shipping = $order_total * $shipping_cost_temp[0] / 100;
}
break;
}
}
if (MODULE_SHIPPING_TABLE2_MODE == 'weight') {
$shipping = $shipping * $shipping_num_boxes;
}
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_TABLE2_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => MODULE_SHIPPING_TABLE2_TEXT_WAY,
'cost' => $shipping + MODULE_SHIPPING_TABLE2_HANDLING)));
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);
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_TABLE2_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 Table Method', 'MODULE_SHIPPING_TABLE2_STATUS', 'True', 'Do you want to offer table 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, date_added) values ('Shipping Table', 'MODULE_SHIPPING_TABLE2_COST', '25:8.50,50:5.50,10000:0.00', 'The shipping cost is based on the total cost or weight of items. Example: 25:8.50,50:5.50,etc.. Up to 25 charge 8.50, from there to 50 charge 5.50, etc', '6', '0', now())");
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 ('Table Method', 'MODULE_SHIPPING_TABLE2_MODE', 'weight', 'The shipping cost is based on the order total or the total weight of the items ordered.', '6', '0', 'tep_cfg_select_option(array(\'weight\', \'price\'), ', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Handling Fee', 'MODULE_SHIPPING_TABLE2_HANDLING', '0', 'Handling fee for this shipping method.', '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 ('Tax Class', 'MODULE_SHIPPING_TABLE2_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, use_function, set_function, date_added) values ('Shipping Zone', 'MODULE_SHIPPING_TABLE2_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_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_TABLE2_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
}
function remove() {
tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
function keys() {
return array('MODULE_SHIPPING_TABLE2_STATUS', 'MODULE_SHIPPING_TABLE2_COST', 'MODULE_SHIPPING_TABLE2_MODE', 'MODULE_SHIPPING_TABLE2_HANDLING', 'MODULE_SHIPPING_TABLE2_TAX_CLASS', 'MODULE_SHIPPING_TABLE2_ZONE', 'MODULE_SHIPPING_TABLE2_SORT_ORDER');
}
}
?>
An example of the file table2.php in catalog/includes/languages/yourlanguage/modules/shipping/
<?php
/*
$Id: table.php 1739 2007-12-20 00:52:16Z hpdl $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2002 osCommerce
Released under the GNU General Public License
*/
define('MODULE_SHIPPING_TABLE2_TEXT_TITLE', 'Table Rate 2');
define('MODULE_SHIPPING_TABLE2_TEXT_DESCRIPTION', 'Table Rate 2');
define('MODULE_SHIPPING_TABLE2_TEXT_WAY', 'Best Way');
define('MODULE_SHIPPING_TABLE2_TEXT_WEIGHT', 'Weight');
define('MODULE_SHIPPING_TABLE2_TEXT_AMOUNT', 'Amount');
?>
#5
Posted 27 December 2011, 19:15
hiya
I'm a php virgin and probably always will be, could some kind soul
show me how to apply these tables ?
I dont get how to set up the table file in shipping module ?
and how to get OSC to use these tables ?
Rich
I'm a php virgin and probably always will be, could some kind soul
show me how to apply these tables ?
I dont get how to set up the table file in shipping module ?
and how to get OSC to use these tables ?
Rich
#6
Posted 27 December 2011, 19:21
:|: Was this post helpful ? Click the LIKE THIS button :|:
:|: Click Here to learn how I can help you with custom coding, add ons, security and templates :|:
:|: Need an Area Calculator, Pre-Paid Account, Virtual Pin, Auction or Layaway Add on ? Click Here :|:
:|: Click Here to learn how I can help you with custom coding, add ons, security and templates :|:
:|: Need an Area Calculator, Pre-Paid Account, Virtual Pin, Auction or Layaway Add on ? Click Here :|:
#7
Posted 27 December 2011, 19:39
hiya
thanks Chris
I have a problem using add ins, I can never get them to work or they just screw up my shop
thats why i've been trying to do it this way.
thanks Chris
I have a problem using add ins, I can never get them to work or they just screw up my shop
thats why i've been trying to do it this way.
#8
Posted 27 December 2011, 20:55
Rich,
It is a pretty basic add on that has been previously installed on countless websites in the past. The only issue that I can think of is the lack of direction when it comes to setting up the shipping zones. Each new zone name must begin with shp. so the zone name appears as shp.yourzone. Other than that, there are no known issues.
Chris
It is a pretty basic add on that has been previously installed on countless websites in the past. The only issue that I can think of is the lack of direction when it comes to setting up the shipping zones. Each new zone name must begin with shp. so the zone name appears as shp.yourzone. Other than that, there are no known issues.
Chris
:|: Was this post helpful ? Click the LIKE THIS button :|:
:|: Click Here to learn how I can help you with custom coding, add ons, security and templates :|:
:|: Need an Area Calculator, Pre-Paid Account, Virtual Pin, Auction or Layaway Add on ? Click Here :|:
:|: Click Here to learn how I can help you with custom coding, add ons, security and templates :|:
:|: Need an Area Calculator, Pre-Paid Account, Virtual Pin, Auction or Layaway Add on ? Click Here :|:
#9
Posted 28 December 2011, 00:07
thanks for taking the time to reply Chris.
Maybe i'll give it a go..
I'm not after much, just a 3 zone posting system.
Maybe i'll give it a go..
I'm not after much, just a 3 zone posting system.
#10
Posted 31 December 2011, 08:11
Cannot redeclare class flat in /home/hotspo11/public_html/hotspotsexshop.net/catalog/includes/languages/english/modules/shipping/flat1.php on line 13
This is the error I am receiving can anyone help?
This is the error I am receiving can anyone help?
#11
Posted 31 December 2011, 09:26
renate2, on 27 February 2010, 17:51, said:
You have to rename table through the whole file to the new name. Here is an example of a file called table2.php
An example of the file table2.php in catalog/includes/languages/yourlanguage/modules/shipping/
<?php
/*
$Id: table.php 1739 2007-12-20 00:52:16Z hpdl $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2003 osCommerce
Released under the GNU General Public License
*/
class table2 {
var $code, $title, $description, $icon, $enabled;
// class constructor
function table2() {
global $order;
$this->code = 'table2';
$this->title = MODULE_SHIPPING_TABLE2_TEXT_TITLE;
$this->description = MODULE_SHIPPING_TABLE2_TEXT_DESCRIPTION;
$this->sort_order = MODULE_SHIPPING_TABLE2_SORT_ORDER;
$this->icon = '';
$this->tax_class = MODULE_SHIPPING_TABLE2_TAX_CLASS;
$this->enabled = ((MODULE_SHIPPING_TABLE2_STATUS == 'True') ? true : false);
if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TABLE2_ZONE > 0) ) {
$check_flag = false;
$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_TABLE2_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
while ($check = tep_db_fetch_array($check_query)) {
if ($check['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check['zone_id'] == $order->delivery['zone_id']) {
$check_flag = true;
break;
}
}
if ($check_flag == false) {
$this->enabled = false;
}
}
}
// class methods
function quote($method = '') {
global $order, $cart, $shipping_weight, $shipping_num_boxes;
if (MODULE_SHIPPING_TABLE2_MODE == 'price') {
$order_total = $cart->show_total();
} else {
$order_total = $shipping_weight;
}
$table_cost = split("[:,]" , MODULE_SHIPPING_TABLE2_COST);
$size = sizeof($table_cost);
for ($i=0, $n=$size; $i<$n; $i+=2) {
if ($order_total <= $table_cost[$i]) {
$pos = strpos($table_cost[$i+1], '%');
if ($pos === false) {
$shipping = $table_cost[$i+1];
}
else {
$shipping_cost_temp = split("%", $table_cost[$i+1]);
$shipping = $order_total * $shipping_cost_temp[0] / 100;
}
break;
}
}
if (MODULE_SHIPPING_TABLE2_MODE == 'weight') {
$shipping = $shipping * $shipping_num_boxes;
}
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_TABLE2_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => MODULE_SHIPPING_TABLE2_TEXT_WAY,
'cost' => $shipping + MODULE_SHIPPING_TABLE2_HANDLING)));
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);
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_TABLE2_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 Table Method', 'MODULE_SHIPPING_TABLE2_STATUS', 'True', 'Do you want to offer table 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, date_added) values ('Shipping Table', 'MODULE_SHIPPING_TABLE2_COST', '25:8.50,50:5.50,10000:0.00', 'The shipping cost is based on the total cost or weight of items. Example: 25:8.50,50:5.50,etc.. Up to 25 charge 8.50, from there to 50 charge 5.50, etc', '6', '0', now())");
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 ('Table Method', 'MODULE_SHIPPING_TABLE2_MODE', 'weight', 'The shipping cost is based on the order total or the total weight of the items ordered.', '6', '0', 'tep_cfg_select_option(array(\'weight\', \'price\'), ', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Handling Fee', 'MODULE_SHIPPING_TABLE2_HANDLING', '0', 'Handling fee for this shipping method.', '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 ('Tax Class', 'MODULE_SHIPPING_TABLE2_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, use_function, set_function, date_added) values ('Shipping Zone', 'MODULE_SHIPPING_TABLE2_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_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_TABLE2_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
}
function remove() {
tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
function keys() {
return array('MODULE_SHIPPING_TABLE2_STATUS', 'MODULE_SHIPPING_TABLE2_COST', 'MODULE_SHIPPING_TABLE2_MODE', 'MODULE_SHIPPING_TABLE2_HANDLING', 'MODULE_SHIPPING_TABLE2_TAX_CLASS', 'MODULE_SHIPPING_TABLE2_ZONE', 'MODULE_SHIPPING_TABLE2_SORT_ORDER');
}
}
?>
An example of the file table2.php in catalog/includes/languages/yourlanguage/modules/shipping/
<?php
/*
$Id: table.php 1739 2007-12-20 00:52:16Z hpdl $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2002 osCommerce
Released under the GNU General Public License
*/
define('MODULE_SHIPPING_TABLE2_TEXT_TITLE', 'Table Rate 2');
define('MODULE_SHIPPING_TABLE2_TEXT_DESCRIPTION', 'Table Rate 2');
define('MODULE_SHIPPING_TABLE2_TEXT_WAY', 'Best Way');
define('MODULE_SHIPPING_TABLE2_TEXT_WEIGHT', 'Weight');
define('MODULE_SHIPPING_TABLE2_TEXT_AMOUNT', 'Amount');
?>Just look up the thread a bit and follow the instruction.
Cheers
G
Need help installing add ons/contributions, cleaning a hacked site or a bespoke development, check my profile
Virus Threat Scanner
My Contributions
Basic install answers.
Click here for Contributions / Add Ons.
UK your site.
Site Move.
Basic design info.
For links mentioned in old answers that are no longer here follow this link Useful Threads.
If this post was useful, click the Like This button over there ======>>>>>.
Virus Threat Scanner
My Contributions
Basic install answers.
Click here for Contributions / Add Ons.
UK your site.
Site Move.
Basic design info.
For links mentioned in old answers that are no longer here follow this link Useful Threads.
If this post was useful, click the Like This button over there ======>>>>>.














