You are here

UberCart運費問題

jackluh 的头像
Submitted by jackluh on 星期四, 2013-04-04 10:54

你好:

想請問一下, 我想針對某一項類型的產品計算運費, 而不論是否有合購買其它的產品, 要如何設定呢 ? 有類似的模組嗎 ?

论坛:

jackluh 的头像

你好:

我還有一個UberCart運費有關的問題想請問一下:

Flat rate模組可以設定滿額免運費的計算條件.

現在有個例子: A產品 (有幾百項不同類型的實物), B產品 (是各類的講座), 某人同時間購買了A與B的產品, 總金額超過了滿額免運費的條件, 但是對於A產品來說要運費, 我要如何設定當同時購買A與B產品時, Flat rate只針對A產品, 排除B產品

g089h515r806 的头像

   你可以尝试一下uc_customquote模块,这是按照重量计算运费,更科学一点,这是里面计算重量的代码:

$sum_weight = 0;
    foreach ($products as $product) {
      $sum_weight += $product->weight * $product->qty;
    }

只需要将B类产品的重量设置为0,就可以了。

g089h515r806 的头像

uc_flatrate_quote 函数里面,有这段代码:

    $rate = $method->base_rate;

    foreach ($products as $product) {
      if (!isset($product->flatrate[$mid])) {
        // Add the method's default product rate.
        $rate += $method->product_rate * $product->qty;
      }
      else {
        // Add the product-specific rate.
        $rate += $product->flatrate[$mid] * $product->qty;
      }
    }

 

你修改这里的代码即可。

jackluh 的头像

你好:

在 customquote.module.php  有一行程式 $zone_id = $details['zone'];

請問一下 $details['zone'] 的變數內容是什麼 ?  function uc_customquote_quote($products, $details, $method) 在那裏被用到 ?

 

g089h515r806 的头像

uc_customquote_quote

这个函数是在运费计算的时候调用,Ubercart结算的时候,点击运费计算按钮,通过Ajax,就会调用这个含糊。当然这个函数是在uc_customquote_uc_shipping_method这个钩子函数中指定的。

就是说,需要首先实现Hook_uc_shipping_method,在这里自定义运费方法,并指定回调函数。

    $methods['customquote_'. $method->mid] = array(
      'id' => 'customquote_'. $method->mid,
      'module' => 'uc_customquote',
      'title' => $method->title,
   'description' => t('首重!firstprice,续重!continueprice',array('!firstprice' => uc_currency_format($method->firstprice),'!continueprice' => uc_currency_format($method->continueprice))),
      'enabled' => TRUE,
      'operations' => array(
        'edit' => array(
          'title' => t('edit'),
          'href' => 'admin/store/settings/quotes/methods/customquote/' . $method->mid,
        ),
        'delete' => array(
          'title' => t('delete'),
          'href' => 'admin/store/settings/quotes/customquote/' . $method->mid . '/delete',
        ),
  'zones' => array(
          'title' => t('省份'),
          'href' => 'admin/store/settings/quotes/methods/zones/' . $method->mid ,
        ),
      ),
      'quote' => array(
        'type' => 'order',
        'callback' => 'uc_customquote_quote',
        'accessorials' => array(
          $method->label,
        ),
      ),
    );