Ejemplo n.º 1
0
 function act_addWhRecManageDetail($jsonArr)
 {
     if (empty($jsonArr)) {
         self::$errCode = 0101;
         self::$errMsg = 'empty jsonArr';
         return 0;
     }
     if (!is_array($jsonArr)) {
         self::$errCode = 0201;
         self::$errMsg = 'error array';
         return 0;
     }
     $sku = $jsonArr['sku'];
     //sku
     $nums = $jsonArr['nums'];
     //到货数量
     $userId = $jsonArr['userId'];
     //添加人id
     $batchNum = $jsonArr['batchNum'];
     //到货批次
     $now = time();
     $flag = 0;
     //标识变量,用来判断是否要进行采购未订单;
     try {
         TransactionBaseModel::begin();
         if (empty($sku)) {
             //sku不能为空
             self::$errCode = 0101;
             self::$errMsg = 'empty sku';
             throw new Exception('empty sku');
         }
         if (empty($nums)) {
             //到货数量不能为空
             self::$errCode = 0201;
             self::$errMsg = 'empty nums';
             throw new Exception('empty nums');
         }
         if (intval($nums) == 0) {
             //数量不能为0
             self::$errCode = 0311;
             self::$errMsg = 'error nums';
             throw new Exception('error nums');
         }
         if (empty($userId)) {
             //操作人id不能为空
             self::$errCode = 0301;
             self::$errMsg = 'empty userId';
             throw new Exception('empty userId');
         }
         //            if (empty ($batchNum)) { //批次不能为空
         //				self :: $errCode = 0302;
         //				self :: $errMsg = 'empty $atchNum';
         //				throw new Exception('empty batchNum');
         //			}
         $tName = 'wh_receipt_management';
         $select = '*';
         $where = "WHERE reStatus=0 AND sku='{$sku}' ORDER BY createdTime";
         //reStatus为0,且sku符合的收货表记录
         $whRecManageList = WhRecManageModel::getTNameList($tName, $select, $where);
         if (empty($whRecManageList)) {
             //没有找到该sku对应的记录时,直接全部未订单
             self::$errCode = 222;
             self::$errMsg = 'success';
             $resupplyOrder = array();
             //采购未订单数组
             $resupplyOrder['sku'] = $sku;
             $resupplyOrder['nums'] = $nums;
             return $resupplyOrder;
         }
         $diffNums = $whRecManageList[0]['amount'] - $whRecManageList[0]['arrivedNums'];
         //该记录中能插入的最大到货数量
         if ($nums <= $diffNums) {
             //nums小于本条记录能支持的最大到货数量
             $tName = 'wh_receipt_management_details';
             $set = "SET rmId='{$whRecManageList[0]['id']}',nums='{$nums}',userId='{$userId}',batchNum='{$batchNum}',insertTime='{$now}'";
             $affectRowAdd = WhRecManageModel::addTNameRow($tName, $set);
             if (!$affectRowAdd) {
                 //未插入成功报错
                 self::$errCode = 0501;
                 self::$errMsg = 'affectRowAdd error';
                 throw new Exception('affectRowAdd error');
             }
             //同时更新匹配记录的字段,arrivedNums和reStatus
             $tName = 'wh_receipt_management';
             $set = "SET arrivedNums=arrivedNums+'{$nums}' ";
             if ($nums == $diffNums) {
                 $set .= ",reStatus=1 ";
             }
             $where = "WHERE id='{$whRecManageList[0]['id']}'";
             $affectRowUp = WhRecManageModel::updateTNameRow($tName, $set, $where);
             if (!$affectRowUp) {
                 //未插入成功报错
                 self::$errCode = 0501;
                 self::$errMsg = 'affectRowUp error';
                 throw new Exception('affectRowUp error');
             }
             $flag = 1;
         } else {
             //如果nums大于本条记录能支持的最大到货数量
             foreach ($whRecManageList as $value) {
                 $diffNums = $value['amount'] - $value['arrivedNums'];
                 //该记录中能插入的最大到货数量,此时第一次循环是,$num一定是>diffnums的
                 if ($nums <= $diffNums) {
                     //本次到货数量小于本条记录能支持的最大到货数量
                     $tName = 'wh_receipt_management_details';
                     $set = "SET rmId='{$value['id']}',nums='{$nums}',userId='{$userId}',batchNum='{$batchNum}',insertTime='{$now}'";
                     $affectRowAdd = WhRecManageModel::addTNameRow($tName, $set);
                     if (!$affectRowAdd) {
                         //未插入成功报错
                         self::$errCode = 0501;
                         self::$errMsg = 'affectRowAdd error';
                         throw new Exception('affectRowAdd error');
                     }
                     //同时更新匹配记录的字段,arrivedNums和reStatus
                     $tName = 'wh_receipt_management';
                     $set = "SET arrivedNums=arrivedNums+'{$nums}' ";
                     if ($nums == $diffNums) {
                         $set .= ",reStatus=1 ";
                     }
                     $where = "WHERE id='{$value['id']}'";
                     $affectRowUp = WhRecManageModel::updateTNameRow($tName, $set, $where);
                     if (!$affectRowUp) {
                         //未插入成功报错
                         self::$errCode = 0501;
                         self::$errMsg = 'affectRowUp error';
                         throw new Exception('affectRowUp error');
                     }
                     $flag = 1;
                     break;
                     //$nums <= $diffNums时,退出循环
                 } else {
                     //直接先将第一条匹配记录的最大差值填入
                     $tName = 'wh_receipt_management_details';
                     $set = "SET rmId='{$value['id']}',nums='{$diffNums}',userId='{$userId}',batchNum='{$batchNum}',insertTime='{$now}'";
                     $affectRowAdd = WhRecManageModel::addTNameRow($tName, $set);
                     if (!$affectRowAdd) {
                         //未插入成功报错
                         self::$errCode = 0501;
                         self::$errMsg = 'affectRowAdd error';
                         throw new Exception('affectRowAdd error');
                     }
                     //同时更新匹配记录的字段,arrivedNums和reStatus
                     $tName = 'wh_receipt_management';
                     $set = "SET arrivedNums=arrivedNums+'{$diffNums}',reStatus=1 ";
                     $where = "WHERE id='{$value['id']}'";
                     $affectRowUp = WhRecManageModel::updateTNameRow($tName, $set, $where);
                     if (!$affectRowUp) {
                         //未插入成功报错
                         self::$errCode = 0501;
                         self::$errMsg = 'affectRowUp error';
                         throw new Exception('affectRowUp error');
                     }
                     $nums = $nums - $diffNums;
                     //减去本次插入的数量,下次循环继续比对
                 }
             }
         }
         TransactionBaseModel::commit();
         TransactionBaseModel::autoCommit();
         if ($flag == 1) {
             //不需要采购未订单
             self::$errCode = 200;
             self::$errMsg = 'success';
             return 1;
         } else {
             //需要采购未订单
             self::$errCode = 222;
             self::$errMsg = 'success';
             $resupplyOrder = array();
             //采购未订单数组
             $resupplyOrder['sku'] = $sku;
             $resupplyOrder['nums'] = $nums;
             return $resupplyOrder;
         }
     } catch (Exception $e) {
         TransactionBaseModel::rollback();
         TransactionBaseModel::autoCommit();
         return 0;
     }
 }
Ejemplo n.º 2
0
 /**
  *修改指定表记录
  */
 public static function updateTNameRow($tName, $set, $where)
 {
     self::initDB();
     $sql = "UPDATE {$tName} {$set} {$where}";
     $query = self::$dbConn->query($sql);
     if ($query) {
         $affectRows = self::$dbConn->affected_rows($query);
         return $affectRows;
         //成功, 返回列表数据
     } else {
         self::$errCode = "003";
         self::$errMsg = "修改失败";
         return false;
         //失败则设置错误码和错误信息, 返回false
     }
 }