Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Shipping


mtechama

Recommended Posts

  • Replies 60
  • Created
  • Last Reply
<?php
/*
 $Id: table2.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $

 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', 'Rush Order Table Rate');
define('MODULE_SHIPPING_TABLE2_TEXT_DESCRIPTION', 'Rush Order Table Rate');
define('MODULE_SHIPPING_TABLE2_TEXT_WAY', 'This adds a 15% surcharge to your order total and ensures made-to-order items leave our shop within 2 weeks');
define('MODULE_SHIPPING_TABLE2_TEXT_WEIGHT', 'Weight');
define('MODULE_SHIPPING_TABLE2_TEXT_AMOUNT', 'Amount');
?>

<?php
/*
 $Id: table2.php,v 1.27 2003/02/05 22:41:52 hpdl Exp $

 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 (is_object($order)) {

// disable the module if the order only contains virtual products
			if ($this->enabled == true) {
				global $cart;
				if ($cart->show_total() == 0.00) {
					$this->enabled = 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]) {
				if ((MODULE_SHIPPING_TABLE_MODE == 'price') && (strpos($table_cost[$i+1],'%')) && (strpos($table_cost[$i+1],'+'))) {
					$shipping = before('+',$table_cost[$i+1]) + $order_total * (after('+',$table_cost[$i+1])/100);
				} elseif ((MODULE_SHIPPING_TABLE_MODE == 'price') && (strpos($table_cost[$i+1],'%'))) {
					$shipping = $order_total * ($table_cost[$i+1]/100);
				} else {
					$shipping = $table_cost[$i+1];
				}

	  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');
}
 }
?>

 

 

for those who installed my module, please check if your general.php has the following functions, so you can also use the base price + percentage calculation ... I had them in mine from a different mod so didn't mention it, but you may not!

 

//trimming functions, custom made
  function after ($this, $inthat)
  {
   if (!is_bool(strpos($inthat, $this)))
   return substr($inthat, strpos($inthat,$this)+strlen($this));
  };

  function before ($this, $inthat)
  {
   return substr($inthat, 0, strpos($inthat, $this));
  };

:-)

Monika

 

addicted to writing code ... can't get enough of databases either, LOL!

 

my toolbox: Textpad - Compare and Merge - phpMyAdmin - WS_FTP - Photoshop - How to search the forum

 

Interactive Media Award July 2007 ~ category E-Commerce

my advice on the forum is for free, PMs where you send me work are considered consultation which I charge for ...

Link to comment
Share on other sites

  • 1 month later...

I have another website that I want to charge just 20% of the total order it can range from $10 to $1000 how can I do that I have use this coding for my gift shop and I am trying to get it to work right on my computer site

 

 

 

this is what I have in my module 10000:20%

Wade Morris

Amarillo, Texas

 

Before you do any changes on your site you need to do BACKUP! BACKUP!

Link to comment
Share on other sites

  • 1 year later...

I am trying this code and getting the following error:

 

Fatal error: Cannot redeclare class table2 in /home/smoke/public_html/includes/modules/shipping/table2.php on line 13

 

 

I know this may be something simple, but I followed the instructions here exactly.

 

Can someone please help me out?

Link to comment
Share on other sites

  • 5 months later...
  • 2 years later...

We need to charge a flat 14% for shipping (based on price), with a $7.50 minimum. Does anyone know if this possible with Monika's code?

I installed the files easily. Thanks, Monika. I must have something configured incorrectly in the Admin though. I'm trying to set it up for 14% shipping but it seems to be calculating 5%. Here's what I have in the "Shipping Table" field:

 

25:8+14%,50:10+14%,75:12+14%,100:14+14%,150:18+14%,1000:22+14%,1000000:14%

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...