Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Modification of Additional Shipping Options


cma01

Recommended Posts

I installed this contribution, but I want to add additional shipping options. So I tried to duplicate the added code for the three options I want to insert.

 

It sort of works. On the admin side, under modules =>shipping, if I click on the table function, standard and two-day will display the rates and then there is a big space where the other three options should be listed. If I edit the table info, there is a text box under for the last three options, but no title.

 

On the store site, if I have the table option set to calculate by weight it works; however, only the ground shipping and Hawaii & Alaska delivery are listed (the first and the last). If I set it to calculate by price, I get this error message.

 

Fatal error: Call to undefined function: show_shipping_total() in /usr/home/givingba/public_html/catalog/includes/modules/shipping/table.php on line 53

 

This the modified /catalog/includes/modules/shipping/table.php

<?php
/*
 $Id: table.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 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 = '';
     $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_shipping_total();
 } else {
	 $order_total = $shipping_weight;
 }      
      
    // jgp - when processing the shipping option, check the method and use the appropriate cost table
    if ($method) {
     
	 // jgp - shipping is free if the order total is 0 (optional)   
	 if ($order_total != 0)
   $table_cost = split("[:,]" , MODULE_SHIPPING_TABLE_COST);
	 else
   $table_cost=0;  
   
	 $table_cost_2day = split("[:,]" , MODULE_SHIPPING_TABLE_COST_2DAY);

	 if ($method == 'table2day'){

   $size = sizeof($table_cost_2day);
   for ($i=0, $n=$size; $i<$n; $i+=2) {
   if ($order_total <= $table_cost_2day[$i]) {
   $shipping = $table_cost_2day[$i+1];
   break;
   }
   }
	 
   if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
   $shipping = $shipping * $shipping_num_boxes;
   }
   
   $this->quotes = array('id' => $this->code,
    	 'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
    	 'methods' => array(array('id' => 'table2day',
         'title' => MODULE_SHIPPING_TABLE_TEXT_WAY_2DAY,
         'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING)));
	 }
          // cma added overnight shipping
       $table_cost_overnight = split("[:,]" , MODULE_SHIPPING_TABLE_COST_OVERNIGHT);
  	 
	 if ($method == 'tableovernight'){

   $size = sizeof($table_cost_overnight);
   for ($i=0, $n=$size; $i<$n; $i+=2) {
   if ($order_total <= $table_cost_overnight[$i]) {
   $shipping = $table_cost_overnight[$i+1];
   break;
   }
   }
	 
   if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
   $shipping = $shipping * $shipping_num_boxes;
   }
   
   $this->quotes = array('id' => $this->code,
    	 'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
    	 'methods' => array(array('id' => 'tableovernight',
         'title' => MODULE_SHIPPING_TABLE_TEXT_WAY_OVERNIGHT,
         'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING)));
	 }
           // end overnight shipping
	 // cma added saturday shipping
	 $table_cost_saturday = split("[:,]" , MODULE_SHIPPING_TABLE_COST_SATURDAY);

	 if ($method == 'tablesaturday'){

   $size = sizeof($table_cost_saturday);
   for ($i=0, $n=$size; $i<$n; $i+=2) {
   if ($order_total <= $table_cost_saturday[$i]) {
   $shipping = $table_cost_saturday[$i+1];
   break;
   }
   }
	 
   if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
   $shipping = $shipping * $shipping_num_boxes;
   }
   
   $this->quotes = array('id' => $this->code,
    	 'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
    	 'methods' => array(array('id' => 'tablesaturday',
         'title' => MODULE_SHIPPING_TABLE_TEXT_WAY_SATURDAY,
         'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING)));
	 }
           // end saturday shipping
	 // cma add alaska shipping
	 $table_cost_alaska = split("[:,]" , MODULE_SHIPPING_TABLE_COST_ALASKA);

	 if ($method == 'tablealaska'){

   $size = sizeof($table_cost_alaska);
   for ($i=0, $n=$size; $i<$n; $i+=2) {
   if ($order_total <= $table_cost_alaska[$i]) {
   $shipping = $table_cost_alaska[$i+1];
   break;
   }
   }
	 
   if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
   $shipping = $shipping * $shipping_num_boxes;
   }
   
   $this->quotes = array('id' => $this->code,
    	 'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
    	 'methods' => array(array('id' => 'tablealaska',
         'title' => MODULE_SHIPPING_TABLE_TEXT_WAY_ALASKA,
         'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING)));
	 }
          // end alaska shipping 
    else  
	 {

   $size = sizeof($table_cost);
   for ($i=0, $n=$size; $i<$n; $i+=2) {
   if ($order_total <= $table_cost[$i]) {
   $shipping = $table_cost[$i+1];
   break;
   }
   }
	 
   if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
   $shipping = $shipping * $shipping_num_boxes;
   }
                             
   $this->quotes = array('id' => $this->code,
    	 'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
    	 'methods' => array(array('id' => $this->code,
         'title' => MODULE_SHIPPING_TABLE_TEXT_WAY,
         'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING))); 	 
 }
 } else {

	 // jgp - added 2-day shipping cost
      
	 if ($order_total != 0)
   $table_cost = split("[:,]" , MODULE_SHIPPING_TABLE_COST);
	 else
   $table_cost=0;                             
     
	 // jgp - added 2-day shipping cost  
      
	 $table_cost_2day = split("[:,]" , MODULE_SHIPPING_TABLE_COST_2DAY);
  	 
	 $size = sizeof($table_cost);
	 for ($i=0, $n=$size; $i<$n; $i+=2) {
	 if ($order_total <= $table_cost[$i]) {
	 $shipping = $table_cost[$i+1];
	 break;
	 }
	 }
 
	 if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
	 $shipping = $shipping * $shipping_num_boxes;
	 }
	 // jgp - added overnight shipping cost  
      
	 $table_cost_overnight = split("[:,]" , MODULE_SHIPPING_TABLE_COST_OVERNIGHT);
  	 
	 $size = sizeof($table_cost);
	 for ($i=0, $n=$size; $i<$n; $i+=2) {
	 if ($order_total <= $table_cost[$i]) {
	 $shipping = $table_cost[$i+1];
	 break;
	 }
	 }
 
	 if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
	 $shipping = $shipping * $shipping_num_boxes;
	 }
     // jgp - added SATURDAY shipping cost  
      
	 $table_cost_saturday = split("[:,]" , MODULE_SHIPPING_TABLE_COST_SATURDAY);
  	 
	 $size = sizeof($table_cost);
	 for ($i=0, $n=$size; $i<$n; $i+=2) {
	 if ($order_total <= $table_cost[$i]) {
	 $shipping = $table_cost[$i+1];
	 break;
	 }
	 }
 
	 if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
	 $shipping = $shipping * $shipping_num_boxes;
	 }
	 // jgp - added alaska shipping cost  
      
	 $table_cost_alaska = split("[:,]" , MODULE_SHIPPING_TABLE_COST_ALASKA);
  	 
	 $size = sizeof($table_cost);
	 for ($i=0, $n=$size; $i<$n; $i+=2) {
	 if ($order_total <= $table_cost[$i]) {
	 $shipping = $table_cost[$i+1];
	 break;
	 }
	 }
 
	 if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
	 $shipping = $shipping * $shipping_num_boxes;
	 }
      
	 // jgp - duplicated the shipping cost application for 2-day shipping
      
	 $size = sizeof($table_cost_2day);
	 for ($i=0, $n=$size; $i<$n; $i+=2) {
	 if ($order_total <= $table_cost[$i]) {
	 $shipping_2day = $table_cost_2day[$i+1];
	 break;
	 }
	 }
 
	 if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
	 $shipping_2day = $shipping_2day * $shipping_num_boxes;
	 }      
   // jgp - duplicated the shipping cost application for overnight shipping
      
	 $size = sizeof($table_cost_overnight);
	 for ($i=0, $n=$size; $i<$n; $i+=2) {
	 if ($order_total <= $table_cost[$i]) {
	 $shipping_overnight = $table_cost_overnight[$i+1];
	 break;
	 }
	 }
 
	 if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
	 $shipping_overnight = $shipping_overnight * $shipping_num_boxes;
	 }     
	 // jgp - duplicated the shipping cost application for saturday shipping
      
	 $size = sizeof($table_cost_saturday);
	 for ($i=0, $n=$size; $i<$n; $i+=2) {
	 if ($order_total <= $table_cost[$i]) {
	 $shipping_saturday = $table_cost_saturday[$i+1];
	 break;
	 }
	 }
 
	 if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
	 $shipping_saturday = $shipping_saturday * $shipping_num_boxes;
	 }     
	 // jgp - duplicated the shipping cost application for alaska shipping
      
	 $size = sizeof($table_cost_alaska);
	 for ($i=0, $n=$size; $i<$n; $i+=2) {
	 if ($order_total <= $table_cost[$i]) {
	 $shipping_alaska = $table_cost_alaska[$i+1];
	 break;
	 }
	 }
 
	 if (MODULE_SHIPPING_TABLE_MODE == 'weight') {
	 $shipping_alaska = $shipping_alaska * $shipping_num_boxes;
	 }     
	 // jgp - added 2day shipping to methods array
      
	 $this->quotes = array('id' => $this->code,
     'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
     'methods' => array(array('id' => $this->code,
      	 'title' => MODULE_SHIPPING_TABLE_TEXT_WAY,
      	 'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING), array('id' => 'table2day',
      	 'title' => MODULE_SHIPPING_TABLE_TEXT_WAY_2DAY,
      	 'cost' => $shipping_2day + MODULE_SHIPPING_TABLE_HANDLING)));
	 // jgp - added overnight shipping to methods array
      
	 $this->quotes = array('id' => $this->code,
     'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
     'methods' => array(array('id' => $this->code,
      	 'title' => MODULE_SHIPPING_TABLE_TEXT_WAY,
      	 'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING), array('id' => 'tableovernight',
      	 'title' => MODULE_SHIPPING_TABLE_TEXT_WAY_OVERNIGHT,
      	 'cost' => $shipping_overnight + MODULE_SHIPPING_TABLE_HANDLING)));	
	 // jgp - added saturday shipping to methods array
      
	 $this->quotes = array('id' => $this->code,
     'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
     'methods' => array(array('id' => $this->code,
      	 'title' => MODULE_SHIPPING_TABLE_TEXT_WAY,
      	 'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING), array('id' => 'tablesaturday',
      	 'title' => MODULE_SHIPPING_TABLE_TEXT_WAY_SATURDAY,
      	 'cost' => $shipping_saturday + MODULE_SHIPPING_TABLE_HANDLING)));	
	 // jgp - added ALASKA shipping to methods array
      
	 $this->quotes = array('id' => $this->code,
     'module' => MODULE_SHIPPING_TABLE_TEXT_TITLE,
     'methods' => array(array('id' => $this->code,
      	 'title' => MODULE_SHIPPING_TABLE_TEXT_WAY,
      	 'cost' => $shipping + MODULE_SHIPPING_TABLE_HANDLING), array('id' => 'tablealaska',
      	 'title' => MODULE_SHIPPING_TABLE_TEXT_WAY_ALASKA,
      	 'cost' => $shipping_alaska + MODULE_SHIPPING_TABLE_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_TABLE_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_TABLE_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_TABLE_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())");
     // jgp - added additional (2day) shipping type
     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 2-Day', 'MODULE_SHIPPING_TABLE_COST_2DAY', '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())");
  // jgp - added additional (overnight) shipping type
     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 Overnight', 'MODULE_SHIPPING_TABLE_COST_OVERNIGHT', '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())");
  // jgp - added additional (saturday) shipping type
     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 Saturday', 'MODULE_SHIPPING_TABLE_COST_SATURDAY', '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())");
  // jgp - added additional (alaska) shipping type
     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 Alaska', 'MODULE_SHIPPING_TABLE_COST_Alaska', '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_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.', '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_TABLE_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_TABLE_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_TABLE_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() {
     // jgp - added 2day shipping key    
     return array('MODULE_SHIPPING_TABLE_STATUS', 'MODULE_SHIPPING_TABLE_COST', 'MODULE_SHIPPING_TABLE_COST_2DAY', 'MODULE_SHIPPING_TABLE_COST_OVERNIGHT', 'MODULE_SHIPPING_TABLE_COST_SATURDAY', 'MODULE_SHIPPING_TABLE_COST_ALASKA', 'MODULE_SHIPPING_TABLE_MODE', 'MODULE_SHIPPING_TABLE_HANDLING', 'MODULE_SHIPPING_TABLE_TAX_CLASS', 'MODULE_SHIPPING_TABLE_ZONE', 'MODULE_SHIPPING_TABLE_SORT_ORDER');
   }
 }
?>

 

This is the modified /catalog/includes/languages/english/modules/shipping/table.php

<?php
/*
 $Id: table.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_TABLE_TEXT_TITLE', 'Standard Shipping');
define('MODULE_SHIPPING_TABLE_TEXT_DESCRIPTION', 'Table Rate Shipping Options');
define('MODULE_SHIPPING_TABLE_TEXT_WAY', 'Ground Shipping');
// jgp - added 2-day shipping text
define('MODULE_SHIPPING_TABLE_TEXT_WAY_2DAY', '2-Day Shipping');
define('MODULE_SHIPPING_TABLE_TEXT_WEIGHT', 'Weight');
define('MODULE_SHIPPING_TABLE_TEXT_AMOUNT', 'Amount');
// jgp - added overnight shipping text
define('MODULE_SHIPPING_TABLE_TEXT_WAY_OVERNIGHT', 'Overnight Shipping');
define('MODULE_SHIPPING_TABLE_TEXT_WEIGHT', 'Weight');
define('MODULE_SHIPPING_TABLE_TEXT_AMOUNT', 'Amount');
// jgp - added SATURDAY shipping text
define('MODULE_SHIPPING_TABLE_TEXT_WAY_SATURDAY', 'Saturday Delivery');
define('MODULE_SHIPPING_TABLE_TEXT_WEIGHT', 'Weight');
define('MODULE_SHIPPING_TABLE_TEXT_AMOUNT', 'Amount');
// jgp - added alaska shipping text
define('MODULE_SHIPPING_TABLE_TEXT_WAY_ALASKA', 'Alaska & Hawaii Delivery');
define('MODULE_SHIPPING_TABLE_TEXT_WEIGHT', 'Weight');
define('MODULE_SHIPPING_TABLE_TEXT_AMOUNT', 'Amount');
?>

 

Carla

Link to comment
Share on other sites

[gee, was it really necessary to post the whole script?]

 

I am not familiar with the contribution, but a simple comparison to the original table.php discloses that the statement

$order_total = $cart->show_shipping_total();

should be

$order_total = $cart->show_total();

Link to comment
Share on other sites

I also installed this contribution and did the same thing, and am stuck in the same area. It works fine in the admin section, but in checkout there are only the first and the last shipping mods listed.

 

Do you have any updates? Does anyone have any input?

 

Thanks

Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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