function act_getGroupInfo() { $userId = $_SESSION['userId']; $shipOrderGroup = $_POST['order_group']; $group_sql = WhGoodsAssignModel::getOrderGroup("*", array('assignNumber' => $shipOrderGroup)); //var_dump($group_sql);exit; if (empty($group_sql)) { self::$errCode = "001"; self::$errMsg = "该调拨单号不存在,请重新输入!"; return false; } if ($group_sql[0]['status'] != 106) { self::$errCode = "002"; self::$errMsg = "调拨单只有在接收复核后才可完结!"; return false; } $orderIds = WhGoodsAssignModel::getAssignOrderIds($group_sql[0]['id']); if (!$orderIds) { self::$errCode = "003"; self::$errMsg = "该调拨单下没有关联的B仓订单!"; return false; } $ids = array(); foreach ($orderIds as $id) { $ids[] = $id['orderId']; } TransactionBaseModel::begin(); //更新调拨单状态 $info = WhGoodsAssignModel::updateAssignListStatus(array('id' => $group_sql[0]['id']), array('status' => 107)); if (!$info) { self::$errCode = "004"; self::$errMsg = "更新调拨单状态失败!"; TransactionBaseModel::rollback(); return false; } $ids = implode(',', $ids); $info = CommonModel::updateOrderStatus($ids, 745); if ($info['errCode'] != 200) { self::$errCode = "004"; self::$errMsg = "同步旧ERP订单状态失败!"; TransactionBaseModel::rollback(); return false; } self::$errCode = "0"; self::$errMsg = "调拨单完结成功!"; TransactionBaseModel::commit(); return TRUE; }
function act_getGroupInfo() { $userId = $_SESSION['userId']; $shipOrderGroup = $_POST['order_group']; $group_sql = WhGoodsAssignModel::getOrderGroup("*", array('assignNumber' => $shipOrderGroup)); //var_dump($group_sql);exit; if (empty($group_sql)) { self::$errCode = "003"; self::$errMsg = "该调拨单号不存在,请重新输入!"; return false; } else { if ($group_sql[0]['status'] != 104) { self::$errCode = "003"; self::$errMsg = "该调拨单不在待出库状态!"; return false; } if ($group_sql[0]['status'] == 105) { self::$errCode = "0"; self::$errMsg = "该调拨单已完成出库扫描,请扫描其他清单!"; return false; } //$sku_info = WhGoodsAssignModel::getDetail( $group_sql[0]['id'] ," and a.checkUid = 0"); // if(!empty($sku_info)){ // self::$errCode = "004"; // self::$errMsg = "该调拨单仍有料号未复核!"; // return FALSE; // }else{ $where = array('id' => $group_sql[0]['id']); $update = array('status' => 105, 'statusTime' => time()); $sku_info = WhGoodsAssignModel::updateAssignListStatus($where, $update); if (!$sku_info) { self::$errCode = "004"; self::$errMsg = "调拨单出库状态变更失败!"; return FALSE; } else { self::$errCode = "0"; self::$errMsg = "调拨清单出库成功!"; return TRUE; } //} } }
/** * WhGoodsAssignModel::getOrderGroup() * 根据条件获取调拨单信息 * @param mixed $select * @param mixed $where * @return */ public static function getOrderGroup($select, $array) { self::initDB(); $sql = "select {$select} from wh_store_goods_assign where " . array2sql($array); $query = self::$dbConn->query($sql); if ($query) { $ret = self::$dbConn->fetch_array_all($query); return $ret; } else { self::$errCode = "003"; self::$errMsg = "error"; return false; } }
/** * whGoodsAssignView::view_editAssignList() * 调拨单修改界面 * @return void */ public function view_editAssignList() { self::bulidNav('修改调拨单', '修改调拨单', 51); $id = intval(trim($_GET['id'])) ? intval(trim($_GET['id'])) : 0; if ($id) { $where = 'where status = 1'; $storeLists = WarehouseManagementModel::warehouseManagementModelList($where); //获取可用仓库列表 $data = WhGoodsAssignModel::getAssignList(" and a.id={$id}", '', '', 'a.id'); if (!empty($data)) { $res = $data[0]; $detail = WhGoodsAssignModel::getsAssignListDetail($id); //调拨单明细 $this->smarty->assign('detail', $detail); $this->smarty->assign('res', $res); $createUser = getUserNameById($res['createUid']); $this->smarty->assign('createUser', $createUser); //$user = array('name'=>$userName, 'uid'=>$_SESSION['userId']); $this->smarty->assign('storeLists', $storeLists); $this->smarty->display('editAssignList.htm'); } //$userName = getUserNameById($_SESSION['userId']); //获取用户名 } }
function act_endAssignList() { $assignNumber = $_POST['group'] ? $_POST['group'] : 0; //$goodsAssignId = intval($goodsAssignId); if (!$assignNumber) { self::$errCode = "014"; self::$errMsg = "请输入调拨单号!"; return false; } $assingInfo = WhGoodsAssignModel::getOrderGroup('id, status', array('assignNumber' => $assignNumber)); if (empty($assingInfo)) { self::$errCode = "014"; self::$errMsg = "该调拨单不存在!"; return false; } if ($assingInfo[0]['status'] != 101) { self::$errCode = "015"; self::$errMsg = "该调拨单不是待配货状态!"; return FALSE; } $where = array('id' => $assingInfo[0]['id']); $update = array('status' => 102, 'statusTime' => time()); $info = WhGoodsAssignModel::updateAssignListStatus($where, $update); if (!$info) { self::$errCode = "016"; self::$errMsg = "更新调拨单状态失败!"; return FALSE; } else { self::$errCode = "0"; self::$errMsg = "该调拨单已完成配货,请输入下一调拨单号!"; return TRUE; } }
function act_checkSkuNum() { $bool = false; //标志是否有摒弃订单 $assignNUmber = $_POST['order_group']; $sku = trim($_POST['sku']); //$sku = getGoodsSn2($sku); $sku_num = $_POST['sku_num']; $assignId = $_POST['now_group_id']; //$now_pname = $_POST['now_pname']; $assignStock = WhGoodsAssignModel::getAssignStock($sku); //获取该料号调拨库存 if ($assignStock == 0) { self::$errCode = "004"; self::$errMsg = "该调拨单无调拨库存,不能退库!"; return FALSE; } if ($assignStock < $sku_num) { self::$errCode = "004"; self::$errMsg = "退库数量大于调拨库存,不能退库!"; return FALSE; } $sku_info = WhGoodsAssignModel::getDetail($assignId, " and a.sku='{$sku}'"); if (empty($sku_info)) { self::$errCode = "004"; self::$errMsg = "该调拨单无此料号!"; return FALSE; } TransactionBaseModel::begin(); $where = array('sku' => $sku, 'storeId' => $sku_info['storeId']); $update = array('actualStock' => "actualStock + {$sku_num}", 'assignStock' => "assignStock - {$sku_num}"); $info = WhGoodsAssignModel::updateSkuLocation($where, $update); //更新wh_sku_location的调拨库存和总库存 if (!$info) { TransactionBaseModel::rollback(); self::$errCode = "003"; self::$errMsg = "更新总库存失败!"; return false; } $where = array('pId' => $skuinfo['id'], 'positionId' => $sku_info['positionId']); $update = array('nums' => "nums + {$sku_num}"); $info = WhGoodsAssignModel::updateProdcutPosition($where, $update); //更新wh_product_position_relation的仓位库存 if (!$info) { TransactionBaseModel::rollback(); self::$errCode = "003"; self::$errMsg = "更新仓位库存失败!"; return false; } TransactionBaseModel::commit(); self::$errCode = "0"; self::$errMsg = "退库成功!"; return true; }
/** * WhGoodsAssignAct::export_data() * 导出调拨数据 * @return void */ public function export_data() { $ids = trim($_GET['ids']); if ($ids) { $assignList = WhGoodsAssignModel::getAssignList(" and a.id in ({$ids})", '', '', 'a.id'); $assign_status = C('assign_status'); //print_r($assign_status);exit; $name = 'assignList' . date('Y-m-d') . ".xls"; //$name = iconv('UTF-8', 'gb2312//ignore', $name); $excel = new ExportDataExcel('browser', $name); $excel->initialize(); $tharr = array("调拨单号", "SKU", "产品名称", "转出仓库", "转入仓库", "需求数量", "配货数量", '出库复核数量', '接收数量', '生成人员', '生成时间', '调拨单状态', '状态变更时间'); $excel->addRow($tharr); if (!empty($assignList)) { foreach ($assignList as $assign) { $outStore = WarehouseManagementModel::warehouseManagementModelList(" where id = {$assign['outStoreId']}"); $outStore = $outStore[0]['whName']; $inStore = WarehouseManagementModel::warehouseManagementModelList(" where id = {$assign['inStoreId']}"); $inStore = $inStore[0]['whName']; $maker = getUserNameById($assign['createUid']); $make_date = date('Y-m-d H:i:s', $assign['createTime']); $state_date = date('Y-m-d H:i:s', $assign['statusTime']); $status = $assign_status[$assign['status']]; $details = WhGoodsAssignModel::getsAssignListDetail($assign['id']); foreach ($details as $k => $val) { $tdarr = array($k == 0 ? $assign['assignNumber'] : '', $val['sku'], $val['goodsName'], $outStore, $inStore, $val['num'], $val['assignNum'], $val['outCheckNum'], $val['inCheckNum'], $k == 0 ? $maker : '', $k == 0 ? $make_date : '', $k == 0 ? $status : '', $k == 0 ? $state_date : ''); //print_r($tdarr);exit; $excel->addRow($tdarr); } } } $excel->finalize(); exit; } }
function act_checkSkuNum() { $bool = false; //标志是否有摒弃订单 $assignNUmber = $_POST['order_group']; $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $sku_num = intval($_POST['sku_num']); $goodsAssignId = intval($_POST['now_group_id']); $sku_info = WhGoodsAssignModel::getDetail($goodsAssignId, " and a.sku='{$sku}' and a.scanUid != 0"); if (empty($sku_info)) { self::$errCode = "001"; self::$errMsg = "该调拨单无此出库复核料号!"; return FALSE; } else { if ($sku_info['assignNum'] <= $sku_info['outCheckNum']) { self::$errCode = "002"; self::$errMsg = "该料号已完成出库复核!"; return FALSE; } $outCheckNum = $sku_info['outCheckNum'] + $sku_num; //系统累计出库复核数量 if ($outCheckNum > $sku_info['assignNum']) { self::$errCode = "003"; self::$errMsg = "总复核数量不能大于配货数量,请确认!"; return false; } //print_r($sku_info);exit; $where = array('goodsAssignId' => $goodsAssignId, 'sku' => $sku); //生成where条件 $update = array('outCheckNum' => $outCheckNum); if ($outCheckNum >= $sku_info['assignNum']) { $update['checkTime'] = time(); $update['checkUid'] = $_SESSION['userId']; } $arr = array('sku' => $sku, 'sku_amount' => $sku_info['assignNum'], 'check_num' => $outCheckNum); $info = WhGoodsAssignModel::updateAssignDetail($where, $update); if (!$info) { self::$errCode = "004"; self::$errMsg = "更新出库明细复核数量失败!"; return $arr; } if (isset($update['checkUid'])) { $assignList = WhGoodsAssignModel::getDetail($goodsAssignId, ' and a.checkUid=0 and a.scanUid !=0'); if (empty($assignList)) { //该调拨单下所有料号复核完毕 $where = array('id' => $goodsAssignId); $update = array('statusTime' => time(), 'status' => 103); $info = WhGoodsAssignModel::updateAssignListStatus($where, $update); if ($info) { self::$errCode = "006"; self::$errMsg = "该调拨单出库复核完毕!"; return $arr; } else { self::$errCode = "005"; self::$errMsg = "调拨单更新失败!"; return FALSE; } } else { self::$errCode = "0"; self::$errMsg = "该料号复核完毕!"; return $arr; } } else { self::$errCode = "0"; self::$errMsg = "该料号已复核,请录入下一料号!"; return $arr; } } }
$type = intval(trim($_GET['type'])); if (!empty($order_group)) { $sql = "select * from wh_store_goods_assign where id in ({$order_group})"; $g_query = $dbConn->query($sql); if ($g_query) { $group_info = $dbConn->fetch_array_all($g_query); } if (empty($group_info)) { echo "调拨单不存在!"; exit; } $order_groups = explode(',', $order_group); foreach ($order_groups as $key => $id) { $assignNumber = OmAvailableModel::getTNameList('wh_store_goods_assign', 'assignNumber', "where id = {$id}"); $assignNumber = $assignNumber['0']['assignNumber']; $skuinfo = WhGoodsAssignModel::getsAssignListDetail($id); $page_num = 40; //一页几个sku $count = count($skuinfo); $pages = ceil($count / $page_num); for ($i = 1; $i <= $pages; $i++) { ?> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <td style="padding:5px;"><?php echo $type == 1 ? '配货清单' : '调拨出库单'; ?> :<font color="black"><?php echo $assignNumber; ?> </font><span style="padding-left:100px" color="black"><?php
/** * Pda_makeAssignListAct::act_makeAssignList() * 生成调拨单编号并更新调拨明细表 * @return void */ public function act_makeAssignList() { $res = WhGoodsAssignModel::getDetail('0', ''); //检测是否有未生成调拨单的料号信息 if (empty($res)) { self::$errCode = '001'; self::$errMsg = '没有可以生成调拨单的料号信息!'; return FALSE; } $outStoreId = 1; $inStoreId = 2; $createdUid = $_SESSION['userId']; $whGoodsAssignAct = new WhGoodsAssignAct(); $assignNumber = $whGoodsAssignAct->buildAssignNumber(); //获取调拨单编号 TransactionBaseModel::begin(); //调拨单表中插入数据并获取插入id $goodsAssignId = WhGoodsAssignModel::addAssignList($assignNumber, $outStoreId, $inStoreId, time(), time(), $createdUid); if ($goodsAssignId == FALSE) { self::$errCode = 02; self::$errMsg = '生成调拨单失败!'; return FALSE; } $where = array('goodsAssignId' => 0, 'is_delete' => 0); $update = array('goodsAssignId' => $goodsAssignId); $info = WhGoodsAssignModel::updateAssignDetail($where, $update); if ($info) { TransactionBaseModel::commit(); self::$errCode = '200'; self::$errMsg = '生成调拨单【' . $assignNumber . '】!'; return TRUE; } else { TransactionBaseModel::commit(); self::$errCode = '003'; self::$errMsg = '生成调拨单失败!'; return FALSE; } }
/** * InCheckPdaAssignListAct::act_inCheckEnd() * 调拨单接收复核完成变更状态 * @return void */ function act_inCheckEnd() { $assignNumber = trim($_POST['group_id']); if (!preg_match("/AN\\d{8}/", $assignNumber)) { self::$errCode = '001'; self::$errMsg = '请不要输入非调拨单号!'; return FALSE; } $group_sql = WhGoodsAssignModel::getOrderGroup("id, status", array('assignNumber' => $assignNumber)); if (empty($group_sql)) { self::$errCode = '002'; self::$errMsg = '没有该调拨单号!'; return FALSE; } //print_r($group_sql);exit; if ($group_sql[0]['status'] != 105) { self::$errCode = '003'; self::$errMsg = '该调拨单不在接收复核状态!'; return FALSE; } $assignId = $group_sql[0]['id']; //$assignDetail = WhGoodsAssignModel::getDetail($assignId, ' and inCheckNum = 0'); // if(empty($assignDetail)){ // // } $where = array('id' => $assignId); $update = array('status' => 106, 'statusTime' => time()); $info = WhGoodsAssignModel::updateAssignListStatus($where, $update); if ($info) { self::$errCode = '200'; self::$errMsg = '该调拨单复核接收完成!'; return TRUE; } else { self::$errCode = '004'; self::$errMsg = '该调拨单复核接收完成!'; return FALSE; } }
public function act_whShelf() { //print_r($_POST); $log_file = 'whselfB_log/' . date('Ymd') . '.txt'; //日志文件路径 $date = date('Y-m-d H:i:s'); $userCnName = $_SESSION['userCnName']; $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $nums = $_POST['nums']; $now_position_id = intval(trim($_POST['now_position_id'])); //现在存放该料号的仓位id $goodsAssignId = intval(trim($_POST['now_group_id'])); $positionId = intval(trim($_POST['position_id'])); //分配的仓位id $assignList = WhGoodsAssignModel::getAssignList("and a.id = {$goodsAssignId}", '', '', ''); if ($assignList[0]['status'] != 106) { self::$errCode = 400; self::$errMsg = "该调拨单不在等待上架状态!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg); write_log($log_file, $log_info); return false; } if (empty($sku)) { self::$errCode = 401; self::$errMsg = "sku不能为空"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg); write_log($log_file, $log_info); return false; } if (empty($now_position_id) && !$positionId) { self::$errCode = 401; self::$errMsg = "上架仓位不能为空"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg); write_log($log_file, $log_info); return false; } if ($nums < 1) { self::$errCode = 403; self::$errMsg = "上架数量不能小于1"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg); write_log($log_file, $log_info); return false; } $sku_info = WhGoodsAssignModel::getDetail($goodsAssignId, " and a.sku='{$sku}' and a.inCheckNum != 0"); if (empty($sku_info)) { self::$errCode = "404"; self::$errMsg = "该调拨单无此料号!"; return FALSE; } $whselfNums = $nums + $sku_info['whselfNum']; if ($whselfNums > $sku_info['assignNum']) { self::$errCode = "405"; self::$errMsg = "总上架数不能大于配货数!"; return FALSE; } $where = " where sku = '{$sku}'"; $skuinfo = whShelfModel::selectSku($where); if (empty($skuinfo)) { self::$errCode = 404; self::$errMsg = "无该料号信息"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg); write_log($log_file, $log_info); return false; } else { $skuId = $skuinfo['id']; $purchaseId = $skuinfo['purchaseId']; } $ioTypeId = 35; //35 调拨入库上架 出入库类型表id $return_num = $nums; $in_positionId = 0; $userId = $_SESSION['userId']; //$where = "where pId ={$skuId} and positionId = {$now_position_id} and is_delete=0 and storeId = 2"; TransactionBaseModel::begin(); if ($now_position_id) { //存在料号仓位关系 $positioninfo = whShelfModel::selectRelationShip('', '', 2, $now_position_id); //检测该料号是否有对应仓位关系 /***无料号对应仓位的关系时更新关系表***/ $relationId = $positioninfo[0]['id']; $positionId = $positioninfo[0]['positionId']; //仓位id $update_position = whShelfModel::updateProductPositionRelation($nums, "where id='{$relationId}'"); if (!$update_position) { self::$errCode = 410; self::$errMsg = "更新仓位库存失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $update_position, $num, $select_now_store); write_log($log_file, $log_info); TransactionBaseModel::rollback(); return false; } write_log($log_file, date('Y-m-d H:i:s') . '更新仓位库存成功!' . "{$sku}\r\n"); } else { if ($positionId) { //没有料号仓位关系则插入一条数据 $relationId = whShelfModel::insertRelation($skuinfo['id'], $positionId, $nums, 2); //插入关系表 //$update_position = whShelfModel::updateProductPositionRelation($nums,"where id='$relationId'"); if (!$relationId) { self::$errCode = 410; self::$errMsg = "插入仓位关系失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $update_position, $num, $select_now_store); write_log($log_file, $log_info); TransactionBaseModel::rollback(); return false; } write_log($log_file, date('Y-m-d H:i:s') . '插入仓位关系成功!' . "{$sku}\r\n"); } } /**** 更新总库存 *****/ $actualStock = whShelfModel::selectSkuNums($sku, 2); if (!empty($actualStock)) { $where = "where sku='{$sku}' and storeId=2"; $info = whShelfModel::updateStoreNum($nums, $where); if (!$info) { self::$errCode = 412; self::$errMsg = "更新总库存失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $info, $nums, $where); write_log($log_file, $log_info); TransactionBaseModel::rollback(); return false; } write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n"); } else { $info = whShelfModel::insertStore($sku, $nums, 2); if (!$info) { self::$errCode = 413; self::$errMsg = "更新总库存失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $info, $sku, $nums); write_log($log_file, $log_info); TransactionBaseModel::rollback(); return false; } write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n"); } /**** 插入出入库记录 *****/ $paraArr = array('sku' => $sku, 'amount' => $nums, 'positionId' => $positionId, 'purchaseId' => $purchaseId, 'ioType' => 2, 'ioTypeId' => $ioTypeId, 'userId' => $userId, 'reason' => '调拨入库上架'); $record = CommonModel::addIoRecores($paraArr); //出库记录 if (!$record) { self::$errCode = 414; self::$errMsg = "插入出入库记录失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s \r\n", $sku, $date, self::$errMsg, $record, json_encode($paraArr)); write_log($log_file, $log_info); TransactionBaseModel::rollback(); return false; } write_log($log_file, date('Y-m-d H:i:s') . '插入入库记录成功!' . "{$sku}\r\n"); //更新调拨单料号上架数量 $where = array('goodsassignId' => $goodsAssignId, 'sku' => $sku); $update = array('whselfNum' => $whselfNums); $info = WhGoodsAssignModel::updateAssignDetail($where, $update); if ($info === FALSE) { self::$errCode = 415; self::$errMsg = "更新上架数量失败"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s ,参数:s%\r\n", $sku, $date, self::$errMsg, $nums); write_log($log_file, $log_info); TransactionBaseModel::rollback(); return false; } //更新料号调拨库存 $where = array('sku' => $sku, 'storeId' => $assignList[0]['outStoreId']); $update = array('assignStock' => "assignStock - {$nums}"); $info = WhGoodsAssignModel::updateSkuLocation($where, $update); if ($info == FALSE) { self::$errCode = 416; self::$errMsg = "更新调拨库存失败"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s ,参数:s%\r\n", $sku, $date, self::$errMsg, $nums); write_log($log_file, $log_info); TransactionBaseModel::rollback(); return false; } /** 同步老ERP库存**/ $pName = whShelfModel::selectPositionInfo('pName', array('id' => $positionId)); //获取仓位名称 $pName = $pName['pName']; $info = CommonModel::updateIoRecord($sku, $nums, 1, '仓库调拨入库上架', $_SESSION['userCnName'], $pName); //var_dump($info);exit; if ($info['errCode'] != 200) { TransactionBaseModel::rollback(); self::$errCode = "004"; self::$errMsg = "同步旧ERP库存失败!"; $log_info = sprintf("料号:%s, 时间:%s,信息:%s ,参数:%s\r\n", $sku, $date, self::$errMsg, is_array($info) ? json_encode($info) : $info); write_log($log_file, $log_info); return false; } TransactionBaseModel::commit(); self::$errMsg = "料号[{$sku}]上架成功!"; return true; }
function act_checkSkuNum() { $orderId = intval(trim($_POST['orderId'])); $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $sku_num = intval(trim($_POST['sku_num'])); $log_file = 'pda_orderOutB/' . date('Y-m-d') . '.txt'; $date = date('Y-m-d-H'); if (!$orderId) { self::$errCode = "001"; self::$errMsg = "请扫描订单id!"; return FALSE; } if (!$sku) { self::$errCode = "002"; self::$errMsg = "请扫描料号!"; return FALSE; } if (!$sku_num) { self::$errCode = "003"; self::$errMsg = "请输入料号配货数!"; return FALSE; } $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'"); //获取sku信息 $where = array('orderId' => $orderId, 'sku' => $sku); $sku_info = Pda_orderOutBModel::selectOrderRecord($where); //获取订单下该料号的信息 if (empty($sku_info)) { self::$errCode = "004"; self::$errMsg = "该订单没有此料号!"; return FALSE; } $sku_info = $sku_info[0]; $sku_onhand = GroupDistributionModel::getSkuPositionStock("and c.sku='{$sku}' and a.storeId = 2"); //查看该料号的B仓库存 $now_num = $sku_num + $sku_info['scanNum']; //已配货数加上本次配货数 if (!is_numeric($sku_num) || $now_num <= 0) { self::$errCode = "005"; self::$errMsg = "配货数量必须大于0,请确认!"; return FALSE; } if ($sku_info['amount'] < $now_num) { self::$errCode = "006"; self::$errMsg = "配货数量不能大于订单数!"; return false; } if ($sku_num > $sku_onhand[0]['nums']) { self::$errCode = "007"; self::$errMsg = "配货数不能大于系统库存,请确认!"; return false; } $uid = $_SESSION['userId']; $scanTime = time(); $where = array('orderId' => $orderId, 'sku' => $sku); //拼接where条件 $update = array('scanUser' => $uid, 'scanTime' => $scanTime, 'scanNum' => $now_num); //拼接更新字段 TransactionBaseModel::begin(); $info = Pda_orderOutBModel::updateOrderRecord($where, $update); if ($info) { $where = array('sku' => $sku, 'storeId' => 2); $update = array('actualStock' => "actualStock - {$sku_num}"); $info = WhGoodsAssignModel::updateSkuLocation($where, $update); //更新wh_sku_location的调拨库存和总库存 if (!$info) { TransactionBaseModel::rollback(); self::$errCode = "010"; self::$errMsg = "更新总库存失败!"; return false; } $positionInfo = whShelfModel::selectPositionInfo('id', array('pName' => $sku_info['pName'])); //仓位信息 $where = array('pId' => $skuinfo['id'], 'positionId' => $positionInfo['id'], 'storeId' => 2); $update = array('nums' => "nums - {$sku_num}"); $info = WhGoodsAssignModel::updateProdcutPosition($where, $update); //更新wh_product_position_relation的仓位库存 if (!$info) { TransactionBaseModel::rollback(); self::$errCode = "011"; self::$errMsg = "更新仓位库存失败!"; return false; } /**** 插入出库记录 *****/ $paraArr = array('sku' => $sku, 'amount' => $sku_num, 'positionId' => $positionInfo['id'], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 6, 'userId' => $_SESSION['userId'], 'reason' => 'B仓订单配货出库', 'ordersn' => $orderId); $record = CommonModel::addIoRecores($paraArr); //出库记录 /** 同步老ERP订单配货记录**/ $is_scan = $sku_info['amount'] == $now_num ? 1 : 0; $info = CommonModel::updateOrderScanRecord($orderId, $sku, $sku_num, $sku_info['amount'], $is_scan, $_SESSION['userCnName']); if ($info['errCode'] != 200) { TransactionBaseModel::rollback(); self::$errCode = "012"; self::$errMsg = "更新ERP配货记录失败!"; $log_info = sprintf("订单号:%s, 时间:%s, 提示信息:%s, 信息记录: %s \r\n", $orderId, $date, self::$errMsg, is_array($info) ? json_encode($info) : $info); write_log($log_file, $log_info); return false; } TransactionBaseModel::commit(); $where = array('orderId' => $orderId, 'scanUser' => 0); $info = Pda_orderOutBModel::selectOrderRecord($where); //查看该订单下是否还有未配货料号 if (empty($info)) { self::$errCode = "200"; self::$errMsg = "该订单已配货完成, 请扫描下一订单号!"; return TRUE; } else { self::$errCode = "0"; self::$errMsg = "配货成功,请扫描下一个料号!"; $arr['sku'] = $sku; $arr['num'] = $sku_info['amount']; $arr['assignNum'] = $now_num; return $arr; } } else { self::$errCode = "013"; self::$errMsg = "更新料号状态失败!"; return false; } }