Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Multiple flat shipping rates based on Order Total


Recommended Posts

Posted

I installed the Multiple flat shipping rates based on Order Total mod, which has 3 tiers set. I however needed 5, as the shipping is based on the following:

 

$0.01-19.99 = $4.99

$20.00-49.99 = $5.99

$50.00-74.99 = $6.99

$75.00-99.99 = $7.99

$100+ =$8.99

 

 

Being a newb I took a loook at the /includes/modules/shipping/tiered.php file and gathered the 3 places that would need editing:

 

Lines 52-64

Lines 89-97

Line 105

 

Using my theory I did so and my tiered.php file ended up looking like the code I have posted at the end of my topic.

 

At first it appeared to be working smoothly. Until I realised that anything ordered under the tier 2 minimum price was charged for tier 3's shipping cost.

 

I would REALLY REALLY REALLY appreciate someone's help on this, or possibly someone knows of another mod that does the same thing?

 

<?php
/*
$Id: tiered v 1.0 09/12/2004
Developed by Dave Ferrise ([email protected])
Based on: tiered.phps,v 2.2 2003/05/03 modified:WebyMaster-TWM dgw_ Exp $

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright (c) 2001,2002, 2003, 2004 osCommerce

Released under the GNU General Public License
*/
class tiered {
var $code, $title, $description, $icon, $enabled;

// class constructor
function tiered() {
global $order;

$this->code = 'tiered';
$this->title = MODULE_SHIPPING_TIERED_TEXT_TITLE;
$this->description = MODULE_SHIPPING_TIERED_TEXT_DESCRIPTION;
$this->sort_order = MODULE_SHIPPING_TIERED_SORT_ORDER;
$this->icon = '';
$this->tax_class = MODULE_SHIPPING_TIERED_TAX_CLASS;
$this->enabled = ((MODULE_SHIPPING_TIERED_STATUS == 'True') ? true : false);

if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TIERED_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_TIERED_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;

 if (MODULE_SHIPPING_TIERED_STATUS == 'True') {
	 $order_total = $cart->show_total();
 }
 if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_2) {
	 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_1;
 }
 if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_3) {
	 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_2;
 }
 if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_4) {
	 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_3;
 }
 else {
	 if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_5) {
   $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_4;
 }
 else {
	 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_5;
 }
}
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_TIERED_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => MODULE_SHIPPING_TIERED_TEXT_WAY,
'cost' => $shipping_tiered)));

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_TIERED_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 Tiered Shipping', 'MODULE_SHIPPING_TIERED_STATUS', 'True', 'Do you want to offer tiered 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 ('Tier 1 Shipping Rate', 'MODULE_SHIPPING_TIERED_RATE_1', '15.00', 'The shipping cost for all orders totalling less than tier 2 Order Level.', '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 ('Tier 2 Order Total Level', 'MODULE_SHIPPING_TIERED_LEVEL_2', '50.00', 'Order total qualifying for second tier shipping rate.', '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 ('Tier 2 Shipping Rate', 'MODULE_SHIPPING_TIERED_RATE_2', '7.50', 'The shipping cost for all orders totalling more than tier 2 value and less than tier 3 value.', '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 ('Tier 3 Order Total Level', 'MODULE_SHIPPING_TIERED_LEVEL_3', '100.00', 'Order total qualifying for third tier shipping rate.', '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 ('Tier 3 Shipping Rate', 'MODULE_SHIPPING_TIERED_RATE_3', '0.00', 'The shipping cost for all orders totalling more than tier 3 value.', '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 ('Tier 4 Order Total Level', 'MODULE_SHIPPING_TIERED_LEVEL_4', '120.00', 'Order total qualifying for fourth tier shipping rate.', '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 ('Tier 4 Shipping Rate', 'MODULE_SHIPPING_TIERED_RATE_4', '0.00', 'The shipping cost for all orders totalling more than tier 4 value.', '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 ('Tier 5 Order Total Level', 'MODULE_SHIPPING_TIERED_LEVEL_5', '150.00', 'Order total qualifying for fifth tier shipping rate.', '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 ('Tier 5 Shipping Rate', 'MODULE_SHIPPING_TIERED_RATE_5', '0.00', 'The shipping cost for all orders totalling more than tier 5 value.', '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_TIERED_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_TIERED_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_TIERED_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_TIERED_STATUS', 'MODULE_SHIPPING_TIERED_RATE_1', 'MODULE_SHIPPING_TIERED_LEVEL_2', 'MODULE_SHIPPING_TIERED_RATE_2', 'MODULE_SHIPPING_TIERED_LEVEL_3', 'MODULE_SHIPPING_TIERED_RATE_3', 'MODULE_SHIPPING_TIERED_LEVEL_4', 'MODULE_SHIPPING_TIERED_RATE_4', 'MODULE_SHIPPING_TIERED_LEVEL_5', 'MODULE_SHIPPING_TIERED_RATE_5', 'MODULE_SHIPPING_TIERED_TAX_CLASS', 'MODULE_SHIPPING_TIERED_ZONE', 'MODULE_SHIPPING_TIERED_SORT_ORDER');
}
}
?>

Posted

Never tested, but try to replace the folowing part of your code:

 

 if (MODULE_SHIPPING_TIERED_STATUS == 'True') {
 $order_total = $cart->show_total();
}
if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_2) {
 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_1;
}
if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_3) {
 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_2;
}
if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_4) {
 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_3;
}
else {
 if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_5) {
  $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_4;
}
else {
 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_5;
}
}

 

 

with this code:

 

 

 if (MODULE_SHIPPING_TIERED_STATUS == 'True') {
 $order_total = $cart->show_total();
}
if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_2) {
 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_1;
}
elseif ($order_total < MODULE_SHIPPING_TIERED_LEVEL_3) {
 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_2;
}
elseif ($order_total < MODULE_SHIPPING_TIERED_LEVEL_4) {
 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_3;
}
elseif ($order_total < MODULE_SHIPPING_TIERED_LEVEL_5) {
  $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_4;
}
else {
 $shipping_tiered = MODULE_SHIPPING_TIERED_RATE_5;
}

_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/

(\__/)

(O.o )

(> < )

  • 2 years later...
Posted

Hello All,

 

Realize this is an old thread but I found the final corrected solution to be just what I needed. It works very well! Could I suggest this be added as an update to the original contribution http://www.oscommerce.com/community/contri...ltiple+shipping

 

Might be helpful to a few more people.

 

On a related issue, I've been trying to figure out how to combine this with a multiple zones module of some sort to allow say 2 zones, (Canada, USA, for example) to apply different shipping costs to the same tiers.

 

Anybody have any ideas on this?

 

Best,

 

-Brunswick :)

  • 2 years later...
Posted

I am having such a hard time with this one.. I really need to add at least 2 more levels also.. can someone point out where I went wrong???

 

Kicks errors:

[code
$order_total = $cart->show_total();
}
if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_2) {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_1;
}
else ($order_total < MODULE_SHIPPING_TIERED_LEVEL_3) {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_2;
}
else ($order_total < MODULE_SHIPPING_TIERED_LEVEL_4) {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_3;
}
else ($order_total < MODULE_SHIPPING_TIERED_LEVEL_5) {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_4;
}
else {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_5;
}
[/code]

Also Kicks errors:
$order_total = $cart->show_total();
}
if ($order_total < MODULE_SHIPPING_TIERED_LEVEL_2) {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_1;
}
elseif ($order_total < MODULE_SHIPPING_TIERED_LEVEL_3) {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_2;
}
elseif ($order_total < MODULE_SHIPPING_TIERED_LEVEL_4) {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_3;
}
elseif ($order_total < MODULE_SHIPPING_TIERED_LEVEL_5) {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_4;
}
else {
$shipping_tiered = MODULE_SHIPPING_TIERED_RATE_5;
}

Debbie D
Franklin County, VA "Moonshine Capitol of the World"
osCmax Mobile Template oscmaxtemplates.com

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