,以便改變配送的時候動態顯示
$payment_list = available_payment_list(1, $cod_fee, false, $_SESSION['extension_code']=='virtual_good'?1:0);
$pay_balance_id=0;//當前配置於的餘額支付的遞增id
if(isset($payment_list))
{
foreach ($payment_list as $key => $payment)
{
if ($payment['is_cod'] == '1')
{
$payment_list[$key]['format_pay_fee'] = '' . $payment['format_pay_fee'] . '';
}
/* 如果有易寶神州行支付 如果訂單金額大於300 則不顯示 */
if ($payment['pay_code'] == 'yeepayszx' && $total['amount'] > 300)
{
unset($payment_list[$key]);
}
/* 如果有餘額支付 */
if ($payment['pay_code'] == 'balance')
{
$pay_balance_id = $payment['pay_id'];
/* 如果未登錄,不顯示 */
if ($_SESSION['user_id'] == 0)
{
unset($payment_list[$key]);
}
else
{
if ($_SESSION['flow_order']['pay_id'] == $payment['pay_id'])
{
$smarty->assign('disable_surplus', 1);
}
}
}
}
}
$smarty->assign('pay_balance_id', $pay_balance_id);
$smarty->assign('payment_list', $payment_list);
/* 代碼增加_start By www.0769web.net */
/* 自提功能
根據收貨地址獲取該城市下的自提點列表
*/
//$sql = 'select * from ' . $ecs->table('pickup_point') .
// ' where city_id=' . $consignee['city'];
//$pickup_point_list = $db->getAll($sql);
if($consignee['city']){
$sql = 'select r.region_name, r.region_id from ' . $ecs->table('pickup_point') . ' p left join ' . $ecs->table('region') .
' r on p.city_id=r.region_id where p.city_id=' . $consignee['city'];
$district_list = $db->getAll($sql);
$smarty->assign('district_list', $district_list);
}
//$smarty->assign('pickup_point_list', $pickup_point_list);
//$smarty->assign('has_pickup_point', count($pickup_point_list));
//$smarty->assign('pickup_code', $_CFG['pickup_code']);
/* 代碼增加_end By www.0769web.net */
/* 取得包裝與賀卡 */
if ($total['real_goods_count'] > 0)
{
/* 只有有實體商品,才要判斷包裝和賀卡 */
if (!isset($_CFG['use_package']) || $_CFG['use_package'] == '1')
{
/* 如果使用包裝,取得包裝列表及用户選擇的包裝 */
$smarty->assign('pack_list', pack_list());
}
/* 如果使用賀卡,取得賀卡列表及用户選擇的賀卡 */
if (!isset($_CFG['use_card']) || $_CFG['use_card'] == '1')
{
$smarty->assign('card_list', card_list());
}
}
$user_info = user_info($_SESSION['user_id']);
/* 如果使用餘額,取得用户餘額 */
if ((!isset($_CFG['use_surplus']) || $_CFG['use_surplus'] == '1')
&& $_SESSION['user_id'] > 0
&& $user_info['user_money'] > 0)
{
// 能使用餘額
$smarty->assign('your_surplus', $user_info['user_money']);
}
if($_CFG['use_surplus'] == '1'){
$smarty->assign('allow_use_surplus', 1);
}
/* 如果使用積分,取得用户可用積分及本訂單最多可以使用的積分 */
if ((!isset($_CFG['use_integral']) || $_CFG['use_integral'] == '1')
&& $_SESSION['user_id'] > 0
&& $user_info['pay_points'] > 0
&& ($flow_type != CART_GROUP_BUY_GOODS && $flow_type != CART_EXCHANGE_GOODS))
{
// 能使用積分
$keyong = flow_available_points();// 可用積分
foreach($keyong as $k=>$v){
$cart_goods_new[$k]['jifen'] = $v;
}
$smarty->assign('allow_use_integral', 1);
//$smarty->assign('order_max_integral', $keyong);
$smarty->assign('your_integral', $user_info['pay_points']); // 用户積分
}
if ((!isset($_CFG['use_bonus']) || $_CFG['use_bonus'] == '1')
&& ($flow_type != CART_GROUP_BUY_GOODS && $flow_type != CART_EXCHANGE_GOODS && $flow_type != CART_PRE_SALE_GOODS))
{
// 取得用户可用紅包
$user_bonus = user_bonus($_SESSION['user_id'], $total['goods_price_supplier']);//把參數由總金額改為每個店鋪的訂單金額
//$user_bonus = user_bonus($_SESSION['user_id'], $total['goods_price']);
if (!empty($user_bonus))
{
foreach ($user_bonus AS $key => $val)
{
foreach($val as $k => $v)
{
$user_bonus[$key][$k]['bonus_money_formated'] = price_format($v['type_money'], false);
$cart_goods_new[$key]['redbag'] = $user_bonus[$key];
}
}
foreach($user_bonus as $key=>$val){
foreach($val as $k=>$v){
$res[$k]=$v;
}
}
$smarty->assign('bonus_list', $res);
}
// 能使用紅包
$smarty->assign('allow_use_bonus', 1);
}
$smarty->assign('goods_list', $cart_goods_new);
/* 如果使用缺貨處理,取得缺貨處理列表 */
if (!isset($_CFG['use_how_oos']) || $_CFG['use_how_oos'] == '1')
{
if (is_array($GLOBALS['_LANG']['oos']) && !empty($GLOBALS['_LANG']['oos']))
{
$smarty->assign('how_oos_list', $GLOBALS['_LANG']['oos']);
}
}
/* 如果能開發票,取得發票內容列表 */
if ((!isset($_CFG['can_invoice']) || $_CFG['can_invoice'] == '1')
&& isset($_CFG['invoice_content'])
&& trim($_CFG['invoice_content']) != '' && $flow_type != CART_EXCHANGE_GOODS)
{
$inv_content_list = explode("\n", str_replace("\r", '', $_CFG['invoice_content']));
$smarty->assign('inv_content_list', $inv_content_list);
$inv_type_list = array();
foreach ($_CFG['invoice_type']['type'] as $key => $type)
{
/*增值税發票_更改_START_www.0769web.net*/
if (!empty($type)&&$_CFG['invoice_type']['enable'][$key]=='1')
{
$inv_type_list[$type] = $_LANG[$type] . ' [' . floatval($_CFG['invoice_type']['rate'][$key]) . '%]';
}
/*增值税發票_更改_END_www.0769web.net*/
}
$smarty->assign('inv_type_list', $inv_type_list);
/*增值税發票_添加_START_www.0769web.net*/
$smarty->assign('province_list', get_regions(1, $_CFG['shop_country']));
/*增值税發票_添加_END_www.0769web.net*/
}
/* 代碼增加_start By www.0769web.net */
if ($_CFG['time_shouhuo'])
{
$bjtimes=$_CFG['time_shouhuo']*3600;
}
else
{
$bjtimes=10*3600;
}
$week_list = array();
$week_list[0]['name'] = date('m-d', time());
$week_list[0]['week'] = "今天";
$week_list[1]['name'] = date('m-d', strtotime('+1 days'));
$week_list[1]['week'] = getWeek(strtotime('+1 days'));
$week_list[2]['name'] = date('m-d', strtotime('+2 days'));
$week_list[2]['week'] = getWeek(strtotime('+2 days'));
$week_list[3]['name'] = date('m-d', strtotime('+3 days'));
$week_list[3]['week'] = getWeek(strtotime('+3 days'));
$week_list[4]['name'] = date('m-d', strtotime('+4 days'));
$week_list[4]['week'] =getWeek(strtotime('+4 days'));
$week_list[5]['name'] = date('m-d', strtotime('+5 days'));
$week_list[5]['week'] = getWeek(strtotime('+5 days'));
$week_list[6]['name'] = date('m-d', strtotime('+6 days'));
$week_list[6]['week'] = getWeek(strtotime('+6 days'));
foreach ($week_list as $wkey => $week)
{
$chatimes_11 = strtotime(date('Y')."-". $week['name'] ." 09:00") - time();
$chatimes_12 = strtotime(date('Y')."-".$week['name']." 15:00") - time();
if ($chatimes_11 > $bjtimes || $chatimes_12 > $bjtimes)
{
$week_list[$wkey]['time1'] = '1';
}
else
{
$week_list[$wkey]['time1'] = '0';
}
$chatimes_21 = strtotime(date('Y')."-".$week['name']." 15:00") - time();
$chatimes_22 = strtotime(date('Y')."-".$week['name']." 19:00") - time();
if ($chatimes_21 > $bjtimes || $chatimes_22 > $bjtimes)
{
$week_list[$wkey]['time2'] = '1';
}
else
{
$week_list[$wkey]['time2'] = '0';
}
$chatimes_31 = strtotime(date('Y')."-".$week['name']." 19:00") - time();
$chatimes_32 = strtotime(date('Y')."-".$week['name']." 22:00") - time();
if ($chatimes_31 > $bjtimes || $chatimes_32 > $bjtimes)
{
$week_list[$wkey]['time3'] = '1';
}
else
{
$week_list[$wkey]['time3'] = '0';
}
}
$smarty->assign('week_list', $week_list);
/* 代碼增加_end By www.0769web.net */
//判斷是否開啓餘額支付
$sql = 'SELECT `is_surplus_open`'.
'FROM '.$ecs->table('users').
'WHERE `user_id` = \''.$_SESSION['user_id'].'\''.
'LIMIT 1';
$is_surplus_open = $GLOBALS['db']->getOne($sql);
$smarty->assign('is_surplus_open', $is_surplus_open);
/* 保存 session */
$_SESSION['flow_order'] = $order;
}
elseif ($_REQUEST['step'] == 'select_pickinfo')
{
include_once('includes/cls_json.php');
$json = new JSON;
$result = array('error' => '', 'content' => '', 'need_insure' => 0);
$pid = (isset($_REQUEST['pid'])) ? intval($_REQUEST['pid']) : 0;
$suppid = (isset($_REQUEST['sid'])) ? intval($_REQUEST['sid']) : 0;
//$consignee = get_consignee($_SESSION['user_id']);
$info = get_pickup_one_info($pid);
$pickinfo = get_pickup_info($info['city_id'],$suppid);
$retinfo = array();
foreach($pickinfo as $key=>$val){
$retinfo[$val['district_id']]['name'] = $val['region_name'];
$retinfo[$val['district_id']]['info'][] = $val;
}
$smarty->assign('district', intval($info['district_id']));
$smarty->assign('selectid', $pid);
$smarty->assign('suppid', $suppid);
$smarty->assign('pinfo', $retinfo);
$result['content'] = $smarty->fetch('library/pickup.lbi',true);
echo $json->encode($result);
exit;
}elseif ($_REQUEST['step'] == 'save_point')
{
include_once('includes/cls_json.php');
$json = new JSON;
$result = array('error' => '', 'content' => '', 'need_insure' => 0);
$pid = (isset($_REQUEST['pid'])) ? intval($_REQUEST['pid']) : 0;
$suppid = (isset($_REQUEST['sid'])) ? intval($_REQUEST['sid']) : 0;
$info = get_pickup_one_info($pid);
$result['suppid'] = $suppid;
$result['picktxt'] = "自提點:".$info['shop_name']."修改";
echo $json->encode($result);
exit;
}
elseif ($_REQUEST['step'] == 'select_shipping')
{
/*------------------------------------------------------ */
//-- 改變配送方式
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$json = new JSON;
$result = array('error' => '', 'content' => '', 'need_insure' => 0);
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}else if(!check_consignee_info($consignee, $flow_type)){
$result['error'] = '請先設置收貨地址喲,親!';
}
else
{
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
/* 取得訂單信息 */
$order = flow_order_info();
$recid = (isset($_REQUEST['recid'])) ? intval($_REQUEST['recid']) : 0;
$suppid = (isset($_REQUEST['suppid'])) ? intval($_REQUEST['suppid']) : 0;
if($recid){
$order['shipping_pay'][$suppid] = $recid;
}
$_SESSION['flow_order'] = $order;
//$order['shipping_id'] = intval($_REQUEST['shipping']);
//$regions = array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district']);
//$shipping_info = shipping_area_info($order['shipping_id'], $regions);
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
/* 取得可以得到的積分和紅包 */
$smarty->assign('total_integral', cart_amount(false, $flow_type) - $total['bonus'] - $total['integral_money']);
//$smarty->assign('total_bonus', price_format(get_total_bonus(), false));
$smarty->assign('total_bonus', price_format(get_total_bonus($total['goods_price_supplier']), false));
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
/* 預售標誌 */
if ($flow_type == CART_PRE_SALE_GOODS)
{
$smarty->assign('is_pre_sale', 1);
}
$result['cod_fee'] = $shipping_info['pay_fee'];
if (strpos($result['cod_fee'], '%') === false)
{
$result['cod_fee'] = price_format($result['cod_fee'], false);
}
//$result['need_insure'] = ($shipping_info['insure'] > 0 && !empty($order['need_insure'])) ? 1 : 0;
$result['content'] = $smarty->fetch('library/order_total.lbi');
/* 代碼增加_start By www.0769web.net */
//$result['supplier_shipping'] = $smarty->fetch('library/order_supplier_shipping.lbi');
/* 代碼增加_end By www.0769web.net */
$result['suppid'] = $suppid;
$result['picktxt'] = '';
if(is_pups($recid)){
if(isset($consignee['city']) && intval($consignee['city'])>0){
$pickinfo = get_pickup_info(intval($consignee['city']),$suppid);
if($pickinfo){
$result['picktxt'] = "自提點:".$pickinfo[0]['shop_name']."修改";
}
foreach($pickinfo as $pkey=>$pval){
if($consignee['district'] == $pval['district_id']){
$result['picktxt'] = "自提點:".$pval['shop_name']."修改";
}
}
}
}
}
echo $json->encode($result);
exit;
}
elseif ($_REQUEST['step'] == 'select_insure')
{
/*------------------------------------------------------ */
//-- 選定/取消配送的保價
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$json = new JSON;
$result = array('error' => '', 'content' => '', 'need_insure' => 0);
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || !check_consignee_info($consignee, $flow_type))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}
else
{
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
/* 取得訂單信息 */
$order = flow_order_info();
$order['need_insure'] = intval($_REQUEST['insure']);
/* 保存 session */
$_SESSION['flow_order'] = $order;
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
/* 取得可以得到的積分和紅包 */
$smarty->assign('total_integral', cart_amount(false, $flow_type) - $total['bonus'] - $total['integral_money']);
$smarty->assign('total_bonus', price_format(get_total_bonus(), false));
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
$result['content'] = $smarty->fetch('library/order_total.lbi');
}
echo $json->encode($result);
exit;
}
elseif ($_REQUEST['step'] == 'select_payment')
{
/*------------------------------------------------------ */
//-- 改變支付方式
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$json = new JSON;
$result = array('error' => '', 'content' => '', 'need_insure' => 0, 'payment' => 1);
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || (!check_consignee_info($consignee, $flow_type)))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}
else
{
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
/* 取得訂單信息 */
$order = flow_order_info();
$order['pay_id'] = intval($_REQUEST['payment']);
$payment_info = payment_info($order['pay_id']);
$result['pay_code'] = $payment_info['pay_code'];
/*餘額額支付密碼_添加_START_www.0769web.net*/
$order['pay_code'] = $payment_info['pay_code'];
/*餘額額支付密碼_添加_END_www.0769web.net*/
/* 代碼增加_start By www.0769web.net */
/* 自提功能
判斷用户選擇的支付方式是否為自提功能關聯的支付方式
*/
$result['show_pickup_point'] = $payment_info['pay_code'] == $_CFG['pickup_code'] ? 1 : 0;
/* 代碼增加_end By www.0769web.net */
/* 保存 session */
$_SESSION['flow_order'] = $order;
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
/* 取得可以得到的積分和紅包 */
$smarty->assign('total_integral', cart_amount(false, $flow_type) - $total['bonus'] - $total['integral_money']);
$smarty->assign('total_bonus', price_format(get_total_bonus(), false));
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
$result['content'] = $smarty->fetch('library/order_total.lbi');
}
echo $json->encode($result);
exit;
}
/*餘額額支付密碼_添加_START_www.0769web.net*/
elseif ($_REQUEST['step'] == 'check_surplus_open')
{
$pay_code = $_SESSION['flow_order']['pay_code'];
$surplus = $_SESSION['flow_order']['surplus'];
if($pay_code == 'balance'||$surplus > 0){
$sql = 'SELECT `is_surplus_open`'.
'FROM '.$ecs->table('users').
'WHERE `user_id` = \''.$_SESSION['user_id'].'\''.
'LIMIT 1';
$is_surplus_open = $GLOBALS['db']->getOne($sql);
echo $is_surplus_open;
}
else
{
echo '0';
}
exit;
}
elseif ($_REQUEST['step'] == 'verify_surplus_password')
{
$sql = 'SELECT COUNT( * )'.
'FROM '.$ecs->table('users').
'WHERE `user_id` = \''.$_SESSION['user_id'].'\''.
'AND `surplus_password` = \''.md5($_GET['surplus_password']).'\'';
$count = $GLOBALS['db']->getOne($sql);
echo $count;
exit;
}
/*餘額額支付密碼_添加_END_www.0769web.net*/
elseif ($_REQUEST['step'] == 'select_pack')
{
/*------------------------------------------------------ */
//-- 改變商品包裝
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$json = new JSON;
$result = array('error' => '', 'content' => '', 'need_insure' => 0);
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || !check_consignee_info($consignee, $flow_type))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}
else
{
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
/* 取得訂單信息 */
$order = flow_order_info();
$order['pack_id'] = intval($_REQUEST['pack']);
/* 保存 session */
$_SESSION['flow_order'] = $order;
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
/* 取得可以得到的積分和紅包 */
$smarty->assign('total_integral', cart_amount(false, $flow_type) - $total['bonus'] - $total['integral_money']);
$smarty->assign('total_bonus', price_format(get_total_bonus(), false));
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
$result['content'] = $smarty->fetch('library/order_total.lbi');
}
echo $json->encode($result);
exit;
}
elseif ($_REQUEST['step'] == 'select_card')
{
/*------------------------------------------------------ */
//-- 改變賀卡
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$json = new JSON;
$result = array('error' => '', 'content' => '', 'need_insure' => 0);
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || !check_consignee_info($consignee, $flow_type))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}
else
{
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
/* 取得訂單信息 */
$order = flow_order_info();
$order['card_id'] = intval($_REQUEST['card']);
/* 保存 session */
$_SESSION['flow_order'] = $order;
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
/* 取得可以得到的積分和紅包 */
$smarty->assign('total_integral', cart_amount(false, $flow_type) - $order['bonus'] - $total['integral_money']);
$smarty->assign('total_bonus', price_format(get_total_bonus(), false));
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
$result['content'] = $smarty->fetch('library/order_total.lbi');
}
echo $json->encode($result);
exit;
}
elseif ($_REQUEST['step'] == 'change_surplus')
{
/*------------------------------------------------------ */
//-- 改變餘額
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$surplus = floatval($_GET['surplus']);
//$result['suppid'] = $suppid = intval($_GET['suppid']);
$user_info = user_info($_SESSION['user_id']);
/* 取得訂單信息 */
$order = flow_order_info();
//$surplus_info = (isset($order['surplus_info'])) ? $order['surplus_info'] : array();
//$surplus_info[$suppid] = $surplus;
//if ($user_info['user_money'] + $user_info['credit_line'] < array_sum($surplus_info))
if ($user_info['user_money'] + $user_info['credit_line'] < $surplus)
{
$result['error'] = $_LANG['surplus_not_enough'];
}
else
{
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || !check_consignee_info($consignee, $flow_type))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}
else
{
//$order['surplus_info'] = $surplus_info;
$order['surplus'] = $surplus;//array_sum($surplus_info);//$surplus;
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
if($total['amount_formated'] <= 0){
$result['surplus'] = $total['surplus_formated'];
$result['show'] = true;
}else{
$result['surplus'] = $surplus;
$result['show'] = false;
}
$result['content'] = $smarty->fetch('library/order_total.lbi');
}
}
$json = new JSON();
die($json->encode($result));
}
elseif ($_REQUEST['step'] == 'change_integral')
{
/*------------------------------------------------------ */
//-- 改變積分
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$points = floatval($_GET['points']);
$result['suppid'] = $suppid = intval($_GET['suppid']);
$user_info = user_info($_SESSION['user_id']);
/* 取得訂單信息 */
$order = flow_order_info();
$integral_info = (isset($order['integral_info'])) ? $order['integral_info'] : array();
$integral_info[$suppid] = $points;
$order['integral_info'] = $integral_info;
$flow_points = flow_available_points(); // 該訂單允許使用的積分
$user_points = $user_info['pay_points']; // 用户的積分總數
//所有訂單的總積分
$points_all = array_sum($integral_info);
if ($points_all > $user_points)
{
$result['error'] = $_LANG['integral_not_enough'];
}
elseif ($points > $flow_points[$suppid])
{
$result['error'] = sprintf($_LANG['integral_too_much'], $flow_points[$suppid]);
}
else
{
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
$order['integral'] = $points_all;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || !check_consignee_info($consignee, $flow_type))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}
else
{
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
$smarty->assign('config', $_CFG);
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
$result['content'] = $smarty->fetch('library/order_total.lbi');
$result['error'] = '';
}
}
$json = new JSON();
die($json->encode($result));
}
elseif ($_REQUEST['step'] == 'change_bonus')
{
/*------------------------------------------------------ */
//-- 改變紅包
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$result = array('error' => '', 'content' => '');
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || !check_consignee_info($consignee, $flow_type))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}
else
{
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
$result['suppid'] = $suppid = intval($_GET['suppid']);
/* 取得訂單信息 */
$order = flow_order_info();
$bonus = bonus_info(intval($_GET['bonus']));
if ((!empty($bonus) && $bonus['user_id'] == $_SESSION['user_id'] && $bonus['supplier_id'] == $suppid) || intval($_GET['bonus']) == 0)
{
$bonus_info = (isset($order['bonus_id_info'])) ? $order['bonus_id_info'] : array();
if(intval($_GET['bonus']) == 0){
unset($bonus_info[$suppid]);
}else{
$bonus_info[$suppid] = $_GET['bonus'];
}
$order['bonus_id_info'] = $bonus_info = array_filter($bonus_info);
$order['bonus_id'] = implode(',',$bonus_info);//intval($_GET['bonus']);
$bonus_sn_info = (isset($order['bonus_sn_info'])) ? $order['bonus_sn_info'] : array();
unset($bonus_sn_info[$suppid]);
$order['bonus_sn_info'] = $bonus_sn_info = array_filter($bonus_sn_info);
$order['bonus_sn'] = implode(',',$bonus_sn_info);
}
else
{
$order['bonus_id'] = 0;
$result['error'] = $_LANG['invalid_bonus'];
}
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
$result['content'] = $smarty->fetch('library/order_total.lbi');
}
$json = new JSON();
die($json->encode($result));
}
elseif ($_REQUEST['step'] == 'change_needinv')
{
/*------------------------------------------------------ */
//-- 改變發票的設置
/*------------------------------------------------------ */
include_once('includes/cls_json.php');
$result = array('error' => '', 'content' => '');
$json = new JSON();
$_GET['inv_type'] = !empty($_GET['inv_type']) ? json_str_iconv(urldecode($_GET['inv_type'])) : '';
$_GET['invPayee'] = !empty($_GET['invPayee']) ? json_str_iconv(urldecode($_GET['invPayee'])) : '';
$_GET['inv_content'] = !empty($_GET['inv_content']) ? json_str_iconv(urldecode($_GET['inv_content'])) : '';
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || !check_consignee_info($consignee, $flow_type))
{
$result['error'] = $_LANG['no_goods_in_cart'];
die($json->encode($result));
}
else
{
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
/* 取得訂單信息 */
$order = flow_order_info();
if (isset($_GET['need_inv']) && intval($_GET['need_inv']) == 1)
{
$order['need_inv'] = 1;
$order['inv_type'] = trim(stripslashes($_GET['inv_type']));
$order['inv_payee'] = trim(stripslashes($_GET['inv_payee']));
$order['inv_content'] = trim(stripslashes($_GET['inv_content']));
}
else
{
$order['need_inv'] = 0;
$order['inv_type'] = '';
$order['inv_payee'] = '';
$order['inv_content'] = '';
}
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
$smarty->assign('total', $total);
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
die($smarty->fetch('library/order_total.lbi'));
}
}
elseif ($_REQUEST['step'] == 'change_oos')
{
/*------------------------------------------------------ */
//-- 改變缺貨處理時的方式
/*------------------------------------------------------ */
/* 取得訂單信息 */
$order = flow_order_info();
$order['how_oos'] = intval($_GET['oos']);
/* 保存 session */
$_SESSION['flow_order'] = $order;
}
elseif ($_REQUEST['step'] == 'check_surplus')
{
/*------------------------------------------------------ */
//-- 檢查用户輸入的餘額
/*------------------------------------------------------ */
$surplus = floatval($_GET['surplus']);
$user_info = user_info($_SESSION['user_id']);
if (($user_info['user_money'] + $user_info['credit_line'] < $surplus))
{
die($_LANG['surplus_not_enough']);
}
exit;
}
elseif ($_REQUEST['step'] == 'check_integral')
{
/*------------------------------------------------------ */
//-- 檢查用户輸入的餘額
/*------------------------------------------------------ */
$points = floatval($_GET['integral']);
$user_info = user_info($_SESSION['user_id']);
$flow_points = flow_available_points(); // 該訂單允許使用的積分
$user_points = $user_info['pay_points']; // 用户的積分總數
if ($points > $user_points)
{
die($_LANG['integral_not_enough']);
}
if ($points > $flow_points)
{
die(sprintf($_LANG['integral_too_much'], $flow_points));
}
exit;
}
/*------------------------------------------------------ */
//-- 完成所有訂單操作,提交到數據庫
/*------------------------------------------------------ */
elseif ($_REQUEST['step'] == 'done')
{
include_once('includes/lib_clips.php');
include_once('includes/lib_payment.php');
/* 代碼增加_start By www.0769web.net */
$id_ext ="";
if ($_SESSION['sel_cartgoods'])
{
$id_ext = " AND rec_id in (". $_SESSION['sel_cartgoods'] .") ";
}
/* 代碼增加_end By www.0769web.net */
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 代碼增加_end By www.0769web.net */
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";
$sql_where .= $id_ext;
/* 檢查購物車中是否有商品 */
$sql = "SELECT COUNT(*) FROM " . $ecs->table('cart') .
" WHERE $sql_where " .
"AND parent_id = 0 AND is_gift = 0 AND rec_type = '$flow_type'";
/* 代碼增加_end By www.0769web.net */
if ($db->getOne($sql) == 0)
{
show_message($_LANG['no_goods_in_cart'], '', '', 'warning');
}
$sql = "SELECT * FROM ".$ecs->table('cart')."WHERE $sql_where AND parent_id = 0 AND is_gift > 0 AND rec_type = '$flow_type'";
$res = $db->getAll($sql);
foreach($res as $key=>$value)
{
$goodsid = $value['goods_id'];
$sql = "SELECT goods_number FROM ".$ecs->table('goods')."WHERE goods_id = $goodsid";
$rec = $db->getOne($sql);
if($value['goods_number'] > $rec)
{
show_message("贈品 ".$value['goods_name']." 已經贈送完!");
}
}
/* 檢查商品庫存 */
/* 如果使用庫存,且下訂單時減庫存,則減少庫存 */
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE)
{
$cart_goods_stock = get_cart_goods($id_ext);
$_cart_goods_stock = array();
foreach ($cart_goods_stock['goods_list'] as $values)
{
foreach ($values['goods_list'] as $value)
{
$_cart_goods_stock[$value['rec_id']] = $value['goods_number'];
}
}
flow_cart_stock($_cart_goods_stock);
unset($cart_goods_stock, $_cart_goods_stock);
}
/*
* 檢查用户是否已經登錄
* 如果用户已經登錄了則檢查是否有默認的收貨地址
* 如果沒有登錄則跳轉到登錄和註冊頁面
*/
if (empty($_SESSION['direct_shopping']) && $_SESSION['user_id'] == 0)
{
/* 用户沒有登錄且沒有選定匿名購物,轉向到登錄頁面 */
ecs_header("Location: flow_pre_sale.php?step=login\n");
exit;
}
$consignee = get_consignee($_SESSION['user_id']);
/* 檢查收貨人信息是否完整 */
if (!check_consignee_info($consignee, $flow_type))
{
/* 如果不完整則轉向到收貨人信息填寫界面 */
ecs_header("Location: flow_pre_sale.php?step=consignee\n");
exit;
}
/* 訂單中的商品 */
$cart_goods = cart_goods($flow_type);
$cart_goods_new = array();
if(count($cart_goods)>0){
foreach($cart_goods as $key => $val){
$cart_goods_new[$val['supplier_id']]['goodlist'][$val['rec_id']] = $val;
$cart_goods_new[$val['supplier_id']]['referer'] = $val['seller'];
}
}
//echo "";
//print_r($cart_goods);
//print_r($cart_goods_new);
if (empty($cart_goods))
{
show_message($_LANG['no_goods_in_cart'], $_LANG['back_home'], './', 'warning');
}
/* 檢查商品總額是否達到最低限購金額 */
if ($flow_type == CART_GENERAL_GOODS && cart_amount(true, CART_GENERAL_GOODS) < $_CFG['min_goods_amount'])
{
show_message(sprintf($_LANG['goods_amount_not_enough'], price_format($_CFG['min_goods_amount'], false)));
}
//獲取餘額支付的id
$sql = 'SELECT pay_id ' .
' FROM ' . $GLOBALS['ecs']->table('payment') .
' WHERE enabled = 1 and pay_code="balance"';
$pay_balance_id = $GLOBALS['db']->getOne($sql);
/*
$orderinfo = flow_order_info();
echo "";
print_r($orderinfo);
print_r($_POST);
exit;*/
$_POST['how_oos'] = isset($_POST['how_oos']) ? intval($_POST['how_oos']) : 0;
$_POST['card_message'] = isset($_POST['card_message']) ? compile_str($_POST['card_message']) : '';
$_POST['inv_type'] = !empty($_POST['inv_type']) ? compile_str($_POST['inv_type']) : '';
$_POST['inv_payee'] = isset($_POST['inv_payee']) ? compile_str($_POST['inv_payee']) : '';
$_POST['inv_content'] = isset($_POST['inv_content']) ? compile_str($_POST['inv_content']) : '';
$_POST['postscript'] = isset($_POST['postscript']) ? compile_str($_POST['postscript']) : '';
$order_integral = isset($_POST['integral']) ? $_POST['integral'] : array();
$order_bonus_id = isset($_POST['bonus']) ? $_POST['bonus'] : array();
$order_bonus_sn = isset($_POST['bonus_sn']) ? $_POST['bonus_sn'] : array();
$order_surplus = isset($_POST['surplus']) ? $_POST['surplus'] : 0;
//此訂單拆分訂單後的訂單信息
$order_info = array();
//組裝拆分的子訂單數組信息start
foreach ($cart_goods_new as $ckey=>$cval){
$cart_goods = $cval['goodlist'];
$order = array(
//'shipping_id' => intval($_POST['shipping']),
'pay_id' => intval($_POST['payment']),
'pack_id' => isset($_POST['pack']) ? intval($_POST['pack']) : 0,
'card_id' => isset($_POST['card']) ? intval($_POST['card']) : 0,
'card_message' => trim($_POST['card_message']),
'surplus' => $order_surplus,//isset($order_surplus[$ckey]) ? floatval($order_surplus[$ckey]) : 0.00,
'integral' => isset($order_integral[$ckey]) ? intval($order_integral[$ckey]) : 0,
'bonus_id' => isset($order_bonus_id[$ckey]) ? intval($order_bonus_id[$ckey]) : 0,
'need_inv' => empty($_POST['need_inv']) ? 0 : 1,
/*增值税發票_刪除_START_www.0769web.net*/
//'inv_type' => $_POST['inv_type'],
//'inv_payee' => trim($_POST['inv_payee']),
//'inv_content' => $_POST['inv_content'],
/*增值税發票_刪除_END_www.0769web.net*/
'postscript' => trim($_POST['postscript']),
'how_oos' => isset($_LANG['oos'][$_POST['how_oos']]) ? addslashes($_LANG['oos'][$_POST['how_oos']]) : '',
'need_insure' => isset($_POST['need_insure']) ? intval($_POST['need_insure']) : 0,
'user_id' => $_SESSION['user_id'],
'add_time' => gmtime(),
'order_status' => OS_UNCONFIRMED,
'shipping_status' => SS_UNSHIPPED,
'pay_status' => PS_UNPAYED,
'agency_id' => get_agency_by_regions(array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district'])),
'supplier_id' => $ckey
);
$order['defaultbank'] = $_POST['www_mb5_com_cn_bank'] ? trim($_POST['www_mb5_com_cn_bank']) : "";
/*增值税發票_添加_START_www.0769web.net*/
/*發票信息*/
if($_REQUEST['inv_type'] == 'normal_invoice')
{
$inv_arr = array('inv_type','inv_payee_type','inv_payee','inv_content');
if(isset($_REQUEST['inv_payee_type']) && $_REQUEST['inv_payee_type'] == 'individual')
{
$order['inv_payee'] = '個人';
}
}
elseif($_REQUEST['inv_type'] == 'vat_invoice')
{
$inv_arr = array('inv_type','inv_content','vat_inv_company_name',
'vat_inv_taxpayer_id','vat_inv_registration_address','vat_inv_registration_phone',
'vat_inv_deposit_bank','vat_inv_bank_account','inv_consignee_name',
'inv_consignee_phone','inv_consignee_province','inv_consignee_city',
'inv_consignee_district','inv_consignee_address');
}
foreach($inv_arr as $key)
{
$value = !empty($_REQUEST[$key])?trim($_REQUEST[$key]):'';;
if(!empty($value))
{
$order[$key] = $value;
}
}
/*增值税發票_添加_END_www.0769web.net*/
/* 擴展信息 */
if (isset($_SESSION['flow_type']) && intval($_SESSION['flow_type']) != CART_GENERAL_GOODS)
{
$order['extension_code'] = $_SESSION['extension_code'];
$order['extension_id'] = $_SESSION['extension_id'];
}
else
{
$order['extension_code'] = '';
$order['extension_id'] = 0;
}
/*檢查配送方式是否選擇*/
// 如果是虛擬商品不需要選擇配送方式
if( $_SESSION['extension_code'] != 'virtual_good'){
if(!isset($_POST['pay_ship'][$ckey])){
show_message('請選擇各個商家的配送方式!');
}else{
$shipid = $db->getOne("select shipping_id from ".$ecs->table('shipping')." where shipping_id=".$_POST['pay_ship'][$ckey]." and supplier_id=".$ckey);
if($shipid){
$order['shipping_id'] = intval($shipid);
}else{
show_message('配送方式存在不可用,請重新選擇!');
}
}
}
/* 檢查積分餘額是否合法 */
$user_id = $_SESSION['user_id'];
if ($user_id > 0)
{
$user_info = user_info($user_id);
$order['surplus'] = min($order['surplus'], $user_info['user_money'] + $user_info['credit_line']);
if ($order['surplus'] < 0)
{
$order['surplus'] = 0;
}
// 查詢用户有多少積分
$flow_points = flow_available_points(); // 該訂單允許使用的積分
$user_points = $user_info['pay_points']; // 用户的積分總數
$order['integral'] = min($order['integral'], $user_points, $flow_points[$ckey]);
if ($order['integral'] < 0)
{
$order['integral'] = 0;
}
}
else
{
$order['surplus'] = 0;
$order['integral'] = 0;
}
/* 檢查紅包是否存在 */
if ($order['bonus_id'] > 0)
{
$bonus = bonus_info($order['bonus_id']);
//|| $bonus['min_goods_amount'] > cart_amount_new(array_keys($cart_goods),true, $flow_type)
if (empty($bonus) || $bonus['user_id'] != $user_id || $bonus['order_id'] > 0 )
{
$order['bonus_id'] = 0;
}else{
}
}
elseif (isset($_POST['bonus_sn'][$ckey]))
{
$bonus_sn = intval($_POST['bonus_sn'][$ckey]);
$bonus = bonus_info(0, $bonus_sn);
$now = gmtime();
//|| $bonus['min_goods_amount'] > cart_amount_new(array_keys($cart_goods),true, $flow_type)
if (empty($bonus) || $bonus['user_id'] > 0 || $bonus['order_id'] > 0 || $now > $bonus['use_end_date'])
{
}
else
{
if ($user_id > 0)
{
$sql = "UPDATE " . $ecs->table('user_bonus') . " SET user_id = '$user_id' WHERE bonus_id = '$bonus[bonus_id]' LIMIT 1";
$db->query($sql);
}
$order['bonus_id'] = '';//$bonus['bonus_id'];
//$order['bonus_id'] = $bonus['bonus_id'];
$order['bonus_sn'] = $bonus_sn;
}
}
/* 判斷是不是實體商品 */
foreach ($cart_goods AS $val)
{
/* 統計實體商品的個數 */
if ($val['is_real'])
{
$is_real_good=1;
}
}
if(isset($is_real_good))
{
$sql="SELECT shipping_id FROM " . $ecs->table('shipping') . " WHERE shipping_id=".$order['shipping_id'] ." AND enabled =1";
if(!$db->getOne($sql))
{
show_message($_LANG['flow_no_shipping']);
}
}
/* 收貨人信息 */
foreach ($consignee as $key => $value)
{
$order[$key] = addslashes($value);
}
/* 代碼增加_start By www.0769web.net */
$order['best_time'] = isset($_POST['best_time']) ? trim($_POST['best_time']) : '';
/* 代碼增加_end By www.0769web.net */
//配送方式的錢算到裏面
$order['shipping_pay'][$ckey] = $_POST['pay_ship'][$ckey];
/* 訂單中的總額 */
$total = order_fee($order, $cart_goods, $consignee);
unset($order['shipping_pay'][$ckey]);// 去掉這條信息以免影響下訂單操作
$order['bonus'] = $total['bonus'];
$order['goods_amount'] = $total['goods_price'];
$order['discount'] = $total['discount'];
$order['surplus'] = $total['surplus'];
if($order['surplus'] > 0){
//前台的總餘額減去每一個平台方或入駐商家使用的餘額,結果做為下一個商家使用的餘額
$order_surplus = $order_surplus - $order['surplus'];
}
if($total['amount'] <= 0){
//餘額全部支付,讓支付方式修改為餘額支付
$order['pay_id'] = $pay_balance_id;//餘額支付方式的id
}
$order['tax'] = $total['tax'];
// 購物車中的商品能享受紅包支付的總額
$discount_amout = compute_discount_amount($ckey);
// 紅包和積分最多能支付的金額為商品總額
$temp_amout = $order['goods_amount'] - $discount_amout;
if ($temp_amout <= 0)
{
$order['bonus_id'] = 0;
}
/* 配送方式 */
if ($order['shipping_id'] > 0)
{
$shipping = shipping_info($order['shipping_id']);
$order['shipping_name'] = addslashes($shipping['shipping_name']);
//如果是門店自提,訂單需要做特殊標識
if($shipping['shipping_code'] == 'pups'){
$order['is_pickup'] = $order['shipping_id'];
}
}
$order['shipping_fee'] = $total['shipping_fee'];
$order['insure_fee'] = $total['shipping_insure'];
/* 支付方式 */
if ($order['pay_id'] > 0)
{
$payment = payment_info($order['pay_id']);
$order['pay_name'] = addslashes($payment['pay_name']);
}else{
show_message('支付方式必須選擇一項!');
}
$order['pay_fee'] = $total['pay_fee'];
$order['cod_fee'] = $total['cod_fee'];
/* 商品包裝 */
if ($order['pack_id'] > 0)
{
$pack = pack_info($order['pack_id']);
$order['pack_name'] = addslashes($pack['pack_name']);
}
$order['pack_fee'] = $total['pack_fee'];
/* 祝福賀卡 */
if ($order['card_id'] > 0)
{
$card = card_info($order['card_id']);
$order['card_name'] = addslashes($card['card_name']);
}
$order['card_fee'] = $total['card_fee'];
$order['order_amount'] = number_format($total['amount'], 2, '.', '');
/*增值税發票_添加_START_www.0769web.net*/
/*發票金額*/
$order['inv_money'] = $order['order_amount'] ;
/*增值税發票_添加_END_www.0769web.net*/
/* 如果全部使用餘額支付,檢查餘額是否足夠 */
if ($payment['pay_code'] == 'balance' && $order['order_amount'] > 0)
//if ($order['order_amount'] > 0)
{
if($order['surplus'] >0) //餘額支付裏如果輸入了一個金額
{
$order['order_amount'] = $order['order_amount'] + $order['surplus'];
$order['surplus'] = 0;
}
if ($order['order_amount'] > ($user_info['user_money'] + $user_info['credit_line']))
{
show_message($_LANG['balance_not_enough']);
}
else
{
$order['surplus'] = $order['order_amount'];
//是否開啓餘額變動給客户發短信-用户消費
if($_CFG['sms_user_money_change'] == 1)
{
$sql = "SELECT user_money,mobile_phone FROM " . $GLOBALS['ecs']->table('users') . " WHERE user_id = '" . $order['user_id'] . "'";
$users = $GLOBALS['db']->getRow($sql);
$content = sprintf($_CFG['sms_use_balance_reduce_tpl'],date("Y-m-d H:i:s",gmtime()),$order['order_amount'],$users['user_money'],$_CFG['sms_sign']);
if($users['mobile_phone'])
{
require_once (ROOT_PATH . 'sms/sms.php');
sendSMS($users['mobile_phone'],$content);
}
}
$order['order_amount'] = 0;
}
}
/* 如果訂單金額為0(使用餘額或積分或紅包支付),修改訂單狀態為已確認、已付款 */
if ($order['order_amount'] <= 0)
{
$order['order_status'] = OS_CONFIRMED;
$order['confirm_time'] = gmtime();
$order['pay_status'] = PS_PAYED;
$order['pay_time'] = gmtime();
$order['order_amount'] = 0;
//$order['order_amount'] = $order['surplus'];//把支付的金額存進order_amount這個中
}
$order['integral_money'] = $total['integral_money'];
$order['integral'] = $total['integral'];
if ($order['extension_code'] == 'exchange_goods')
{
$order['integral_money'] = 0;
$order['integral'] = $total['exchange_integral'];
}
$order['from_ad'] = !empty($_SESSION['from_ad']) ? $_SESSION['from_ad'] : '0';
//$order['referer'] = !empty($_SESSION['referer']) ? addslashes($_SESSION['referer']) : '';
$order['referer'] = $cval['referer'];
/* 記錄擴展信息 */
if ($flow_type != CART_GENERAL_GOODS)
{
$order['extension_code'] = $_SESSION['extension_code'];
$order['extension_id'] = $_SESSION['extension_id'];
}
$affiliate = json_decode($_CFG['affiliate'],true);
if(isset($affiliate['on']) && $affiliate['on'] == 1 && $affiliate['config']['separate_by'] == 1)
{
//推薦訂單分成
$parent_id = get_affiliate();
if($user_id == $parent_id)
{
$parent_id = 0;
}
}
elseif(isset($affiliate['on']) && $affiliate['on'] == 1 && $affiliate['config']['separate_by'] == 0)
{
//推薦註冊分成
$parent_id = 0;
}
else
{
//分成功能關閉
$parent_id = 0;
}
$order['parent_id'] = $parent_id;
/* 代碼增加_start By www.0769web.net */
/* 自提功能
獲取訂單確認頁選擇的自提點
*/
$pickup_point = isset($_POST['pickup_point'][$ckey]) ? $_POST['pickup_point'][$ckey] : 0;
if($pickup_point > 0)
$order['is_pickup'] = 1;
else
$order['is_pickup'] = 0;
$order['pickup_point'] = $pickup_point;
/* 代碼增加_end By www.0769web.net */
//$order['order_sn'] = get_order_sn();
//file_put_contents('./inserttt'.$order['order_sn'].'.txt',var_export($order,true));
if(count($order)>0){
$order_info[$ckey] = $order;
}
unset($order);
}
//組裝拆分的子訂單數組信息end
//判斷是否拆分為多個訂單,多個訂單就生成父訂單id號
$del_patent_id = 0;
if(count($order_info)>1){
$error_no = 0;
do
{
$save['order_sn'] = get_order_sn(); //獲取新訂單號
$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $save, 'INSERT');
$error_no = $GLOBALS['db']->errno();
if ($error_no > 0 && $error_no != 1062)
{
die($GLOBALS['db']->errorMsg());
}
}
while ($error_no == 1062); //如果是訂單號重複則重新提交數據
$del_patent_id = $parent_order_id = $db->insert_id();
}else{
$parent_order_id = 0;
}
$all_order_amount = 0;//記錄訂單所需支付的總金額
//用來展示用的數組數據
$split_order = array();
$split_order['sub_order_count'] = count($order_info);
//生成訂單
//$payment_www_com['www_mb5_com_cn_alipay_bank'] = $_POST['www_mb5_com_cn_bank'] ? trim($_POST['www_mb5_com_cn_bank']) : "www_mb5_com_cn";
foreach($order_info as $ok=>$order){
$cart_goods = $cart_goods_new[$ok]['goodlist'];
$id_ext_new = " AND rec_id in (". implode(',',array_keys($cart_goods)) .") ";
//獲取佣金id
$order['rebate_id'] = get_order_rebate($ok);
//下單來源
$order['froms'] = WEB_FROM;
$order['parent_order_id'] = $parent_order_id;
/* 插入訂單表 */
$error_no = 0;
do
{
$order['order_sn'] = get_order_sn(); //獲取新訂單號
$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT');
$error_no = $GLOBALS['db']->errno();
if ($error_no > 0 && $error_no != 1062)
{
die($GLOBALS['db']->errorMsg());
}
}
while ($error_no == 1062); //如果是訂單號重複則重新提交數據
$new_order_id = $db->insert_id();
$order['order_id'] = $new_order_id;
$parent_order_id = ($parent_order_id>0) ? $parent_order_id : $new_order_id;
/* 插入訂單商品 下面這個SQL有修改 by www.0769web.net 注意末尾那個字段 */
/* 代碼增加_start By www.0769web.net */
$sql = "INSERT INTO " . $ecs->table('order_goods') . "( " .
"order_id, goods_id, goods_name, goods_sn, product_id, goods_number, market_price, cost_price, ".
"goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id, package_attr_id) ".
" SELECT '$new_order_id', goods_id, goods_name, goods_sn, product_id, goods_number, market_price, cost_price, ".
"goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id, package_attr_id ".
" FROM " .$ecs->table('cart') .
" WHERE $sql_where AND rec_type = '$flow_type' $id_ext_new ";
/* 代碼增加_end By www.0769web.net */
$db->query($sql);
/* 修改拍賣活動狀態 */
if ($order['extension_code']=='auction')
{
$sql = "UPDATE ". $ecs->table('goods_activity') ." SET is_finished='2' WHERE act_id=".$order['extension_id'];
$db->query($sql);
}
/* 處理餘額、積分、紅包 */
if ($order['user_id'] > 0 && $order['surplus'] > 0)
{
log_account_change($order['user_id'], $order['surplus'] * (-1), 0, 0, 0, sprintf($_LANG['pay_order'], $order['order_sn']));
//是否開啓餘額變動給客户發短信-用户消費
if($_CFG['sms_user_money_change'] == 1)
{
$sql = "SELECT user_money,mobile_phone FROM " . $GLOBALS['ecs']->table('users') . " WHERE user_id = '" . $order['user_id'] . "'";
$users = $GLOBALS['db']->getRow($sql);
$content = sprintf($_CFG['sms_use_balance_reduce_tpl'],date("Y-m-d H:i:s",gmtime()),$order['surplus'],$users['user_money'],$_CFG['sms_sign']);
if($users['mobile_phone'])
{
require_once (ROOT_PATH . 'sms/sms.php');
sendSMS($users['mobile_phone'],$content);
}
}
}
if ($order['user_id'] > 0 && $order['integral'] > 0)
{
log_account_change($order['user_id'], 0, 0, 0, $order['integral'] * (-1), sprintf($_LANG['pay_order'], $order['order_sn']));
}
if ($order['bonus_id'] > 0 && $temp_amout > 0 )
{
use_bonus($order['bonus_id'], $new_order_id);
}
if($order['bonus_id'] == '')
{
$order['bonus_id'] = $bonus['bonus_id'];
use_bonus($order['bonus_id'], $new_order_id);
}
$split_order['suborder_list'][$ok]['order_sn'] = $order['order_sn'];
$split_order['suborder_list'][$ok]['pay_name'] = $order['pay_name'];
$split_order['suborder_list'][$ok]['shipping_name'] = $order['shipping_name'];
//$split_order['suborder_list'][$ok]['order_amount_formated'] = price_format($order['order_amount']);
//if($order['order_amount'] <=0 && $payment['pay_code'] == 'balance'){//餘額全額支付
if($order['order_amount'] <=0){//餘額全額支付
$split_order['suborder_list'][$ok]['order_amount_formated'] = price_format($order['surplus'],false);
}else{
$split_order['suborder_list'][$ok]['order_amount_formated'] = price_format($order['order_amount'],false);
}
/* 如果使用庫存,且下訂單時減庫存,則減少庫存 */
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE)
{
change_order_goods_storage($order['order_id'], true, SDT_PLACE);
}
//$GLOBALS['db'] -> query("unlock tables");
/* 給商家發郵件 */
/* 增加是否給客服發送郵件選項 */
if ($_CFG['send_service_email'] && $_CFG['service_email'] != '')
{
$tpl = get_mail_template('remind_of_new_order');
$smarty->assign('order', $order);
$smarty->assign('goods_list', $cart_goods);
$smarty->assign('shop_name', $_CFG['shop_name']);
$smarty->assign('send_date', date($_CFG['time_format']));
$content = $smarty->fetch('str:' . $tpl['template_content']);
send_mail($_CFG['shop_name'], $_CFG['service_email'], $tpl['template_subject'], $content, $tpl['is_html']);
}
/* 增加是否給客户發送郵件選項 add by 68shop.com */
if ($consignee['email'] != '')
{
$tpl = get_mail_template('order_confirm');
$smarty->assign('order', $order);
$smarty->assign('goods_list', $cart_goods);
$smarty->assign('shop_name', $_CFG['shop_name']);
$smarty->assign('send_date', date($_CFG['time_format']));
$content = $smarty->fetch('str:' . $tpl['template_content']);
send_mail($_CFG['shop_name'], $consignee['email'], $tpl['template_subject'], $content, $tpl['is_html']);
}
/* 處理虛擬團購商品 */
/* 如果訂單金額為0 處理虛擬卡 */
if ($order['order_amount'] <= 0)
{
/* 代碼增加_start By www.0769web.net */
$sql = "SELECT goods_id, goods_name,extension_code, goods_attr_id, goods_number AS num FROM ".
$GLOBALS['ecs']->table('cart') .
" WHERE is_real = 0 ".
" AND $sql_where AND rec_type = '$flow_type'";
/* 代碼增加_end By www.0769web.net */
$res = $GLOBALS['db']->getAll($sql);
$virtual_goods = array();
$virtual_goods_num = 0;
foreach ($res AS $row)
{
/* 代碼增加_start By www.0769web.net _sunlizhi*/
// if($row['extension_code'] == 'virtual_good'){
// $virtual_goods_num = $virtual_goods_num+1;
// }
$sqla = "select valid_date,supplier_id from ".$GLOBALS['ecs']->table('goods') ." where goods_id=".$row['goods_id'];
$goods_info = $GLOBALS['db']->getRow($sqla);
$valid_date = $goods_info['valid_date'];
$supplier_id = $goods_info['supplier_id'];
/* 代碼增加_end By www.0769web.net _sunlizhi*/
$virtual_goods[$row['extension_code']][] = array('goods_id' => $row['goods_id'], 'goods_attr_id'=>$row['goods_attr_id'], 'goods_name' => $row['goods_name'], 'num' => $row['num'],'valid_date'=>$valid_date,'supplier_id'=>$supplier_id,'mobile_phone'=>$_REQUEST['mobile_phone']);
}
if ($virtual_goods AND $flow_type != CART_GROUP_BUY_GOODS)
{
/* 虛擬卡發貨 */
if (virtual_goods_ship($virtual_goods,$msg, $order['order_sn'], true))
{
//card_send_sms($virtual_goods);
foreach($virtual_goods['virtual_good'] as $key=>$val){
if($val['supplier_id']){
$supplier_name = $GLOBALS['db']->getOne("select supplier_name from ".$GLOBALS['ecs']->table('supplier')." where supplier_id = $val[supplier_id]");
}else{
$supplier_name = '網站自營';
}
$card = $GLOBALS['db']->getAll("select card_sn from ".$GLOBALS['ecs']->table('virtual_goods_card')." where order_sn='".$order['order_sn']."'");
require_once (ROOT_PATH . 'sms/sms.php');
foreach($card as $k=>$v){
$card_sn .= $v['card_sn'].", ";
}
$content = sprintf($_LANG['mobile_virtual_template'], $supplier_name, $val['goods_name'], $card_sn,local_date('Y-m-d',$val['valid_date']));
$result = sendSMS($_REQUEST['mobile_phone'],$content);
}
/* 如果沒有實體商品,修改發貨狀態,送積分和紅包 */
$sql = "SELECT COUNT(*)" .
" FROM " . $ecs->table('order_goods') .
" WHERE order_id = '$order[order_id]' " .
" AND is_real = 1";
if ($db->getOne($sql) <= 0)
{
/* 修改訂單狀態 */
update_order($order['order_id'], array('shipping_status' => SS_SHIPPED, 'shipping_time' => gmtime()));
/* 如果訂單用户不為空,計算積分,併發給用户;發紅包 */
if ($order['user_id'] > 0)
{
/* 取得用户信息 */
$user = user_info($order['user_id']);
/* 計算併發放積分 */
$integral = integral_to_give($order);
log_account_change($order['user_id'], 0, 0, intval($integral['rank_points']), intval($integral['custom_points']), sprintf($_LANG['order_gift_integral'], $order['order_sn']));
/* 發放紅包 */
send_order_bonus($order['order_id']);
}
}
}
}
}
//為每一個訂單生成一個支付日誌記錄
$order['log_id'] = insert_pay_log($order['order_id'], $order['order_amount'], PAY_ORDER);
$all_order_amount += $order['order_amount'];
user_uc_call('add_feed', array($order['order_id'], BUY_GOODS)); //推送feed到uc
}
/* 清空購物車 */
clear_cart($flow_type,$id_ext);
/* 清除緩存,否則買了商品,但是前台頁面讀取緩存,商品數量不減少 */
clear_all_files();
//刪除父訂單記錄
if($del_patent_id > 0){
$sql="delete from ".$GLOBALS['ecs']->table('order_info')." where order_id='$del_patent_id' ";
$GLOBALS['db']->query($sql);
}
/* 代碼增加_start By www.0769web.net */
//$split_order = split_order($new_order_id);
$smarty->assign('split_order', $split_order);
/* 如果需要,發短信 */
if(count($split_order['suborder_list']) > 0){
foreach($split_order['suborder_list'] as $key => $val){
$supplier_ids[$key] = $val['order_sn'];
}
}
//$supplier_ids = array_keys();
require_once (ROOT_PATH . 'sms/sms.php');
send_sms($supplier_ids,$_CFG['sms_order_placed_tpl'],1);
$order['order_amount'] = $all_order_amount; //替換為總金額去支付
/* 取得支付信息,生成支付代碼 */
if ($split_order['sub_order_count'] >1)
{
//如果一次下單有多個訂單要支付,生成一個父訂單的日誌
$order['order_sn'] = $parent_order_id;
/* 插入支付日誌 */
$order['log_id'] = insert_pay_log($order['order_sn'], $order['order_amount'], PAY_ORDER);
}else{
$order['order_sn'] = $order['order_id'];
/* 插入支付日誌 */
//$order['log_id'] = insert_pay_log($order['order_id'], $order['order_amount'], PAY_ORDER);
}
if ($order['order_amount'] > 0)
{
$payment = payment_info($order['pay_id']);
include_once('includes/modules/payment/' . $payment['pay_code'] . '.php');
$pay_obj = new $payment['pay_code'];
$pay_online = $pay_obj->get_code($order, unserialize_config($payment['pay_config']));
/* 代碼修改_start By www.0769web.net */
$payment_www_com=unserialize_config($payment['pay_config']);
if ($payment['pay_code']=='alipay_bank')
{
$payment_www_com['www_mb5_com_cn_alipay_bank'] = $_POST['www_mb5_com_cn_bank'] ? trim($_POST['www_mb5_com_cn_bank']) : "www_mb5_com_cn";
$pay_online = $pay_obj->get_code($order, $payment_www_com);
}
/* 代碼修改_end By www.0769web.net */
$order['pay_desc'] = $payment['pay_desc'];
$smarty->assign('pay_online', $pay_online);
}
if(!empty($order['shipping_name']))
{
$order['shipping_name']=trim(stripcslashes($order['shipping_name']));
}
/* 訂單信息 */
$smarty->assign('order', $order);
//$smarty->assign('total', $total);
//$smarty->assign('goods_list', $cart_goods);
//$smarty->assign('order_submit_back', sprintf($_LANG['order_submit_back'], $_LANG['back_home'], $_LANG['goto_user_center'])); // 返回提示
unset($_SESSION['flow_consignee']); // 清除session中保存的收貨人信息
unset($_SESSION['flow_order']);
unset($_SESSION['direct_shopping']);
}
/*------------------------------------------------------ */
//-- 更新購物車
/*------------------------------------------------------ */
elseif ($_REQUEST['step'] == 'update_cart')
{
if (isset($_POST['goods_number']) && is_array($_POST['goods_number']))
{
flow_update_cart($_POST['goods_number']);
}
// show_message($_LANG['update_cart_notice'], $_LANG['back_to_cart'], 'flow_pre_sale.php');
ecs_header("Location: flow_pre_sale.php\n");
exit;
}
/*------------------------------------------------------ */
//-- 刪除購物車中的商品
/*------------------------------------------------------ */
elseif ($_REQUEST['step'] == 'drop_goods')
{
$rec_id = intval($_GET['id']);
flow_drop_cart_goods($rec_id);
ecs_header("Location: flow_pre_sale.php\n");
exit;
}
/* 把優惠活動加入購物車 */
elseif ($_REQUEST['step'] == 'add_favourable')
{
/* 取得優惠活動信息 */
$act_id = intval($_POST['act_id']);
$favourable = favourable_info($act_id);
if (empty($favourable))
{
show_message($_LANG['favourable_not_exist']);
}
/* 判斷用户能否享受該優惠 */
if (!favourable_available($favourable))
{
show_message($_LANG['favourable_not_available']);
}
/* 檢查購物車中是否已有該優惠 */
$cart_favourable = cart_favourable();
if (favourable_used($favourable, $cart_favourable))
{
show_message($_LANG['favourable_used']);
}
/* 贈品(特惠品)優惠 */
if ($favourable['act_type'] == FAT_GOODS)
{
/* 檢查是否選擇了贈品 */
if (empty($_POST['gift']))
{
show_message($_LANG['pls_select_gift']);
}
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";//添加 www.0769web.net
/* 檢查是否已在購物車 */
$sql = "SELECT goods_name" .
" FROM " . $ecs->table('cart') .
" WHERE $sql_where " .
" AND rec_type = '" . CART_GENERAL_GOODS . "'" .
" AND is_gift = '$act_id'" .
" AND goods_id " . db_create_in($_POST['gift']);
$gift_name = $db->getCol($sql);
if (!empty($gift_name))
{
show_message(sprintf($_LANG['gift_in_cart'], join(',', $gift_name)));
}
/* 檢查數量是否超過上限 */
$count = isset($cart_favourable[$act_id]) ? $cart_favourable[$act_id] : 0;
if ($favourable['act_type_ext'] > 0 && $count + count($_POST['gift']) > $favourable['act_type_ext'])
{
show_message($_LANG['gift_count_exceed']);
}
/* 添加贈品到購物車 */
foreach ($favourable['gift'] as $gift)
{
if (in_array($gift['id'], $_POST['gift']))
{
add_gift_to_cart($act_id, $gift['id'], $gift['price']);
}
}
}
elseif ($favourable['act_type'] == FAT_DISCOUNT)
{
add_favourable_to_cart($act_id, $favourable['act_name'], cart_favourable_amount($favourable) * (100 - $favourable['act_type_ext']) / 100);
}
elseif ($favourable['act_type'] == FAT_PRICE)
{
add_favourable_to_cart($act_id, $favourable['act_name'], $favourable['act_type_ext']);
}
/* 刷新購物車 */
ecs_header("Location: flow_pre_sale.php\n");
exit;
}
elseif ($_REQUEST['step'] == 'clear')
{
/* 代碼增加_start By www.0769web.net */
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";
$sql = "DELETE FROM " . $ecs->table('cart') . " WHERE $sql_where";
/* 代碼增加_end By www.0769web.net */
$db->query($sql);
ecs_header("Location:./\n");
}
elseif ($_REQUEST['step'] == 'drop_to_collect')
{
if ($_SESSION['user_id'] > 0)
{
$rec_id = intval($_GET['id']);
$goods_id = $db->getOne("SELECT goods_id FROM " .$ecs->table('cart'). " WHERE rec_id = '$rec_id' AND session_id = '" . SESS_ID . "' ");
$count = $db->getOne("SELECT goods_id FROM " . $ecs->table('collect_goods') . " WHERE user_id = '$_SESSION[user_id]' AND goods_id = '$goods_id'");
if (empty($count))
{
$time = gmtime();
$sql = "INSERT INTO " .$GLOBALS['ecs']->table('collect_goods'). " (user_id, goods_id, add_time)" .
"VALUES ('$_SESSION[user_id]', '$goods_id', '$time')";
$db->query($sql);
}
flow_drop_cart_goods($rec_id);
}
ecs_header("Location: flow_pre_sale.php\n");
exit;
}
/* 驗證紅包序列號 */
elseif ($_REQUEST['step'] == 'validate_bonus')
{
include_once('includes/cls_json.php');
$result = array('error' => '', 'content' => '');
$result['suppid'] = $suppid = intval($_GET['suppid']);
$bonus_sn = intval($_REQUEST['bonus_sn']);
if (is_numeric($bonus_sn) && $bonus_sn>0)
{
$bonus = bonus_info(0, $bonus_sn, $suppid);
}
else
{
$bonus = array();
}
/* 取得購物類型 */
$flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
/* 獲得收貨人信息 */
$consignee = get_consignee($_SESSION['user_id']);
/* 對商品信息賦值 */
$cart_goods = cart_goods($flow_type); // 取得商品列表,計算合計
if (empty($cart_goods) || !check_consignee_info($consignee, $flow_type))
{
$result['error'] = $_LANG['no_goods_in_cart'];
}
else
{
/* 取得購物流程設置 */
$smarty->assign('config', $_CFG);
/* 取得訂單信息 */
$order = flow_order_info();
$bonus_info = (isset($order['bonus_sn_info'])) ? $order['bonus_sn_info'] : array();
$bonus_id_info = (isset($order['bonus_id_info'])) ? $order['bonus_id_info'] : array();
$now = gmtime();
if (!empty($bonus) && $bonus['type_money'] > 0 && empty($bonus['user_id']) && $bonus['supplier_id'] == $suppid && $bonus['order_id'] <= 0 && $now <= $bonus['use_end_date'] && $now >= $bonus['use_start_date'])
{
//$order['bonus_kill'] = $bonus['type_money'];
$now = gmtime();
if ($now > $bonus['use_end_date'])
{
$order['bonus_sn'] = '';
//$order['bonus_sn'] = implode(',',$bonus_info);//$bonus_sn;
$result['error']=$_LANG['bonus_use_expire'];
}
else
{
$bonus_info[$suppid] = $bonus_sn;
$order['bonus_sn_info'] = $bonus_info = array_filter($bonus_info);
$order['bonus_sn'] = implode(',',$bonus_info);//$bonus_sn;
unset($bonus_id_info[$suppid]);
$order['bonus_id_info'] = $bonus_id_info = array_filter($bonus_id_info);
$order['bonus_id'] = implode(',',$bonus_id_info);
/* 計算訂單的費用 */
$total = order_fee($order, $cart_goods, $consignee);
if($total['goods_price']<$bonus['min_goods_amount'])
{
$order['bonus_id'] = '';
/* 重新計算訂單 */
$total = order_fee($order, $cart_goods, $consignee);
$result['error'] = sprintf($_LANG['bonus_min_amount_error'], price_format($bonus['min_goods_amount'], false));
}
$smarty->assign('total', $total);
/* 團購標誌 */
if ($flow_type == CART_GROUP_BUY_GOODS)
{
$smarty->assign('is_group_buy', 1);
}
$result['content'] = $smarty->fetch('library/order_total.lbi');
}
}
else
{
$order['bonus_sn'] = '';//$bonus_sn;
$result['error']=$_LANG['bonus_not_exist'];
}
//echo "";
//print_r($order);
}
$json = new JSON();
die($json->encode($result));
}
/*------------------------------------------------------ */
//-- 添加禮包到購物車
/*------------------------------------------------------ */
elseif ($_REQUEST['step'] == 'add_package_to_cart')
{
include_once('includes/cls_json.php');
$_POST['package_info'] = json_str_iconv($_POST['package_info']);
$result = array('error' => 0, 'message' => '', 'content' => '', 'package_id' => '');
$json = new JSON;
if (empty($_POST['package_info']))
{
$result['error'] = 1;
die($json->encode($result));
}
$package = $json->decode($_POST['package_info']);
/* 如果是一步購物,先清空購物車 */
if ($_CFG['one_step_buy'] == '1')
{
clear_cart();
}
/* 商品數量是否合法 */
if (!is_numeric($package->number) || intval($package->number) <= 0)
{
$result['error'] = 1;
$result['message'] = $_LANG['invalid_number'];
}
else
{
/* 添加到購物車 修改 by www.0769web.net 增加兩個參數 */
if (add_package_to_cart($package->package_id, $package->number, $package->package_attr_id, $package->package_prices))
{
if ($_CFG['cart_confirm'] > 2)
{
$result['message'] = '';
}
else
{
$result['message'] = $_CFG['cart_confirm'] == 1 ? $_LANG['addto_cart_success_1'] : $_LANG['addto_cart_success_2'];
}
$result['content'] = insert_cart_info();
$result['one_step_buy'] = $_CFG['one_step_buy'];
}
else
{
$result['message'] = $err->last_message();
$result['error'] = $err->error_no;
$result['package_id'] = stripslashes($package->package_id);
}
}
$result['confirm_type'] = !empty($_CFG['cart_confirm']) ? $_CFG['cart_confirm'] : 2;
die($json->encode($result));
}
else
{
/* 標記購物流程為普通商品 */
$flow_type = $_SESSION['flow_type'];
if(empty($flow_type))
{
/* 標記購物流程為普通商品 */
$flow_type = $_SESSION['flow_type'] = CART_GENERAL_GOODS;
}
unset($_SESSION['flow_order']);//刪除之前用户對訂單做的選擇
/* 如果是一步購物,跳到結算中心 */
//if ($_CFG['one_step_buy'] == '1')
if ($_COOKIE['one_step_buy'] == '1')
{
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";
$sql = "SELECT rec_id FROM " . $ecs->table('cart') .
" WHERE $sql_where AND rec_type = '" . $flow_type . "'";
$_SESSION['sel_cartgoods'] = $db->getOne($sql);
ecs_header("Location: flow.php?step=checkout\n");
exit;
}else{
unset($_SESSION['sel_cartgoods']);//購物車頁面中的商品初始化為全選,所以清除這個保存被選中的商品變量
}
/* 取得商品列表,計算合計 */
$cart_goods = get_cart_goods();
//購物車的描述的格式化
$smarty->assign('shopping_money', $cart_goods['total']['goods_price']);
$smarty->assign('market_price_desc', sprintf($_LANG['than_market_price'],
$cart_goods['total']['market_price'], $cart_goods['total']['saving'], $cart_goods['total']['save_rate']));
// 顯示收藏夾內的商品
if ($_SESSION['user_id'] > 0)
{
require_once(ROOT_PATH . 'includes/lib_clips.php');
$collection_goods = get_collection_goods($_SESSION['user_id']);
$smarty->assign('collection_goods', $collection_goods);
}
/* 取得優惠活動 */
$favourable_list = favourable_list($_SESSION['user_rank']);
//usort($favourable_list, 'cmp_favourable');
if($favourable_list){
$new_fav = array();
foreach($favourable_list as $key => $val){
if(isset($cart_goods['goods_list'][$val['supplier_id']])){
$cart_goods['goods_list'][$val['supplier_id']]['favourable'][] = $val;
}
}
}
//echo "";
//print_r($cart_goods['goods_list']);
foreach($cart_goods['goods_list'] as $k=>$v){
$discount = compute_discount($k);
if(is_array($discount)){
$cart_goods['goods_list'][$k]['discount']['discount'] = $discount['discount'];
$favour_name = empty($discount['name']) ? '' : join(',', $discount['name']);
$cart_goods['goods_list'][$k]['discount']['your_discount'] = sprintf($_LANG['your_discount'], $favour_name, price_format($discount['discount']));
}
}
$smarty->assign('goods_list', $cart_goods['goods_list']);
$smarty->assign('total', $cart_goods['total']);
//選擇優惠活動中的贈品時所要執行的部分_start
if(isset($_REQUEST['is_ajax']) && intval($_REQUEST['is_ajax']) > 0){
include('includes/cls_json.php');
$json = new JSON;
$res = array('err_msg' => '', 'result' => '');
if (isset($_REQUEST['suppid']))
{
$smarty->assign('favourable_list', $cart_goods['goods_list'][intval($_REQUEST['suppid'])]['favourable']);
$res['result'] = $smarty->fetch("library/favourable.lbi");
}
else
{
$res['result'] = '您一個商品都沒選,這怎麼行捏!!真的不行哦!';
}
die($json->encode($res));
}
//選擇優惠活動中的贈品時所要執行的部分_end
/* 計算折扣 */
// $discount = compute_discount();
//$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'])));
/* 增加是否在購物車裏顯示商品圖 */
$smarty->assign('show_goods_thumb', $GLOBALS['_CFG']['show_goods_in_cart']);
/* 增加是否在購物車裏顯示商品屬性 */
$smarty->assign('show_goods_attribute', $GLOBALS['_CFG']['show_attr_in_cart']);
/* 購物車中商品配件列表 */
//取得購物車中基本件ID
$sql = "SELECT goods_id " .
"FROM " . $GLOBALS['ecs']->table('cart') .
" WHERE session_id = '" . SESS_ID . "' " .
"AND rec_type = '" . CART_GENERAL_GOODS . "' " .
"AND is_gift = 0 " .
"AND extension_code <> 'package_buy' " .
"AND parent_id = 0 ";
$parent_list = $GLOBALS['db']->getCol($sql);
$fittings_list = get_goods_fittings($parent_list);
$smarty->assign('fittings_list', $fittings_list);
}
/* 代碼增加_start By www.0769web.net */
if($_REQUEST['step']=='update_group_cart')
{
include_once('includes/cls_json.php');
$result = array('error' => 0, 'message' => '', 'content' => '', 'goods_id' => '');
$json = new JSON;
$rec_id = intval($_GET['rec_id']);
$number = intval($_GET['number']);
$goods_id = intval($_GET['goods_id']);
$is_package = intval($_GET['is_package']);
$result['suppid'] = intval($_GET['suppid']);
$result['rec_id'] = $rec_id;
$result['number']=$number;
if ($is_package == 0)
{
$time_xg_now=gmtime();
$row_xg= $GLOBALS['db']->getRow("select is_buy,buymax, buymax_start_date, buymax_end_date from ". $GLOBALS['ecs']->table('goods') ." where goods_id='".$goods_id."' " );
if ( $row_xg['is_buy'] == 1 && $row_xg['buymax'] >0 && $row_xg['buymax_start_date'] < $time_xg_now && $row_xg['buymax_end_date'] > $time_xg_now )
{
if ($_SESSION['user_id'] == 0 )
{
$result['error'] = 999;
$result['message'] = "此商品為限購商品,需要登錄後才能繼續購買!";
die($json->encode($result));
}
else
{
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";
$num_cart_old_1=$GLOBALS['db']->getOne("select sum(goods_number) from ". $GLOBALS['ecs']->table('cart') ." where " . $sql_where . " and goods_id= " . $goods_id );
$num_cart_old_2=$GLOBALS['db']->getOne("select sum(og.goods_number) from ". $GLOBALS['ecs']->table('order_goods') ." AS og , ". $GLOBALS['ecs']->table('order_info') ." AS o where o.user_id='$_SESSION[user_id]' and o.order_id = og.order_id and add_time > ". $row_xg['buymax_start_date'] ." and add_time < ". $row_xg['buymax_end_date'] ." and og.goods_id = " . $goods_id );
$num_cart_old = $num_cart_old_1 + $num_cart_old_2 ;
$num_total = $num_cart_old_2 + intval($number);
if ( $num_total > intval($row_xg['buymax']) )
{
$result['error'] = 888;
$num_else=intval($row_xg['buymax'])-$num_cart_old_2;
$result['message'] ="注意:\n\r此商品限購期間每人限購 ". $row_xg['buymax'] . " 件\n\r";
if ($num_cart_old_2 > 0)
{
$result['message'] .="您在限購期間已經成功購買過". $num_cart_old_2 ." 件!\n\r";
}
if ($num_cart_old_1 > 0)
{
$result['message'] .="您的購物車中已經存在". $num_cart_old_1 ."件!\n\r";
}
$result['message'] .= "您只能再買 ". $num_else ." 件";
$result['number'] = $num_else;
die($json->encode($result));
}
}
}
}
if ($GLOBALS['_CFG']['use_storage'] == 1)
{
$sql_where = $_SESSION['user_id']>0 ? " user_id='". $_SESSION['user_id'] ."' " : " session_id = '" . SESS_ID . "' AND user_id=0 ";
if ($is_package == 0)
{
$pg_ids = $GLOBALS['db']->getAll("select goods_id, goods_number from " . $GLOBALS['ecs']->table('cart') . " where extension_code = 'package_buy' and " . $sql_where);
$pg_num = 0;
foreach($pg_ids as $pg_id)
{
$pg_num += $GLOBALS['db']->getOne("select goods_number from " .$GLOBALS['ecs']->table('package_goods') . " where package_id = " . $pg_id['goods_id'] . " and goods_id = " . $goods_id);
}
$goods_number = $GLOBALS['db']->getOne("select goods_number from ".$GLOBALS['ecs']->table('goods')." where goods_id='$goods_id'");
$number2 = $number + $pg_num;
if($number2>$goods_number) //////// jx 庫存判斷
{
$result['error'] = '1';
$result['content'] ='對不起,您選擇的數量超出庫存您最多可購買'.$goods_number."件";
$result['content'] ="對不起,此單品超出庫存,您最多可購買".$goods_number."件";
if ($pg_num > 0)
{
$result['content'] .= ",禮包中已包含此單品 " . $pg_num . "件";
}
$result['number']=$GLOBALS['db']->getOne("select goods_number from ".$GLOBALS['ecs']->table('cart')." where rec_id = '$rec_id'");
die($json->encode($result));
}
//添加判斷商品有屬性的時候的庫存 jx
$goods_attr_id = $GLOBALS['db']->getOne("SELECT goods_attr_id FROM ".$GLOBALS['ecs']->table('cart')."WHERE rec_id = '$rec_id'");
if($goods_attr_id)
{
$str = explode(',',$goods_attr_id);//把字符串轉換成數組
$goods_attr = implode('|',$str);// 把數組轉換成以‘|’的字符傳
$attr_number = $GLOBALS['db']->getOne("select product_number from ".$GLOBALS['ecs']->table('products')." where goods_id='$goods_id' AND goods_attr ='$goods_attr'");
if($number>$attr_number)
{
$result['error'] = '1';
$result['content'] ='對不起,您選擇的數量超出庫存您最多可購買'.$attr_number."件";
$result['number']=$GLOBALS['db']->getOne("select product_number from ".$GLOBALS['ecs']->table('products')." where goods_id='$goods_id' AND goods_attr ='$goods_attr'");
die($json->encode($result));
}
}
}
else
{
$goods_infos = $GLOBALS['db']->getAll("select pg.goods_id, pg.goods_number, g.goods_name from " . $GLOBALS['ecs']->table('package_goods') . " as pg left join " . $GLOBALS['ecs']->table('goods') . " as g on pg.goods_id = g.goods_id where package_id='$goods_id'");
$is_null_g = 0;
foreach($goods_infos as $goods_info)
{
$one_num = $GLOBALS['db']->getOne("SELECT SUM(goods_number) FROM " . $GLOBALS['ecs']->table('cart') . " WHERE goods_id = '$goods_info[goods_id]' and " . $sql_where);
$number2 = $number * $goods_info['goods_number'] + $one_num;
$goods_number = $GLOBALS['db']->getOne("select goods_number from ".$GLOBALS['ecs']->table('goods')." where goods_id='$goods_info[goods_id]'");
if($number2>$goods_number) //////// jx 庫存判斷
{
$result['error'] = '1';
$result['content'] ="對不起,禮包中單品[" . $goods_info['goods_name'] . "]超出庫存,您最多可購買".$goods_number."件";
if ($one_num > 0)
{
$result['content'] .= ",已添加了單品 " . $one_num . "件";
}
$result['number']=$GLOBALS['db']->getOne("select goods_number from ".$GLOBALS['ecs']->table('cart')." where rec_id = '$rec_id'");
die($json->encode($result));
}
//添加判斷商品有屬性的時候的庫存 jx
$goods_attr_id = $GLOBALS['db']->getOne("SELECT goods_attr_id FROM ".$GLOBALS['ecs']->table('cart')."WHERE rec_id = '$rec_id'");
if($goods_attr_id)
{
$str = explode(',',$goods_attr_id);//把字符串轉換成數組
$goods_attr = implode('|',$str);// 把數組轉換成以‘|’的字符傳
$attr_number = $GLOBALS['db']->getOne("select product_number from ".$GLOBALS['ecs']->table('products')." where goods_id='$goods_id' AND goods_attr ='$goods_attr'");
if($number>$attr_number)
{
$result['error'] = '1';
$result['content'] ='對不起,您選擇的數量超出庫存您最多可購買'.$attr_number."件";
$result['number']=$GLOBALS['db']->getOne("select product_number from ".$GLOBALS['ecs']->table('products')." where goods_id='$goods_id' AND goods_attr ='$goods_attr'");
die($json->encode($result));
}
}
}
}
}
$sql = "UPDATE " . $GLOBALS['ecs']->table('cart') . " SET goods_number = '$number' WHERE rec_id = $rec_id";
$GLOBALS['db']->query($sql);
//折扣活動
$result['your_discount'] = '';
$discount = compute_discount($result['suppid']);
if(is_array($discount)){
$favour_name = empty($discount['name']) ? '' : join(',', $discount['name']);
$result['your_discount'] = sprintf($_LANG['your_discount'], $favour_name, price_format($discount['discount']));
}
if ($is_package == 0)
{
//如果有優惠價格,獲得商品最終價格
$shop_price = get_final_price($goods_id, $number, true, $attr_id);
$sql = "UPDATE " . $GLOBALS['ecs']->table('cart') . " SET goods_price = '$shop_price' WHERE rec_id = $rec_id";
$GLOBALS['db']->query($sql);
}
else
{
$sql_sp = "SELECT goods_price FROM " . $GLOBALS['ecs']->table('cart') . " WHERE rec_id= " . $rec_id;
$shop_price = $GLOBALS['db']->getOne($sql_sp);
}
$subtotal = $shop_price * $number;
$result['goods_price'] = price_format($shop_price, false);
//$subtotal = $GLOBALS['db']->getONE("select goods_price * goods_number AS subtotal from ".$GLOBALS['ecs']->table('cart')." where rec_id = $rec_id");
$result['subtotal'] = price_format($subtotal, false);
//$result['cart_amount_desc'] = sprintf($_LANG['shopping_money'], $cart_goods['total']['goods_price']);
/* 取得商品列表,計算合計 */
$id_ext = " AND rec_id in (". $_GET['sel_goods'] .") ";
$cart_goods = get_cart_goods($id_ext);
//$cart_goods = get_cart_goods();
$result['cart_amount_desc'] = $cart_goods['total']['goods_price'];
$shopping_money = sprintf($_LANG['shopping_money'], $cart_goods['total']['goods_price']);
$result['market_amount_desc'] = $shopping_money;
if ($_CFG['show_marketprice'])
{
$market_price_desc= sprintf($_LANG['than_market_price'],$cart_goods['total']['market_price'], $cart_goods['total']['saving'], $cart_goods['total']['save_rate']);
$result['market_amount_desc'].= ",".$market_price_desc ;
}
die($json->encode($result));
}
if ($_REQUEST['step']=='cart')
{
$smarty->assign('template_dir', $GLOBALS['_CFG']['template']);
$hotgoods_list = cart_goods_recommend('is_hot');
$smarty->assign('hotgoods_list', $hotgoods_list);
$bestgoods_list = cart_goods_recommend('is_best');
$smarty->assign('bestgoods_list', $bestgoods_list);
}
function cart_goods_recommend($rtype)
{
$sql_hot = "select goods_id, goods_name, goods_thumb, shop_price, market_price from " . $GLOBALS['ecs']->table('goods'). " where ". $rtype ."=1 order by goods_id desc limit 0,10 ";
$res_hot=$GLOBALS['db']->query($sql_hot);
$hotgoods_list = array();
while ($row_hot = $GLOBALS['db']->fetchRow($res_hot))
{
$row_hot['goods_name'] = sub_str($row_hot['goods_name'], 20) ;
$row_hot['url'] = build_uri('goods', array('gid' => $row_hot['goods_id']), $row_hot['goods_name']);
$row_hot['goods_thumb'] = get_image_path($row_hot['goods_id'], $row_hot['goods_thumb'], true);
$row_hot['shop_price'] = price_format($row_hot['shop_price']);
$row_hot['market_price'] = price_format($row_hot['market_price']);
$hotgoods_list[]=$row_hot;
}
return $hotgoods_list;
}
/* 代碼增加_end By www.0769web.net */
$smarty->assign('currency_format', $_CFG['currency_format']);
$smarty->assign('integral_scale', $_CFG['integral_scale']);
$smarty->assign('step', $_REQUEST['step']);
assign_dynamic('shopping_flow');
/* 代碼修改_start By www.0769web.net */
if ($_REQUEST['step']=='cart' || $_REQUEST['step']=='checkout')
{
$smarty->assign('template_dir', $GLOBALS['_CFG']['template']);
if(isset($total['real_goods_count']) && $total['real_goods_count'] == 0){
$smarty->display('flow_virtual.dwt');
}else{
$smarty->display('flow_jm.dwt');
}
}
else
{
$smarty->display('flow.dwt');
}
/* 代碼修改_end By www.0769web.net */
/*------------------------------------------------------ */
//-- PRIVATE FUNCTION
/*------------------------------------------------------ */
/**
* 獲得用户的可用積分
*
* @access private
* @return integral
*/
function flow_available_points()
{
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql_where = $_SESSION['user_id']>0 ? "c.user_id='". $_SESSION['user_id'] ."' " : "c.session_id = '" . SESS_ID . "' AND c.user_id=0 ";
$sql = "SELECT SUM(g.integral * c.goods_number) as integral,g.supplier_id ".
"FROM " . $GLOBALS['ecs']->table('cart') . " AS c, " . $GLOBALS['ecs']->table('goods') . " AS g " .
"WHERE $sql_where AND c.goods_id = g.goods_id AND c.is_gift = 0 AND g.integral > 0 " .
"AND c.rec_type = '" . CART_GENERAL_GOODS . "' GROUP BY g.supplier_id";
/* 代碼修改_end By www.0769web.net */
$info = $GLOBALS['db']->getAll($sql);
$ret = array();
foreach($info as $key => $val){
$ret[$val['supplier_id']] = integral_of_value(intval($val['integral']));
}
return $ret;
}
/**
* 更新購物車中的商品數量
*
* @access public
* @param array $arr
* @return void
*/
function flow_update_cart($arr)
{
/* 處理 */
foreach ($arr AS $key => $val)
{
$val = intval(make_semiangle($val));
if ($val <= 0 || !is_numeric($key))
{
continue;
}
//查詢:
$sql = "SELECT `goods_id`, `goods_attr_id`, `product_id`, `extension_code` FROM" .$GLOBALS['ecs']->table('cart').
" WHERE rec_id='$key' AND session_id='" . SESS_ID . "'";
$goods = $GLOBALS['db']->getRow($sql);
$sql = "SELECT g.goods_name, g.goods_number ".
"FROM " .$GLOBALS['ecs']->table('goods'). " AS g, ".
$GLOBALS['ecs']->table('cart'). " AS c ".
"WHERE g.goods_id = c.goods_id AND c.rec_id = '$key'";
$row = $GLOBALS['db']->getRow($sql);
//查詢:系統啓用了庫存,檢查輸入的商品數量是否有效
if (intval($GLOBALS['_CFG']['use_storage']) > 0 && $goods['extension_code'] != 'package_buy')
{
if ($row['goods_number'] < $val)
{
show_message(sprintf($GLOBALS['_LANG']['stock_insufficiency'], $row['goods_name'],
$row['goods_number'], $row['goods_number']));
exit;
}
/* 是貨品 */
$goods['product_id'] = trim($goods['product_id']);
if (!empty($goods['product_id']))
{
$sql = "SELECT product_number FROM " .$GLOBALS['ecs']->table('products'). " WHERE goods_id = '" . $goods['goods_id'] . "' AND product_id = '" . $goods['product_id'] . "'";
$product_number = $GLOBALS['db']->getOne($sql);
if ($product_number < $val)
{
show_message(sprintf($GLOBALS['_LANG']['stock_insufficiency'], $row['goods_name'],
$product_number['product_number'], $product_number['product_number']));
exit;
}
}
}
elseif (intval($GLOBALS['_CFG']['use_storage']) > 0 && $goods['extension_code'] == 'package_buy')
{
if (judge_package_stock($goods['goods_id'], $val))
{
show_message($GLOBALS['_LANG']['package_stock_insufficiency']);
exit;
}
}
/* 查詢:檢查該項是否為基本件 以及是否存在配件 */
/* 此處配件是指添加商品時附加的並且是設置了優惠價格的配件 此類配件都有parent_id goods_number為1 */
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql_where = $_SESSION['user_id']>0 ? "a.user_id='". $_SESSION['user_id'] ."' " : "a.session_id = '" . SESS_ID . "' AND a.user_id=0 ";
$sql = "SELECT b.goods_number, b.rec_id
FROM " .$GLOBALS['ecs']->table('cart') . " a, " .$GLOBALS['ecs']->table('cart') . " b
WHERE $sql_where AND a.rec_id = '$key'
AND a.extension_code <> 'package_buy'
AND b.parent_id = a.goods_id
AND $sql_where";
$offers_accessories_res = $GLOBALS['db']->query($sql);
$sql_where1 = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";
/* 代碼修改_end By www.0769web.net */
//訂貨數量大於0
if ($val > 0)
{
/* 判斷是否為超出數量的優惠價格的配件 刪除*/
$row_num = 1;
while ($offers_accessories_row = $GLOBALS['db']->fetchRow($offers_accessories_res))
{
if ($row_num > $val)
{
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') .
" WHERE session_id = '" . SESS_ID . "' " .
"AND rec_id = '" . $offers_accessories_row['rec_id'] ."' LIMIT 1";
$GLOBALS['db']->query($sql);
}
$row_num ++;
}
/* 處理超值禮包 */
if ($goods['extension_code'] == 'package_buy')
{
//更新購物車中的商品數量
$sql = "UPDATE " .$GLOBALS['ecs']->table('cart').
" SET goods_number = '$val' WHERE rec_id='$key' AND $sql_where1";
}
/* 處理普通商品或非優惠的配件 */
else
{
$attr_id = empty($goods['goods_attr_id']) ? array() : explode(',', $goods['goods_attr_id']);
$goods_price = get_final_price($goods['goods_id'], $val, true, $attr_id);
//更新購物車中的商品數量
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "UPDATE " .$GLOBALS['ecs']->table('cart').
" SET goods_number = '$val', goods_price = '$goods_price' WHERE rec_id='$key' AND $sql_where1";
/* 代碼修改_end By www.0769web.net */
}
}
//訂貨數量等於0
else
{
/* 如果是基本件並且有優惠價格的配件則刪除優惠價格的配件 */
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
while ($offers_accessories_row = $GLOBALS['db']->fetchRow($offers_accessories_res))
{
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') .
" WHERE $sql_where1 " .
"AND rec_id = '" . $offers_accessories_row['rec_id'] ."' LIMIT 1";
$GLOBALS['db']->query($sql);
}
$sql = "DELETE FROM " .$GLOBALS['ecs']->table('cart').
" WHERE rec_id='$key' AND $sql_where1";
/* 代碼修改_end By www.0769web.net */
}
$GLOBALS['db']->query($sql);
}
/* 刪除所有贈品 */
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') . " WHERE $sql_where1 AND is_gift <> 0";
$GLOBALS['db']->query($sql);
/* 代碼修改_end By www.0769web.net */
}
/**
* 檢查訂單中商品庫存
*
* @access public
* @param array $arr
*
* @return void
*/
function flow_cart_stock($arr)
{
foreach ($arr AS $key => $val)
{
$val = intval(make_semiangle($val));
if ($val <= 0 || !is_numeric($key))
{
continue;
}
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";
$sql = "SELECT `goods_id`, `goods_attr_id`, `extension_code` FROM" .$GLOBALS['ecs']->table('cart').
" WHERE rec_id='$key' AND $sql_where";
$goods = $GLOBALS['db']->getRow($sql);
/* 代碼修改_end By www.0769web.net */
$sql = "SELECT g.goods_name, g.goods_number, c.product_id ".
"FROM " .$GLOBALS['ecs']->table('goods'). " AS g, ".
$GLOBALS['ecs']->table('cart'). " AS c ".
"WHERE g.goods_id = c.goods_id AND c.rec_id = '$key'";
$row = $GLOBALS['db']->getRow($sql);
//系統啓用了庫存,檢查輸入的商品數量是否有效
if (intval($GLOBALS['_CFG']['use_storage']) > 0 && $goods['extension_code'] != 'package_buy')
{
if ($row['goods_number'] < $val)
{
show_message(sprintf($GLOBALS['_LANG']['stock_insufficiency'], $row['goods_name'],
$row['goods_number'], $row['goods_number']));
exit;
}
/* 是貨品 */
$row['product_id'] = trim($row['product_id']);
if (!empty($row['product_id']))
{
$sql = "SELECT product_number FROM " .$GLOBALS['ecs']->table('products'). " WHERE goods_id = '" . $goods['goods_id'] . "' AND product_id = '" . $row['product_id'] . "'";
$product_number = $GLOBALS['db']->getOne($sql);
if ($product_number < $val)
{
show_message(sprintf($GLOBALS['_LANG']['stock_insufficiency'], $row['goods_name'],
$row['goods_number'], $row['goods_number']));
exit;
}
}
}
elseif (intval($GLOBALS['_CFG']['use_storage']) > 0 && $goods['extension_code'] == 'package_buy')
{
if (judge_package_stock($goods['goods_id'], $val))
{
show_message($GLOBALS['_LANG']['package_stock_insufficiency']);
exit;
}
}
}
}
/**
* 刪除購物車中的商品
*
* @access public
* @param integer $id
* @return void
*/
function flow_drop_cart_goods($id)
{
/* 取得商品id */
$sql = "SELECT * FROM " .$GLOBALS['ecs']->table('cart'). " WHERE rec_id = '$id'";
$row = $GLOBALS['db']->getRow($sql);
if ($row)
{
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";//添加 www.0769web.net
//如果是超值禮包
if ($row['extension_code'] == 'package_buy')
{
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') .
" WHERE $sql_where " .
"AND rec_id = '$id' LIMIT 1";
/* 代碼修改_end By www.0769web.net */
}
//如果是普通商品,同時刪除所有贈品及其配件
elseif ($row['parent_id'] == 0 && $row['is_gift'] == 0)
{
/* 檢查購物車中該普通商品的不可單獨銷售的配件並刪除 */
$sql = "SELECT c.rec_id
FROM " . $GLOBALS['ecs']->table('cart') . " AS c, " . $GLOBALS['ecs']->table('group_goods') . " AS gg, " . $GLOBALS['ecs']->table('goods'). " AS g
WHERE gg.parent_id = '" . $row['goods_id'] . "'
AND c.goods_id = gg.goods_id
AND c.parent_id = '" . $row['goods_id'] . "'
AND c.extension_code <> 'package_buy'
AND gg.goods_id = g.goods_id
AND g.is_alone_sale = 0";
$res = $GLOBALS['db']->query($sql);
$_del_str = $id . ',';
while ($id_alone_sale_goods = $GLOBALS['db']->fetchRow($res))
{
$_del_str .= $id_alone_sale_goods['rec_id'] . ',';
}
$_del_str = trim($_del_str, ',');
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') .
" WHERE $sql_where " .
"AND (rec_id IN ($_del_str) OR parent_id = '$row[goods_id]' OR is_gift <> 0)";
/* 代碼修改_end By www.0769web.net */
}
//如果不是普通商品,只刪除該商品即可
else
{
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') .
" WHERE $sql_where " .
"AND rec_id = '$id' LIMIT 1";
/* 代碼修改_end By www.0769web.net */
}
$GLOBALS['db']->query($sql);
}
flow_clear_cart_alone();
}
/**
* 刪除購物車中不能單獨銷售的商品
*
* @access public
* @return void
*/
function flow_clear_cart_alone()
{
/* 查詢:購物車中所有不可以單獨銷售的配件 */
$sql_where = $_SESSION['user_id']>0 ? "c.user_id='". $_SESSION['user_id'] ."' " : "c.session_id = '" . SESS_ID . "' AND c.user_id=0 ";//添加 www.0769web.net
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "SELECT c.rec_id, gg.parent_id
FROM " . $GLOBALS['ecs']->table('cart') . " AS c
LEFT JOIN " . $GLOBALS['ecs']->table('group_goods') . " AS gg ON c.goods_id = gg.goods_id
LEFT JOIN" . $GLOBALS['ecs']->table('goods') . " AS g ON c.goods_id = g.goods_id
WHERE $sql_where
AND c.extension_code <> 'package_buy'
AND gg.parent_id > 0
AND g.is_alone_sale = 0";
/* 代碼修改_end By www.0769web.net */
$res = $GLOBALS['db']->query($sql);
$rec_id = array();
while ($row = $GLOBALS['db']->fetchRow($res))
{
$rec_id[$row['rec_id']][] = $row['parent_id'];
}
if (empty($rec_id))
{
return;
}
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";//添加 www.0769web.net
/* 查詢:購物車中所有商品 */
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "SELECT DISTINCT goods_id
FROM " . $GLOBALS['ecs']->table('cart') . "
WHERE $sql_where
AND extension_code <> 'package_buy'";
/* 代碼修改_end By www.0769web.net */
$res = $GLOBALS['db']->query($sql);
$cart_good = array();
while ($row = $GLOBALS['db']->fetchRow($res))
{
$cart_good[] = $row['goods_id'];
}
if (empty($cart_good))
{
return;
}
/* 如果購物車中不可以單獨銷售配件的基本件不存在則刪除該配件 */
$del_rec_id = '';
foreach ($rec_id as $key => $value)
{
foreach ($value as $v)
{
if (in_array($v, $cart_good))
{
continue 2;
}
}
$del_rec_id = $key . ',';
}
$del_rec_id = trim($del_rec_id, ',');
if ($del_rec_id == '')
{
return;
}
/* 刪除 */
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') ."
WHERE $sql_where
AND rec_id IN ($del_rec_id)";
/* 代碼修改_end By www.0769web.net */
$GLOBALS['db']->query($sql);
}
/**
* 比較優惠活動的函數,用於排序(把可用的排在前面)
* @param array $a 優惠活動a
* @param array $b 優惠活動b
* @return int 相等返回0,小於返回-1,大於返回1
*/
function cmp_favourable($a, $b)
{
if ($a['available'] == $b['available'])
{
if ($a['sort_order'] == $b['sort_order'])
{
return 0;
}
else
{
return $a['sort_order'] < $b['sort_order'] ? -1 : 1;
}
}
else
{
return $a['available'] ? -1 : 1;
}
}
/**
* 修改購物車中商品數量,刪除商品,取消選擇時判斷是否在此商品參加的優惠活動已經存在購物車,如果有就刪除掉
*/
function del_cart_favourable_goods(){
$favlist = favourable_list($_SESSION['user_rank']);
return $favlist;
}
/**
* 取得某用户等級當前時間可以享受的優惠活動
* @param int $user_rank 用户等級id,0表示非會員
* @param int $is_have 是否判斷已經選擇贈品
* @return array
*/
function favourable_list($user_rank,$is_have=true)
{
/* 購物車中已有的優惠活動及數量 */
$used_list = cart_favourable();
/* 當前用户可享受的優惠活動 */
$favourable_list = array();
$user_rank = ',' . $user_rank . ',';
$now = gmtime();
if(isset($_REQUEST['suppid'])){
$tj = " AND supplier_id=".$_REQUEST['suppid'];
}else{
$tj = '';
}
$sql = "SELECT * " .
"FROM " . $GLOBALS['ecs']->table('favourable_activity') .
" WHERE CONCAT(',', user_rank, ',') LIKE '%" . $user_rank . "%'" .
" AND start_time <= '$now' AND end_time >= '$now'" .$tj.
" AND act_type = '" . FAT_GOODS . "'" .
" ORDER BY sort_order";
$res = $GLOBALS['db']->query($sql);
while ($favourable = $GLOBALS['db']->fetchRow($res))
{
$favourable['start_time'] = local_date($GLOBALS['_CFG']['time_format'], $favourable['start_time']);
$favourable['end_time'] = local_date($GLOBALS['_CFG']['time_format'], $favourable['end_time']);
$favourable['formated_min_amount'] = price_format($favourable['min_amount'], false);
$favourable['formated_max_amount'] = price_format($favourable['max_amount'], false);
$favourable['gift'] = unserialize($favourable['gift']);
$_REQUEST['suppid'] = $favourable['supplier_id'] = $favourable['supplier_id'];
foreach ($favourable['gift'] as $key => $value)
{
$favourable['gift'][$key]['formated_price'] = price_format($value['price'], false);
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('goods') . " WHERE is_on_sale = 1 AND goods_id = ".$value['id'];
$is_sale = $GLOBALS['db']->getOne($sql);
if(!$is_sale)
{
unset($favourable['gift'][$key]);
}
$goods_thumb = $GLOBALS['db']->getOne("SELECT `goods_thumb` FROM " . $GLOBALS['ecs']->table('goods') . " WHERE `goods_id`='{$value['id']}'");
$favourable['gift'][$key]['goods_thumb'] = get_image_path($value['id'], $goods_thumb, true);
}
$favourable['act_range_desc'] = act_range_desc($favourable);
$favourable['act_type_desc'] = sprintf($GLOBALS['_LANG']['fat_ext'][$favourable['act_type']], $favourable['act_type_ext']);
/* 是否能享受 */
$favourable['available'] = favourable_available($favourable);
if ($favourable['available'] && $is_have)
{
/* 是否尚未享受 */
$favourable['available'] = !favourable_used($favourable, $used_list);
}
$favourable_list[] = $favourable;
}
return $favourable_list;
}
/**
* 根據購物車判斷是否可以享受某優惠活動
* @param array $favourable 優惠活動信息
* @return bool
*/
function favourable_available($favourable)
{
/* 會員等級是否符合 */
$user_rank = $_SESSION['user_rank'];
if (strpos(',' . $favourable['user_rank'] . ',', ',' . $user_rank . ',') === false)
{
return false;
}
/* 優惠範圍內的商品總額 */
$amount = cart_favourable_amount($favourable);
/* 金額上限為0表示沒有上限 */
return $amount >= $favourable['min_amount'] &&
($amount <= $favourable['max_amount'] || $favourable['max_amount'] == 0);
}
/**
* 取得優惠範圍描述
* @param array $favourable 優惠活動
* @return string
*/
function act_range_desc($favourable)
{
if ($favourable['act_range'] == FAR_BRAND)
{
$sql = "SELECT brand_name FROM " . $GLOBALS['ecs']->table('brand') .
" WHERE brand_id " . db_create_in($favourable['act_range_ext']);
return join(',', $GLOBALS['db']->getCol($sql));
}
elseif ($favourable['act_range'] == FAR_CATEGORY)
{
$sql = "SELECT cat_name FROM " . $GLOBALS['ecs']->table('category') .
" WHERE cat_id " . db_create_in($favourable['act_range_ext']);
return join(',', $GLOBALS['db']->getCol($sql));
}
elseif ($favourable['act_range'] == FAR_GOODS)
{
$sql = "SELECT goods_name FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id " . db_create_in($favourable['act_range_ext']);
return join(',', $GLOBALS['db']->getCol($sql));
}
else
{
return '';
}
}
/**
* 取得購物車中已有的優惠活動及數量
* @return array
*/
function cart_favourable()
{
$sql_where = $_SESSION['user_id']>0 ? "user_id='". $_SESSION['user_id'] ."' " : "session_id = '" . SESS_ID . "' AND user_id=0 ";//添加 www.0769web.net
$list = array();
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "SELECT is_gift, COUNT(*) AS num " .
"FROM " . $GLOBALS['ecs']->table('cart') .
" WHERE $sql_where " .
" AND rec_type = '" . CART_GENERAL_GOODS . "'" .
" AND is_gift > 0" .
" GROUP BY is_gift";
/* 代碼修改_end By www.0769web.net */
$res = $GLOBALS['db']->query($sql);
while ($row = $GLOBALS['db']->fetchRow($res))
{
$list[$row['is_gift']] = $row['num'];
}
return $list;
}
/**
* 購物車中是否已經有某優惠
* @param array $favourable 優惠活動
* @param array $cart_favourable購物車中已有的優惠活動及數量
*/
function favourable_used($favourable, $cart_favourable)
{
if ($favourable['act_type'] == FAT_GOODS)
{
return isset($cart_favourable[$favourable['act_id']]) &&
$cart_favourable[$favourable['act_id']] >= $favourable['act_type_ext'] &&
$favourable['act_type_ext'] > 0;
}
else
{
return isset($cart_favourable[$favourable['act_id']]);
}
}
/**
* 添加優惠活動(贈品)到購物車
* @param int $act_id 優惠活動id
* @param int $id 贈品id
* @param float $price 贈品價格
*/
function add_gift_to_cart($act_id, $id, $price)
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('cart') . " (" .
"user_id, session_id, goods_id, goods_sn, goods_name, market_price, goods_price, ".
"goods_number, is_real, extension_code, parent_id, is_gift, rec_type ) ".
"SELECT '$_SESSION[user_id]', '" . SESS_ID . "', goods_id, goods_sn, goods_name, market_price, ".
"'$price', 1, is_real, extension_code, 0, '$act_id', '" . CART_GENERAL_GOODS . "' " .
"FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id = '$id'";
$GLOBALS['db']->query($sql);
}
/**
* 添加優惠活動(非贈品)到購物車
* @param int $act_id 優惠活動id
* @param string $act_name 優惠活動name
* @param float $amount 優惠金額
*/
function add_favourable_to_cart($act_id, $act_name, $amount)
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('cart') . "(" .
"user_id, session_id, goods_id, goods_sn, goods_name, market_price, goods_price, ".
"goods_number, is_real, extension_code, parent_id, is_gift, rec_type ) ".
"VALUES('$_SESSION[user_id]', '" . SESS_ID . "', 0, '', '$act_name', 0, ".
"'" . (-1) * $amount . "', 1, 0, '', 0, '$act_id', '" . CART_GENERAL_GOODS . "')";
$GLOBALS['db']->query($sql);
}
/**
* 取得購物車中某優惠活動範圍內的總金額
* @param array $favourable 優惠活動
* @return float
*/
function cart_favourable_amount($favourable)
{
$sql_where = $_SESSION['user_id']>0 ? "c.user_id='". $_SESSION['user_id'] ."' " : "c.session_id = '" . SESS_ID . "' AND c.user_id=0 ";//添加 www.0769web.net
/* 查詢優惠範圍內商品總額的sql */
/* 代碼修改_start By www.0769web.net 將這塊替換掉*/
$sql = "SELECT SUM(c.goods_price * c.goods_number) " .
"FROM " . $GLOBALS['ecs']->table('cart') . " AS c, " . $GLOBALS['ecs']->table('goods') . " AS g " .
"WHERE c.goods_id = g.goods_id " .
"AND $sql_where " .
"AND c.rec_type = '" . CART_GENERAL_GOODS . "' " .
"AND g.supplier_id=".$favourable['supplier_id']." ".
"AND c.is_gift = 0 " .
"AND c.goods_id > 0 ";
/* 代碼修改_end By www.0769web.net */
/* 根據優惠範圍修正sql */
if ($favourable['act_range'] == FAR_ALL)
{
// sql do not change
}
elseif ($favourable['act_range'] == FAR_CATEGORY)
{
/* 取得優惠範圍分類的所有下級分類 */
$id_list = array();
$cat_list = explode(',', $favourable['act_range_ext']);
foreach ($cat_list as $id)
{
$id_list = array_merge($id_list, array_keys(cat_list(intval($id), 0, false)));
}
$sql .= "AND g.cat_id " . db_create_in($id_list);
}
elseif ($favourable['act_range'] == FAR_BRAND)
{
$id_list = explode(',', $favourable['act_range_ext']);
$sql .= "AND g.brand_id " . db_create_in($id_list);
}
else
{
$id_list = explode(',', $favourable['act_range_ext']);
$sql .= "AND g.goods_id " . db_create_in($id_list);
}
$sql .= (isset($_REQUEST['sel_goods']) && !empty($_REQUEST['sel_goods'])) ? " AND c.rec_id in (". $_REQUEST['sel_goods'] .") " : "";
//計算某個店鋪的商品總額
if(isset($_REQUEST['suppid'])){
$sql .= " AND g.supplier_id=".intval($_REQUEST['suppid']);
}
//echo $sql;
/* 優惠範圍內的商品總額 */
return $GLOBALS['db']->getOne($sql);
}
//LLX
function get_hot_cat_goods($type = '', $num = 20)
{
$sql = 'SELECT g.goods_id,g.cat_id, g.goods_name, g.market_price, g.shop_price AS org_price, ' .
"IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, ".
'g.promote_price, promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, g.goods_img ' .
"FROM " . $GLOBALS['ecs']->table('goods') . ' AS g '.
"LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ".
"ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ".
'WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0' ;
switch ($type)
{
case 'best':
$sql .= ' AND is_best = 1';
break;
case 'new':
$sql .= ' AND is_new = 1';
break;
case 'hot':
$sql .= ' AND is_hot = 1';
break;
case 'promote':
$time = gmtime();
$sql .= " AND is_promote = 1 AND promote_start_date <= '$time' AND promote_end_date >= '$time'";
break;
}
$sql.=' ORDER BY g.sort_order, g.goods_id DESC';
if ($num > 0)
{
$sql .= ' LIMIT ' . $num;
}
//echo $sql;
$res = $GLOBALS['db']->getAll($sql);
$goods = array();
foreach ($res AS $idx => $row)
{
if ($row['promote_price'] > 0)
{
$promote_price = bargain_price($row['promote_price'], $row['promote_start_date'], $row['promote_end_date']);
$goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';
}
else
{
$goods[$idx]['promote_price'] = '';
}
$goods[$idx]['id'] = $row['goods_id'];
$goods[$idx]['name'] = $row['goods_name'];
$goods[$idx]['brief'] = $row['goods_brief'];
$goods[$idx]['market_price'] = price_format($row['market_price']);
$goods[$idx]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?
sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];
$goods[$idx]['shop_price'] = price_format($row['shop_price']);
$goods[$idx]['thumb'] = empty($row['goods_thumb']) ? $GLOBALS['_CFG']['no_picture'] : $row['goods_thumb'];
$goods[$idx]['goods_img'] = empty($row['goods_img']) ? $GLOBALS['_CFG']['no_picture'] : $row['goods_img'];
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);
}
return $goods;
}
?>