Latest News: (loading..)
Sign in to follow this  
Followers 0
cma01

Modification of Additional Shipping Options

4 posts in this topic

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

Share this post


Link to post
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();

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

I had spaces at the top of my table.php file.

 

 

<?php

 

I removed the spaces...

 

 

<?php

 

 

And it works like a champ.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0