Page 1 of 10 123 ... LastLast
Results 1 to 10 of 99
  1. #1
    Join Date
    Jan 2009
    Posts
    2,123
    Plugin Contributions
    0

    Default Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    I have a bit of a dilemma since Royal Mail have raised changed their prices to extortion levels.

    We had to increase our table rates across the whole site so that now the minimum UK shipping is £6.00, then we have £1.00 increases based on order value.

    My dilema is with the ribbons that we sell as these are quite small and they do fit in the new cube sized boxes that Royal Mail will still post for under £4.00. Ideally, we would like to have our site set up so that customers checking out with only products from category ID 409 will be using a different table rate from anyone with products from a different category.

    Is this even possible? If I were to duplicate the "Table" shipping module and call is say, Table409. How would I code the cart/checkout to differentiate between carts with only products from category 409 and all other carts?

  2. #2
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    69,402
    Plugin Contributions
    6

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    Let's say you want Table Rate table to only show when the whole order is from master_categories_id 15 ...

    Edit the shipping module:
    /includes/modules/shipping/table.php

    with the code in RED:
    Code:
        // disable only when entire cart is free shipping
        if (zen_get_shipping_enabled($this->code)) {
          $this->enabled = ((MODULE_SHIPPING_TABLE_STATUS == 'True') ? true : false);
        }
    
    // bof: only show if all Products are from master_categories_id 15
      if (!IS_ADMIN_FLAG) {
        // check the count of a specific field
        $chk_catAll = 0;
        $chk_cat15 = 0;
        $chk_catAll = $_SESSION['cart']->count_contents();
        // check how many Products are in the cart for master_categories_id 15
        $chk_cat15 = $_SESSION['cart']->in_cart_check('master_categories_id','15');
        // if any are found turn off the shipping module
        if ($chk_cat15 != $chk_catAll) {
          $this->enabled = false;
        }
      }
    // eof: only show if all Products are from master_categories_id 15
    
        if ($this->enabled) {
          // check MODULE_SHIPPING_TABLE_HANDLING_METHOD is in
    For master_categories_id 409, change the 15 to 409 in each occurrence ...
    Linda McGrath
    If you have to think ... you haven't been zenned ...

    Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!

    Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...
    Signup for our Announcements Forums to stay up to date on important changes and updates!

  3. #3
    Join Date
    Jan 2009
    Posts
    2,123
    Plugin Contributions
    0

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    I must be doing something wrong. Knowing me, it's probably something really stupid but I've cloned the table.php by following this thread:

    http://www.zen-cart.com/showthread.p...hipping-module

    I've called the file table409.php and created a corresponding language file. I've change all instances of "table" or "table2" to "table409" and all instances of "TABLE" or "TABLE2" to "TABLE409". Uploaded and voila, the shipping module appears as it should in admin.

    When I install it in admin and enter the shipping rates for the products in category 409, it seems to completely disable both table.php shipping modules. Tha is to say, the flat rate UK shipping option just completely disappears from the checkout confirmation page, no matter what is in the cart.

    Here is the code that I inserted in /includes/modules/shipping/table409.php, but I don' think the problem is caused by this:

    PHP Code:
    // bof: only show if all Products are from master_categories_id 409
      
    if (!IS_ADMIN_FLAG) {
        
    // check the count of a specific field
        
    $chk_catAll 0;
        
    $chk_cat409 0;
        
    $chk_catAll $_SESSION['cart']->count_contents();
        
    // check how many Products are in the cart for master_categories_id 409
        
    $chk_cat15 $_SESSION['cart']->in_cart_check('master_categories_id','409');
        
    // if any are found turn off the shipping module
        
    if ($chk_cat409 != $chk_catAll) {
          
    $this->enabled false;
        }
      }
    // eof: only show if all Products are from master_categories_id 409 
    Here is a screenshot of the admin settings for both table.php and table409.php:


  4. #4
    Join Date
    Jan 2009
    Posts
    2,123
    Plugin Contributions
    0

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    Quote Originally Posted by limelites View Post
    I must be doing something wrong. Knowing me, it's probably something really stupid but I've cloned the table.php by following this thread:

    http://www.zen-cart.com/showthread.p...hipping-module

    I've called the file table409.php and created a corresponding language file. I've change all instances of "table" or "table2" to "table409" and all instances of "TABLE" or "TABLE2" to "TABLE409". Uploaded and voila, the shipping module appears as it should in admin.

    When I install it in admin and enter the shipping rates for the products in category 409, it seems to completely disable both table.php shipping modules. Tha is to say, the flat rate UK shipping option just completely disappears from the checkout confirmation page, no matter what is in the cart.

    Here is the code that I inserted in /includes/modules/shipping/table409.php, but I don' think the problem is caused by this:

    PHP Code:
    // bof: only show if all Products are from master_categories_id 409
      
    if (!IS_ADMIN_FLAG) {
        
    // check the count of a specific field
        
    $chk_catAll 0;
        
    $chk_cat409 0;
        
    $chk_catAll $_SESSION['cart']->count_contents();
        
    // check how many Products are in the cart for master_categories_id 409
        
    $chk_cat15 $_SESSION['cart']->in_cart_check('master_categories_id','409');
        
    // if any are found turn off the shipping module
        
    if ($chk_cat409 != $chk_catAll) {
          
    $this->enabled false;
        }
      }
    // eof: only show if all Products are from master_categories_id 409 
    Here is a screenshot of the admin settings for both table.php and table409.php:


    I've just triple checked everything and reinstalled and it still has the same issue. However, when I comment out the new category exclusion code, it stops the interference.

    PHP Code:
    // bof: only show if all Products are from master_categories_id 409
    //  if (!IS_ADMIN_FLAG) {
        // check the count of a specific field
      //  $chk_catAll = 0;
        //$chk_cat409 = 0;
        //$chk_catAll = $_SESSION['cart']->count_contents();
        // check how many Products are in the cart for master_categories_id 409
        //$chk_cat15 = $_SESSION['cart']->in_cart_check('master_categories_id','409');
        // if any are found turn off the shipping module
        //if ($chk_cat409 != $chk_catAll) {
         // $this->enabled = false;
       // }
     // }
    // eof: only show if all Products are from master_categories_id 409 
    With this commented out, I can then see the flat rate shipping option again. So, it's something to do with this code I'd say, or the way I've edited it?

  5. #5
    Join Date
    Jan 2009
    Posts
    2,123
    Plugin Contributions
    0

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    Another quick update, with the new code commented out and both the new table409.php and the original table.php enabled, the checkout page doesn't show both options, only the new one. So, the cloned one seems to override the original one. I've no idea why.

  6. #6
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    69,402
    Plugin Contributions
    6

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    You appear to have changed all of the $chk_cat15 to $chk_cat409 except one:
    Code:
       $chk_cat15 = $_SESSION['cart']->in_cart_check('master_categories_id','409');
    Linda McGrath
    If you have to think ... you haven't been zenned ...

    Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!

    Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...
    Signup for our Announcements Forums to stay up to date on important changes and updates!

  7. #7
    Join Date
    Jan 2009
    Posts
    2,123
    Plugin Contributions
    0

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    Quote Originally Posted by Ajeh View Post
    You appear to have changed all of the $chk_cat15 to $chk_cat409 except one:
    Code:
       $chk_cat15 = $_SESSION['cart']->in_cart_check('master_categories_id','409');
    Hi Ajeh,

    I knew it would be something stupid! I've changed that now, so I have this, however it's still breaking things as it's making the table rate shipping just completely disappear from the checkout page:

    PHP Code:
    // bof: only show if all Products are from master_categories_id 409
      
    if (!IS_ADMIN_FLAG) {
        
    // check the count of a specific field
        
    $chk_catAll 0;
        
    $chk_cat409 0;
        
    $chk_catAll $_SESSION['cart']->count_contents();
        
    // check how many Products are in the cart for master_categories_id 409
        
    $chk_cat409 $_SESSION['cart']->in_cart_check('master_categories_id','409');
        
    // if any are found turn off the shipping module
        
    if ($chk_cat409 != $chk_catAll) {
          
    $this->enabled false;
        }
      }
    // eof: only show if all Products are from master_categories_id 409 

  8. #8
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    69,402
    Plugin Contributions
    6

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    What do you see in your debug logs?

    Are you able to post your file, from the server, for:
    /includes/modules/shipping/table409.php

    that we could perhaps peek at?
    Linda McGrath
    If you have to think ... you haven't been zenned ...

    Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!

    Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...
    Signup for our Announcements Forums to stay up to date on important changes and updates!

  9. #9
    Join Date
    Jan 2009
    Posts
    2,123
    Plugin Contributions
    0

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    Here's the file contents for now. I'll go look at the debug logs in a mo:
    PHP 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 table409 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 table409() {
        global 
    $order$db;

        
    $this->code 'table409';
        
    $this->title MODULE_SHIPPING_TABLE409_TEXT_TITLE;
        
    $this->description MODULE_SHIPPING_TABLE409_TEXT_DESCRIPTION;
        
    $this->sort_order MODULE_SHIPPING_TABLE409_SORT_ORDER;
        
    $this->icon '';
        
    $this->tax_class MODULE_SHIPPING_TABLE409_TAX_CLASS;
        
    $this->tax_basis MODULE_SHIPPING_TABLE409_TAX_BASIS;
        
    // disable only when entire cart is free shipping
        
    if (zen_get_shipping_enabled($this->code)) {
          
    $this->enabled = ((MODULE_SHIPPING_TABLE409_STATUS == 'True') ? true false);
        }

    // bof: only show if all Products are from master_categories_id 409
      
    if (!IS_ADMIN_FLAG) {
        
    // check the count of a specific field
        
    $chk_catAll 0;
        
    $chk_cat409 0;
        
    $chk_catAll $_SESSION['cart']->count_contents();
        
    // check how many Products are in the cart for master_categories_id 409
        
    $chk_cat409 $_SESSION['cart']->in_cart_check('master_categories_id','409');
        
    // if any are found turn off the shipping module
        
    if ($chk_cat409 != $chk_catAll) {
          
    $this->enabled false;
        }
      }
    // eof: only show if all Products are from master_categories_id 409

        
    if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TABLE409_ZONE 0) ) {
          
    $check_flag false;
          
    $check $db->Execute("select zone_id from " TABLE_ZONES_TO_GEO_ZONES " where geo_zone_id = '" MODULE_SHIPPING_TABLE409_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_TABLE409_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;
        }

        
    $table409_cost split("[:,]" MODULE_SHIPPING_TABLE409_COST);
        
    $size sizeof($table409_cost);
        for (
    $i=0$n=$size$i<$n$i+=2) {
          if (
    round($order_total,9) <= $table409_cost[$i]) {
            
    $shipping $table409_cost[$i+1];
            break;
          }
        }

        if (
    MODULE_SHIPPING_TABLE409_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_TABLE409_TEXT_TITLE $show_box_weight,
        
    'methods' => array(array('id' => $this->code,
        
    'title' => MODULE_SHIPPING_TABLE409_TEXT_WAY,
        
    'cost' => $shipping MODULE_SHIPPING_TABLE409_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_TABLE409_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 Table409 Method', 'MODULE_SHIPPING_TABLE409_STATUS', 'True', 'Do you want to offer table409 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 Table409', 'MODULE_SHIPPING_TABLE409_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 ('Table409 Method', 'MODULE_SHIPPING_TABLE409_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_TABLE409_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_TABLE409_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_TABLE409_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_TABLE409_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_TABLE409_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_TABLE409_STATUS''MODULE_SHIPPING_TABLE409_COST''MODULE_SHIPPING_TABLE409_MODE''MODULE_SHIPPING_TABLE409_HANDLING''MODULE_SHIPPING_TABLE409_TAX_CLASS''MODULE_SHIPPING_TABLE409_TAX_BASIS''MODULE_SHIPPING_TABLE409_ZONE''MODULE_SHIPPING_TABLE409_SORT_ORDER');
      }
    }
    ?>

  10. #10
    Join Date
    Jan 2009
    Posts
    2,123
    Plugin Contributions
    0

    Default Re: Flat Rate Shipping - Table Rates - Duplicate for Category Specific Items?

    Looking at the debug logs, we have a few deprecated terms in there but nothing recent and probably all from development logs. Nothing in the debug that points to this issue though.

 

 
Page 1 of 10 123 ... LastLast

Similar Threads

  1. free shipping for specific zip code, flat rate otherwise
    By newdre in forum Built-in Shipping and Payment Modules
    Replies: 1
    Last Post: 11 Jan 2012, 11:39 AM
  2. Flat Rate Shipping for Small Items
    By AirsoftOutfitter in forum Built-in Shipping and Payment Modules
    Replies: 0
    Last Post: 18 Mar 2010, 10:22 PM
  3. Calculate shipping on all items, except flat rate on specific category
    By buckit in forum Built-in Shipping and Payment Modules
    Replies: 0
    Last Post: 1 Dec 2009, 06:24 PM
  4. Flat rate just for a set cities and UPS or USPS shipping rates for States
    By pkalout in forum Built-in Shipping and Payment Modules
    Replies: 1
    Last Post: 9 Oct 2009, 04:20 PM
  5. Flat Rate shipping challenge - need a separate rate for a few heavier items
    By Nigel Lew in forum Built-in Shipping and Payment Modules
    Replies: 9
    Last Post: 27 Jun 2008, 10:07 PM

Bookmarks

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
Zen-Cart, Internet Selling Services, Klamath Falls, OR