if ($_REQUEST['act'] == 'get_goodslist_byOrdersn') { require ROOT_PATH . 'includes/cls_json.php'; $json = new JSON(); $opt['error'] = 0; $order_sn = empty($_GET['order_sn']) ? '0' : trim($_GET['order_sn']); $sql = "select back_id from " . $ecs->table('back_order') . " where order_sn = '{$order_sn}' "; $back_id = $db->getOne($sql); if (!$back_id) { $opt['error'] = 1; } else { $sql = "select b.goods_id, b.goods_sn, b.goods_attr, b.back_goods_number, g.goods_name, g.goods_thumb " . " from " . $ecs->table('back_goods') . " AS b left join " . $ecs->table('goods') . " AS g on b.goods_id=g.goods_id " . " where b.back_id='{$back_id}' "; $res_ecshop120 = $db->query($sql); while ($row_ecshop120 = $db->fetchRow($res_ecshop120)) { $row_ecshop120['goods_thumb'] = get_image_path($row_ecshop120['goods_id'], $row_ecshop120['goods_thumb'], true); $row_ecshop120['goods_attr_name'] = nl2br($row_ecshop120['goods_attr']); $row_ecshop120['goods_attr'] = get_goods_attr_id($row_ecshop120['goods_id'], $row_ecshop120['goods_attr']); $opt['goods_list'][] = $row_ecshop120; } } echo $json->encode($opt); } /* ajax获取商品信息__根据商品货号 */ if ($_REQUEST['act'] == 'get_goodsInfo_bysn') { require ROOT_PATH . 'includes/cls_json.php'; $opt['error'] = 0; $goods_sn = empty($_GET['goods_sn']) ? 0 : trim($_GET['goods_sn']); $sql = "select goods_id, goods_name, goods_thumb, supplier_id from " . $ecs->table('goods') . " where goods_sn= '{$goods_sn}' "; $goodsinfo = $db->getRow($sql); if ($goodsinfo['goods_id'] > 0 && $goodsinfo['supplier_id'] == 0) { $opt['goods_thumb'] = get_image_path($goodsinfo['goods_id'], $goodsinfo['goods_thumb'], true); $opt['goods_name'] = $goodsinfo['goods_name'];
/** * 添加商品到购物车 * * @access public * @param integer $goods_id 商品编号 * @param integer $num 商品数量 * @param array $spec 规格 * @param integer $parent 基本件 * @return boolean */ function addto_cart($goods_id, $num = 1, $spec = array(), $is_integ = 0, $parent = 0) { $GLOBALS['err']->clean(); /* 取得商品信息 */ $sql = "SELECT goods_name, goods_sn, is_on_sale, cat_id, is_real, shop_price, integral " . " FROM " . $GLOBALS['ecs']->table('goods') . " WHERE goods_id = '{$goods_id}' and is_delete = 0 "; $goods = $GLOBALS['db']->getRow($sql); if (empty($goods)) { $GLOBALS['err']->add($GLOBALS['_LANG']['goods_not_exists'], ERR_NOT_EXISTS); return false; } /* 是否正在销售 */ if ($goods['is_on_sale'] == 0) { $GLOBALS['err']->add($GLOBALS['_LANG']['not_on_sale'], ERR_NOT_ON_SALE); return false; } $goods_price = $goods['shop_price']; $spec_price = spec_price($spec); $goods_price += $spec_price; $goods_attr = get_goods_attr_info($spec); $goods_attr_id = get_goods_attr_id($spec[0]); $name = $goods_attr_id == '194' || $goods_attr_id == '195' ? stripenglish($goods['goods_name']) . '(无糖)' : stripenglish($goods['goods_name']); if (strpos($goods_attr, '0.68磅')) { $res_attr = '0.68磅'; } elseif (strpos($goods_attr, '磅')) { $res_attr = substr($goods_attr, strpos($goods_attr, '磅') - 3, 6); } elseif (strpos($goods_attr, 'P')) { $res_attr = substr($goods_attr, strpos($goods_attr, 'P') - 3, 4); } else { $res_attr = substr($goods_attr, 7, 6); } /* 初始化要插入购物车的基本件数据 */ $parent = array('user_id' => $_SESSION['user_id'], 'session_id' => SESS_ID, 'goods_id' => $goods_id, 'goods_sn' => addslashes($goods['goods_sn']), 'goods_name' => addslashes($name), 'goods_attr' => addslashes($res_attr), 'goods_attr_id' => $goods_attr_id, 'is_real' => $goods['is_real'], 'is_integral' => $is_integ); /* 如果数量不为0,作为基本件插入 */ if ($num > 0) { /* 检查该商品是否已经存在在购物车中 */ $sql = "SELECT goods_number FROM " . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '" . SESS_ID . "' AND goods_id = '{$goods_id}' " . "AND parent_id = 0 AND goods_attr = '" . $res_attr . "' " . "AND is_integral = '{$is_integ}' AND goods_attr_id = '{$goods_attr_id}'"; $row = $GLOBALS['db']->getRow($sql); if ($row) { $num += $row['goods_number']; $sql = "UPDATE " . $GLOBALS['ecs']->table('cart') . " SET goods_number = '{$num}'" . " WHERE session_id = '" . SESS_ID . "' AND goods_id = '{$goods_id}' " . "AND parent_id = 0 AND goods_attr = '" . $res_attr . "' " . "AND goods_attr_id = '{$goods_attr_id}'"; $GLOBALS['db']->query($sql); } else { $parent['goods_price'] = $is_integ == 1 && $goods['cat_id'] != 4 ? $goods['integral'] : max($goods_price, 0); $parent['goods_attr_id'] = $parent['goods_price'] > 100 ? $parent['goods_attr_id'] : 0; $parent['goods_number'] = $num; $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('cart'), $parent, 'INSERT'); } } /* 把赠品删除 */ $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '" . SESS_ID . "' AND is_gift <> 0"; $GLOBALS['db']->query($sql); return true; }
$store_error = ''; foreach ($delivery_stock_result as $value) { $goods_attr_id = get_goods_attr_id($value['goods_id'], $value['goods_attr']); $store_row = get_storeid_youhuo($order['province'], $order['city'], $order['district'], $order['xiangcun'], $value['goods_id'], $goods_attr_id, $order['supplier_id'], $order_id); if (!$store_row['store_id'] or $store_row['store_number'] < $value['sums']) { $store_error = '有个别货物对应仓库库存不够,无法完成此次发货操作!请稍候重新发货!'; break; } } if ($store_error) { sys_msg($store_error); } else { $add_time = gmtime(); $add_date = local_date('Ymd'); foreach ($delivery_stock_result as $value) { $goods_attr_id = get_goods_attr_id($value['goods_id'], $value['goods_attr']); $store_row = get_storeid_youhuo($order['province'], $order['city'], $order['district'], $order['xiangcun'], $value['goods_id'], $goods_attr_id, $order['supplier_id'], $order_id); $sql = "select max(today_sn) from " . $ecs->table('store_inout_list') . " where inout_mode=1 and add_date='{$add_date}' "; $inout_count = $db->getOne($sql); $inout_sn = $inout_count ? intval($inout_count + 1) : 1; $today_sn = $inout_sn; $inout_sn = str_pad($inout_sn, 4, "0", STR_PAD_LEFT); $inout_sn = 'ck' . $add_date . $inout_sn; $stock_type_id = 0; //默认为自营仓库 if ($order['supplier_id'] > 0) { $stock_type_id = $db->getOne('select type from ' . $ecs->table('store_type') . " where supplier_id=" . $order['supplier_id']); } $sql = "insert into " . $ecs->table('store_inout_list') . "(inout_sn, inout_status, store_id, adminer_id, inout_type, inout_mode, order_sn, " . "takegoods_man, today_sn, add_date, add_time, supplier_id, store_type_id) " . "values('{$inout_sn}', '3', '{$store_row['store_id']}', '{$_SESSION['admin_id']}', '1', '1', '{$order['order_sn']}', " . "'{$_SESSION['admin_name']}', '{$today_sn}' , '{$add_date}', '{$add_time}','{$order['supplier_id']}','{$stock_type_id}' ) "; $db->query($sql); $inout_rec_id = $db->insert_id();
function cancel_delivery($order_id, $delivery_id) { global $db, $ecs, $_CFG; /* 取得参数 */ $delivery = ''; /* 根据发货单id查询发货单信息 */ if (!empty($delivery_id)) { $delivery_order = delivery_order_info($delivery_id); } else { sys_msg('订单号不能为空!', 1); } /* 查询订单信息 */ $order = order_info($order_id); /* 取消当前发货单物流单号 */ $_delivery['invoice_no'] = ''; $_delivery['status'] = 2; $query = $db->autoExecute($ecs->table('delivery_order'), $_delivery, 'UPDATE', "delivery_id = {$delivery_id}", 'SILENT'); if (!$query) { /* 操作失败 */ $links[] = array('text' => $GLOBALS['_LANG']['delivery_sn'] . $GLOBALS['_LANG']['detail'], 'href' => 'order.php?act=delivery_info&delivery_id=' . $delivery_id); sys_msg($GLOBALS['_LANG']['act_false'], 1, $links); exit; } /* 修改定单发货单号 */ $invoice_no_order = explode('<br>', $order['invoice_no']); $invoice_no_delivery = explode('<br>', $delivery_order['invoice_no']); foreach ($invoice_no_order as $key => $value) { $delivery_key = array_search($value, $invoice_no_delivery); if ($delivery_key !== false) { unset($invoice_no_order[$key], $invoice_no_delivery[$delivery_key]); if (count($invoice_no_delivery) == 0) { break; } } } $_order['invoice_no'] = implode('<br>', $invoice_no_order); /* 更新配送状态 */ $order_finish = get_all_delivery_finish($order_id); $shipping_status = $order_finish == -1 ? SS_SHIPPED_PART : SS_SHIPPED_ING; $arr['shipping_status'] = $shipping_status; if ($shipping_status == SS_SHIPPED_ING) { $arr['shipping_time'] = ''; // 发货时间 } $arr['invoice_no'] = $_order['invoice_no']; update_order($order_id, $arr); /* 发货单取消发货记录log */ order_action($order['order_sn'], $order['order_status'], $shipping_status, $order['pay_status'], $action_note, null, 1); /* 如果使用库存,则增加库存 */ /* 代码增加_start By morestock_morecity */ if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_SHIP) { $delivery_stock_sql = "SELECT * FROM " . $GLOBALS['ecs']->table('delivery_goods') . " WHERE delivery_id = '{$delivery_id}' "; $delivery_stock_result = $GLOBALS['db']->getAll($delivery_stock_sql); $store_error = ''; //$goods_attr_id = get_goods_attr_id($value['goods_id'], $value['goods_attr']); $store_id_zhyh = get_storeid_by_ssq($order['province'], $order['city'], $order['district'], $order['xiangcun'], $order['supplier_id']); if (!$store_id_zhyh) { $store_error = '该发货单没有对应仓库!'; } if ($store_error) { sys_msg($store_error); } else { foreach ($delivery_stock_result as $key => $value) { $goods_attr_id = get_goods_attr_id($value['goods_id'], $value['goods_attr']); $store_row = get_storeid_youhuo($order['province'], $order['city'], $order['district'], $order['xiangcun'], $value['goods_id'], $goods_attr_id, $order['supplier_id'], $order_id); $add_time = gmtime(); $add_date = local_date('Ymd'); $sql = "select max(today_sn) from " . $ecs->table('store_inout_list') . " where inout_mode=2 and add_date='{$add_date}' "; $inout_count = $db->getOne($sql); $inout_sn = $inout_count ? intval($inout_count + 1) : 1; $today_sn = $inout_sn; $inout_sn = str_pad($inout_sn, 4, "0", STR_PAD_LEFT); $inout_sn = 'rk' . $add_date . $inout_sn; $stock_type_id = 0; if ($order['supplier_id'] > 0) { $stock_type_id = $db->getOne('select type from ' . $ecs->table('store_type') . " where supplier_id=" . $order['supplier_id']); } $sql = "insert into " . $ecs->table('store_inout_list') . "(inout_sn, inout_status, store_id, adminer_id, inout_type, inout_mode, order_sn, " . "takegoods_man, today_sn, add_date, add_time, supplier_id, store_type_id) " . "values('{$inout_sn}', '3', '{$store_row['store_id']}', '{$_SESSION['supplier_user_id']}', '5', '2', '{$order['order_sn']}', " . "'{$_SESSION['supplier_name']}', '{$today_sn}' , '{$add_date}', '{$add_time}','{$order['supplier_id']}', '{$stock_type_id}' ) "; $db->query($sql); $inout_rec_id = $db->insert_id(); $sql = "insert into " . $ecs->table('store_inout_goods') . "(inout_rec_id, goods_id, goods_sn, attr_value, inout_mode, number_yingshou, number_shishou, supplier_id, store_type_id) " . "values('{$inout_rec_id}', '{$value['goods_id']}', '{$value['goods_sn']}', '{$goods_attr_id}', '2', '{$value['send_number']}', '{$value['send_number']}','{$order['supplier_id']}', '{$stock_type_id}') "; $db->query($sql); $upre = update_stock_in($inout_rec_id, $store_row['store_id']); //更新库存表 } } } /* 代码增加_end By morestock_morecity */ /* 发货单全退回时,退回其它 */ if ($order['order_status'] == SS_SHIPPED_ING) { /* 如果订单用户不为空,计算积分,并退回 */ if ($order['user_id'] > 0) { /* 取得用户信息 */ $user = user_info($order['user_id']); /* 计算并退回积分 */ $integral = integral_to_give($order); log_account_change($order['user_id'], 0, 0, -1 * intval($integral['rank_points']), -1 * intval($integral['custom_points']), sprintf($GLOBALS['_LANG']['return_order_gift_integral'], $order['order_sn'])); /* todo 计算并退回红包 */ return_order_bonus($order_id); } } /* 清除缓存 */ clear_cache_files(); /* 操作成功 */ $links[] = array('text' => $GLOBALS['_LANG']['delivery_sn'] . $GLOBALS['_LANG']['detail'], 'href' => 'order.php?act=delivery_info&delivery_id=' . $delivery_id); sys_msg($GLOBALS['_LANG']['act_ok'], 0, $links); }