Jump to content


Corporate Sponsors


Latest News: (loading..)

- - - - -

3x zones Table Rate shipping Module


  • You cannot reply to this topic
10 replies to this topic

#1 Alan Culpitt

  • Community Member
  • 7 posts

Posted 16 February 2010, 15:42

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.

#2 DunWeb

  • Community Sponsor
  • 10,461 posts
  • Real Name:Chris Dunn
  • Gender:Male
  • Location:Tecumseh, Ontario, Canada N8N 1X8

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
:|: 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 :|:

#3 Alan Culpitt

  • Community Member
  • 7 posts

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
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

#4 renate2

  • Community Member
  • 1 posts
  • Real Name:Renate de Vink

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

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 snuggtopz

  • Community Member
  • 34 posts
  • Real Name:Rich
  • Gender:Male
  • Location:Uk

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

#6 DunWeb

  • Community Sponsor
  • 10,461 posts
  • Real Name:Chris Dunn
  • Gender:Male
  • Location:Tecumseh, Ontario, Canada N8N 1X8

Posted 27 December 2011, 19:21

Rich,


Use the Multigeozone Multitable contribution,full instructions are included.



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 :|:

#7 snuggtopz

  • Community Member
  • 34 posts
  • Real Name:Rich
  • Gender:Male
  • Location:Uk

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.

#8 DunWeb

  • Community Sponsor
  • 10,461 posts
  • Real Name:Chris Dunn
  • Gender:Male
  • Location:Tecumseh, Ontario, Canada N8N 1X8

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
:|: 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 :|:

#9 snuggtopz

  • Community Member
  • 34 posts
  • Real Name:Rich
  • Gender:Male
  • Location:Uk

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.

#10 BrandonFancote

  • Community Member
  • 19 posts
  • Real Name:Brandon Fancote

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?

#11 geoffreywalton

  • Community Sponsor
  • 7,731 posts
  • Real Name:Geoffrey Walton
  • Gender:Male
  • Location:Norfolk, UK (close to the centre of the universe)

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
<?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 ======>>>>>.