登入 註冊
 

免運費設定問題
閱讀 3168 次 0 會員 與 1 訪客 正在閱讀本文。
* 十月 23, 2012, 11:45:55 上午
您好,請問
例如我訂了一個商品為免運費 金額為1600元
規定須滿2000元以上才免運費
問題為客戶訂了一個免運商品1600元
如果單一購買出現免運費,正常
可是如果再加一個500元商品  合計超過2000元應該免運費
系統卻會加上運費
請問要如何設定

記錄

* 十月 24, 2012, 10:42:24 上午
#1
在官網找到此問題的解決方法
我將整段程式替換卻發現不行
我是程式外行 有看沒有懂
麻煩版大幫忙看看要如何修改?
以下是我抓下的資料:
---------------------------------------------------------
 我们知道在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;
       
 
 
}

記錄

十月 24, 2012, 01:15:59 下午
#2
 [font=新細明體]只要有一個商品是免除運費的,那麼所有的商品都應該是免除運費的[/font]
[font=新細明體]這句話邏輯有點問題[/font]
[font=新細明體]如果有一個商品是免除運費的,但總金額未達免運費門檻,那麼也要所有的商品都免運費嗎[/font]?
[font=新細明體]應該把免運費的商品用促銷是處裡[/font]
[font=新細明體]不要亂改程式[/font]…
除非你知道自己在做什麼?

記錄

* 十月 25, 2012, 11:14:26 上午
#3
您曲解我的設定意含了
我的問題是"免運費商品"加"一般商品"
1) 如果相加後未達免運費門檻則須增加運費
2) 如果相加後已超過免運費門檻則應該給予免運費
第一項是理所當然
問題出在第二項,理所當然的應該給予免運費
但是系統出現的是需要運費

記錄

* 十月 25, 2012, 01:20:23 下午
#4
剛才又想了一下
既然有免運費商品
那再增加一般商品 同樣一次寄送
不管是否達到免運費門檻 不應在加運費了呀!

記錄

十月 26, 2012, 10:20:41 下午
#5
EC的運費計算有些複雜
要配合使用的配送方式做計算
官方維持原來計算方式
應該有其考量
建議你到官方提議看看...

記錄

* 十月 27, 2012, 11:04:16 上午
#6
看來只能手動幫客戶後台調整了
已被客戶調侃很不專業  甚至消單
我在官網有找到同樣的提問及解決方案
只是我從官網抓下來的解決方案程式  因不懂安裝而無法利用
不知版大是否認為此程式不能用或不該用(已有把程式放上來了 不知看了沒)
如果版大真的認為不該修改
那只能將就接受這個缺憾了

記錄

十月 27, 2012, 11:50:56 上午
#7
應開不能叫免運費商品
改為排除運費計算商品可能比較易懂
運費的計算牽涉到多方面
並不像你提供的程式碼那樣簡單
錯誤的計算可能導致賣家斯損失
如果你硬要搭配販賣而且確有必要
建議你花點錢請官方幫你改會比較穩
否則請你換個方式吧!

記錄

十月 27, 2012, 03:40:02 下午
#8
剛剛利用空檔測試了一下
發現運費的計算是你想要的
例如:
免運費額度=1000
免運費商品=565
需運費商品=565
合計=1130
運費=0
應該是你把檔案改壞了
導致運費計算出錯
仔細檢查一下吧..

記錄