/** * 订单指库出库操作 */ function appoint_order_out($retinfo, $subid) { global $db, $ecs; $in_time = gmtime(); foreach ($retinfo as $okey => $oval) { //订单分 foreach ($oval as $skey => $sval) { //订单当中的商品所在库房分 $in_list_info = createSn('zk'); $insert_inout_list = array('inout_sn' => $in_list_info['inout_sn'], 'inout_status' => 3, 'store_id' => $subid, 'adminer_id' => $_SESSION['admin_id'], 'inout_type' => INOUT_APPOINT_OUT, 'inout_mode' => 1, 'order_sn' => $okey, 'takegoods_man' => $_SESSION['user_name'], 'today_sn' => $in_list_info['today_sn'], 'add_date' => $in_list_info['add_date'], 'add_time' => $in_time, 'supplier_id' => 0, 'store_type_id' => 0); $db->autoExecute($ecs->table('store_inout_list'), $insert_inout_list, 'INSERT'); $inout_rec_id = $db->insert_id(); //商品进行处理 foreach ($sval as $k => $v) { $in_goods = array('inout_rec_id' => $inout_rec_id, 'goods_sn' => $v['goods_sn'], 'goods_id' => $v['goods_id'], 'attr_value' => $v['goods_attr_id'], 'inout_mode' => 1, 'number_yingshou' => $v['goods_number'], 'number_shishou' => $v['goods_number'], 'supplier_id' => 0, 'store_type_id' => 0); $db->autoExecute($ecs->table('store_inout_goods'), $in_goods, 'INSERT'); unset($in_goods); } //入库商品库存变更 update_stock_out($inout_rec_id, $subid); //插入出库单通过审核的日志或撤销后日志 $insert_inout_note = array('inout_rec_id' => $inout_rec_id, 'adminer_id' => $_SESSION['admin_id'], 'action_val' => '订单指库', 'inout_status' => 3, 'inout_note' => '订单指库涉及到的出库', 'add_time' => $in_time); $db->autoExecute($ecs->table('store_inout_note'), $insert_inout_note, 'INSERT'); } } return true; }
function quick_delivery($order_id, $invoice_no, $action_note = 'Wap端一键发货') { global $db, $ecs, $_CFG; if (!empty($invoice_no)) { $order_id = intval(trim($order_id)); $action_note = trim($action_note); /* 查询:根据订单id查询订单信息 */ if (!empty($order_id)) { $order = order_info($order_id); } else { die('order does not exist'); } /* 查询:根据订单是否完成 检查权限 */ if (order_finished($order)) { admin_priv('order_view_finished'); } else { admin_priv('order_view'); } /* 查询:如果管理员属于某个办事处,检查该订单是否也属于这个办事处 */ $sql = "SELECT agency_id FROM " . $ecs->table('supplier_admin_user') . " WHERE user_id = '{$_SESSION['supplier_user_id']}'"; $agency_id = $db->getOne($sql); if ($agency_id > 0) { if ($order['agency_id'] != $agency_id) { sys_msg($_LANG['priv_error'], 0); } } /* 查询:取得用户名 */ if ($order['user_id'] > 0) { $user = user_info($order['user_id']); if (!empty($user)) { $order['user_name'] = $user['user_name']; } } /* 查询:取得区域名 */ $order['region'] = $db->getOne($sql); /* 查询:其他处理 */ $order['order_time'] = local_date($_CFG['time_format'], $order['add_time']); $order['invoice_no'] = $order['shipping_status'] == SS_UNSHIPPED || $order['shipping_status'] == SS_PREPARING ? $_LANG['ss'][SS_UNSHIPPED] : $order['invoice_no']; /* 查询:是否保价 */ $order['insure_yn'] = empty($order['insure_fee']) ? 0 : 1; /* 查询:是否存在实体商品 */ $exist_real_goods = exist_real_goods($order_id); /* 查询:取得订单商品 */ $_goods = get_order_goods(array('order_id' => $order['order_id'], 'order_sn' => $order['order_sn'])); $attr = $_goods['attr']; $goods_list = $_goods['goods_list']; unset($_goods); /* 查询:商品已发货数量 此单可发货数量 */ if ($goods_list) { foreach ($goods_list as $key => $goods_value) { if (!$goods_value['goods_id']) { continue; } /* 超级礼包 */ if ($goods_value['extension_code'] == 'package_buy' && count($goods_value['package_goods_list']) > 0) { $goods_list[$key]['package_goods_list'] = package_goods($goods_value['package_goods_list'], $goods_value['goods_number'], $goods_value['order_id'], $goods_value['extension_code'], $goods_value['goods_id']); foreach ($goods_list[$key]['package_goods_list'] as $pg_key => $pg_value) { $goods_list[$key]['package_goods_list'][$pg_key]['readonly'] = ''; /* 使用库存 是否缺货 */ if ($pg_value['storage'] <= 0 && $_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_SHIP) { $goods_list[$key]['package_goods_list'][$pg_key]['send'] = $_LANG['act_good_vacancy']; $goods_list[$key]['package_goods_list'][$pg_key]['readonly'] = 'readonly="readonly"'; } elseif ($pg_value['send'] <= 0) { $goods_list[$key]['package_goods_list'][$pg_key]['send'] = $_LANG['act_good_delivery']; $goods_list[$key]['package_goods_list'][$pg_key]['readonly'] = 'readonly="readonly"'; } } } else { $goods_list[$key]['sended'] = $goods_value['send_number']; $goods_list[$key]['sended'] = $goods_value['goods_number']; $goods_list[$key]['send'] = $goods_value['goods_number'] - $goods_value['send_number']; $goods_list[$key]['readonly'] = ''; /* 是否缺货 */ if ($goods_value['storage'] <= 0 && $_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_SHIP) { $goods_list[$key]['send'] = $_LANG['act_good_vacancy']; $goods_list[$key]['readonly'] = 'readonly="readonly"'; } elseif ($goods_list[$key]['send'] <= 0) { $goods_list[$key]['send'] = $_LANG['act_good_delivery']; $goods_list[$key]['readonly'] = 'readonly="readonly"'; } } } } $suppliers_id = 0; $delivery['order_sn'] = trim($order['order_sn']); $delivery['add_time'] = trim($order['order_time']); $delivery['user_id'] = intval(trim($order['user_id'])); $delivery['how_oos'] = trim($order['how_oos']); $delivery['shipping_id'] = trim($order['shipping_id']); $delivery['shipping_fee'] = trim($order['shipping_fee']); $delivery['consignee'] = trim($order['consignee']); $delivery['address'] = trim($order['address']); $delivery['country'] = intval(trim($order['country'])); $delivery['province'] = intval(trim($order['province'])); $delivery['city'] = intval(trim($order['city'])); $delivery['district'] = intval(trim($order['district'])); $delivery['sign_building'] = trim($order['sign_building']); $delivery['email'] = trim($order['email']); $delivery['zipcode'] = trim($order['zipcode']); $delivery['tel'] = trim($order['tel']); $delivery['mobile'] = trim($order['mobile']); $delivery['best_time'] = trim($order['best_time']); $delivery['postscript'] = trim($order['postscript']); $delivery['how_oos'] = trim($order['how_oos']); $delivery['insure_fee'] = floatval(trim($order['insure_fee'])); $delivery['shipping_fee'] = floatval(trim($order['shipping_fee'])); $delivery['agency_id'] = intval(trim($order['agency_id'])); $delivery['shipping_name'] = trim($order['shipping_name']); /* 查询订单信息 */ $order = order_info($order_id); /* 检查能否操作 */ $operable_list = operable_list($order); /* 初始化提示信息 */ $msg = ''; /* 定义当前时间 */ /* 取得订单商品 */ $_goods = get_order_goods(array('order_id' => $order_id, 'order_sn' => $delivery['order_sn'])); $goods_list = $_goods['goods_list']; /* 检查此单发货商品库存缺货情况 */ /* $goods_list已经过处理 超值礼包中商品库存已取得 */ $virtual_goods = array(); $package_virtual_goods = array(); /* 生成发货单 */ /* 获取发货单号和流水号 */ $delivery['delivery_sn'] = get_delivery_sn(); $delivery_sn = $delivery['delivery_sn']; /* 获取当前操作员 */ $delivery['action_user'] = $_SESSION['supplier_name']; /* 获取发货单生成时间 */ define('GMTIME_UTC', gmtime()); $delivery['update_time'] = GMTIME_UTC; $delivery_time = $delivery['update_time']; $sql = "select add_time from " . $GLOBALS['ecs']->table('order_info') . " WHERE order_sn = '" . $delivery['order_sn'] . "'"; $delivery['add_time'] = $GLOBALS['db']->GetOne($sql); /* 获取发货单所属供应商 */ $delivery['suppliers_id'] = $suppliers_id; /* 设置默认值 */ $delivery['status'] = 2; // 正常 $delivery['order_id'] = $order_id; /* 过滤字段项 */ $filter_fileds = array('order_sn', 'add_time', 'user_id', 'how_oos', 'shipping_id', 'shipping_fee', 'consignee', 'address', 'country', 'province', 'city', 'district', 'sign_building', 'email', 'zipcode', 'tel', 'mobile', 'best_time', 'postscript', 'insure_fee', 'agency_id', 'delivery_sn', 'action_user', 'update_time', 'suppliers_id', 'status', 'order_id', 'shipping_name'); $_delivery = array(); foreach ($filter_fileds as $value) { $_delivery[$value] = $delivery[$value]; } /* 发货单入库 */ $query = $db->autoExecute($ecs->table('delivery_order'), $_delivery, 'INSERT', '', 'SILENT'); $delivery_id = $db->insert_id(); if ($delivery_id) { $delivery_goods = array(); //发货单商品入库 if (!empty($goods_list)) { foreach ($goods_list as $value) { // 商品(实货)(虚货) if (empty($value['extension_code']) || $value['extension_code'] == 'virtual_card') { $delivery_goods = array('delivery_id' => $delivery_id, 'goods_id' => $value['goods_id'], 'product_id' => $value['product_id'], 'product_sn' => $value['product_sn'], 'goods_id' => $value['goods_id'], 'goods_name' => $value['goods_name'], 'brand_name' => $value['brand_name'], 'goods_sn' => $value['goods_sn'], 'send_number' => $value['goods_number'], 'parent_id' => 0, 'is_real' => $value['is_real'], 'goods_attr' => $value['goods_attr']); /* 如果是货品 */ if (!empty($value['product_id'])) { $delivery_goods['product_id'] = $value['product_id']; } $query = $db->autoExecute($ecs->table('delivery_goods'), $delivery_goods, 'INSERT', '', 'SILENT'); $sql = "UPDATE " . $GLOBALS['ecs']->table('order_goods') . "\n SET send_number = " . $value['goods_number'] . "\n WHERE order_id = '" . $value['order_id'] . "'\n AND goods_id = '" . $value['goods_id'] . "' "; $GLOBALS['db']->query($sql, 'SILENT'); } elseif ($value['extension_code'] == 'package_buy') { foreach ($value['package_goods_list'] as $pg_key => $pg_value) { $delivery_pg_goods = array('delivery_id' => $delivery_id, 'goods_id' => $pg_value['goods_id'], 'product_id' => $pg_value['product_id'], 'product_sn' => $pg_value['product_sn'], 'goods_name' => $pg_value['goods_name'], 'brand_name' => '', 'goods_sn' => $pg_value['goods_sn'], 'send_number' => $value['goods_number'], 'parent_id' => $value['goods_id'], 'extension_code' => $value['extension_code'], 'is_real' => $pg_value['is_real']); $query = $db->autoExecute($ecs->table('delivery_goods'), $delivery_pg_goods, 'INSERT', '', 'SILENT'); $sql = "UPDATE " . $GLOBALS['ecs']->table('order_goods') . "\n SET send_number = " . $value['goods_number'] . "\n WHERE order_id = '" . $value['order_id'] . "'\n AND goods_id = '" . $pg_value['goods_id'] . "' "; $GLOBALS['db']->query($sql, 'SILENT'); } } } } } else { /* 操作失败 */ $links[] = array('text' => $_LANG['order_info'], 'href' => 'order.php?act=info&order_id=' . $order_id); sys_msg($_LANG['act_false'], 1, $links); } unset($filter_fileds, $delivery, $_delivery, $order_finish); /* 定单信息更新处理 */ if (true) { /* 标记订单为已确认 "发货中" */ /* 更新发货时间 */ $order_finish = get_order_finish($order_id); $shipping_status = SS_SHIPPED_ING; if ($order['order_status'] != OS_CONFIRMED && $order['order_status'] != OS_SPLITED && $order['order_status'] != OS_SPLITING_PART) { $arr['order_status'] = OS_CONFIRMED; $arr['confirm_time'] = GMTIME_UTC; } $arr['order_status'] = $order_finish ? OS_SPLITED : OS_SPLITING_PART; // 全部分单、部分分单 $arr['shipping_status'] = $shipping_status; update_order($order_id, $arr); } /* 记录log */ order_action($order['order_sn'], $arr['order_status'], $shipping_status, $order['pay_status'], $action_note); /* 清除缓存 */ clear_cache_files(); /* 根据发货单id查询发货单信息 */ if (!empty($delivery_id)) { $delivery_order = delivery_order_info($delivery_id); } elseif (!empty($order_sn)) { $delivery_id = $GLOBALS['db']->getOne("SELECT delivery_id FROM " . $ecs->table('delivery_order') . " WHERE order_sn = " . $order_sn); $delivery_order = delivery_order_info($delivery_id); } else { die('order does not exist'); } /* 如果管理员属于某个办事处,检查该订单是否也属于这个办事处 */ $sql = "SELECT agency_id FROM " . $ecs->table('supplier_admin_user') . " WHERE user_id = '" . $_SESSION['supplier_user_id'] . "'"; $agency_id = $db->getOne($sql); if ($agency_id > 0) { if ($delivery_order['agency_id'] != $agency_id) { sys_msg($_LANG['priv_error']); } /* 取当前办事处信息 */ $sql = "SELECT agency_name FROM " . $ecs->table('agency') . " WHERE agency_id = '{$agency_id}' LIMIT 0, 1"; $agency_name = $db->getOne($sql); $delivery_order['agency_name'] = $agency_name; } /* 取得用户名 */ if ($delivery_order['user_id'] > 0) { $user = user_info($delivery_order['user_id']); if (!empty($user)) { $delivery_order['user_name'] = $user['user_name']; } } /* 取得区域名 */ $sql = "SELECT concat(IFNULL(c.region_name, ''), ' ', IFNULL(p.region_name, ''), " . "' ', IFNULL(t.region_name, ''), ' ', IFNULL(d.region_name, '')) AS region " . "FROM " . $ecs->table('order_info') . " AS o " . "LEFT JOIN " . $ecs->table('region') . " AS c ON o.country = c.region_id " . "LEFT JOIN " . $ecs->table('region') . " AS p ON o.province = p.region_id " . "LEFT JOIN " . $ecs->table('region') . " AS t ON o.city = t.region_id " . "LEFT JOIN " . $ecs->table('region') . " AS d ON o.district = d.region_id " . "WHERE o.order_id = '" . $delivery_order['order_id'] . "'"; $delivery_order['region'] = $db->getOne($sql); /* 是否保价 */ $order['insure_yn'] = empty($order['insure_fee']) ? 0 : 1; /* 取得发货单商品 */ $goods_sql = "SELECT *\n FROM " . $ecs->table('delivery_goods') . "\n WHERE delivery_id = " . $delivery_order['delivery_id']; $goods_list = $GLOBALS['db']->getAll($goods_sql); /* 是否存在实体商品 */ $exist_real_goods = 0; if ($goods_list) { foreach ($goods_list as $value) { if ($value['is_real']) { $exist_real_goods++; } } } /* 取得订单操作记录 */ $act_list = array(); $sql = "SELECT * FROM " . $ecs->table('order_action') . " WHERE order_id = '" . $delivery_order['order_id'] . "' AND action_place = 1 ORDER BY log_time DESC,action_id DESC"; $res = $db->query($sql); while ($row = $db->fetchRow($res)) { $row['order_status'] = $_LANG['os'][$row['order_status']]; $row['pay_status'] = $_LANG['ps'][$row['pay_status']]; $row['shipping_status'] = $row['shipping_status'] == SS_SHIPPED_ING ? $_LANG['ss_admin'][SS_SHIPPED_ING] : $_LANG['ss'][$row['shipping_status']]; $row['action_time'] = local_date($_CFG['time_format'], $row['log_time']); $act_list[] = $row; } /*同步发货*/ /*判断支付方式是否支付宝*/ $alipay = false; $order = order_info($delivery_order['order_id']); //根据订单ID查询订单信息,返回数组$order $payment = payment_info($order['pay_id']); //取得支付方式信息 /* 定义当前时间 */ define('GMTIME_UTC', gmtime()); // 获取 UTC 时间戳 /* 根据发货单id查询发货单信息 */ if (!empty($delivery_id)) { $delivery_order = delivery_order_info($delivery_id); } else { die('order does not exist'); } /* 查询订单信息 */ $order = order_info($order_id); /* 检查此单发货商品库存缺货情况 */ $virtual_goods = array(); $delivery_stock_sql = "SELECT DG.goods_id, DG.is_real, DG.product_id, SUM(DG.send_number) AS sums, IF(DG.product_id > 0, P.product_number, G.goods_number) AS storage, G.goods_name,DG.goods_attr, DG.send_number\n FROM " . $GLOBALS['ecs']->table('delivery_goods') . " AS DG, " . $GLOBALS['ecs']->table('goods') . " AS G, " . $GLOBALS['ecs']->table('products') . " AS P\n WHERE DG.goods_id = G.goods_id\n AND DG.delivery_id = '{$delivery_id}'\n AND DG.product_id = P.product_id\n GROUP BY DG.product_id "; $delivery_stock_result = $GLOBALS['db']->getAll($delivery_stock_sql); /* 如果商品存在规格就查询规格,如果不存在规格按商品库存查询 */ if (!empty($delivery_stock_result)) { foreach ($delivery_stock_result as $value) { if (($value['sums'] > $value['storage'] || $value['storage'] <= 0) && ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_SHIP || $_CFG['use_storage'] == '0' && $value['is_real'] == 0)) { /* 操作失败 */ $links[] = array('text' => $_LANG['order_info'], 'href' => 'order.php?act=delivery_info&delivery_id=' . $delivery_id); sys_msg(sprintf($_LANG['act_good_vacancy'], $value['goods_name']), 1, $links); break; } /* 虚拟商品列表 virtual_card*/ if ($value['is_real'] == 0) { $virtual_goods[] = array('goods_id' => $value['goods_id'], 'goods_name' => $value['goods_name'], 'num' => $value['send_number']); } } } else { $delivery_stock_sql = "SELECT DG.goods_id, DG.is_real, SUM(DG.send_number) AS sums, G.goods_number, G.goods_name,DG.goods_attr, DG.send_number\n FROM " . $GLOBALS['ecs']->table('delivery_goods') . " AS DG, " . $GLOBALS['ecs']->table('goods') . " AS G\n WHERE DG.goods_id = G.goods_id\n AND DG.delivery_id = '{$delivery_id}'\n GROUP BY DG.goods_id "; $delivery_stock_result = $GLOBALS['db']->getAll($delivery_stock_sql); foreach ($delivery_stock_result as $value) { if (($value['sums'] > $value['goods_number'] || $value['goods_number'] <= 0) && ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_SHIP || $_CFG['use_storage'] == '0' && $value['is_real'] == 0)) { /* 操作失败 */ $links[] = array('text' => $_LANG['order_info'], 'href' => 'order.php?act=delivery_info&delivery_id=' . $delivery_id); sys_msg(sprintf($_LANG['act_good_vacancy'], $value['goods_name']), 1, $links); break; } /* 虚拟商品列表 virtual_card*/ if ($value['is_real'] == 0) { $virtual_goods[] = array('goods_id' => $value['goods_id'], 'goods_name' => $value['goods_name'], 'num' => $value['send_number']); } } } /* 发货 */ /* 处理虚拟卡 商品(虚货) */ if (is_array($virtual_goods) && count($virtual_goods) > 0) { foreach ($virtual_goods as $virtual_value) { virtual_card_shipping($virtual_value, $order['order_sn'], $msg, 'split'); } } /* 如果使用库存,且发货时减库存,则修改库存 */ /*if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_SHIP) { foreach ($delivery_stock_result as $value) { // 商品(实货)、超级礼包(实货) if ($value['is_real'] != 0) { //(货品) if (!empty($value['product_id'])) { $minus_stock_sql = "UPDATE " . $GLOBALS['ecs']->table('products') . " SET product_number = product_number - " . $value['sums'] . " WHERE product_id = " . $value['product_id']; $GLOBALS['db']->query($minus_stock_sql, 'SILENT'); } $minus_stock_sql = "UPDATE " . $GLOBALS['ecs']->table('goods') . " SET goods_number = goods_number - " . $value['sums'] . " WHERE goods_id = " . $value['goods_id']; $GLOBALS['db']->query($minus_stock_sql, 'SILENT'); } } }*/ //morestock_morecity start if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_SHIP) { $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']); 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']); $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['supplier_user_id']}', '1', '1', '{$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}', '1', '{$value['sums']}', '{$value['sums']}','{$order['supplier_id']}','{$stock_type_id}') "; $db->query($sql); update_stock_out($inout_rec_id, $store_row['store_id']); //更新库存表 } } } //morestock_morecity end /* 修改发货单信息 */ $invoice_no = trim($invoice_no); $_delivery['invoice_no'] = $invoice_no; $_delivery['status'] = 0; // 0,为已发货 $query = $db->autoExecute($ecs->table('delivery_order'), $_delivery, 'UPDATE', "delivery_id = {$delivery_id}", 'SILENT'); if (!$query) { /* 操作失败 */ $links[] = array('text' => $_LANG['delivery_sn'] . $_LANG['detail'], 'href' => 'order.php?act=delivery_info&delivery_id=' . $delivery_id); sys_msg($_LANG['act_false'], 1, $links); } /* 标记订单为已确认 "已发货" */ /* 更新发货时间 */ $order_finish = get_all_delivery_finish($order_id); $shipping_status = $order_finish == 1 ? SS_SHIPPED : SS_SHIPPED_PART; $arr['shipping_status'] = $shipping_status; $arr['shipping_time'] = GMTIME_UTC; // 发货时间 $arr['invoice_no'] = trim($order['invoice_no'] . '<br>' . $invoice_no, '<br>'); update_order($order_id, $arr); /* 发货单发货记录log */ order_action($order['order_sn'], OS_CONFIRMED, $shipping_status, $order['pay_status'], $action_note, null, 1); /* 如果当前订单已经全部发货 */ if ($order_finish) { /* 如果订单用户不为空,计算积分,并发给用户;发红包 */ 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_id, $order['supplier_id']); } /* 发送邮件 */ $cfg = $_CFG['send_ship_email']; if ($cfg == '1') { $order['invoice_no'] = $invoice_no; $tpl = get_mail_template('deliver_notice'); $smarty->assign('order', $order); $smarty->assign('send_time', local_date($_CFG['time_format'])); $smarty->assign('shop_name', $_CFG['shop_name']); $smarty->assign('send_date', local_date($_CFG['date_format'])); $smarty->assign('sent_date', local_date($_CFG['date_format'])); $smarty->assign('confirm_url', $ecs->url() . 'receive.php?id=' . $order['order_id'] . '&con=' . rawurlencode($order['consignee'])); $smarty->assign('send_msg_url', $ecs->url() . 'user.php?act=message_list&order_id=' . $order['order_id']); $content = $smarty->fetch('str:' . $tpl['template_content']); if (!send_mail($order['consignee'], $order['email'], $tpl['template_subject'], $content, $tpl['is_html'])) { $msg = $_LANG['send_mail_fail']; } } /* 如果需要,发短信 */ if ($GLOBALS['_CFG']['sms_order_shipped'] == '1' && $order['mobile'] != '') { include_once '../send.php'; $content = '您的订单已发货,订单号为' . $order['order_sn'] . '收货人为' . $order['consignee'] . '收货地址为' . $order['address'] . ',请注意查收【' . $GLOBALS['_CFG']['shop_name'] . '】'; sendSMS($order['mobile'], $content); } } /* 清除缓存 */ clear_cache_files(); /* 操作成功 */ $links[] = array('text' => '发货单列表', 'href' => 'order.php?act=delivery_list'); $links[] = array('text' => $_LANG['delivery_sn'] . $_LANG['detail'], 'href' => 'order.php?act=delivery_info&delivery_id=' . $delivery_id); sys_msg($_LANG['act_ok'], 0, $links); } }
sys_msg('对不起,不存在这个入库单!'); } //判断有没有审核权限 if ($_REQUEST['inout_status'] != '2') { $sql_sh = "select a.rec_id from " . $ecs->table('store_main') . " AS m left join " . $ecs->table('store_adminer') . " AS a on m.parent_id=a.store_id where m.store_id='{$inout_row['store_id']}' and a.admin_id='{$_SESSION['supplier_user_id']}' "; $rec_id_sh = $db->getOne($sql_sh); if (!$rec_id_sh) { sys_msg('对不起,您没有审核权限!'); } } $add_time = gmtime(); $inout_note = empty($_REQUEST['note']) ? '' : trim($_REQUEST['note']); $inout_status = empty($_REQUEST['inout_status']) ? '' : intval($_REQUEST['inout_status']); $action_val = empty($_REQUEST['action_val']) ? '' : trim($_REQUEST['action_val']); if ($inout_status == '3') { $upre = update_stock_out($rec_id, $inout_row['store_id']); //更新库存表 if ($upre['error']) { sys_msg($upre['error_item']); } } /* 更新出库单状态 */ $sql = "update " . $ecs->table('store_inout_list') . " set inout_status='{$inout_status}' where rec_id='{$rec_id}' "; $db->query($sql); $sql = "insert into " . $ecs->table('store_inout_note') . " (inout_rec_id, adminer_id, action_val, inout_status, inout_note, add_time, supplier_id, store_type_id)" . " values('{$rec_id}', '{$_SESSION['supplier_user_id']}', '{$action_val}', '{$inout_status}', '{$inout_note}', '{$add_time}', '{$_SESSION['supplier_id']}', '{$_REQUEST['storetypeid']}')"; $db->query($sql); $link[0]['text'] = $_LANG['back_list_in']; $link[0]['href'] = 'store_inout_out.php?act=list'; clear_cache_files(); // 清除相关的缓存文件 sys_msg('恭喜,操作成功', 0, $link);
if ($move_id <= 0) { sys_msg('非法操作!'); } if ($move_status != MOVE_TWO) { sys_msg('非法操作!状态修改不正确!'); } $store_user_out = $_SESSION['supplier_user_id']; $out_time = gmtime(); //获取转拨单中的出库单单号和仓库 $sql = "select rec_id,store_id from " . $ecs->table('store_inout_list') . ' where move_id=' . $move_id . ' and inout_mode=1 and inout_status=2'; $out_row = $db->getRow($sql); if (!$out_row) { sys_msg('对不起,不存在这个出库单!'); } //将商品出库,库存做减操作 $upre = update_stock_out($out_row['rec_id'], $out_row['store_id']); //更新库存表 if ($upre['error']) { sys_msg($upre['error_item']); } //修改转拨单状态 $update_move = array('store_user_out' => $store_user_out, 'status' => MOVE_TWO, 'out_time' => $out_time); $db->autoExecute($ecs->table('store_move'), $update_move, 'UPDATE', 'move_id=' . $move_id); //修改转拨单出库申请单状态 $update_inout_list = array('inout_status' => 3, 'adminer_id' => $store_user_out); $db->autoExecute($ecs->table('store_inout_list'), $update_inout_list, 'UPDATE', 'rec_id=' . $out_row['rec_id']); //插入出库单通过审核的日志 $insert_inout_note = array('inout_rec_id' => $out_row['rec_id'], 'adminer_id' => $store_user_out, 'action_val' => $move_action, 'inout_status' => 3, 'inout_note' => $note, 'add_time' => $out_time, 'supplier_id' => $_SESSION['supplier_id'], 'store_type_id' => $_REQUEST[store_type_id]); $db->autoExecute($ecs->table('store_inout_note'), $insert_inout_note, 'INSERT'); $link[0]['text'] = $_LANG['back_list_move']; $link[0]['href'] = 'store_move.php?act=list&io=out';