Page 1 of 2 12 LastLast
Results 1 to 10 of 19
  1. #1
    Join Date
    Aug 2008
    Posts
    78
    Plugin Contributions
    0

    Default Per Item Module with 22 zones

    Hi, I've been wrestling with this for a while. My client has 22 separate shipping zones. But she wants each zone to ship per item.

    For instance, I buy one box of cupcakes and I am shipping to AZ. Cost is 10.29. I buy 2 boxes of cupcakes, the shipping price doubles to 20.598 For three, it triples to 30.87, etc.

    I tried to make this work using zone table rate. But then I have to enter a long string per zone, like 1:10.29,2:20.58,3:30.87,4:41.17, etc etc etc up to 20 or more. And then if someone enters 21, the shipping cost goes to zero because that number of items isn't entered.

    I think the solution is to clone the per item shipping module 22 times, one for each zone. I'm willing to do this, but I will need some really specific advice. If someone can walk me though cloning it once, I'm sure I can carry on from there. Thanks in advance!

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

    Default Re: Per Item Module with 22 zones

    You should be able to do a search on:
    clone item
    clone flat

    for examples of cloning shipping modules ...
    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
    Aug 2008
    Posts
    78
    Plugin Contributions
    0

    Default Re: Per Item Module with 22 zones

    Thanks, I have tried that but all I get is this same response in different threads, that:
    ou should be able to do a search on:
    clone item
    clone flat

    for examples of cloning shipping modules

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

    Default Re: Per Item Module with 22 zones

    See if this thread helps that I found with a search on:
    clone item

    http://www.zen-cart.com/forum/showth...ght=clone+item
    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!

  5. #5
    Join Date
    Aug 2008
    Posts
    78
    Plugin Contributions
    0

    Default Re: Per Item Module with 22 zones

    Thanks! For anyone else trying to do this:

    I did that with modules/shipping/item.php, named a new one itemzone2.php, replaced all incidents of item or ITEM with itemzone2 or ITEMZONE2.

    At first I got an error that I was missing includes/languages/modules/shipping/item.php.

    So I downloaded that page and did the same replacement. I uploaded the two pages and on the shipping module in the cart it appeared under per item as per itemzone2. Now I just have to do it 21 more times successfully.

    Thanks for your help!!

  6. #6
    Join Date
    Aug 2008
    Posts
    78
    Plugin Contributions
    0

    Default Re: Per Item Module with 22 zones

    Argh. Update:

    While the new modules show up on the administrative side, when I set up per itemzone2, then go to the customer side and estimate shipping with a zip code from that zone, I get what you see in the attachment here.

    It is set up exactly like per item, except I selected zone 2 instead of zone 1, and the price is different.
    Attached Images Attached Images  

  7. #7
    Join Date
    Aug 2008
    Posts
    78
    Plugin Contributions
    0

    Default Re: Per Item Module with 22 zones

    Any suggestions?

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

    Default Re: Per Item Module with 22 zones

    Could you post this shipping module code so that we can peek at it?
    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
    Aug 2008
    Posts
    78
    Plugin Contributions
    0

    Default Re: Per Item Module with 22 zones

    Sure thing. The includes/modules/shipping/itme.php hasn't been touched. Here is the code for itemzone2.php. I noticed that there were a few places where I hadn't capitalized itemzone2, but when I made those changes last night it made the problem worse, so I restored it. itemzone2.php is below. Thanks!!

    Code:
    <?php
    
      class itemzone2 {
    
        var $code, $title, $description, $icon, $enabled;
    
    
    
    // class constructor
    
        function itemzone2() {
    
          global $order, $db;
    
    
    
          $this->code = 'itemzone2';
    
          $this->title = MODULE_SHIPPING_ITEMZONE2_TEXT_TITLE;
    
          $this->description = MODULE_SHIPPING_ITEMZONE2_TEXT_DESCRIPTION;
    
          $this->sort_order = MODULE_SHIPPING_ITEMZONE2_SORT_ORDER;
    
          $this->icon = '';
    
          $this->tax_class = MODULE_SHIPPING_ITEMZONE2_TAX_CLASS;
    
          $this->tax_basis = MODULE_SHIPPING_ITEMZONE2_TAX_BASIS;
    
    
    
          // disable only when entire cart is free shipping
    
          if (zen_get_shipping_enabled($this->code)) {
    
            $this->enabled = ((MODULE_SHIPPING_itemzone2_STATUS == 'True') ? true : false);
    
          }
    
    
    
          if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_ITEMZONE2_ZONE > 0) ) {
    
            $check_flag = false;
    
            $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_ITEMZONE2_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;
    
            }
    
          }
    
        }
    
    
    
    // class methods
    
        function quote($method = '') {
    
          global $order, $total_count;
    
    
    
          // adjusted count for free shipping
    
          $itemzone2_total_count = $total_count - $_SESSION['cart']->free_shipping_itemzone2s();
    
          $this->quotes = array('id' => $this->code,
    
                                'module' => MODULE_SHIPPING_ITEMZONE2_TEXT_TITLE,
    
                                'methods' => array(array('id' => $this->code,
    
                                                         'title' => MODULE_SHIPPING_ITEMZONE2_TEXT_WAY,
    
                                                         'cost' => (MODULE_SHIPPING_ITEMZONE2_COST * $itemzone2_total_count) + MODULE_SHIPPING_ITEMZONE2_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;
    
        }
    
    
    
        function check() {
    
          global $db;
    
          if (!isset($this->_check)) {
    
            $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_ITEMZONE2_STATUS'");
    
            $this->_check = $check_query->RecordCount();
    
          }
    
          return $this->_check;
    
        }
    
    
    
        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 itemzone2 Shipping', 'MODULE_SHIPPING_ITEMZONE2_STATUS', 'True', 'Do you want to offer per itemzone2 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, date_added) values ('Shipping Cost', 'MODULE_SHIPPING_ITEMZONE2_COST', '2.50', 'The shipping cost will be multiplied by the number of itemzone2s in an order that uses 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, date_added) values ('Handling Fee', 'MODULE_SHIPPING_ITEMZONE2_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_ITEMZONE2_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_ITEMZONE2_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_ITEMZONE2_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_ITEMZONE2_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
    
        }
    
    
    
        function remove() {
    
          global $db;
    
          $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE\_SHIPPING\_ITEMZONE2\_%'");
    
        }
    
    
    
        function keys() {
    
          return array('MODULE_SHIPPING_itemzone2_STATUS', 'MODULE_SHIPPING_itemzone2_COST', 'MODULE_SHIPPING_ITEMZONE2_HANDLING', 'MODULE_SHIPPING_ITEMZONE2_TAX_CLASS', 'MODULE_SHIPPING_itemzone2_TAX_BASIS', 'MODULE_SHIPPING_ITEMZONE2_ZONE', 'MODULE_SHIPPING_ITEMZONE2_SORT_ORDER');
    
        }
    
      }
    
    ?>

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

    Default Re: Per Item Module with 22 zones

    You have to be more careful with the upper/lower case and not change just anything with the word item as some are necessary variables and functions ...
    Code:
    <?php
      class itemzone2 {
        var $code, $title, $description, $icon, $enabled;
    
    // class constructor
        function itemzone2() {
          global $order, $db;
    
          $this->code = 'itemzone2';
          $this->title = MODULE_SHIPPING_ITEMZONE2_TEXT_TITLE;
          $this->description = MODULE_SHIPPING_ITEMZONE2_TEXT_DESCRIPTION;
          $this->sort_order = MODULE_SHIPPING_ITEMZONE2_SORT_ORDER;
          $this->icon = '';
          $this->tax_class = MODULE_SHIPPING_ITEMZONE2_TAX_CLASS;
          $this->tax_basis = MODULE_SHIPPING_ITEMZONE2_TAX_BASIS;
    
          // disable only when entire cart is free shipping
          if (zen_get_shipping_enabled($this->code)) {
            $this->enabled = ((MODULE_SHIPPING_ITEMZONE2_STATUS == 'True') ? true : false);
          }
    
          if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_ITEMZONE2_ZONE > 0) ) {
            $check_flag = false;
            $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_ITEMZONE2_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;
            }
          }
        }
    
    // class methods
        function quote($method = '') {
          global $order, $total_count;
    
          // adjusted count for free shipping
          $item_total_count = $total_count - $_SESSION['cart']->free_shipping_items();
          $this->quotes = array('id' => $this->code,
                                'module' => MODULE_SHIPPING_ITEMZONE2_TEXT_TITLE,
                                'methods' => array(array('id' => $this->code,
                                                         'title' => MODULE_SHIPPING_ITEMZONE2_TEXT_WAY,
                                                         'cost' => (MODULE_SHIPPING_ITEMZONE2_COST * $item_total_count) + MODULE_SHIPPING_ITEMZONE2_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;
        }
    
        function check() {
          global $db;
          if (!isset($this->_check)) {
            $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_ITEMZONE2_STATUS'");
            $this->_check = $check_query->RecordCount();
          }
          return $this->_check;
        }
    
        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 itemzone2 Shipping', 'MODULE_SHIPPING_ITEMZONE2_STATUS', 'True', 'Do you want to offer per itemzone2 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, date_added) values ('Shipping Cost', 'MODULE_SHIPPING_ITEMZONE2_COST', '2.50', 'The shipping cost will be multiplied by the number of itemzone2s in an order that uses 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, date_added) values ('Handling Fee', 'MODULE_SHIPPING_ITEMZONE2_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_ITEMZONE2_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_ITEMZONE2_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_ITEMZONE2_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_ITEMZONE2_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
        }
    
        function remove() {
          global $db;
          $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE\_SHIPPING\_ITEMZONE2\_%'");
        }
    
        function keys() {
          return array('MODULE_SHIPPING_ITEMZONE2_STATUS', 'MODULE_SHIPPING_ITEMZONE2_COST', 'MODULE_SHIPPING_ITEMZONE2_HANDLING', 'MODULE_SHIPPING_ITEMZONE2_TAX_CLASS', 'MODULE_SHIPPING_ITEMZONE2_TAX_BASIS', 'MODULE_SHIPPING_ITEMZONE2_ZONE', 'MODULE_SHIPPING_ITEMZONE2_SORT_ORDER');
        }
      }
    ?>
    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!

 

 
Page 1 of 2 12 LastLast

Similar Threads

  1. Per item two zones?
    By LiseL in forum Built-in Shipping and Payment Modules
    Replies: 1
    Last Post: 25 Sep 2009, 03:33 PM
  2. Handling Fee per item with zipship module
    By xtracool in forum Addon Shipping Modules
    Replies: 0
    Last Post: 9 May 2009, 04:04 AM
  3. Shipping - By Zones, Table Rates per Item
    By dm2118 in forum Built-in Shipping and Payment Modules
    Replies: 0
    Last Post: 20 Feb 2008, 11:57 PM
  4. Per Item for Multiple Zones
    By surf7.net in forum Addon Shipping Modules
    Replies: 5
    Last Post: 25 Oct 2007, 07:31 PM
  5. Im very desperate for help with zones and per item shipping.
    By tomato in forum Templates, Stylesheets, Page Layout
    Replies: 2
    Last Post: 3 Oct 2006, 01:51 AM

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