Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Shipping Pricing & Oversized Items Question


Rackandgo

Recommended Posts

Posted

my shipping table wont come up with the correct shippinh prices to reflect customer order price.

it just selected the first price for everything

my code now looks like this

 

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

 osCommerce, Open Source E-Commerce Solutions
 [url="http://www.oscommerce.com"]http://www.oscommerce.com[/url]

 Copyright © 2003 osCommerce

 Released under the GNU General Public License
*/

class table {
var $code, $title, $description, $icon, $enabled;

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

     $this->code = 'table';
     $this->title = MODULE_SHIPPING_TABLE_TEXT_TITLE;
     $this->description = MODULE_SHIPPING_TABLE_TEXT_DESCRIPTION;
     $this->sort_order = MODULE_SHIPPING_TABLE_SORT_ORDER;
//      $this->icon = DIR_WS_ICONS . 'shipping_ups.gif';
     //$this->icon = '';
     $this->tax_class = MODULE_SHIPPING_TABLE_TAX_CLASS;
     $this->enabled = ((MODULE_SHIPPING_TABLE_STATUS == 'True') ? true : false);

     if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TABLE_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_TABLE_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_TABLE_MODE == 'price') {
	$order_total = $cart->show_total();
} else {
	$order_total = $shipping_weight;
}

$availableMethods = array();
for ($methodNum = 1; $methodNum <= MODULE_SHIPPING_TABLE_NUMBER_OF_METHODS; $methodNum++) {
	$table_cost_name = 'MODULE_SHIPPING_TABLE_COST_METHOD_' . $methodNum;
	$table_text_name = 'MODULE_SHIPPING_TABLE_TEXT_METHOD_' . $methodNum;

	$table_cost = split("[:,]", constant($table_cost_name));
	for ($i = 0; $i < sizeof($table_cost); $i += 2) {
		if (($table_cost[$i] == "infinity") || ($table_cost[$i] >= $order_total)) {
			$shipping = $table_cost[$i+1];
			break;
		}
	}
	if ($i == sizeof($table_cost)) continue;

	if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
		$shipping *= $shipping_num_boxes;
	}

	if ( ($method == '') || ($method == $methodNum) )
	{
		$availableMethods[] = array('id' => $methodNum,
		                            'title' => constant($table_text_name),
		                            'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING);
	}
}

if (sizeof($availableMethods)) {
	$this->quotes = array('id' => $this->code,
	                      'module' => $this->title,
	                      'methods' => $availableMethods);
} else {
	return false;
}

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_TABLE_STATUS'");
	$this->_check = tep_db_num_rows($check_query);
}
return $this->_check;
}

function install() {
global $language;
require(DIR_FS_CATALOG_LANGUAGES . "$language/modules/shipping/table.php");

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_TABLE_STATUS', 'True', 'Do you want to offer table rate shipping?', '1', '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, set_function, date_added) values ('Table Method', 'MODULE_SHIPPING_TABLE_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_TABLE_HANDLING', '0', 'Handling fee for this shipping method.', '1', '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_TABLE_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '1', '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_TABLE_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '1', '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_TABLE_SORT_ORDER', '0', 'Sort order of display.', '1', '0', now())");

if (0) {

for ($methodNum = 1; $methodNum <= MODULE_SHIPPING_TABLE_NUMBER_OF_METHODS; $methodNum++) {
	$method = 'METHOD_' . $methodNum;
	$table_cost_name = 'MODULE_SHIPPING_TABLE_COST_' . $method;
	$table_text_name = 'MODULE_SHIPPING_TABLE_TEXT_' . $method;
	$sql = "insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('" . constant($table_text_name) . " Shipping Table', '" . $table_cost_name . "', '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())";
	//echo $sql . '<br>';
	tep_db_query($sql);
}

} else {

$methodNum = 0;
do {
	$methodNum++;
	$table_cost_name = "MODULE_SHIPPING_TABLE_COST_METHOD_$methodNum";
	$table_text_name = "MODULE_SHIPPING_TABLE_TEXT_METHOD_$methodNum";
	if (!defined($table_text_name)) {
		$methodNum--;
		break;
	}
	$sql = "insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('" . constant($table_text_name) . " Shipping Table', '" . $table_cost_name . "', '25:8.50,50:5.50', 'The shipping cost is based on the total cost or weight of items. Example: 25:8.50,50:5.50. Up to 25 charge 8.50, from there to 50 charge 5.50, past 50 and this option is not allowed. Can also specify \"infinity\" to avoid a cap (25:8.50,50:5.50,infinity:4.75)', '6', '0', now())";
	tep_db_query($sql);
} while (1);
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Number of Methods', 'MODULE_SHIPPING_TABLE_NUMBER_OF_METHODS', '$methodNum', 'Number of registered shipping methods.', '1', '0', now())");

}
}

function remove() {
tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE_SHIPPING_TABLE%'");
}

function keys() {
$retval = array('MODULE_SHIPPING_TABLE_STATUS', 'MODULE_SHIPPING_TABLE_MODE', 'MODULE_SHIPPING_TABLE_HANDLING', 'MODULE_SHIPPING_TABLE_TAX_CLASS', 'MODULE_SHIPPING_TABLE_ZONE', 'MODULE_SHIPPING_TABLE_SORT_ORDER');

$result = tep_db_query("select configuration_key from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE_SHIPPING_TABLE_COST_METHOD%' order by configuration_key");
while ($row = tep_db_fetch_array($result)) {
	$retval[] = $row['configuration_key'];
}

return $retval;
}

}

?>

 

i want it to be

up to 100.00ProductTotal = $20.00Shippping

$200.00=$25.00

$250.00=$30.00

$300.00=$35.00

$400.00=$40.00

$450.00+=$50.00 Flat

 

also, how can i force a $90.00 Oversized Fee on certain items plus addl rates if other products are purchased?

Archived

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

×
×
  • Create New...