/** * 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; }
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; }