Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Creating a 2nd Per Item module?


hachaonline.com

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.

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

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

All of My Addons

Get the latest versions of my addons

Recommended SEO Addons

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

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

Link to comment
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');
?>

Link to comment
Share on other sites

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