Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 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;
 }