コード例 #1
0
ファイル: whShelf.action.php プロジェクト: ohjack/newErp
 /**
  * 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;
 }