Jump to content
Sign in to follow this  
hachaonline.com

Creating a 2nd Per Item module?

Recommended Posts

I would like to create another "Per Item" shipping module since I want to have both "Shipping with insurance" and just shipping.

 

I have tried copying/renaming the item.php module but it doesn't work.

 

I have also tried the Table Rate module however it doesn't multiply the shipping per item.

 

Anyone know how to do this?

I'm sure there's a simple solution.

Share this post


Link to post
Share on other sites

When duplicating a shipping module, you need to copy/rename the module files in the includes/modules/shipping and english/modules/shipping directories. Then you need to edit those files and rename the name of the module within the files, paying attention to case. Let's say you copied the table module and renamed it to tablenew. At the beginning of the first file is class table. That needs to be changed to class tablenew. Farther down you will see MODULE_SHIPPING_TABLE_TEXT_TITLE. That needs to be changed to MODULE_SHIPPING_TABLENEW_TEXT_TITLE. Change all such instances, being careful not to change actual database table names. Then do the same in the other file. Install the new module in admin and it should be working.

 

Jack

Share this post


Link to post
Share on other sites
When duplicating a shipping module, you need to copy/rename the module files in the includes/modules/shipping and english/modules/shipping directories. Then you need to edit those files and rename the name of the module within the files, paying attention to case. Let's say you copied the table module and renamed it to tablenew. At the beginning of the first file is class table. That needs to be changed to class tablenew. Farther down you will see MODULE_SHIPPING_TABLE_TEXT_TITLE. That needs to be changed to MODULE_SHIPPING_TABLENEW_TEXT_TITLE. Change all such instances, being careful not to change actual database table names. Then do the same in the other file. Install the new module in admin and it should be working.

 

Jack

 

I tried these exact steps, with the table module, but it doesnt seem to load the text. When I list the available modules in admin, the one for my new module is a blank row, and the install button wont work. I have checked that the language file is the same name as the module file.

 

Any suggestions?

 

Thanks

Share this post


Link to post
Share on other sites
I tried these exact steps, with the table module, but it doesnt seem to load the text. When I list the available modules in admin, the one for my new module is a blank row, and the install button wont work. I have checked that the language file is the same name as the module file.

 

Any suggestions?

 

Thanks

 

 

Thanks for the information, Jack! Much appreciated!

 

I too am having some difficulties with the files... Do we simply look for every instance of "table" and change every one that is not a db table name?

 

I've tried a couple of different variations... Nothing seems to work. I keep getting errors in the admin...

Do you, by chance, have a changed file that we can look at for reference?

 

Thanks, in advance!

 

--Jeff

Share this post


Link to post
Share on other sites
Thanks for the information, Jack! Much appreciated!

 

I too am having some difficulties with the files... Do we simply look for every instance of "table" and change every one that is not a db table name?

 

I've tried a couple of different variations... Nothing seems to work. I keep getting errors in the admin...

Do you, by chance, have a changed file that we can look at for reference?

 

Thanks, in advance!

 

--Jeff

 

 

Okay - I have it. I'll post the file that works for reference.

Look for instances of table2 and TABLE2 - where appropriate. Case is important - as Jack has stated - so pay close attention.

 

Best wishes!

 

--Jeff

 

<?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 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 ( ($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]) {
         $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');
   }
 }
?>

 

 

and then in the languages/english/modules/shipping:

 

<?php
/*
 $Id: table.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $

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

 Copyright © 2002 osCommerce

 Released under the GNU General Public License
*/

define('MODULE_SHIPPING_TABLE2_TEXT_TITLE', 'Next Day');
define('MODULE_SHIPPING_TABLE2_TEXT_DESCRIPTION', 'Next Day');
define('MODULE_SHIPPING_TABLE2_TEXT_WAY', 'Best Way');
define('MODULE_SHIPPING_TABLE2_TEXT_WEIGHT', 'Weight');
define('MODULE_SHIPPING_TABLE2_TEXT_AMOUNT', 'Amount');
?>

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  

×