Results 1 to 7 of 7
  1. #1
    Join Date
    Feb 2006
    Posts
    589
    Plugin Contributions
    0

    Default Zone shipping + Free Shipping Option

    When both are installed, I can seem to make zone shipping default or primary eventhough I made sort order for zone shipping first. Anyone have any idea's how to make the radio button primary selection for zone shipping and also for Google checkout?

  2. #2
    Join Date
    Feb 2006
    Posts
    589
    Plugin Contributions
    0

    Default Re: Zone shipping + Free Shipping Option

    Anyone any suggestions?

  3. #3
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    64,883
    Plugin Contributions
    6

    Default Re: Zone shipping + Free Shipping Option

    Shipping is defaulted to the lowest method except when Store Pickup is used ...

    Free Shipping Options is therefor the lowest price so it is selected ...

    You would need to customize the shipping class to not allow Free Shipping Option to be the lowest price ...
    PHP Code:
          $cheapest false;
          
    $size sizeof($rates);
          for (
    $i=0$i<$size$i++) {
            if (
    is_array($cheapest)) {
              
    // never quote storepickup as lowest - needs to be configured in shipping module
              
    if ($rates[$i]['cost'] < $cheapest['cost'] and $rates[$i]['module'] != 'storepickup') {
                
    $cheapest $rates[$i];
              }
            } else {
              if (
    $rates[$i]['module'] != 'storepickup') {
                
    $cheapest $rates[$i];
              }
            }
          }

          return 
    $cheapest;
        } 
    NOTE: when testing be sure to logout and login to retest as once low shipping is picked it will remember the setting even if you alter the 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.1]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...

  4. #4
    Join Date
    Feb 2006
    Posts
    589
    Plugin Contributions
    0

    Default Re: Zone shipping + Free Shipping Option

    Thanks Linda for your help.. my php is not that good, I pasted the code you gave me in in file freeoptions.php in line 250 but didnt do the trick, could I be missing anything?


    class freeoptions extends base {
    var $code, $title, $description, $icon, $enabled;
    var $ck_freeoptions_total, $ck_freeoptions_weight, $ck_freeoptions_items;
    // class constructor
    function freeoptions() {
    global $order, $db;
    $this->code = 'freeoptions';
    $this->title = MODULE_SHIPPING_FREEOPTIONS_TEXT_TITLE;
    $this->description = MODULE_SHIPPING_FREEOPTIONS_TEXT_DESCRIPTION;
    $this->sort_order = MODULE_SHIPPING_FREEOPTIONS_SORT_ORDER;
    $this->icon = '';
    $this->tax_class = MODULE_SHIPPING_FREEOPTIONS_TAX_CLASS;
    $this->tax_basis = MODULE_SHIPPING_FREEOPTIONS_TAX_BASIS;
    // disable only when entire cart is free shipping
    if (zen_get_shipping_enabled($this->code)) {
    $this->enabled = ((MODULE_SHIPPING_FREEOPTIONS_STATUS == 'True') ? true : false);
    }
    if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_FREEOPTIONS_ZONE > 0) ) {
    $check_flag = false;
    $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_FREEOPTIONS_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;
    $order_weight = round($_SESSION['cart']->show_weight(),9);
    // check if anything is configured for total, weight or item
    if ((MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN !='' or MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX !='')) {
    $this->ck_freeoptions_total = true;
    } else {
    $this->ck_freeoptions_total = false;
    }
    if ((MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MIN !='' or MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MAX !='')) {
    $this->ck_freeoptions_weight = true;
    } else {
    $this->ck_freeoptions_weight = false;
    }
    if ((MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN !='' or MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX !='')) {
    $this->ck_freeoptions_items = true;
    } else {
    $this->ck_freeoptions_items = false;
    }
    if ($this->ck_freeoptions_total or $this->ck_freeoptions_weight or $this->ck_freeoptions_items) {
    $this->enabled = true;
    } else {
    $this->enabled = false;
    }
    // disabled if nothing validates for total, weight or item
    if ($this->enabled) {
    if ($this->ck_freeoptions_total) {
    switch (true) {
    case ((MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN !='' and MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX !='')):
    // free shipping total should not need adjusting
    // if (($_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices()) >= MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN and ($_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices()) <= MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX) {
    if (($_SESSION['cart']->show_total()) >= MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN and ($_SESSION['cart']->show_total()) <= MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX) {
    $this->ck_freeoptions_total = true;
    } else {
    $this->ck_freeoptions_total = false;
    }
    break;
    case ((MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN !='')):
    // if (($_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices()) >= MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN) {
    if (($_SESSION['cart']->show_total()) >= MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN) {
    $this->ck_freeoptions_total = true;
    } else {
    $this->ck_freeoptions_total = false;
    }
    break;
    case ((MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX !='')):
    // if (($_SESSION['cart']->show_total() - $_SESSION['cart']->free_shipping_prices()) <= MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX) {
    if (($_SESSION['cart']->show_total()) <= MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX) {
    $this->ck_freeoptions_total = true;
    } else {
    $this->ck_freeoptions_total = false;
    }
    break;
    }
    }
    if ($this->ck_freeoptions_weight) {
    switch (true) {
    case ((MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MIN !='' and MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MAX !='')):
    if ($order_weight >= MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MIN and $order_weight <= MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MAX) {
    $this->ck_freeoptions_weight = true;
    } else {
    $this->ck_freeoptions_weight = false;
    }
    break;
    case ((MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MIN !='')):
    if ($order_weight >= MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MIN) {
    $this->ck_freeoptions_weight = true;
    } else {
    $this->ck_freeoptions_weight = false;
    }
    break;
    case ((MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MAX !='')):
    if ($order_weight <= MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MAX) {
    $this->ck_freeoptions_weight = true;
    } else {
    $this->ck_freeoptions_weight = false;
    }
    break;
    }
    }
    if ($this->ck_freeoptions_items) {
    switch (true) {
    case ((MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN !='' and MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX !='')):
    // free shipping items should not need adjusting
    // if (($_SESSION['cart']->count_contents() - $_SESSION['cart']->free_shipping_items()) >= MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN and ($_SESSION['cart']->count_contents() - $_SESSION['cart']->free_shipping_items()) <= MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX) {
    if (($_SESSION['cart']->count_contents()) >= MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN and ($_SESSION['cart']->count_contents()) <= MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX) {
    $this->ck_freeoptions_items = true;
    } else {
    $this->ck_freeoptions_items = false;
    }
    break;
    case ((MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN !='')):
    // if (($_SESSION['cart']->count_contents() - $_SESSION['cart']->free_shipping_items()) >= MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN) {
    if (($_SESSION['cart']->count_contents()) >= MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN) {
    $this->ck_freeoptions_items = true;
    } else {
    $this->ck_freeoptions_items = false;
    }
    break;
    case ((MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX !='')):
    // if (($_SESSION['cart']->count_contents() - $_SESSION['cart']->free_shipping_items())<= MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX) {
    if (($_SESSION['cart']->count_contents())<= MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX) {
    $this->ck_freeoptions_items = true;
    } else {
    $this->ck_freeoptions_items = false;
    }
    break;
    }
    }
    }
    /*
    echo 'I see count: ' . $_SESSION['cart']->count_contents() . ' free count: ' . $_SESSION['cart']->free_shipping_items() . '<br>' .
    'I see weight: ' . $_SESSION['cart']->show_weight() . '<br>' .
    'I see total: ' . $_SESSION['cart']->show_total() . ' free price: ' . $_SESSION['cart']->free_shipping_prices() . '<br>' .
    'Final check ' . ($this->ck_freeoptions_total ? 'T: YES ' : 'T: NO ') . ($this->ck_freeoptions_weight ? 'W: YES ' : 'W: NO ') . ($this->ck_freeoptions_items ? 'I: YES ' : 'I: NO ') . '<br>';
    */
    // final check for display of Free Options
    if ($this->ck_freeoptions_total or $this->ck_freeoptions_weight or $this->ck_freeoptions_items) {
    $this->enabled = true;
    } else {
    $this->enabled = false;
    }
    if ($this->enabled) {
    $this->quotes = array('id' => $this->code,
    'module' => MODULE_SHIPPING_FREEOPTIONS_TEXT_TITLE,
    'methods' => array(array('id' => $this->code,
    'title' => MODULE_SHIPPING_FREEOPTIONS_TEXT_WAY,
    'cost' => MODULE_SHIPPING_FREEOPTIONS_COST + MODULE_SHIPPING_FREEOPTIONS_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_FREEOPTIONS_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 Free Options Shipping', 'MODULE_SHIPPING_FREEOPTIONS_STATUS', 'True', 'Free Options is used to display a Free Shipping option when other Shipping Modules are displayed.
    It can be based on: Always show, Order Total, Order Weight or Order Item Count.
    The Free Options module does not show when Free Shipper is displayed.<br /><br />
    Setting Total to >= 0.00 and <= nothing (leave blank) will activate this module to show with all shipping modules, except for Free Shipping - freeshipper.<br /><br />
    NOTE: Leaving all settings for Total, Weight and Item count blank will deactivate this module.<br /><br />
    NOTE: Free Shipping Options does not display if Free Shipping is used based on 0 weight is Free Shipping.
    See: freeshipper<br /><br />Do you want to offer per freeoptions 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_FREEOPTIONS_COST', '0.00', 'The shipping cost will be $0.00', '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_FREEOPTIONS_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, date_added) values ('Total >=', 'MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN', '0.00', 'Free Shipping when Total >=', '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 ('Total <=', 'MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX', '', 'Free Shipping when Total <=', '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 ('Weight >=', 'MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MIN', '', 'Free Shipping when Weight >=', '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 ('Weight <=', 'MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MAX', '', 'Free Shipping when Weight <=', '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 ('Item Count >=', 'MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN', '', 'Free Shipping when Item Count >=', '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 ('Item Count <=', 'MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX', '', 'Free Shipping when Item Count <=', '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_FREEOPTIONS_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_FREEOPTIONS_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_FREEOPTIONS_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_FREEOPTIONS_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_FREEOPTIONS_%'");
    }
    function keys() {
    return array('MODULE_SHIPPING_FREEOPTIONS_STATUS', 'MODULE_SHIPPING_FREEOPTIONS_COST', 'MODULE_SHIPPING_FREEOPTIONS_HANDLING', 'MODULE_SHIPPING_FREEOPTIONS_TOTAL_MIN', 'MODULE_SHIPPING_FREEOPTIONS_TOTAL_MAX', 'MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MIN', 'MODULE_SHIPPING_FREEOPTIONS_WEIGHT_MAX', 'MODULE_SHIPPING_FREEOPTIONS_ITEMS_MIN', 'MODULE_SHIPPING_FREEOPTIONS_ITEMS_MAX', 'MODULE_SHIPPING_FREEOPTIONS_TAX_CLASS', 'MODULE_SHIPPING_FREEOPTIONS_TAX_BASIS', 'MODULE_SHIPPING_FREEOPTIONS_ZONE', 'MODULE_SHIPPING_FREEOPTIONS_SORT_ORDER');
    }
    }
    $cheapest = false;
    $size = sizeof($rates);
    for ($i=0; $i<$size; $i++) {
    if (is_array($cheapest)) {
    // never quote storepickup as lowest - needs to be configured in shipping module
    if ($rates[$i]['cost'] < $cheapest['cost'] and $rates[$i]['module'] != 'storepickup') {
    $cheapest = $rates[$i];
    }
    } else {
    if ($rates[$i]['module'] != 'storepickup') {
    $cheapest = $rates[$i];
    }
    }
    }
    return $cheapest;
    ?>

  5. #5
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    64,883
    Plugin Contributions
    6

    Default Re: Zone shipping + Free Shipping Option

    That is because that code I showed you is from the:
    /includes/classes/shipping.php

    It would need to be modified to not set the freeoptions code as the default ...
    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.1]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...

  6. #6
    Join Date
    Feb 2006
    Posts
    589
    Plugin Contributions
    0

    Default Re: Zone shipping + Free Shipping Option

    Perfect I just changed storepickup to freeoptions and works perfects thanks a mil, appreciate it.

  7. #7
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    64,883
    Plugin Contributions
    6

    Default Re: Zone shipping + Free Shipping Option

    Glad to hear that this fix worked for you ...

    Remember us when you are rich and famous ...
    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.1]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...

 

 

Similar Threads

  1. Configuring Taxes for Canadian Sites/Zones
    By DrByte in forum Currencies & Sales Taxes, VAT, GST, etc.
    Replies: 305
    Last Post: 30 Jul 2012, 07:18 PM
  2. Free Shipping on First Order
    By esugrue in forum General Questions
    Replies: 11
    Last Post: 1 Jun 2007, 09:37 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
  •