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; }
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; } }
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; } }
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; } }
/** * 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; }
$db_config = C("DB_CONFIG"); $dbConn = new mysql(); $dbConn->connect($db_config["master1"][0], $db_config["master1"][1], $db_config["master1"][2], ''); $dbConn->select_db($db_config["master1"][4]); $mctime = time(); //$msg_array = json_decode($msg->body,true); $msg_array = json_decode($msg->body, true); //echo ' [x] ', $msg->body, "\n"; //echo "\n\n"; write_log($log_file, json_encode($msg_array) . "\r\n"); if (!empty($msg_array)) { $sku = $msg_array['sku']; $ioTypeId = WarehouseManagementModel::whIoTypeModelList(" where typeName='{$msg_array['ioTypeId']}'"); $msg_array['ioTypeId'] = empty($ioTypeId) ? 0 : $ioTypeId[0]['id']; //获取出入库类型id $skuinfo = whShelfModel::selectSku("where sku='{$sku}'"); if (empty($skuinfo)) { $errCode = 409; $errMsg = "没有该料号"; $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s\r\n", $sku, $date, $errMsg, json_encode($skuinfo)); write_log($log_file, $log_info); OmAvailableModel::rollback(); continue; } $nums = ($msg_array['ioType'] == 1 ? '-' : '') . $msg_array['amount']; //1出库 2入库 //print_r($nums);exit; $positioninfo = whShelfModel::selectRelation("where pId={$skuinfo['id']}"); //获取料号仓位关系 //print_r($positioninfo);exit; OmAvailableModel::begin();
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; } }
public function act_shiftLibrary() { $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $oldposition = trim($_POST['oldposition']); $newposition = trim($_POST['newposition']); $nums = intval(trim($_POST['nums'])); if (empty($sku)) { self::$errCode = 401; self::$errMsg = "sku不能为空"; return false; } if (empty($oldposition)) { self::$errCode = 402; self::$errMsg = "旧仓位号不能为空"; return false; } if (empty($newposition)) { self::$errCode = 403; self::$errMsg = "新仓位号不能为空"; return false; } if ($oldposition == $newposition) { self::$errCode = 404; self::$errMsg = "新旧仓位号不能相同"; return false; } $where = " where sku = '{$sku}'"; $skuinfo = whShelfModel::selectSku($where); if (empty($skuinfo)) { self::$errCode = 404; self::$errMsg = "无该料号信息"; return false; } else { $skuId = $skuinfo['id']; } $old_positon_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$oldposition}' and storeId in(1,2)"); if (empty($old_positon_info)) { self::$errCode = 405; self::$errMsg = "无旧仓位号信息"; return false; } else { $old_location = $old_positon_info[0]['id']; } $new_positon_info = OmAvailableModel::getTNameList("wh_position_distribution", "id,type", "where pName='{$newposition}' and storeId in(1,2)"); if (empty($new_positon_info)) { self::$errCode = 406; self::$errMsg = "无新仓位号信息"; return false; } else { $new_location = $new_positon_info[0]['id']; } $old_sku_pos_info = OmAvailableModel::getTNameList("wh_product_position_relation", "*", "where pId='{$skuId}' and positionId='{$old_location}' and storeId in(1,2) and is_delete=0"); if (empty($old_sku_pos_info)) { self::$errCode = 407; self::$errMsg = "无sku对应的旧仓位号信息"; return false; } $new_sku_pos_info = OmAvailableModel::getTNameList("wh_product_position_relation", "*", "where pId='{$skuId}' and positionId='{$new_location}' and storeId in(1,2) and is_delete=0"); if ($nums > $old_sku_pos_info[0]['nums'] || empty($nums)) { $change_nums = $old_sku_pos_info[0]['nums']; } else { $change_nums = $nums; } OmAvailableModel::begin(); if (!empty($new_sku_pos_info)) { if (empty($nums)) { $tname_old = "wh_product_position_relation"; $set_old = "set nums=0,is_delete=1"; $where_old = "where id={$old_sku_pos_info[0]['id']}"; $update_old = OmAvailableModel::updateTNameRow($tname_old, $set_old, $where_old); if (!$update_old) { self::$errCode = 408; self::$errMsg = "更新旧仓位库存失败!"; TransactionBaseModel::rollback(); return false; } } else { $tname_old = "wh_product_position_relation"; $set_old = "set nums=nums-{$change_nums}"; $where_old = "where id={$old_sku_pos_info[0]['id']}"; $update_old = OmAvailableModel::updateTNameRow($tname_old, $set_old, $where_old); if (!$update_old) { self::$errCode = 409; self::$errMsg = "更新旧仓位库存失败!"; TransactionBaseModel::rollback(); return false; } } $tname_new = "wh_product_position_relation"; $set_new = "set nums=nums+{$change_nums}"; $where_new = "where id={$new_sku_pos_info[0]['id']}"; $update_new = OmAvailableModel::updateTNameRow($tname_new, $set_new, $where_new); if (!$update_new) { self::$errCode = 410; self::$errMsg = "更新新仓位库存失败!"; TransactionBaseModel::rollback(); return false; } } else { if (empty($nums)) { $tname_old = "wh_product_position_relation"; $set_old = "set nums=0,is_delete=1"; $where_old = "where id={$old_sku_pos_info[0]['id']}"; $update_old = OmAvailableModel::updateTNameRow($tname_old, $set_old, $where_old); if (!$update_old) { self::$errCode = 411; self::$errMsg = "更新旧仓位库存失败!"; TransactionBaseModel::rollback(); return false; } } else { $tname_old = "wh_product_position_relation"; $set_old = "set nums=nums-{$change_nums}"; $where_old = "where id={$old_sku_pos_info[0]['id']}"; $update_old = OmAvailableModel::updateTNameRow($tname_old, $set_old, $where_old); if (!$update_old) { self::$errCode = 412; self::$errMsg = "更新旧仓位库存失败!"; TransactionBaseModel::rollback(); return false; } } $tname_insert = "wh_product_position_relation"; $set_insert = "set pId='{$skuId}',positionId='{$new_location}',nums='{$change_nums}',type={$new_positon_info[0]['type']}"; $relation_insert = OmAvailableModel::insertRow($tname_insert, $set_insert); if (!$relation_insert) { self::$errCode = 413; self::$errMsg = "插入关系表失败!"; TransactionBaseModel::rollback(); return false; } /* //更新仓位使用状态 $update_position = OmAvailableModel::updateTNameRow("wh_position_distribution","set is_enable=1","where id=$new_location"); if(!$update_position){ self::$errCode = 414; self::$errMsg = "更新仓位使用状态失败!"; TransactionBaseModel :: rollback(); return false; } */ } //全部转移到新仓位,则将仓位同步到老ERP if (!$nums) { $info = CommonModel::updateSkuLocation($sku, $newposition); //print_r($info);exit; if ($info['res_code'] != 200) { self::$errCode = 414; self::$errMsg = '同步旧ERP仓位失败!'; return FALSE; } } OmAvailableModel::commit(); self::$errMsg = "料号[{$sku}]移库成功!"; return true; }
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; }
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; } }
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; }
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; } }