Page 1 of 9 123 ... LastLast
Results 1 to 10 of 89
  1. #1
    Join Date
    Sep 2005
    Location
    Hong Kong
    Posts
    307
    Plugin Contributions
    0

    Idea or Suggestion Tips on cloning Table Rate shipping module

    Just a short how-to for the newbies (like me) :)

    Tested on 1.3.7

    Keywords: clone table rate shipping module, duplicate table rate shipping module, copy table rate shipping module

    1. Create a new file named table2.php (or pretty much whatever you like, as long as you're sure that you would know what it is when you look at it years later) under /include/modules/shipping

    2. Paste the following codes inside the file :
    Code:
    <?php
    /**
     * @package shippingMethod
     * @copyright Copyright 2003-2005 Zen Cart Development Team
     * @copyright Portions Copyright 2003 osCommerce
     * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
     * @version $Id: table.php 4184 2006-08-21 03:36:36Z ajeh $
     */
    /**
     * Enter description here...
     *
     */
    class table2 extends base {
      /**
       * Enter description here...
       *
       * @var unknown_type
       */
      var $code;
      /**
       * Enter description here...
       *
       * @var unknown_type
       */
      var $title;
      /**
       * Enter description here...
       *
       * @var unknown_type
       */
      var $description;
      /**
       * Enter description here...
       *
       * @var unknown_type
       */
      var $icon;
      /**
       * Enter description here...
       *
       * @var unknown_type
       */
      var $enabled;
      /**
       * Enter description here...
       *
       * @return table
       */
      function table2() {
        global $order, $db;
    
        $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->tax_basis = MODULE_SHIPPING_TABLE2_TAX_BASIS;
        // disable only when entire cart is free shipping
        if (zen_get_shipping_enabled($this->code)) {
          $this->enabled = ((MODULE_SHIPPING_TABLE2_STATUS == 'True') ? true : false);
        }
    
        if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TABLE2_ZONE > 0) ) {
          $check_flag = false;
          $check = $db->Execute("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->EOF) {
            if ($check->fields['zone_id'] < 1) {
              $check_flag = true;
              break;
            } elseif ($check->fields['zone_id'] == $order->delivery['zone_id']) {
              $check_flag = true;
              break;
            }
            $check->MoveNext();
          }
    
          if ($check_flag == false) {
            $this->enabled = false;
          }
        }
      }
      /**
       * Enter description here...
       *
       * @param unknown_type $method
       * @return unknown
       */
      function quote($method = '') {
        global $order, $shipping_weight, $shipping_num_boxes, $total_count;
    
        // shipping adjustment
        switch (MODULE_SHIPPING_TABLE2_MODE) {
          case ('price'):
            $order_total = $_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices() ;
            break;
          case ('weight'):
            $order_total = $shipping_weight;
            break;
          case ('item'):
            $order_total = $total_count - $_SESSION['cart']->free_shipping_items();
            break;
        }
    
        $table2_cost = split("[:,]" , MODULE_SHIPPING_TABLE2_COST);
        $size = sizeof($table2_cost);
        for ($i=0, $n=$size; $i<$n; $i+=2) {
          if (round($order_total,9) <= $table2_cost[$i]) {
            $shipping = $table2_cost[$i+1];
            break;
          }
        }
    
        if (MODULE_SHIPPING_TABLE2_MODE == 'weight') {
          $shipping = $shipping * $shipping_num_boxes;
          // show boxes if weight
          switch (SHIPPING_BOX_WEIGHT_DISPLAY) {
            case (0):
            $show_box_weight = '';
            break;
            case (1):
            $show_box_weight = ' (' . $shipping_num_boxes . ' ' . TEXT_SHIPPING_BOXES . ')';
            break;
            case (2):
            $show_box_weight = ' (' . number_format($shipping_weight * $shipping_num_boxes,2) . TEXT_SHIPPING_WEIGHT . ')';
            break;
            default:
            $show_box_weight = ' (' . $shipping_num_boxes . ' x ' . number_format($shipping_weight,2) . TEXT_SHIPPING_WEIGHT . ')';
            break;
          }
        }
    
        $this->quotes = array('id' => $this->code,
        'module' => MODULE_SHIPPING_TABLE2_TEXT_TITLE . $show_box_weight,
        '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'] = zen_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
        }
    
        if (zen_not_null($this->icon)) $this->quotes['icon'] = zen_image($this->icon, $this->title);
    
        return $this->quotes;
      }
      /**
       * Enter description here...
       *
       * @return unknown
       */
      function check() {
        global $db;
        if (!isset($this->_check)) {
          $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_TABLE2_STATUS'");
          $this->_check = $check_query->RecordCount();
        }
        return $this->_check;
      }
      /**
       * Enter description here...
       *
       */
      function install() {
        global $db;
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('Enable Table2 Method', 'MODULE_SHIPPING_TABLE2_STATUS', 'True', 'Do you want to offer table2 rate shipping?', '6', '0', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Shipping Table2', '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 or count of the 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', 'zen_cfg_textarea(', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Table2 Method', 'MODULE_SHIPPING_TABLE2_MODE', 'weight', 'The shipping cost is based on the order total or the total weight of the items ordered or the total number of items orderd.', '6', '0', 'zen_cfg_select_option(array(\'weight\', \'price\', \'item\'), ', now())");
        $db->Execute("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())");
        $db->Execute("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', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Tax Basis', 'MODULE_SHIPPING_TABLE2_TAX_BASIS', 'Shipping', 'On what basis is Shipping Tax calculated. Options are<br />Shipping - Based on customers Shipping Address<br />Billing Based on customers Billing address<br />Store - Based on Store address if Billing/Shipping Zone equals Store zone', '6', '0', 'zen_cfg_select_option(array(\'Shipping\', \'Billing\', \'Store\'), ', now())");
        $db->Execute("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', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())");
        $db->Execute("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())");
      }
      /**
       * Enter description here...
       *
       */
      function remove() {
        global $db;
        $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
      }
      /**
       * Enter description here...
       *
       * @return unknown
       */
      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_TAX_BASIS', 'MODULE_SHIPPING_TABLE2_ZONE', 'MODULE_SHIPPING_TABLE2_SORT_ORDER');
      }
    }
    ?>
    3. You can leave the file as is, or change all instances of "table2" and "TABLE2" to something preferably short and easy to understand. Mind the cases.

    4. Duplicate /include/language/YOUR_LANGUAGE/modules/shipping/table.php and named it table2.php (see step 1 above for naming).

    5. Change all instances of "TABLE" to "TABLE2" if you didn't make any changes in step 3. Change all instances of "TABLE" to whatever you used in step 3 if you did make changes. While you're at it, you might also wanna change the defined text in this file to something that your customers would actually understand.

    6. Go to your admin -> modules -> shipping to enable it.

    That should be it, enjoy !

    Shirley :)

  2. #2
    Join Date
    May 2006
    Posts
    18
    Plugin Contributions
    0

    Default Re: Tips on cloning Table Rate shipping module

    Hi Shirley, It is very useful! Just what I was looking for! I have followed your instructions named my module redpack and get the following message in my admin>modules>shipping

    Warning: main(/home/includes/languages/spanish/modules/shipping/redpack.php) [function.main]: failed to open stream: No such file or directory in /home/admin/modules.php on line 174

    Warning: main(/home/includes/languages/spanish/modules/shipping/redpack.php) [function.main]: failed to open stream: No such file or directory in /home/admin/modules.php on line 174

    Warning: main() [function.include]: Failed opening '/home/includes/languages/spanish/modules/shipping/redpack.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/admin/modules.php on line 174

    Any ideas? Thanks so much! :)
    Last edited by ecobebe; 10 Jul 2007 at 08:04 PM.

  3. #3
    Join Date
    May 2006
    Posts
    18
    Plugin Contributions
    0

    Default Re: Tips on cloning Table Rate shipping module

    I am also getting this error on the cart:
    Warning: shipping(includes/languages/spanish/modules/shipping/redpack.php) [function.shipping]: failed to open stream: No such file or directory in /home/includes/classes/shipping.php on line 44

    Warning: shipping() [function.include]: Failed opening 'includes/languages/spanish/modules/shipping/redpack.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/includes/classes/shipping.php on line 44

    Any ideas? Thanks so much! :)

  4. #4
    Join Date
    Sep 2005
    Location
    Hong Kong
    Posts
    307
    Plugin Contributions
    0

    Default Re: Tips on cloning Table Rate shipping module

    Hi Ana,

    I'm just guessing here, but have you changed all instances of TABLE to REDPACK in /include/language/spanish/modules/shipping/redpack.php ?

    Shirley

  5. #5
    Join Date
    May 2006
    Posts
    18
    Plugin Contributions
    0

    Default Re: Tips on cloning Table Rate shipping module

    Thanks a lot, Shirley, that did the trick!!! :)

  6. #6
    Join Date
    Sep 2005
    Location
    Hong Kong
    Posts
    307
    Plugin Contributions
    0

    Default Re: Tips on cloning Table Rate shipping module

    Glad it worked :)

  7. #7
    Join Date
    Jun 2005
    Location
    Austin, Texas, US
    Posts
    216
    Plugin Contributions
    0

    Default Re: Tips on cloning Table Rate shipping module

    I just want to make a note that I tried this at first using my custom template directories (thinking I could use the override for safety). Unfortunately that does not work for this module, so you do have to save these cloned files (the new shipping mods) in the main modules/shipping directories.

    Thank you Shirley for your helpful post.

  8. #8
    Join Date
    Nov 2006
    Posts
    4
    Plugin Contributions
    0

    Default Re: Tips on cloning Table Rate shipping module

    I installed this. Everything worked great, except for the stage of "While you're at it, you might also wanna change the defined text in this file to something that your customers would actually understand."

    Under the /languages/english/modules/shipping/table2.php
    define('MODULE_SHIPPING_TABLE_TEXT_TITLE', 'Table Rate Canada');
    define('MODULE_SHIPPING_TABLE_TEXT_DESCRIPTION', 'Table Rate Canada');
    define('MODULE_SHIPPING_TABLE_TEXT_WAY', 'Best Way Canada');
    define('MODULE_SHIPPING_TABLE_TEXT_WEIGHT', 'Weight Canada');
    define('MODULE_SHIPPING_TABLE_TEXT_AMOUNT', 'Amount Canada');

    For some reason the shipping estimator pop up displays:
    MODULE_SHIPPING_TABLE2_TEXT_TITLE (MODULE_SHIPPING_TABLE2_TEXT_WAY)

    Any thoughts?

  9. #9
    Join Date
    Oct 2008
    Location
    Hornell, NY
    Posts
    334
    Plugin Contributions
    1

    Default Re: Tips on cloning Table Rate shipping module

    Quote Originally Posted by chriskelm View Post
    I installed this. Everything worked great, except for the stage of "While you're at it, you might also wanna change the defined text in this file to something that your customers would actually understand."

    Under the /languages/english/modules/shipping/table2.php
    define('MODULE_SHIPPING_TABLE_TEXT_TITLE', 'Table Rate Canada');
    define('MODULE_SHIPPING_TABLE_TEXT_DESCRIPTION', 'Table Rate Canada');
    define('MODULE_SHIPPING_TABLE_TEXT_WAY', 'Best Way Canada');
    define('MODULE_SHIPPING_TABLE_TEXT_WEIGHT', 'Weight Canada');
    define('MODULE_SHIPPING_TABLE_TEXT_AMOUNT', 'Amount Canada');

    For some reason the shipping estimator pop up displays:
    MODULE_SHIPPING_TABLE2_TEXT_TITLE (MODULE_SHIPPING_TABLE2_TEXT_WAY)

    Any thoughts?
    yeah, having the same problem

  10. #10
    Join Date
    Oct 2008
    Location
    Hornell, NY
    Posts
    334
    Plugin Contributions
    1

    Default Re: Tips on cloning Table Rate shipping module

    also having a problem to enable this in admin >> Modules >> Shipping

    I get this:
    Code:
    1146 Table 'tms_zc1.TABLE2_CONFIGURATION' doesn't exist
    in:
    [select configuration_value from TABLE2_CONFIGURATION where configuration_key = 'MODULE_SHIPPING_TABLE2_STATUS']
    If you were entering information, press the BACK button in your browser and re-check the information you had entered to be sure you left no blank fields.

 

 
Page 1 of 9 123 ... LastLast

Similar Threads

  1. Cloning the Flat Rate Shipping Module
    By jo_h1971 in forum Built-in Shipping and Payment Modules
    Replies: 2
    Last Post: 16 Oct 2009, 12:11 PM
  2. cloning table rate crushed
    By deadheat1 in forum Built-in Shipping and Payment Modules
    Replies: 1
    Last Post: 16 Jul 2008, 02:01 AM
  3. Clone a shipping module or define a new shipping attribute under table rate module?
    By meeven in forum Built-in Shipping and Payment Modules
    Replies: 0
    Last Post: 4 Sep 2007, 04:56 PM
  4. Cloning Table Rate mode
    By sylsau in forum Addon Shipping Modules
    Replies: 5
    Last Post: 16 Dec 2006, 02:16 AM
  5. cloning the shipping module - table
    By drmad in forum Built-in Shipping and Payment Modules
    Replies: 5
    Last Post: 20 Oct 2006, 08:11 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg