改进ecshop商品免运费相关功能

2012-03-15 23:18 来源:www.chinab4c.com 作者:ecshop专家

       我们知道在ecshop中,我们在购买过程中可以有时候享受购买商品免除运费。这个是ecshop一个最基础的东西了。原理很简单,就是在ecshop中我们可在录入ecshop产品的时候对产品进行运费计算的设置。如果该商品设置了免除运费。那么该ecshop商品就能免除运费。在ecshop购买流程里面能充分的得到体现。

   1:ecshop如何设置某个商品免除运费。

     后台=>商品列表=>其他信息=》选择免运费情况。如果该商品勾选上了。则该商品在购买的时候,不会产生运费。

   2:如果计算ecshop的商品免除运费。

    includes/lib_order.php的order_fee()函数。

     $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE  `session_id` = '" . SESS_ID. "' AND `extension_code` != 'package_buy' AND `is_shipping` = 0";
            $shipping_count = $GLOBALS['db']->getOne($sql);

            $total['shipping_fee'] = ($shipping_count == 0 AND $weight_price['free_shipping'] == 1) ?0 :  shipping_fee($shipping_info['shipping_code'],$shipping_info['configure'], $weight_price['weight'], $total['goods_price'], $weight_price['number']);

      在你购买的时候,他首先检测该商品是否免除运费如果该商品免除运费的话,他就直接可以免除运费,但是有个缺点,如果该商品和其他不免除运费的商品一起购买的话,他就产生运费了。结构很简单。shipping_count == 0 AND $weight_price['free_shipping'] == 1,这里已经表示很明确了。

      正常的ecshop购买流程应该是这样的。就是如果ecshop的购买流程里面,只要有一个商品是免除运费的,那么所有的商品都应该是免除运费的。

    我们可以按照下面函数来处理运费的过程。

     function has_free(){
 global $db;
 global $ecs;
 $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE  `session_id` = '" . SESS_ID. "' AND `extension_code` = 'package_buy'";
        $shipping_count = $GLOBALS['db']->getOne($sql);
        if($shipping_count){
    $sql = 'SELECT goods_id from ' . $GLOBALS['ecs']->table('cart') . " WHERE  `session_id` = '" . SESS_ID. "' AND `extension_code`= 'package_buy'";
    $ids = $db->getCol($sql);
    if($ids){
     
     foreach($ids as $k => $v){
      
      $sql2 = "select g.is_shipping from ".$ecs->table('package_goods')." p , ".$ecs->table('goods')." g where g.goods_id = p.goods_id and p.package_id = $v";

      $res = $db->getCol($sql2);
      
      if(in_array(1,$res)){
       
       $tsing = 1;
       continue;

      }

     }

     if($tsing ==1){
      
      return 1;

     }else{
      
      $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE  `session_id` = '" . SESS_ID. "' AND `extension_code` != 'package_buy' AND `is_shipping` = 1";
      $shipping_count = $GLOBALS['db']->getOne($sql);
      if($shipping_count){
       return 1;
      }

      return 0;

     }
    
    }else{
     
     return 0;

    }
   
        }else{
  
  $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE  `session_id` = '" . SESS_ID. "' AND `extension_code` != 'package_buy' AND `is_shipping` = 1";
        $shipping_count = $GLOBALS['db']->getOne($sql);
        if($shipping_count){
   return 1;
  }
 }
 
  return 0;
       
 
  
}

   来源:http://www.chinab4c.com