Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Free Shipping if over ?50 and under 10kg?


Arien

Recommended Posts

Heya Peeps,

 

I've got a "Free Shipping if over ?50" script but i was wondering if anyone can help me find/make a script to only allow free shipping if the order is over ?50.. but also it has to be under 10kg.

 

It seems pretty simple but i can't seem to work out how to do it.

 

Regards,

Robin.

Link to comment
Share on other sites

Bumbing is against forum rules.....

 

Give some people a chance will ya! Ya know it is summer time in 1/2 of the world.

 

 

If you have the FREE SHIPPING MOD then modify the condtion to check the total weight also.

Link to comment
Share on other sites

Sorry about that, i just really need this feature. I have the Free Shipping Mod but i can't get it to check the weight aswell, it just keeps giving free shipping wether the weight is below or above what i set.

 

Any ideas?

Link to comment
Share on other sites

I don't know the answer but I like the suggestion and will take a look if I get time. I too would be happy to give discounts based on value but only on lighter items. Possibly it is a bit difficult to make this into a snappy phrase though.

Link to comment
Share on other sites

<?php

/*

 $Id: ot_shipping.php,v 1.15 2003/02/07 22:01:57 dgw_ Exp $



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2003 osCommerce



 Released under the GNU General Public License

*/



 class ot_shipping {

   var $title, $output;



   function ot_shipping() {

     $this->code = 'ot_shipping';

     $this->title = MODULE_ORDER_TOTAL_SHIPPING_TITLE;

     $this->description = MODULE_ORDER_TOTAL_SHIPPING_DESCRIPTION;

     $this->enabled = ((MODULE_ORDER_TOTAL_SHIPPING_STATUS == 'true') ? true : false);

     $this->sort_order = MODULE_ORDER_TOTAL_SHIPPING_SORT_ORDER;



     $this->output = array();

   }



   function process() {

     global $order, $total_weight, $weight, $shipping_weight, $currencies;

  

  $shipping_weight = $total_weight;



     if (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') {

       switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {

         case 'national':

           if ($order->delivery['country_id'] == STORE_COUNTRY) $pass = true; break;

         case 'international':

           if ($order->delivery['country_id'] != STORE_COUNTRY) $pass = true; break;

         case 'both':

           $pass = true; break;

         default:

           $pass = false; break;

       }



       if ( ($pass == true) && ( ($order->info['total'] - $order->info['shipping_cost']) >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) && ($order->info['total_weight'] >= 10) ) {

         $order->info['shipping_method'] = $this->title;

         $order->info['total'] -= $order->info['shipping_cost'];

         $order->info['shipping_cost'] = 0;

       }

     }



     $module = substr($GLOBALS['shipping']['id'], 0, strpos($GLOBALS['shipping']['id'], '_'));



     if (tep_not_null($order->info['shipping_method'])) {

       if ($GLOBALS[$module]->tax_class > 0) {

         $shipping_tax = tep_get_tax_rate($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);

         $shipping_tax_description = tep_get_tax_description($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);



         $order->info['tax'] += tep_calculate_tax($order->info['shipping_cost'], $shipping_tax);

         $order->info['tax_groups']["$shipping_tax_description"] += tep_calculate_tax($order->info['shipping_cost'], $shipping_tax);

         $order->info['total'] += tep_calculate_tax($order->info['shipping_cost'], $shipping_tax);



         if (DISPLAY_PRICE_WITH_TAX == 'true') $order->info['shipping_cost'] += tep_calculate_tax($order->info['shipping_cost'], $shipping_tax);

       }



       $this->output[] = array('title' => $order->info['shipping_method'] . ':',

                               'text' => $currencies->format($order->info['shipping_cost'], true, $order->info['currency'], $order->info['currency_value']),

                               'value' => $order->info['shipping_cost']);

     }

   }



   function check() {

     if (!isset($this->_check)) {

       $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_ORDER_TOTAL_SHIPPING_STATUS'");

       $this->_check = tep_db_num_rows($check_query);

     }



     return $this->_check;

   }



   function keys() {

     return array('MODULE_ORDER_TOTAL_SHIPPING_STATUS', 'MODULE_ORDER_TOTAL_SHIPPING_SORT_ORDER', 'MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING', 'MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER', 'MODULE_ORDER_TOTAL_SHIPPING_DESTINATION');

   }



   function install() {

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display Shipping', 'MODULE_ORDER_TOTAL_SHIPPING_STATUS', 'true', 'Do you want to display the order shipping cost?', '6', '1','tep_cfg_select_option(array('true', 'false'), ', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_ORDER_TOTAL_SHIPPING_SORT_ORDER', '2', 'Sort order of display.', '6', '2', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Allow Free Shipping', 'MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING', 'false', 'Do you want to allow free shipping?', '6', '3', 'tep_cfg_select_option(array('true', 'false'), ', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, date_added) values ('Free Shipping For Orders Over', 'MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER', '50', 'Provide free shipping for orders over the set amount.', '6', '4', 'currencies->format', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Provide Free Shipping For Orders Made', 'MODULE_ORDER_TOTAL_SHIPPING_DESTINATION', 'national', 'Provide free shipping for orders sent to the set destination.', '6', '5', 'tep_cfg_select_option(array('national', 'international', 'both'), ', now())");

   }



   function remove() {

     tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

   }

 }

?>

 

Well i had a go and it's not working.. the only reason why is because i've not sure how to "retreive" the total shipping weight into a variable so i can check it's over 10kg.

 

Any suggestions?

Link to comment
Share on other sites

  • 1 year later...

I used Free Shipping Amount W/ Weight but it doesnt seem to work. I tried and gave up for know so if you get anywhere on this, PM me and Ill do the same favor for you...

 

Seems logical, who the hell wants to pay "free" shipping for an order weighing 100lbs. or kg or whatever....

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...