wuggemail@foxmail.com 3 månader sedan
förälder
incheckning
be7f3ca11f
2 ändrade filer med 46 tillägg och 7 borttagningar
  1. 45 7
      app/cxinv/model/FinancialManager.php
  2. 1 0
      app/cxinv/model/ManagerProduct.php

+ 45 - 7
app/cxinv/model/FinancialManager.php

@@ -117,10 +117,21 @@ class FinancialManager extends Base{
                    $product=  $this->outProduct($data);
                     $data['error_remark'] = $data['balance_num']!='0'?'出库数量不正确':'';
                 }
-                $data['status']=$data['balance_num']=='0'?2:1;
+                if($data['balance_num']!=$data['total_num'] && $data['balance_num']!='0') throw new \Exception($data['error_remark']);
+                $data['status']=$data['balance_num']==$data['total_num']?1:2;
                 self::commit();
         }catch (\Exception $e){
             self::rollback();
+            if(!empty($data['idArr'])) $product=array_map(function ($item) use($data){
+                                              $temp=[];
+                                              $temp['product_id']=$item['id'];
+                                              $temp['type']=$data['type'];
+                                              $temp['num']=$item['num'];
+                                              $temp['apply_id'] = $data['apply_id'];
+                                              $temp['apply_name'] = $data['apply_name'];
+                                              $temp['status'] = 0;
+                                              return $temp;
+                                          },$data['idArr']);
             $data['status'] =4;
             $data['error_remark'] = $e->getMessage();
         }
@@ -197,12 +208,17 @@ class FinancialManager extends Base{
                  $this->processSingleProduct($item, $productID,$data);
                 } else {
                     if (isset($data['relaArr']) && is_array($data['relaArr'])&& !empty($data['relaArr'])) {
-                        foreach ($data['relaArr'] as $item) {
-                            if (!isset($item['id']) || !isset($item['num'])) {
-                                throw new \Exception('relaArr 中的元素缺少 id 或 num');
+                        if(floatval($data['balance_num'])!= floatval(array_sum(array_column($data['relaArr'], 'num')))){
+                            throw new \Exception('出库商品数量不正确');
+                        }else{
+                            foreach ($data['relaArr'] as $item) {
+                                if (!isset($item['id']) || !isset($item['num'])) {
+                                    throw new \Exception('relaArr 中的元素缺少 id 或 num');
+                                }
+                                $this->processSingleProduct($item, $productID, $data);
                             }
-                            $this->processSingleProduct($item, $productID, $data);
                         }
+
                     } else {
                         throw new \Exception('relaArr 为空或格式不正确');
                     }
@@ -299,10 +315,21 @@ class FinancialManager extends Base{
                $product=$this->outProduct($data);
                 $data['error_remark'] = $data['balance_num']!='0'?'出库数量不正确':'';
             }
-            $data['status']=$data['balance_num']=='0'?2:1;
+             if($data['balance_num']!=$data['total_num'] && $data['balance_num']!='0') throw new \Exception($data['error_remark']);
+             $data['status']=$data['balance_num']==$data['total_num']?1:2;
             self::commit();
         }catch (\Exception $e){
              self::rollback();
+             if(!empty($data['idArr'])) $product=array_map(function ($item) use($data){
+                 $temp=[];
+                 $temp['product_id']=$item['id'];
+                 $temp['type']=$data['type'];
+                 $temp['num']=$item['num'];
+                 $temp['apply_id'] = $data['apply_id'];
+                 $temp['apply_name'] = $data['apply_name'];
+                 $temp['status'] = 0;
+                 return $temp;
+             },$data['idArr']);
             $data['status'] =4;
             $data['error_remark'] = $e->getMessage();
         }
@@ -324,10 +351,21 @@ class FinancialManager extends Base{
                 $product=$this->outProduct($data);
                 $data['error_remark'] = $data['balance_num']!='0'?'出库数量不正确':'';
             }
-            $data['status']=$data['balance_num']=='0'?2:1;
+            if($data['balance_num']!=$data['total_num'] && $data['balance_num']!='0') throw new \Exception($data['error_remark']);
+            $data['status']=$data['balance_num']==$data['total_num']?1:2;
             self::commit();
         }catch (\Exception $e){
             self::rollback();
+            if(!empty($data['idArr'])) $product=array_map(function ($item) use($data){
+                $temp=[];
+                $temp['product_id']=$item['id'];
+                $temp['type']=$data['type'];
+                $temp['num']=$item['num'];
+                $temp['apply_id'] = $data['apply_id'];
+                $temp['apply_name'] = $data['apply_name'];
+                $temp['status'] = 0;
+                return $temp;
+            },$data['idArr']);
             $data['status'] =4;
             $data['error_remark'] = $e->getMessage();
         }

+ 1 - 0
app/cxinv/model/ManagerProduct.php

@@ -12,6 +12,7 @@ class ManagerProduct extends Base{
         'product_id'=>'int',//关联商品id
         'type'=>'int', // 类型 1 增加 2减少
         'num'=>'decimal',//关联数量
+        'status'=>'int',//状态 1 正常 0 删除
         'apply_id'=>'int',//申请id
         'apply_name'=>'string',//申请人
         'create_time'=>'datetime',//时间