ecshop二次开发折扣计算功能

2010-03-01 23:00 来源:www.chinab4c.com 作者:admin

      ecshop电子商务系统,不论是哪个版本,为了符合电子商务的发展需要,都存在促销功能里面的优惠活动,以前我们谈论了ecshop优惠活动的设置.今天我们分析ecshop二次开发折扣功能.

     ecshop折扣功能的计算,发生在购物车中.flow.php,你点进入购物车的时候,如果购买的商品在折扣或者是优惠的范围之内,我们将通lib_order.php文件中的函数compute_discount()进行折扣计算.通过favourable_activity表,把活动给检索出来.$favourable_list = $GLOBALS['db']->getAll($sql);如果为空,那么将返回false.表示没有折扣活动。 $sql = "SELECT c.goods_id, c.goods_price * c.goods_number AS subtotal, g.cat_id, g.brand_id " ."FROM " . $GLOBALS['ecs']->table('cart') . " AS c, " . $GLOBALS['ecs']->table('goods') . " AS g " . "WHERE c.goods_id = g.goods_id " .  "AND c.session_id = '" . SESS_ID . "' " . "AND c.parent_id = 0 " . "AND c.is_gift = 0 " . "AND rec_type = '" . CART_GENERAL_GOODS . "'";,通过该查询,把ecshop购物车中的商品的折扣给计算出来.

  在折扣的方式里面,商品优惠方式有全部商品优惠FAR_ALL.某个指定的分类优惠FAR_CATEGORY,指定的某个优惠FAR_BRAND,而折扣的方式有两种.先说第一种优惠,看以下ecshop优惠代码。

  $discount += $total_amount * (1 - $favourable['act_type_ext'] / 100);

       $favourable_name[] = $favourable['act_name'];

      第二种是减现金.

  $discount += $favourable['act_type_ext'];

      $favourable_name[] = $favourable['act_name'];

      而在flow.php里面,通过$smarty->assign('discount', $discount['discount']); $favour_name = empty($discount['name']) ? '' : join(',', $discount['name']);
    $smarty->assign('your_discount', sprintf($_LANG['your_discount'], $favour_name, price_format($discount['discount'])));来调用,完成显示。

  来源:中国B4C电子商务