Page 1 of 2 12 LastLast
Results 1 to 10 of 15
  1. #1
    Join Date
    Apr 2006
    Posts
    358
    Plugin Contributions
    0

    Default Per item shipping, then a flat rate...

    I am wondering what is the best way to implement the following shipping senario.

    Currently we have a flat rate of 200 yen per item and for orders over 3,000 yen we have free shipping.

    Our shipping company has changed and so we want to eliminate free shipping.

    We will continue to charge 200 yen shipping for each item up to a maximum of 500 yen, no matter how many more items are ordered, as the shipping company charges 500 yen no matter how big the order is. (For small items we use the post office, so 200 yen is fine for them...)

    What is the best way to do this?

    Thanks in advance...

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

    Default Re: Per item shipping, then a flat rate...

    Customize item.php

    When the number of items is >= 3 return 500 ... otherwise, have it do the calculation for you ...
    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
    Apr 2006
    Posts
    358
    Plugin Contributions
    0

    Default Re: Per item shipping, then a flat rate...

    Hi,

    Thanks for that suggestion... I checked item.php but could not find anything obvious that I could easily adjust related to item number, so I guess the PHP to achieve this needs to be written from scratch. (or perhaps I am missing something...) I am afraid however, that me writing PHP is not going to happen anytime soon...

    I am not sure how to implement ‘have it do the calculation for you...’ I went through the shipping modules but could not find anything that would calculate shipping from the number of items in the order...

    I wonder if you could possibly help out with explaining that or adjusting the PHP that I have included below... (or anyone who is up to speed on PHP, for that matter...)

    Thank you in advance!

    Here is the PHP that was in includes/modules/shipping/

    ****************
    <?php
    //
    // +----------------------------------------------------------------------+
    // |zen-cart Open Source E-commerce |
    // +----------------------------------------------------------------------+
    // | Copyright (c) 2004 The zen-cart developers |
    // | |
    // | http://www.zen-cart.com/index.php |
    // | |
    // | Portions Copyright (c) 2003 osCommerce |
    // +----------------------------------------------------------------------+
    // | This source file is subject to version 2.0 of the GPL license, |
    // | that is bundled with this package in the file LICENSE, and is |
    // | available through the world-wide-web at the following url: |
    // | http://www.zen-cart.com/license/2_0.txt. |
    // | If you did not receive a copy of the zen-cart license and are unable |
    // | to obtain it through the world-wide-web, please send a note to |
    // | license AT zen-cart DOT com so we can mail you a copy immediately. |
    // +----------------------------------------------------------------------+
    // $Id: item.php 1969 2005-09-13 06:57:21Z drbyte $
    //

    class item {
    var $code, $title, $description, $icon, $enabled;

    // class constructor
    function item() {
    global $order, $db;

    $this->code = 'item';
    $this->title = MODULE_SHIPPING_ITEM_TEXT_TITLE;
    $this->description = MODULE_SHIPPING_ITEM_TEXT_DESCRIPTION;
    $this->sort_order = MODULE_SHIPPING_ITEM_SORT_ORDER;
    $this->icon = '';
    $this->tax_class = MODULE_SHIPPING_ITEM_TAX_CLASS;
    $this->tax_basis = MODULE_SHIPPING_ITEM_TAX_BASIS;

    // disable only when entire cart is free shipping
    if (zen_get_shipping_enabled($this->code)) {
    $this->enabled = ((MODULE_SHIPPING_ITEM_STATUS == 'True') ? true : false);
    }

    if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_ITEM_ZONE > 0) ) {
    $check_flag = false;
    $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_ITEM_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
    // $total_count = $total_count - $_SESSION['cart']->in_cart_check('product_is_free','1');
    // $total_count = $total_count - $_SESSION['cart']->in_cart_check('product_is_always_free_shipping','1');
    $total_count = $total_count - $_SESSION['cart']->free_shipping_items();
    $this->quotes = array('id' => $this->code,
    'module' => MODULE_SHIPPING_ITEM_TEXT_TITLE,
    'methods' => array(array('id' => $this->code,
    'title' => MODULE_SHIPPING_ITEM_TEXT_WAY,
    'cost' => (MODULE_SHIPPING_ITEM_COST * $total_count) + MODULE_SHIPPING_ITEM_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_ITEM_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 Item Shipping', 'MODULE_SHIPPING_ITEM_STATUS', 'True', 'Do you want to offer per item 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_ITEM_COST', '2.50', 'The shipping cost will be multiplied by the number of items 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_ITEM_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_ITEM_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_ITEM_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_ITEM_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_ITEM_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
    }

    function remove() {
    global $db;
    $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }

    function keys() {
    return array('MODULE_SHIPPING_ITEM_STATUS', 'MODULE_SHIPPING_ITEM_COST', 'MODULE_SHIPPING_ITEM_HANDLING', 'MODULE_SHIPPING_ITEM_TAX_CLASS', 'MODULE_SHIPPING_ITEM_TAX_BASIS', 'MODULE_SHIPPING_ITEM_ZONE', 'MODULE_SHIPPING_ITEM_SORT_ORDER');
    }
    }
    ?>

    ****************

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

    Default Re: Per item shipping, then a flat rate...

    This returns the pricing info ...
    PHP Code:
    $this->quotes = array('id' => $this->code,
    'module' => MODULE_SHIPPING_ITEM_TEXT_TITLE,
    'methods' => array(array('id' => $this->code,
    'title' => MODULE_SHIPPING_ITEM_TEXT_WAY,
    'cost' => (MODULE_SHIPPING_ITEM_COST $total_count) + MODULE_SHIPPING_ITEM_HANDLING))); 
    You need to test for how many items ... the $total_count just before that code, and when it is >= 3 send 500 vs computed cost ...
    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
    Apr 2006
    Posts
    358
    Plugin Contributions
    0

    Default Re: Per item shipping, then a flat rate...

    Dear Linda,

    Thank you for you patience and your time. I have tried my best to adjust that section of PHP but with no success. I went to several PHP tutorial sites and tried to get an understanding of how to do things, but the examples are so different from the code in Zen that I could not make any progress... Whatever I tried I got error messages or parsing errors etc....

    If you, or someone, would be so kind as to give me an example that I could try, I might be able to make some headway...

    Thank you again!

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

    Default Re: Per item shipping, then a flat rate...

    The idea is ...

    IF count >= 3
    charge 500
    else
    charge normal
    endif

    So ... you need to alter the code in /includes/modules/item.php to use this IF in place of the normal method ...
    PHP Code:
          // if total item count >= 3 charge 500 otherwise, charge regular item charge
          
    if ($total_count >= 3) {
            
    $this->quotes = array('id' => $this->code,
                                  
    'module' => MODULE_SHIPPING_ITEM_TEXT_TITLE,
                                  
    'methods' => array(array('id' => $this->code,
                                                           
    'title' => MODULE_SHIPPING_ITEM_TEXT_WAY,
                                                           
    'cost' => 500)));
          } else {
            
    $this->quotes = array('id' => $this->code,
                                  
    'module' => MODULE_SHIPPING_ITEM_TEXT_TITLE,
                                  
    'methods' => array(array('id' => $this->code,
                                                           
    'title' => MODULE_SHIPPING_ITEM_TEXT_WAY,
                                                           
    'cost' => (MODULE_SHIPPING_ITEM_COST $total_count) + MODULE_SHIPPING_ITEM_HANDLING)));
          } 
    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
    Apr 2006
    Posts
    358
    Plugin Contributions
    0

    Default Re: Per item shipping, then a flat rate...

    Well, thank you very much! I must say that I could not have come up with such a piece of code, even with weeks of study, I imagine. Now that I can see the final result, I can understand what you have done, but this was really something beyond me.

    I have tested it and it works fine!

    One thing that I have yet to figure out is how you developers make a living from all the work you do on Zen-Cart AND the enormous assistance you give everyone. This is the most amazing and helpful community. It is really very Zen! (And I live in Japan, so that is saying something!)

    The store that I am building I am doing completely as a volunteer, but I will be sending you a donation out of my own pocket for the wonderful work you are all doing and the marvelous positive assistance you are giving the many small businesses around the world.

    Thank you so much!

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

    Default Re: Per item shipping, then a flat rate...

    The donations that people give to Zen Cart are very important to us ...

    While it will be sometime before we "make a living" we hope that others like you understand that for use to build such software and provide the kind of support you need and want to run your businesses ... these donations are important ...

    We hope more and more people will come to find that Zen Cart is their e-commerce solution ... and they want to keep it running and developing and have access to the free support ...

    Glad that you were able to get the code working for your site!
    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
    Apr 2006
    Posts
    358
    Plugin Contributions
    0

    Default Re: Per item shipping, then a flat rate...

    Thanks for explaining things to me... I have sent off an donation but there is no need to send me anything, which means more for you hard workers over there!

    I am sure I will have some further questions, probably sooner than later...

    Once again, thank you for the wonderful support!

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

    Default Re: Per item shipping, then a flat rate...

    Thanks for the donation ... we really appeciate that ...
    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. Flat Rate Per Item Type Shipping
    By D9Studios in forum Built-in Shipping and Payment Modules
    Replies: 5
    Last Post: 30 Aug 2011, 08:54 PM
  2. Flat Rate Per Item Shipping ?
    By haredo in forum Built-in Shipping and Payment Modules
    Replies: 2
    Last Post: 25 Jan 2010, 06:56 AM
  3. Per Item Flat Rate Shipping
    By dannyd in forum Built-in Shipping and Payment Modules
    Replies: 4
    Last Post: 4 Mar 2009, 10:01 PM
  4. Shipping Per Item with a flat rate
    By robg in forum Addon Shipping Modules
    Replies: 0
    Last Post: 12 Oct 2006, 10:14 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