改进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
最近更新
常用插件
- ecshop购物车功能改进[插件
ecshop购物车功能改进[插件套餐]主要是我们最近开发工作和开发项目中。...
- ecshop红包修改成满多少减
我们在长期使用ecshop的时候,我们可以发现。ecshop的红包是一个非常强...
- ecshop通用红包编码
很多时候,为了结合促销,必须扩展一下ecshop的红包功能。ecshop的红包...
- ecshop降价通知登记插件
ecshop降价通知登记插件,主要是为了方便某些客户,对商品价格要求比...
- ecshop分类树中统计商品数
最近忙于开发其他项目,在不少朋友不断要求和催促的情况下,做出了该小...