public function act_postsku() { $sku = isset($_POST['sku']) ? trim($_POST['sku']) : ""; $sku = get_goodsSn($sku); $position = isset($_POST['position']) ? trim($_POST['position']) : ""; $num = isset($_POST['num']) ? trim($_POST['num']) : ""; $num = intval($num); if (empty($position)) { self::$errCode = 502; self::$errMsg = "仓位不能为空"; return false; } if ($num < 1) { self::$errCode = 502; self::$errMsg = "{$sku}出库数量{$num}有误!"; return false; } $checkonhandle = wrapperSkuOutModel::selectstock($sku); if (empty($checkonhandle)) { self::$errCode = 502; self::$errMsg = "{$sku}材料未导入库存信息表!"; return false; } $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'"); if (empty($skuinfo)) { self::$errCode = 502; self::$errMsg = "{$sku}材料没信息!"; return false; } else { $skuId = $skuinfo['id']; $purchaseId = $skuinfo['purchaseId']; } $positon_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$position}' and storeId in(1,2)"); if (empty($positon_info)) { self::$errCode = 502; self::$errMsg = "无仓位号信息"; return false; } else { $positionId = $positon_info[0]['id']; } $relation_info = OmAvailableModel::getTNameList("wh_product_position_relation", "id", "where pId='{$skuId}' and positionId='{$positionId}' and storeId in(1,2)"); if (empty($relation_info)) { self::$errCode = 502; self::$errMsg = "包材和仓位不对应"; return false; } $paraArr = array('ordersn' => date('YmdHis', time()), 'sku' => $sku, 'amount' => $num, 'purchaseId' => $purchaseId, 'ioType' => 1, 'ioTypeId' => 26, 'userId' => $_SESSION['userId'], 'reason' => '包材出库', 'positionId' => $positionId); $WhIoRecordsAct = new WhIoRecordsAct(); $tt = $WhIoRecordsAct->act_addIoRecoresForWh($paraArr); //出库记录 self::$errCode = 200; self::$errMsg = "{$sku}出库{$num}个成功!"; return true; }
/** * Pda_makeAssignListAct::act_checkNum() * 检测输入的料号数量并提交 * @return void */ public function act_checkSkuNum() { $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $sku_num = intval(trim($_POST['sku_num'])); if (!$sku_num || !$sku) { self::$errCode = '001'; self::$errMsg = '信息不完整!'; return FALSE; } if ($sku_num < 0) { self::$errCode = '002'; self::$errMsg = '调拨数量不能小于0!'; return FALSE; } $actualStock = whShelfModel::selectSkuNums($sku, 1); //获取A仓库的总库存 if ($actualStock < $sku_num) { self::$errCode = '003'; self::$errMsg = '调拨数量不能该料号的实际库存!'; return FALSE; } $location = WhGoodsAssignModel::getSkuLocation($sku, 1, $sku_num); if (!$location) { self::$errCode = '004'; self::$errMsg = '没有满足调拨数量的仓位!'; return FALSE; } $res = WhGoodsAssignModel::getDetail('0', " and a.sku ='{$sku}'"); //检测是否有未生成调拨单的该料号信息 if (empty($res)) { $info = WhGoodsAssignModel::insertAssignDetail(0, $sku, $sku_num, $location); //插入调拨详情表 } else { $nums = $res['num'] + $sku_num; //调拨数量总和 $info = WhGoodsAssignModel::updateAssignDetail(array('id' => $res['id']), array('num' => $nums)); } if ($info) { self::$errCode = '200'; self::$errMsg = '请输入下一料号!'; return TRUE; } else { self::$errCode = '005'; self::$errMsg = '插入料号失败!'; return FALSE; } }
function act_submitInfo() { $userId = $_SESSION['userId']; $show_mes = array(); $shipOrderGroup = $_POST['order_group']; $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $submit_orders = trim($_POST['submit_orders'], ','); $submit_nums = trim($_POST['submit_nums'], ','); $group_id = $_POST['now_group_id']; $now_sku = trim($_POST['now_sku']); $now_sku = get_goodsSn($now_sku); $now_pname = $_POST['now_pname']; $orders_arr = explode(',', $submit_orders); $nums_arr = explode(',', $submit_nums); if ($sku != $now_sku) { $sku = $now_sku; } if ($sku != 'undefined') { foreach ($orders_arr as $key => $order) { $i_data = array('status' => 1, 'amount' => $nums_arr[$key]); $inser_info = GroupDistributionModel::update($i_data, "and shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and shipOrderId='{$order}'"); if ($inser_info) { //outskunums2($sku,$nums_arr[$key],$order); //出库记录 $position_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$now_pname}' and storeId=1"); $positionId = $position_info[0]['id']; $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'"); $paraArr = array('ordersn' => $order, 'sku' => $sku, 'amount' => $nums_arr[$key], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 2, 'userId' => $userId, 'reason' => '清单配货出库', 'positionId' => $positionId); $WhIoRecordsAct = new WhIoRecordsAct(); $WhIoRecordsAct->act_addIoRecoresForWh($paraArr); //出库记录 $this->inser_scan_record_by_sku($order, $sku, $nums_arr[$key], $userId); //插入扫描表 $complete_sql = GroupDistributionModel::getGroupDistList("*", "where shipOrderGroup='{$shipOrderGroup}' and shipOrderId='{$order}' and status=0"); if (empty($complete_sql)) { //更新订单到复核状态 GroupDistributionModel::updateShipOrder(array('orderStatus' => 403), "and id='{$order}' and orderStatus=402"); WhPushModel::pushOrderStatus($order, 'STATESHIPPED_PENDREVIEW', $_SESSION['userId'], time()); //状态推送 } } } } $status_sql = GroupDistributionModel::getGroupDistList("*", "where shipOrderGroup='{$shipOrderGroup}' and status=0"); if (empty($status_sql)) { self::$errCode = 1; self::$errMsg = "配货清单出库完成,请扫描下一清单1!"; return true; } else { $show_info = array(); $show_sql = GroupDistributionModel::getGroupSkuInfo("and a.shipOrderGroup='{$shipOrderGroup}' and a.status=0 and a.groupId>'{$group_id}' group by a.pName order by a.groupId asc"); if (!empty($show_sql)) { foreach ($show_sql as $show) { $order_sku_info = $this->get_valid_order($show['shipOrderGroup'], $show['sku'], $show['pName']); if ($order_sku_info['sku_amount'] != 0) { $show_info['group_id'] = $show['groupId']; $show_info['sku'] = $show['sku']; $show_info['sku_amount'] = $order_sku_info['sku_amount']; $show_info['goods_location'] = $show['pName']; break; } } } if (empty($show_info)) { $show_info2 = array(); $show_sql = GroupDistributionModel::getGroupSkuInfo("and a.shipOrderGroup='{$shipOrderGroup}' and a.status=0 and a.groupId<'{$group_id}' group by a.pName order by a.groupId asc"); if (!empty($show_sql)) { foreach ($show_sql as $show) { $order_sku_info = $this->get_valid_order($show['shipOrderGroup'], $show['sku'], $show['pName']); if ($order_sku_info['sku_amount'] != 0) { $show_info2['group_id'] = $show['groupId']; $show_info2['sku'] = $show['sku']; $show_info2['sku_amount'] = $order_sku_info['sku_amount']; $show_info2['goods_location'] = $show['pName']; break; } } } else { self::$errCode = 1; self::$errMsg = "配货清单出库完成,请扫描下一清单2!"; return true; } if (!empty($show_info2)) { $show_mes = $show_info2; } else { self::$errCode = 1; self::$errMsg = "配货清单出库完成,请扫描下一清单3!"; return true; } } else { $show_mes = $show_info; } self::$errMsg = "出库成功,请扫描下一个料号!"; return $show_mes; } }
//print_r($positioninfo);exit; OmAvailableModel::begin(); /**** 更新仓位库存 ****/ $update_position = whShelfModel::updateProductPositionRelation($nums, "where pId={$skuinfo['id']} and positionId != 8290 and is_delete = 0"); if (!$update_position) { $errCode = 410; $errMsg = "更新仓位库存失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s \r\n", $sku, $date, $errMsg, $update_position, $nums); write_log($log_file, $log_info); OmAvailableModel::rollback(); continue; } write_log($log_file, date('Y-m-d H:i:s') . '更新仓位库存成功!' . "{$sku}\r\n"); /**** 更新总库存 *****/ $where = "where sku='{$sku}'"; $info = whShelfModel::updateStoreNum($nums, $where); if (!$info) { $errCode = 412; $errMsg = "更新总库存失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, $errMsg, $info, $nums, $where); write_log($log_file, $log_info); OmAvailableModel::rollback(); continue; } write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n"); $user_id = $msg_array['userId']; /**** 插入出入库记录 *****/ $msg_array['positionId'] = $positioninfo[0]['positionId']; $userId = preg_match("/^\\d+\$/", $user_id) ? $user_id : getUserIdByName($msg_array['userId']); $msg_array['userId'] = $userId ? $userId : 0; $msg_array['purchaseId'] = $skuinfo['purchaseId'];
public static function insertNoOrder($sku, $nums, $totalNums, $purchaseId, $userId, $note) { self::initDB(); $sql = "INSERT INTO wh_abnormal_purchase_orders(sku,nums,totalNums,purchaseId,creatorId,createdTime,note) VALUES ('{$sku}',{$nums},{$totalNums},{$purchaseId},{$userId}," . time() . ",'{$note}')"; //echo $sql; $query = self::$dbConn->query($sql); if ($query) { return true; } else { self::$errCode = 335; 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; }
public static function updateShelvesNums($num, $sku, $id) { self::initDB(); $adjnum = abs($num); $sql = "update wh_tallying_list set shelvesNums=shelvesNums+{$num} where id={$id}"; $query = self::$dbConn->query($sql); if ($query) { $location_sql = "update wh_sku_location set actualStock=actualStock+{$num} where sku='{$sku}' and storeId=1"; $location_query = self::$dbConn->query($location_sql); if ($location_query) { $sku_info = "select id from pc_goods where sku='{$sku}'"; $sku_info = self::$dbConn->query($sku_info); $sku_info = self::$dbConn->fetch_array_all($sku_info); $select_position = "select id,positionId from wh_product_position_relation where pId={$sku_info[0]['id']} and nums>{$adjnum}"; $select_position = self::$dbConn->query($select_position); $select_position = self::$dbConn->fetch_array_all($select_position); $update_position = "update wh_product_position_relation set nums=nums+{$num} where id='{$select_position[0]['id']}'"; $update_position = self::$dbConn->query($update_position); if ($update_position) { $where = " where sku = '{$sku}'"; $skuinfo = whShelfModel::selectSku($where); /**** 插入出入库记录 *****/ $paraArr = array('sku' => $sku, 'amount' => $adjnum, 'positionId' => $select_position[0]['positionId'], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 31, 'userId' => $_SESSION['userId'], 'reason' => '点货调整出库'); $record = CommonModel::addIoRecores($paraArr); //出库记录 if ($record) { return true; } else { return false; } } } } else { return false; } }
/** * whShelfAct::act_whPackageShelf() * 包材入库 * @return void */ public function act_whPackageShelf() { $userCnName = $_SESSION['userCnName']; $sku = trim($_POST['sku']) ? trim($_POST['sku']) : ''; $nums = intval(trim($_POST['nums'])); $log_file = 'packageWheself/' . date('Y-m-d') . '.txt'; $date = date('Y-m-d H:i:s'); if (!$sku) { self::$errCode = 01; self::$errMsg = "sku不能为空"; return false; } if (!preg_match("/^MT\\d+\$/", $sku)) { self::$errCode = 02; self::$errMsg = "该模块只能入库包材!"; return false; } if (!$nums) { self::$errCode = 03; self::$errMsg = "数量不能为空"; return false; } $where = "where sku='{$sku}' and tallyStatus=0 and entryStatus = 0 and is_delete = 0"; $tallying_list = packageCheckModel::selectList($where); if (empty($tallying_list)) { self::$errCode = 04; self::$errMsg = "无该料号点货信息"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg); write_log($log_file, $log_info); return false; } else { $tallying_num = 0; foreach ($tallying_list as $tallying) { $tallying_num += $tallying['ichibanNums'] - $tallying['shelvesNums']; } if ($nums > $tallying_num) { self::$errCode = 05; self::$errMsg = "上架数不能大于点货良品数[{$tallying_num}]"; $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 = 06; self::$errMsg = "上架数量不能小于1"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg); write_log($log_file, $log_info); return false; } $where = " where sku = '{$sku}'"; $skuinfo = whShelfModel::selectSku($where); if (empty($skuinfo)) { self::$errCode = 07; 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']; } $return_num = $nums; $in_positionId = 0; $userId = $_SESSION['userId']; TransactionBaseModel::begin(); /**** 更新总库存 *****/ $actualStock = whShelfModel::selectSkuNums($sku); if (!empty($actualStock)) { $where = "where sku='{$sku}' and storeId=1"; $info = whShelfModel::updateStoreNum($nums, $where); if (!$info) { self::$errCode = 00; 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, 1); if (!$info) { self::$errCode = 00; 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' => $in_positionId, 'purchaseId' => $purchaseId, 'ioType' => 2, 'ioTypeId' => 13, 'userId' => $userId, 'reason' => '上架入库'); $record = CommonModel::addIoRecores($paraArr); //出库记录 if (!$record) { self::$errCode = 010; 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 = "where sku='{$sku}' and tallyStatus=0 and ichibanNums>0 and is_delete=0"; $list = packageCheckModel::selectList($where); $i = 0; while ($list[$i] && $nums) { $need_nums = $list[$i]['ichibanNums'] - $list[$i]['shelvesNums']; if ($nums >= $need_nums) { //更改状态 $msg = whShelfModel::updateTallyStatus($list[$i]['id'], $need_nums); if (!$msg) { self::$errCode = 011; self::$errMsg = "更新点货记录状态失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $msg, $list[$i]['id'], $need_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"); $nums = $nums - $need_nums; } else { $msg = whShelfModel::updateShelfNum($list[$i]['id'], $nums); if (!$msg) { self::$errCode = 012; self::$errMsg = "更新点货记录已上架数量失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $msg, $list[$i]['id'], $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"); $nums = 0; } $i++; } $time = time(); //添加时间戳 /*$purInfo = CommonModel::endPurchaseOrder($sku,$return_num, $time); //api获取采购订单处理情况 if( !isset($purInfo['errorCode']) || $purInfo['errorCode'] != 0){ self::$errCode = 405; self::$errMsg = "完结采购订单出错,上架失败"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, json_encode($purInfo), $sku, $return_num); write_log($log_file, $log_info); TransactionBaseModel :: rollback(); return false; } write_log($log_file, date('Y-m-d H:i:s').'完结采购订单成功'."{$sku}\r\n");*/ //更新旧erp库存 $update_onhand = CommonModel::updateOnhand($sku, $return_num, $userCnName, 0, '', $time); if ($update_onhand['errCode'] != 200) { self::$errCode = 415; self::$errMsg = "更新旧erp库存失败"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s, %s \r\n", $sku, $date, self::$errMsg, is_array($update_onhand) ? json_encode($update_onhand) : $update_onhand, $sku, $return_num, $userCnName); write_log($log_file, $log_info); TransactionBaseModel::rollback(); return false; } write_log($log_file, date('Y-m-d H:i:s') . '更新旧erp库存成功' . "{$sku}\r\n"); TransactionBaseModel::commit(); self::$errMsg = "料号[{$sku}]上架成功!"; return true; }
function act_updateTallying() { $batchNum = isset($_GET['batchNum']) ? trim($_GET['batchNum']) : ''; $sku = isset($_GET['sku']) ? trim($_GET['sku']) : ''; $ichibanNums = isset($_GET['ichibanNums']) ? intval(trim($_GET['ichibanNums'])) : ''; /** 添加接收日志**/ $log_file = 'QCReturnLog/' . date('Y-m-d') . '.txt'; $date = date('Y-m-d H:i:s'); $log_info = sprintf("料号:%s, 时间:%s, 批次号:%s, 良品数:%s \r\n", $sku, $date, $batchNum, $ichibanNums); write_log($log_file, $log_info); /** end**/ if (empty($batchNum) || empty($sku)) { //参数不完整 self::$errCode = 101; self::$errMsg = '参数信息不完整'; return false; } /** 添加检测是否存在数据判断**/ $tallying_info = whShelfModel::selectTallyingList('id', array('batchNum' => $batchNum, 'sku' => $sku)); if (empty($tallying_info)) { //不存在对应的点货记录 self::$errCode = 104; self::$errMsg = '不存在该条点货信息'; return FALSE; } $update_info = OmAvailableModel::updateTallying($batchNum, $sku, $ichibanNums, time()); if ($update_info) { return true; } else { self::$errCode = 102; self::$errMsg = '插入良品数量失败'; return false; } }
function act_searchSku() { $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $eosr_arr = whShelfModel::selectSkuNums($sku); if (empty($eosr_arr)) { self::$errCode = "401"; self::$errMsg = "找不到该料号的库存信息!"; return false; } else { $info = GroupRouteModel::getSkuPosition("where a.sku='{$sku}' and b.is_delete=0"); self::$errCode = "400"; self::$errMsg = '成功搜索该料号信息!' . $sku; return $info; } }
public function act_export() { $ioType = intval($_GET['ioType']); $id = isset($_GET['id']) ? post_check($_GET['id']) : ''; $ordersn = isset($_GET['ordersn']) ? post_check($_GET['ordersn']) : ''; $ioTypeId = isset($_GET['ioTypeId']) ? post_check($_GET['ioTypeId']) : ''; $sku = isset($_GET['sku']) ? post_check($_GET['sku']) : ''; $purchaseId = isset($_GET['purchaseId']) ? post_check($_GET['purchaseId']) : ''; $userId = isset($_GET['userId']) ? post_check($_GET['userId']) : ''; $cStartTime = isset($_GET['cStartTime']) ? post_check($_GET['cStartTime']) : ''; $cEndTime = isset($_GET['cEndTime']) ? post_check($_GET['cEndTime']) : ''; if (empty($id) && empty($ordersn) && empty($ioTypeId) && empty($sku) && empty($purchaseId) && empty($userId) && empty($cStartTime) && empty($cEndTime)) { echo "请选择导出条件"; exit; } $where = "WHERE ioType='{$ioType}' "; if (!empty($id)) { $where .= "AND id='{$id}' "; } if (!empty($ordersn)) { $where .= "AND ordersn='{$ordersn}' "; } if (!empty($ioTypeId)) { $where .= "AND ioTypeId='{$ioTypeId}' "; } if (!empty($sku)) { $where .= "AND sku='{$sku}' "; } if (!empty($purchaseId)) { $purchaseId = getUserIdByName($purchaseId); $where .= "AND purchaseId='{$purchaseId}' "; } if (!empty($userId)) { $userId = getUserIdByName($userId); $where .= "AND userId='{$userId}' "; } if (!empty($cStartTime)) { $startTime = strtotime($cStartTime . '00:00:00'); $where .= "AND createdTime >='{$startTime}' "; } if (!empty($cEndTime)) { $endTime = strtotime($cEndTime . '23:59:59'); $where .= "AND createdTime <='{$endTime}' "; } $lists = WhIoRecordsModel::getTNameList('wh_iorecords', '*', $where); if ($ioType == 1) { $excel = new ExportDataExcel('browser', "out_warehouse." . date('Y-m-d') . ".xls"); } else { $excel = new ExportDataExcel('browser', "in_warehouse." . date('Y-m-d') . ".xls"); } $excel->initialize(); $tharr = array("日期", "料号", "仓位", "数量", "类型", "申请人", "订单号", "备注"); $excel->addRow($tharr); foreach ($lists as $list) { $time = date('Y/m/d', $list['createdTime']); $sku = $list['sku']; $position_info = whShelfModel::selectPosition("where id={$list['positionId']}"); $pName = $position_info[0]['pName']; $num = $list['amount']; $ioTypeName = WhIoStoreModel::getIoTypeNameById($list['ioTypeId']); $user = getUserNameById($list['userId']); $ordersn = $list['ordersn']; $reason = $list['reason']; $tdarr = array($time, $sku, $pName, $num, $ioTypeName, $user, $ordersn, $reason); $excel->addRow($tdarr); } $excel->finalize(); exit; }
function act_checkSku() { $userId = $_SESSION['userId']; $starttime = time(); $Msg = ''; $res_data = array(); $state_status = array(402); //准备状态 $final_status = array(403); //配货完成状态 $no_express_delivery = array('中国邮政平邮', '中国邮政挂号', '香港小包平邮', '香港小包挂号', '德国邮政', '新加坡邮政', 'EUB', 'Global Mail'); $order_id = $_POST['ebay_id']; //先核对订单 //兼容 EUB或者 包裹 扫描的是 trackno 而非ebayid $p_real_ebayid = '#^\\d+$#'; $p_trackno_eub = '#^(LK|RA|RB|RC|RR|RF|LN)\\d+(CN|HK|DE200)$#'; $is_eub_package_type = false; if (preg_match($p_real_ebayid, $order_id)) { } else { if (preg_match($p_trackno_eub, $order_id)) { $is_eub_package_type = true; } else { self::$errCode = "001"; self::$errMsg = "订单号[" . $order_id . "]格式有误"; return false; } } if ($is_eub_package_type === true) { $ordercheck = ShippingOrderModel::getShippingOrderInfo("b.*", "where a.tracknumber='{$order_id}' and a.is_delete=0"); } else { $ordercheck = ShippingOrderModel::getShippingOrder("*", "where id='{$order_id}'"); } if (empty($ordercheck)) { self::$errCode = '001'; self::$errMsg = '未找到订单/跟踪号[' . $order_id . ']'; return false; } else { $ebay_carrier = CommonModel::getShipingNameById($ordercheck[0]['transportId']); if (!in_array($ebay_carrier, $no_express_delivery)) { self::$errCode = '001'; self::$errMsg = '请选择非快递订单!'; return false; } } if ($ordercheck[0]['orderStatus'] == 900) { self::$errCode = '002'; self::$errMsg = "该发货单[{$order_id}][已经废弃]!"; return false; } else { if (in_array($ordercheck[0]['orderStatus'], $final_status)) { self::$errCode = '005'; self::$errMsg = "该发货单已经扫描完成!"; return false; } } if (!in_array($ordercheck[0]['orderStatus'], $state_status)) { self::$errCode = '002'; self::$errMsg = "该发货单[{$order_id}][不在待配货]!"; return false; } //配货单所有料号及数量 $skuinfos = array(); $key_skuinfos = array(); $skuinfo = GroupRouteModel::getOrderPositionID($ordercheck[0]['id']); foreach ($skuinfo as $info) { //$s_key = $info['sku']."-".$info['pName']; $s_key = $info['id']; $skuinfos[$s_key] = $info['amount']; $key_skuinfo[$info['sku']] = $info['amount']; } //print_r($skuinfos);die; $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0"); if (!$eosr_arr2) { self::$errCode = '005'; self::$errMsg = "该发货单已经扫描完成!"; return false; } else { if (count($eosr_arr2) <= count($skuinfos)) { //初次和二次配货 $ebay_sku = trim($_POST['ebay_sku']); $ebay_sku = get_goodsSn($ebay_sku); $now_sku = trim($_POST['now_sku']); $now_pname = trim($_POST['now_pname']); $now_detailid = trim($_POST['now_detailid']); //$s_key = $now_sku."-".$now_pname; $s_key = $now_detailid; $detail_info = OmAvailableModel::getTNameList("wh_shipping_orderdetail", "storeId,shipOrderId", "where id={$now_detailid}"); $arr_eosr = OrderPickingRecordsModel::getPickingRecords("sku", "where shipOrderId={$ordercheck[0]['id']} and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0"); $key_skuinfos = array_keys($key_skuinfo); if ($ebay_sku != $now_sku) { self::$errCode = '011'; self::$errMsg = "记录料号与扫描料号不符1!" . $ebay_sku; return $ebay_sku; } if (!empty($arr_eosr)) { if (!in_array($ebay_sku, $key_skuinfos)) { self::$errCode = '009'; self::$errMsg = "记录料号与扫描料号不符2!" . $ebay_sku; return $ebay_sku; } else { if ($skuinfos[$s_key] < 1) { self::$errCode = '021'; self::$errMsg = "料号数量小于1!({$key_skuinfos[0]})"; return $ebay_sku; } else { if ($skuinfos[$s_key] > 1) { if (isset($_POST['pskunum'])) { if ($_POST['pskunum'] != $skuinfos[$s_key]) { self::$errCode = '022'; self::$errMsg = "请输入正确的数量,不要配错数量{$_POST['pskunum']}-{$skuinfos[$s_key]}!"; return $ebay_sku; } } else { self::$errCode = '020'; self::$errMsg = "多数量料号需要输入数量!"; return $ebay_sku; } } } } if ($arr_eosr[0]['isScan'] == 0) { //$sku_stock = OrderPickingRecordsModel::getSkuStock("actualStock","where sku='$ebay_sku'"); $sku_stock = GroupRouteModel::getSkuPosition("where a.sku='{$ebay_sku}' and c.pName='{$now_pname}' and b.is_delete=0"); if ($detail_info[0]['storeId'] == 1) { if (isset($sku_stock[0]['nums'])) { if ($sku_stock[0]['nums'] >= $skuinfos[$s_key]) { $ssname = $order_id . "," . $ebay_sku; session_start(); if (isset($_SESSION[$ssname]) && $_SESSION[$ssname] == "yes") { self::$errCode = '502'; self::$errMsg = "数据同步中!请不要重复提交!"; return false; } $u_data = array(); $u_data = array('isScan' => 1, 'scanUserId' => $userId, 'amount' => $skuinfos[$s_key], 'scanTime' => time()); OrderPickingRecordsModel::update($u_data, "and shipOrderId='{$ordercheck[0]['id']}' and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0"); $position_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$now_pname}' and storeId=1"); $positionId = $position_info[0]['id']; $skuinfo = whShelfModel::selectSku(" where sku = '{$ebay_sku}'"); $paraArr = array('ordersn' => $ordercheck[0]['id'], 'sku' => $ebay_sku, 'amount' => $skuinfos[$s_key], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 2, 'userId' => $userId, 'reason' => '配货单配货出库', 'positionId' => $positionId); $WhIoRecordsAct = new WhIoRecordsAct(); $WhIoRecordsAct->act_addIoRecoresForWh($paraArr); //出库记录 self::$errCode = '300'; $Msg = "实际料号出库扫描成功!" . $ebay_sku; $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0"); if (!$eosr_arr2) { //更新订单到复核状态 GroupDistributionModel::updateShipOrder(array('orderStatus' => 403), "and id='{$ordercheck[0]['id']}' and orderStatus=402"); WhPushModel::pushOrderStatus($ordercheck[0]['id'], 'STATESHIPPED_PENDREVIEW', $_SESSION['userId'], time()); //状态推送 self::$errCode = '005'; self::$errMsg = "该订单已经扫描完成!"; return true; } } else { self::$errCode = '007'; $Msg = "所需数量大于库存,禁止出库!"; } } else { self::$errCode = '008'; $Msg = "该料号仓储信息有误!" . $ebay_sku; } } else { $snapStock_info = OmAvailableModel::getTNameList("wh_order_review_records_b", "snapStock,id", "where FIND_IN_SET('{$detail_info[0]['shipOrderId']}',shipOrderId) and status=1 and sku='{$ebay_sku}' order by id desc limit 1"); if (empty($snapStock_info)) { self::$errCode = '020'; self::$errMsg = "该B仓料号提货未复核"; return $ebay_sku; } else { if ($snapStock_info[0]['snapStock'] >= $skuinfos[$s_key]) { $u_data = array(); $u_data = array('isScan' => 1, 'scanUserId' => $userId, 'amount' => $skuinfos[$s_key], 'scanTime' => time()); OrderPickingRecordsModel::update($u_data, "and shipOrderId='{$ordercheck[0]['id']}' and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0"); ReviewBModel::updateSnapStock($skuinfos[$s_key], $snapStock_info[0]['id']); self::$errCode = '300'; $Msg = "实际料号出库扫描成功!" . $ebay_sku; $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0"); if (!$eosr_arr2) { //更新订单到复核状态 GroupDistributionModel::updateShipOrder(array('orderStatus' => 403), "and id='{$ordercheck[0]['id']}' and orderStatus=402"); WhPushModel::pushOrderStatus($ordercheck[0]['id'], 'STATESHIPPED_PENDREVIEW', $_SESSION['userId'], time()); //状态推送 self::$errCode = '005'; self::$errMsg = "该订单已经扫描完成!"; return true; } } else { self::$errCode = '013'; $Msg = "B仓提货数量不够配货,请确认"; } } } foreach ($eosr_arr2 as $value) { $goods_sn = array(); $eg = GroupRouteModel::getSkuPosition("where a.sku='{$value['sku']}' and c.pName='{$value['pName']}' and b.is_delete=0"); $goods_sn['detailId'] = $value['shipOrderdetailId']; $goods_sn['sku'] = $value['sku']; $goods_sn['gl'] = $value['pName']; $goods_sn['nums'] = $value['totalNums']; $goods_sn['goods_count'] = $eg[0]['nums']; $res_data['detail'][] = $goods_sn; } $gl_arr = array(); $s_arr = array(); foreach ($res_data['detail'] as $value) { $s_arr[] = $value['sku']; $gl_arr[] = $value['gl']; } array_multisort($gl_arr, $s_arr, $res_data['detail']); } else { self::$errCode = '010'; $Msg = "请不要重复扫描该订单下的料号!" . $ebay_sku; } } else { self::$errCode = '009'; $Msg = "记录料号与扫描料号不符!" . $ebay_sku; } } else { self::$errCode = '009'; $Msg = "记录料号与扫描料号不符!"; } } $difftime = time() - $starttime; self::$errMsg = $Msg . '--' . $difftime; return $res_data; }
function act_checkSkuNum() { $userId = $_SESSION['userId']; $show_mes = array(); $shipOrderGroup = $_POST['order_group']; $sku = trim($_POST['sku']); //$sku = getGoodsSn2($sku); $sku_num = $_POST['sku_num']; $group_id = $_POST['now_group_id']; $now_pname = $_POST['now_pname']; $sku_info = GroupDistributionBModel::getGroupDistListB("*", "where shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and pName='{$now_pname}' and status=0"); $sku_onhand = GroupDistributionBModel::getSkuPositionStock("and c.sku='{$sku}' and b.pName='{$now_pname}' and a.storeId=2"); if (!is_numeric($sku_num) || $sku_num == 0) { self::$errCode = "003"; self::$errMsg = "出库数量必须为正整数,请确认!"; return false; } if ($sku_num > $sku_onhand[0]['nums']) { self::$errCode = "003"; self::$errMsg = "出库数量不能大于系统库存,请确认!"; return false; } if ($sku_num > $sku_info[0]['skuAmount']) { self::$errCode = "003"; self::$errMsg = "出库数量不能大于料号数量,请确认!"; return false; } $i_data = array('status' => 1, 'amount' => $sku_num); $inser_info = GroupDistributionBModel::update($i_data, "and shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and pName='{$now_pname}'"); if ($inser_info) { $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'"); $position_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$now_pname}' and storeId=2"); $positionId = $position_info[0]['id']; $paraArr = array('ordersn' => $shipOrderGroup, 'sku' => $sku, 'amount' => $sku_num, 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 2, 'userId' => $userId, 'reason' => '提货单配货出库', 'positionId' => $positionId, 'storeId' => 2); $WhIoRecordsAct = new WhIoRecordsAct(); $tt = $WhIoRecordsAct->act_addIoRecoresForWh($paraArr); //出库记录 $now_shipOrderId_info = GroupDistributionBModel::getGroupDistListB("shipOrderId", "where shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and pName='{$now_pname}' and status=1"); $shipOrderId_arr = array(); $shipOrderId_arr = explode(',', $now_shipOrderId_info[0]['shipOrderId']); foreach ($shipOrderId_arr as $info) { $complete_sql = GroupDistributionBModel::getGroupDistListB("*", "where shipOrderGroup='{$shipOrderGroup}' and FIND_IN_SET({$info},shipOrderId) and status=0"); if (empty($complete_sql)) { //更新订单到待配货状态 GroupDistributionBModel::updateShipOrder(array('orderStatus' => 402), "and id='{$info}' and orderStatus=407"); //WhPushModel::pushOrderStatus($info,'STATESHIPPED_BEPICKING',$_SESSION['userId'],time()); //状态推送 } } } $status_sql = GroupDistributionBModel::getGroupDistListB("*", "where shipOrderGroup='{$shipOrderGroup}' and status=0"); if (empty($status_sql)) { self::$errCode = 1; self::$errMsg = "提货单出库完成,请扫描下一提货单1!"; return true; } else { $show_info = array(); $show_sql = GroupDistributionBModel::getGroupSkuInfoB("and a.shipOrderGroup='{$shipOrderGroup}' and a.status=0 and a.groupId>'{$group_id}' group by a.pName order by a.groupId asc"); if (!empty($show_sql)) { $order_sku_info = $this->get_valid_order($show_sql[0]['shipOrderGroup'], $show_sql[0]['sku'], $show_sql[0]['pName']); if ($order_sku_info) { $show_info['group_id'] = $show_sql[0]['groupId']; $show_info['sku'] = $show_sql[0]['sku']; $show_info['sku_amount'] = $show_sql[0]['skuAmount']; $show_info['goods_location'] = $show_sql[0]['pName']; } } if (empty($show_info)) { $show_info2 = array(); $show_sql = GroupDistributionBModel::getGroupSkuInfoB("and a.shipOrderGroup='{$shipOrderGroup}' and a.status=0 and a.groupId<'{$group_id}' group by a.pName order by a.groupId asc"); if (!empty($show_sql)) { $order_sku_info = $this->get_valid_order($show_sql[0]['shipOrderGroup'], $show_sql[0]['sku'], $show_sql[0]['pName']); if ($order_sku_info) { $show_info2['group_id'] = $show_sql[0]['groupId']; $show_info2['sku'] = $show_sql[0]['sku']; $show_info2['sku_amount'] = $show_sql[0]['skuAmount']; $show_info2['goods_location'] = $show_sql[0]['pName']; } } else { self::$errCode = 1; self::$errMsg = "提货单出库完成,请扫描下一提货单2!"; return true; } if (!empty($show_info2)) { $show_mes = $show_info2; } else { self::$errCode = 1; self::$errMsg = "提货单出库完成,请扫描下一提货单3!"; return true; } } else { $show_mes = $show_info; } self::$errMsg = "出库成功,请扫描下一个料号!"; return $show_mes; } }
/** * WhGoodsAssignAct::process_sku() * 处理停售料号 * @return */ function process_sku($skus) { $log_file = 'clearSkuLocation/' . date('Y-m-d') . '.txt'; $skus = array_filter($skus); //处理料号数组 if (empty($skus)) { return FALSE; } $num_arr = array(); //库存不为空料号 $is_sale = array(); //非停售料号 $sucess = array(); //清空成功料号 $fail = array(); //清空失败料号 //print_r($skus);exit; foreach ($skus as $sku) { $goods_count = CommonModel::getGoodsCount($sku); //获取旧ERP库存 if ($goods_count !== FALSE && $goods_count != 0) { //库存非零情况 $num_arr[$sku] = $goods_count; continue; } $sku_info = packageCheckModel::selectSku($sku); //获取料号信息 if (!in_array($sku_info[0]['goodsStatus'], array(2, 3))) { $is_sale[] = $sku; continue; } TransactionBaseModel::begin(); //清空料号仓位 $info = whShelfModel::clearSkuLocation($sku_info[0]['id']); $date = date('Y-m-d H:i:s'); if ($info == TRUE) { $log_info = sprintf("料号:%s, 时间:%s, 信息:%s \r\n", $sku, $date, '新系统仓位清空成功'); write_log($log_file, $log_info); } else { $log_info = sprintf("料号:%s, 时间:%s, 信息:%s \r\n", $sku, $date, '新系统仓位清空失败'); write_log($log_file, $log_info); $fail[] = $sku; continue; } //同步清除老ERP仓位 $info = CommonModel::clearSkuLocation($sku); //接口 if ($info['errCode'] == 200) { $log_info = sprintf("料号:%s, 时间:%s, 信息:%s,返回值:%s \r\n", $sku, $date, '老ERP仓位清空成功', is_array($info) ? json_encode($info) : $info); write_log($log_file, $log_info); $sucess[] = $sku; } else { $log_info = sprintf("料号:%s, 时间:%s, 信息:%s,返回值:%s \r\n", $sku, $date, '老ERP仓位清空失败', is_array($info) ? json_encode($info) : $info); write_log($log_file, $log_info); $fail[] = $sku; TransactionBaseModel::rollback(); continue; } TransactionBaseModel::commit(); } return array('num_arr' => $num_arr, 'is_sale' => $is_sale, 'sucess' => $sucess, 'fail' => $fail); }
function act_checkSkuNum() { $assignNUmber = $_POST['order_group']; $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $sku_num = intval($_POST['sku_num']); if (!is_numeric($sku_num)) { self::$errCode = '001'; self::$errMsg = '请输入正确数量!'; return false; } $goodsAssignId = intval($_POST['now_group_id']); $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'"); //获取sku信息 $sku_info = WhGoodsAssignModel::getDetail($goodsAssignId, " and a.sku='{$sku}'"); //调拨单明细中的sku信息 if ($sku_info['inCheckNum'] >= $sku_info['assignNum']) { self::$errCode = '002'; self::$errMsg = '该料号已接收复核完毕!'; return false; } $inCheckNum = $sku_info['inCheckNum'] + $sku_num; if ($inCheckNum > $sku_info['assignNum']) { self::$errCode = '003'; self::$errMsg = '接收数不能大于配货数!'; return false; } $where = array('goodsAssignId' => $goodsAssignId, 'sku' => $sku); //生成where条件 $update = array('inCheckNum' => $inCheckNum); //if($inCheckNum == $sku_info['assignNum']){ $update['inCheckTime'] = time(); $update['inCheckUid'] = $_SESSION['userId']; $checkAssignList = true; //} $arr = array('sku' => $sku, 'sku_amount' => $sku_info['assignNum'], 'check_num' => $inCheckNum); $info = WhGoodsAssignModel::updateAssignDetail($where, $update); if (!$info) { self::$errCode = "004"; self::$errMsg = "更新接收明细失败!"; return false; } self::$errCode = "200"; self::$errMsg = isset($checkAssignList) ? '该料号接收复核完毕' : '该料号已复核,请录入下一料号!'; return $arr; }
function act_checkSkuNum() { $bool = false; //标志是否有摒弃订单 $assignNUmber = $_POST['order_group']; $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'"); //获取sku信息 //print_r($skuinfo);exit; //var_dump($skuinfo);exit; //$sku = getGoodsSn2($sku); $sku_num = $_POST['sku_num']; $assignId = $_POST['now_group_id']; $now_pname = $_POST['now_pname']; $sku_info = WhGoodsAssignModel::getDetail($assignId, " and a.sku='{$sku}' and a.checkUid=0"); //调拨单明细中的sku信息 //$sku_onhand = GroupDistributionModel::getSkuPositionStock("and c.sku='$sku' and b.pName='$now_pname'"); //$order_sku_info = $this->get_valid_order($sku_info[0]['shipOrderGroup'],$sku_info[0]['sku'],$sku_info[0]['pName']); $now_num = $sku_num + $sku_info['assignNum']; //已配货数加上本次配货数 if (!is_numeric($sku_num) || $now_num < 0) { self::$errCode = "007"; self::$errMsg = "出库数量必须为正整数,请确认!"; return false; } if ($sku_info['num'] < $now_num) { self::$errCode = "008"; self::$errMsg = "配货数量不能大于原始需求数量!"; return false; } //print_r($sku_info);exit; $erp_onhand = CommonModel::getErpSkuInfo($sku); //获取老ERP料号库存信息 if ($erp_onhand['errocode'] != 200) { self::$errCode = "014"; self::$errMsg = "拉取老ERP库存信息失败,请稍后再试!"; return false; } //根据转出仓库获取库存 $goods_count = $sku_info['storeId'] == 1 ? $erp_onhand['data']['goods_count'] : $erp_onhand['data']['second_count']; if ($sku_num > $goods_count) { self::$errCode = "009"; self::$errMsg = "配货数量不能大于旧ERP系统库存[{$goods_count}],请确认!"; return false; } $uid = $_SESSION['userId']; $scanTime = time(); $where = array('goodsAssignId' => $assignId, 'sku' => $sku); //拼接where条件 $update = array('scanUid' => $uid, 'scanTime' => $scanTime, 'assignNum' => "assignNum+{$sku_num}"); //拼接更新字段 TransactionBaseModel::begin(); $info = WhGoodsAssignModel::updateAssignDetail($where, $update); if ($info) { $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 = "010"; 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 = "011"; self::$errMsg = "更新仓位库存失败!"; return false; } /**** 插入出库记录 *****/ $paraArr = array('sku' => $sku, 'amount' => $sku_num, 'positionId' => $sku_info['positionId'], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 34, 'userId' => $_SESSION['userId'], 'reason' => '调拨出库'); $record = CommonModel::addIoRecores($paraArr); //出库记录 /** 暂时取消同步老ERP库存**/ $info = CommonModel::updateIoRecord($sku, $sku_num, 2, '仓库调拨', $_SESSION['userCnName'], $sku_info['pName']); //var_dump($info);exit; if ($info['errCode'] != 200) { TransactionBaseModel::rollback(); self::$errCode = "012"; self::$errMsg = "同步旧ERP库存失败!"; return false; } TransactionBaseModel::commit(); self::$errCode = "0"; self::$errMsg = "配货成功,请扫描下一个料号!"; $arr['sku'] = $sku; $arr['num'] = $sku_info['num']; $arr['assignNum'] = $sku_info['assignNum'] + $sku_num; return $arr; } else { self::$errCode = "013"; self::$errMsg = "更新料号状态失败!"; return false; } }
if (!empty($actualStock)) { $where = "where sku='{$sku}' and storeId = 2"; $sql = "update wh_sku_location set actualStock={$second_count}, storeId=2 " . $where; //echo $sql;exit; $info = $dbConn->query($sql); if (!$info) { $errCode = 412; $errMsg = "更新B仓总库存失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, $errMsg, $sql, $second_count, $where); write_log($log_file, $log_info); TransactionBaseModel::rollback(); continue; } write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n"); } else { $info = whShelfModel::insertStore($sku, $second_count, 2); if (!$info) { $errCode = 412; $errMsg = "插入B仓总库存失败!"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, $errMsg, $info, $sku, $second_count); write_log($log_file, $log_info); TransactionBaseModel::rollback(); continue; } write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n"); } //} TransactionBaseModel::commit(); } function updateNewPostion($sku, $location) {
function act_updateEntryStatus2() { $batchNum = isset($_GET['batchNum']) ? $_GET['batchNum'] : ''; //传过来的base64编码的json字符串 if (empty($batchNum)) { self::$errCode = 101; self::$errMsg = '批次号为空'; return false; } $affectRows = whShelfModel::updateEntryStatus($batchNum, 0); if ($affectRows !== FALSE) { self::$errCode = '200'; self::$errMsg = '成功'; return $affectRows; } else { self::$errCode = '404'; self::$errMsg = '数据库操作错误'; return false; } }
public function view_getWhIoRecordsList() { $type = isset($_GET['type']) ? $_GET['type'] : ''; $status = isset($_GET['status']) ? $_GET['status'] : ''; $ioType = isset($_GET['ioType']) ? $_GET['ioType'] : ''; if (intval($ioType) != 1 && intval($ioType) != 2) { //1为出库,2为入库 $this->smarty->assign('$toptitle', '出入库记录列表'); $this->smarty->assign('status', '参数错误'); $this->smarty->assign('whIoRecordsList', null); //循环列表 $this->smarty->display("whIoRecords.htm"); } else { $ioType = intval($ioType); $whIoRecordsAct = new WhIoRecordsAct(); $where = "WHERE ioType='{$ioType}' "; if ($type == 'search') { $id = isset($_GET['id']) ? post_check($_GET['id']) : ''; $ordersn = isset($_GET['ordersn']) ? post_check($_GET['ordersn']) : ''; $ioTypeId = isset($_GET['ioTypeId']) ? post_check($_GET['ioTypeId']) : ''; $sku = isset($_GET['sku']) ? post_check($_GET['sku']) : ''; $purchaseId = isset($_GET['purchaseId']) ? post_check($_GET['purchaseId']) : ''; $userId = isset($_GET['userId']) ? post_check($_GET['userId']) : ''; $positionId = isset($_GET['position']) ? post_check($_GET['position']) : ''; $cStartTime = isset($_GET['cStartTime']) ? post_check($_GET['cStartTime']) : ''; $cEndTime = isset($_GET['cEndTime']) ? post_check($_GET['cEndTime']) : ''; if (!empty($id)) { $where .= "AND id='{$id}' "; } if (!empty($ordersn)) { $where .= "AND ordersn='{$ordersn}' "; } if (!empty($ioTypeId)) { $where .= "AND ioTypeId='{$ioTypeId}' "; } if (!empty($sku)) { $where .= "AND sku='{$sku}' "; } if (!empty($purchaseId)) { $purchaseId = getUserIdByName($purchaseId); $where .= "AND purchaseId='{$purchaseId}' "; } if (!empty($userId)) { $userId = getUserIdByName($userId); $where .= "AND userId='{$userId}' "; } if ($positionId) { $positionId = WhPositionDistributionModel::get_position_info('id', '', $positionId); $positionId = empty($positionId) ? '-1' : $positionId[0]['id']; $where .= "AND positionId = '{$positionId}' "; } if (!empty($cStartTime)) { $startTime = strtotime($cStartTime . '00:00:00'); $where .= "AND createdTime >='{$startTime}' "; } if (!empty($cEndTime)) { $endTime = strtotime($cEndTime . '23:59:59'); $where .= "AND createdTime <='{$endTime}' "; } } $total = $whIoRecordsAct->act_getTNameCount('wh_iorecords', $where); $num = 100; //每页显示的个数 $page = new Page($total, $num, '', 'CN'); $where .= "ORDER BY createdTime DESC " . $page->limit; $whIoRecordsList = $whIoRecordsAct->act_getTNameList('wh_iorecords', '*', $where); if (!empty($_GET['page'])) { if (intval($_GET['page']) <= 1 || intval($_GET['page']) > ceil($total / $num)) { $n = 1; } else { $n = (intval($_GET['page']) - 1) * $num + 1; } } else { $n = 1; } if ($total > $num) { //输出分页显示 $show_page = $page->fpage(array(0, 2, 3, 4, 5, 6, 7, 8, 9)); } else { $show_page = $page->fpage(array(0, 2, 3)); } $toptitle = '出库记录列表'; $ioSearchName = '出库类型'; $navlist = array(array('url' => 'index.php?mod=skuStock&act=getSkuStockList', 'title' => '库存信息'), array('url' => '', 'title' => '出库记录列表')); $this->smarty->assign('toplevel', 0); $this->smarty->assign('secondlevel', '34'); $ioTypeList = WhIoStoreModel::getIoTypeListByioType(0); if ($ioType == 2) { $toptitle = '入库记录列表'; $ioSearchName = '入库类型'; $this->smarty->assign('secondlevel', 35); $navlist = array(array('url' => 'index.php?mod=skuStock&act=getSkuStockList', 'title' => '库存信息'), array('url' => '', 'title' => '入库记录列表')); $ioTypeList = WhIoStoreModel::getIoTypeListByioType(1); } $this->smarty->assign('toptitle', $toptitle); $this->smarty->assign('ioSearchName', $ioSearchName); $this->smarty->assign('ioTypeList', $ioTypeList); $this->smarty->assign('navlist', $navlist); $this->smarty->assign('show_page', $show_page); $this->smarty->assign('status', $status); $usermodel = UserModel::getInstance(); foreach ($whIoRecordsList as $key => $val) { $whIoRecordsList[$key]['ioTypeName'] = WhIoStoreModel::getIoTypeNameById($val['ioTypeId']); $whIoRecordsList[$key]['whName'] = WhIoStoreModel::getWhNameById($val['storeId']); $purchase_user_info = $usermodel->getGlobalUserLists('global_user_name', "where a.global_user_id='{$val['purchaseId']}'", '', 'limit 1'); $whIoRecordsList[$key]['purchaseName'] = $purchase_user_info[0]['global_user_name']; //$user_info = $usermodel->getGlobalUserLists('global_user_name',"where a.global_user_id='{$val['userId']}'",'','limit 1'); //$whIoRecordsList[$key]['userName'] = $user_info[0]['global_user_name']; $whIoRecordsList[$key]['userName'] = getUserNameById($val['userId']); $position_info = whShelfModel::selectPosition("where id={$val['positionId']}"); $whIoRecordsList[$key]['pName'] = $position_info[0]['pName']; } $this->smarty->assign('whIoRecordsList', $whIoRecordsList ? $whIoRecordsList : null); //循环列表 $this->smarty->display("whIoRecords.htm"); } }
public function act_whShelf() { //print_r($_POST); $userCnName = $_SESSION['userCnName']; $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $nums = $_POST['nums']; $select_now_position = $_POST['select_now_position']; $select_now_store = $_POST['select_now_store']; $select_hope_position = $_POST['select_hope_position']; $select_hope_store = $_POST['select_hope_store']; if (empty($sku)) { self::$errCode = 401; self::$errMsg = "sku不能为空"; return false; } if (empty($select_now_position) && empty($select_now_store) && empty($select_hope_position) && empty($select_hope_store)) { self::$errCode = 401; self::$errMsg = "上架位置不能为空"; return false; } /* $where = "where sku='{$sku}' and tallyStatus=0"; $tallying_list = packageCheckModel::selectList($where); if(empty($tallying_list)){ self::$errCode = 402; self::$errMsg = "无该料号点货信息"; return false; }else{ $tallying_num = 0; foreach($tallying_list as $tallying){ $tallying_num += $tallying['ichibanNums']-$tallying['shelvesNums']; } if($nums>$tallying_num){ self::$errCode = 402; self::$errMsg = "上架数不能大于点货良品数[{$tallying_num}]"; return false; } } */ if ($nums < 1) { self::$errCode = 403; self::$errMsg = "上架数量不能小于1"; return false; } $where = " where sku = '{$sku}'"; $skuinfo = whShelfModel::selectSku($where); if (empty($skuinfo)) { self::$errCode = 404; self::$errMsg = "无该料号信息"; return false; } else { $skuId = $skuinfo['id']; $purchaseId = $skuinfo['purchaseId']; } /* $purInfo = CommonModel::endPurchaseOrder($sku,$nums); //api获取采购订单处理情况 if($purInfo!=0){ self::$errCode = 405; self::$errMsg = "完结采购订单出错,上架失败"; return false; } //更新旧erp库存 $update_onhand = CommonModel::updateOnhand($sku,$nums); if($update_onhand==0){ self::$errCode = 415; self::$errMsg = "更新erp库存失败"; return false; }*/ $return_num = $nums; $in_positionId = 0; $userId = $_SESSION['userId']; TransactionBaseModel::begin(); /****插入采购未订单记录****/ /* if($return_num>0){ $where = " where sku = '{$sku}' and tallyStatus=0"; $list = whShelfModel::selectList($where); $purchaseId = $list[0]['purchaseId']; $totalNums = 0; foreach($list as $key=>$value){ $totalNums += $value['num']; } if ($return_num==$nums){ $reach_note = "sku[{$sku}]到货{$nums}个,未找到该料号的订单,请物料点货确认和采购补单!"; }else{ $reach_note = "sku[{$sku}]到货{$nums}个,入库完毕后还多余{$return_num}个,请物料点货确认和采购补单!"; } $msg = whShelfModel::insertNoOrder($sku,$return_num,$totalNums,$purchaseId,$userId,$reach_note); if(!$msg){ self::$errCode = whShelfModel::$errCode; self::$errMsg = whShelfModel::$errMsg; return false; } } */ /***无料号对应仓位的关系时更新关系表***/ if ($select_hope_store != 0 || $select_hope_position != 0) { $type = 1; $positionId = $select_hope_position; if ($select_hope_store != 0) { $type = 2; $positionId = $select_hope_store; } $in_positionId = $positionId; $tname = "wh_product_position_relation"; $set = "set pId='{$skuId}',positionId='{$positionId}',nums='{$nums}',type='{$type}',storeId=2"; $insert_relation = OmAvailableModel::insertRow($tname, $set); if (!$insert_relation) { self::$errCode = 408; self::$errMsg = "插入关系表失败!"; TransactionBaseModel::rollback(); return false; } //更新仓位使用状态 $update_position = OmAvailableModel::updateTNameRow("wh_position_distribution", "set is_enable=1", "where id={$positionId}"); if ($update_position === false) { self::$errCode = 409; self::$errMsg = "更新仓位使用状态失败!"; TransactionBaseModel::rollback(); return false; } } //更新指定仓位存货数量 if ($select_now_store != 0) { $positioninfo = whShelfModel::selectRelation("where id={$select_now_store}"); $in_positionId = $positioninfo[0]['positionId']; $update_position = whShelfModel::updateProductPositionRelation($nums, "where id='{$select_now_store}'"); if (!$update_position) { self::$errCode = 410; self::$errMsg = "更新仓位库存失败!"; TransactionBaseModel::rollback(); return false; } } if ($select_now_store == 0 && $select_hope_position == 0 && $select_hope_store == 0) { $positioninfo = whShelfModel::selectRelation("where id={$select_now_position}"); $in_positionId = $positioninfo[0]['positionId']; $update_position = whShelfModel::updateProductPositionRelation($nums, "where id='{$select_now_position}'"); if (!$update_position) { self::$errCode = 411; self::$errMsg = "更新仓位库存失败!"; TransactionBaseModel::rollback(); return false; } } /**** 更新总库存 *****/ $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 = "更新总库存失败!"; TransactionBaseModel::rollback(); return false; } } else { $info = packageCheckModel::insertStore($sku, $nums, 2); if (!$info) { self::$errCode = 412; self::$errMsg = "更新总库存失败!"; TransactionBaseModel::rollback(); return false; } } /**** 插入出入库记录 *****/ $paraArr = array('sku' => $sku, 'amount' => $nums, 'positionId' => $in_positionId, 'purchaseId' => $purchaseId, 'ioType' => 2, 'ioTypeId' => 13, 'userId' => $userId, 'reason' => '上架入库', 'storeId' => 2); $record = CommonModel::addIoRecores($paraArr); //出库记录 if (!$record) { self::$errCode = 413; self::$errMsg = "插入出入库记录失败!"; TransactionBaseModel::rollback(); return false; } /* //更新点货记录状态 $where = "where sku='{$sku}' and tallyStatus=0 and ichibanNums>0"; $list = packageCheckModel::selectList($where); $i = 0; while($list[$i]&&$nums){ $need_nums = $list[$i]['ichibanNums']-$list[$i]['shelvesNums']; if($nums >= $need_nums){ //更改状态 $msg = whShelfModel::updateTallyStatus($list[$i]['id'],$need_nums); if(!$msg){ self::$errCode = 413; self::$errMsg = "更新点货记录状态失败!"; TransactionBaseModel :: rollback(); return false; } $nums = $nums-$need_nums; }else{ $msg = whShelfModel::updateShelfNum($list[$i]['id'],$nums); if(!$msg){ self::$errCode = 414; self::$errMsg = "更新点货记录已上架数量失败!"; TransactionBaseModel :: rollback(); return false; } $nums = 0; } $i++; } */ /* $purInfo = CommonModel::endPurchaseOrder($sku,$return_num); //api获取采购订单处理情况 if($purInfo!=0){ self::$errCode = 405; self::$errMsg = "完结采购订单出错,上架失败"; TransactionBaseModel :: rollback(); return false; } //更新旧erp库存 $position_info = PositionModel::getPositionList("pName","where id={$in_positionId}"); $update_onhand = CommonModel::updateOnhand($sku,$return_num,$userCnName,$position_info[0]['pName']); if($update_onhand==0){ self::$errCode = 415; self::$errMsg = "更新旧erp库存失败"; TransactionBaseModel :: rollback(); return false; } */ TransactionBaseModel::commit(); self::$errMsg = "料号[{$sku}]上架成功!"; return true; }
public function act_adjustPackageCheck() { $userCnName = $_SESSION['userCnName']; $userId = $_SESSION['userId']; $info = isset($_POST['info']) ? $_POST['info'] : ""; $infoarr = explode("*", $info); $infoarr = array_filter($infoarr); $ids = array(); /* foreach($infoarr as $value){ $value_arr = explode("_",$value); $id = $value_arr[0]; $ids[] = $id; } $idstr = implode(',',$ids); $where = "where id in($idstr) and shelvesNums!=0"; $lists = packageCheckModel::selectList($where); if(!empty($lists)){ self::$errCode=401; self::$errMsg = "调整录入有已上架,请用pda调整"; return false; } */ OmAvailableModel::begin(); foreach ($infoarr as $key => $value) { $entryStatus = 0; $value_arr = explode("_", $value); $id = $value_arr[0]; $num = $value_arr[1]; $where = "where id={$id}"; $list = packageCheckModel::selectList($where); $beforeNum = $list[0]['num']; $sku = $list[0]['sku']; $ichibanNums = $list[0]['ichibanNums']; $shelvesNums = $list[0]['shelvesNums']; $now_num = $beforeNum + $num; /** 判断点货调整后数量是否为负数**/ if ($now_num < 0) { self::$errCode = 203; self::$errMsg = "调整后数量必须大于等于0!"; return FALSE; } /** 已打标但QC未返回良品不许修改**/ if ($list[0]['printTime'] && !$list[0]['ichibanTime']) { self::$errCode = 204; self::$errMsg = "请等待QC返回良品后再进行点货调整!"; return FALSE; } /** add by Gary(yym) 添加点货调整时QC是否已返回良品数判断**/ if ($ichibanNums > 0 && $beforeNum < $now_num) { //QC已返回良品数 self::$errCode = 205; self::$errMsg = "已有良品数且调整后点货数大于调整前点货数,不许调整!"; return FALSE; } /** end**/ /** 已有上架数则不允许修改(除了许振铠)**/ if ($shelvesNums > 0) { //已有上架数 if (in_array($_SESSION['userId'], array(318, 644))) { if ($now_num < $shelvesNums) { self::$errCode = 212; self::$errMsg = "调整后的数量不能小于已上架数量!"; return FALSE; } $checkOnWaySku = 0; //无需判断在途数量 } else { self::$errCode = 206; self::$errMsg = "该料号已上架,不许调整!"; return FALSE; } } /** end**/ /** 判断点货数量是否符合在途数量**/ if (!isset($checkOnWaySku)) { //已上架点货调整则跳过在途检测 $postNum = $list[0]['entryStatus'] != 0 ? $beforeNum : 0; //如果不是正常点货状态,则把点货数传递给判断函数 $checkOnWaySku = checkSkuPackage($sku, $num, $postNum); } if ($checkOnWaySku == 0) { $u_num = $num; } else { $entryStatus = 1; $u_num = -$beforeNum; } $updateinfo = packageCheckModel::updateRecord($id, $num, $entryStatus); if (!$updateinfo) { self::$errCode = 207; self::$errMsg = "更新点货记录失败!"; OmAvailableModel::rollback(); return FALSE; } $insertinfo = packageCheckModel::insertAdjustRecord($id, $num, $beforeNum, $userId); if (!$insertinfo) { self::$errCode = 208; self::$errMsg = "插入调整记录失败!"; OmAvailableModel::rollback(); return FALSE; } $updatestore = packageCheckModel::updateStore($sku, $u_num); if (!updatestore) { self::$errCode = 209; self::$errMsg = "更新仓库到货库存失败!"; OmAvailableModel::rollback(); return FALSE; } if ($ichibanNums != 0 && $ichibanNums != NULL) { $updateIchibanNums = packageCheckModel::updateIchibanNums($num, $id); if ($shelvesNums != 0) { //存在上架记录 if ($now_num == $shelvesNums) { //更改后点货数如果等于上架数 $info = whShelfModel::updateTallyStatus($id, 0); //完结点货记录 if (!$info) { self::$errCode = 210; self::$errMsg = "完结点货记录失败!"; OmAvailableModel::rollback(); return FALSE; } } } /** 暂时取消点货调整同步老ERP库存**/ /*if($shelvesNums!=0){ $updateshelvesNums = packageCheckModel::updateShelvesNums($num,$sku,$id); if(!$updateshelvesNums){ self::$errCode= 210; self::$errMsg = "更新点货记录失败!"; OmAvailableModel::rollback(); return FALSE; } $update_onhand = CommonModel::adjustOut($sku,$num,$userCnName); if($update_onhand==0){ self::$errCode = 211; self::$errMsg = "更新旧erp库存失败"; OmAvailableModel :: rollback(); return FALSE; } }*/ } } OmAvailableModel::commit(); return TRUE; }
/** * WhGoodsAssignAct::act_checkSkuNum() * 检测sku数量是否在库存之内 * @return void */ public function act_checkSkuNum() { $sku = trim($_POST['sku']) ? trim($_POST['sku']) : ''; $outStoreId = intval(trim($_POST['outStoreId'])) ? intval(trim($_POST['outStoreId'])) : ''; $num = intval(trim($_POST['num'])) ? intval(trim($_POST['num'])) : ''; if (!$sku || !$outStoreId || !$num) { self::$errCode = '001'; self::$errMsg = '参数不完整'; return FALSE; } $actualStock = whShelfModel::selectSkuNums($sku, $outStoreId); //获取对应仓库的总库存 //var_dump($actualStock);exit; if (!empty($actualStock)) { if ($actualStock['actualStock'] >= $num) { self::$errCode = '200'; return TRUE; } else { self::$errCode = '002'; self::$errMsg = '该仓库料号库存不足!'; return FALSE; } } else { self::$errCode = '003'; self::$errMsg = '转出仓库不存在该料号!'; return FALSE; } }
function act_checkSkuPositon() { $sku = post_check(trim($_POST['sku'])); $sku = get_goodsSn($sku); $location = post_check(trim($_POST['location'])); $where = " where sku = '{$sku}'"; $skuinfo = whShelfModel::selectSku($where); if (empty($skuinfo)) { self::$errCode = 401; self::$errMsg = "无该料号信息"; return false; } else { $skuId = $skuinfo['id']; } $sku_positon_list = InvRecordModel::getSkuPosition($skuId, $location); if (empty($sku_positon_list)) { self::$errCode = 402; self::$errMsg = "料号和仓位信息有误"; return false; } else { $sku_num = CommonModel::getGoodsCount($sku); self::$errMsg = "请输入盘点数量,选择盘点原因"; return $sku_num; } }
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; } }