Browse Source

采购单权限,节点1待入库和节点2部分入库,操作时添加限制

wufeng 2 years ago
parent
commit
5497639f4f

+ 7 - 4
app/abutment/controller/Order.php

@@ -424,15 +424,18 @@ class Order extends HomeBaseController
 
                     if($is_stock==1){
                         //库存品,推给31库管人员、41库管-张凯旋
-                        $uid = Db::name('user_role')
+                        $uids = Db::name('user_role')
                             ->where([
                                 ['is_del', '=', 0],
                                 ['roleid', 'in', [31, 41]],
                                 ['status', '=', 1]
                             ])->column('uid');
-
-                        $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0,'holder_id'=> isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0,'handle_user_list'=>implode(',', $uid)];
-                    }elseif ($is_stock==0 || $info[$vlue]['order_type']==3) $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0,'holder_id'=> isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0,'handle_user_list'=>isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0];//非库存品和采返商品,推给供应商负责人
+                        if(!in_array($uid,$uids)) throw new Exception('库存品订单只能由库管人员操作');
+                        $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0,'holder_id'=> isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0,'handle_user_list'=>implode(',', $uids)];
+                    }elseif ($is_stock==0 || $info[$vlue]['order_type']==3) {
+                        if($uid != $supplier_cgderid[$info[$vlue]['supplierNo']])throw new Exception('非库存品和采返商品只能由供应商负责人操作');
+                        $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0,'holder_id'=> isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0,'handle_user_list'=>isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0];
+                    }//非库存品和采返商品,推给供应商负责人
                 }else $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0,'holder_id'=> isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0];
                 ProcessOrder::AddProcess(['id' => $uid, 'nickname' => $uname], $process);
                 $order = ["order_code" => $vlue, "status" => '', "action_remark" => $remark, "action_type" => "status"];

+ 7 - 1
app/admin/controller/Purch.php

@@ -705,8 +705,14 @@ class Purch extends Base
                                 ['roleid', 'in', [31, 41]],
                                 ['status', '=', 1]
                             ])->column('uid');
+                        if(!in_array($this->uid,$uids)) throw new Exception('库存品订单只能由库管人员操作');
                         $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0, 'holder_id' => isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0,'handle_user_list'=>implode(',', $uids)];
-                    }elseif ($is_stock==0 || $info[$vlue]['order_type']==3)  $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0, 'holder_id' => isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0,'handle_user_list'=>isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0];//非库存品和采返商品,推给供应商负责人
+                    }elseif ($is_stock==0 || $info[$vlue]['order_type']==3)  {
+                        //非库存品和采返商品,推给供应商负责人
+                        if($this->uid != $supplier_cgderid[$info[$vlue]['supplierNo']])throw new Exception('非库存品和采返商品只能由供应商负责人操作');
+
+                        $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0, 'holder_id' => isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0,'handle_user_list'=>isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0];
+                    }
                 }else $process = ["order_code" => $vlue, "order_id" => isset($info[$vlue]['id']) ? $info[$vlue]['id'] : 0, "order_status" => $status, "order_type" => 'CGD', "before_status" => isset($info[$vlue]['status']) ? $info[$vlue]['status'] : 0, 'holder_id' => isset($supplier_cgderid[$info[$vlue]['supplierNo']]) ? $supplier_cgderid[$info[$vlue]['supplierNo']] : 0];
 
                 ProcessOrder::AddProcess(['id' => $uid, 'nickname' => $uname], $process);

+ 16 - 3
app/admin/controller/Purchin.php

@@ -5,6 +5,7 @@ use app\admin\model\ActionLog;
 use app\admin\model\GoodLog;
 use app\admin\model\GoodStockInfo;use app\admin\model\ProcessOrder;
 use app\BaseController;
+use think\Exception;
 use think\facade\Db;
 use think\App;
 
@@ -446,10 +447,13 @@ class Purchin extends Base
                                         ['roleid', 'in', [31, 41]],
                                         ['status', '=', 1]
                                     ])->column('uid');
-
+                                if(!in_array($this->uid,$uid)) throw new Exception('库存品订单只能由库管人员操作');
                                 $process = ["order_code" => $cgdNo, "order_id" => $cgdinfo['id'], "order_status" => $cgdinfo['status'], "order_type" => 'CGD', "before_status" => $order['status'], 'holder_id' => $personid,'handle_user_list'=>implode(',', $uid)];
 
-                            }elseif ($is_stock==0 || $cgdinfo['order_type']==3) $process = ["order_code" => $cgdNo, "order_id" => $cgdinfo['id'], "order_status" => $cgdinfo['status'], "order_type" => 'CGD', "before_status" => $order['status'], 'holder_id' => $personid,'handle_user_list'=>$personid];   //非库存品和采返商品,推给供应商负责人
+                            }elseif ($is_stock==0 || $cgdinfo['order_type']==3){
+                                if($this->uid != $personid)throw new Exception('非库存品和采返商品只能由供应商负责人操作');
+                                $process = ["order_code" => $cgdNo, "order_id" => $cgdinfo['id'], "order_status" => $cgdinfo['status'], "order_type" => 'CGD', "before_status" => $order['status'], 'holder_id' => $personid,'handle_user_list'=>$personid];   //非库存品和采返商品,推给供应商负责人
+                            }
                         }else $process = ["order_code" => $cgdNo, "order_id" => $cgdinfo['id'], "order_status" => $cgdinfo['status'], "order_type" => 'CGD', "before_status" => $order['status'], 'holder_id' => $personid];
                         
                         ProcessOrder::AddProcess(['id'=>$this->uid,'nickname'=>$this->uname],$process);
@@ -678,9 +682,11 @@ class Purchin extends Base
                                         ['roleid', 'in', [31, 41]],
                                         ['status', '=', 1]
                                     ])->column('uid');
+                                if(!in_array($this->uid,$uid)) throw new Exception('库存品订单只能由库管人员操作');
                                 $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0),'handle_user_list'=>implode(',', $uid)];
                             }elseif ($is_stock==0 || $cgdinfo['order_type']==3) {
                                 $holder_id = Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0);
+                                if($this->uid != $holder_id)throw new Exception('非库存品和采返商品只能由供应商负责人操作');
                                 $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>$holder_id,'handle_user_list'=>$holder_id];
                             }//非库存品和采返商品,推给供应商负责人
                         }else $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0)];
@@ -730,9 +736,11 @@ class Purchin extends Base
                                         ['roleid', 'in', [31, 41]],
                                         ['status', '=', 1]
                                     ])->column('uid');
+                                if(!in_array($this->uid,$uid)) throw new Exception('库存品订单只能由库管人员操作');
                                 $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0),'handle_user_list'=>implode(',', $uid)];
                             }elseif ($is_stock==0 || $cgdinfo['order_type']==3) {
                                 $holder_id = Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0);
+                                if($this->uid != $holder_id)throw new Exception('非库存品和采返商品只能由供应商负责人操作');
                                 $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>$holder_id,'handle_user_list'=>$holder_id];
                             }//非库存品和采返商品,推给供应商负责人
                         }else $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0)];
@@ -783,10 +791,11 @@ class Purchin extends Base
                                     ['roleid', 'in', [31, 41]],
                                     ['status', '=', 1]
                                 ])->column('uid');
-
+                            if(!in_array($this->uid,$uid)) throw new Exception('库存品订单只能由库管人员操作');
                             $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0),'handle_user_list'=>implode(',', $uid)];
                         }elseif ($is_stock==0 || $cgdinfo['order_type']==3) {
                             $holder_id = Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0);
+                            if($this->uid != $holder_id)throw new Exception('非库存品和采返商品只能由供应商负责人操作');
                             $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>$holder_id,'handle_user_list'=>$holder_id];
                         }//非库存品和采返商品,推给供应商负责人
                     }else $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0)];
@@ -940,9 +949,11 @@ class Purchin extends Base
                                 ['roleid', 'in', [31, 41]],
                                 ['status', '=', 1]
                             ])->column('uid');
+                        if(!in_array($this->uid,$uid)) throw new Exception('库存品订单只能由库管人员操作');
                         $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0),'handle_user_list'=>implode(',', $uid)];
                     }elseif ($is_stock==0 || $cgdinfo==3) {
                         $holder_id = Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0);
+                        if($this->uid != $holder_id)throw new Exception('非库存品和采返商品只能由供应商负责人操作');
                         $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>$holder_id,'handle_user_list'=>$holder_id];
                     }//非库存品和采返商品,推给供应商负责人
                 }else $process=["order_code"=>$info['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0)];
@@ -1221,10 +1232,12 @@ class Purchin extends Base
                                     ['roleid', 'in', [31, 41]],
                                     ['status', '=', 1]
                                 ])->column('uid');
+                            if(!in_array($this->uid,$uid)) throw new Exception('库存品订单只能由库管人员操作');
                             $process=["order_code"=>$cgdinfo['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0),'handle_user_list'=>implode(',', $uid)];
 
                         }elseif ($is_stock==0 || $cgdinfo['order_type']==3) {
                             $holder_id = Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0);
+                            if($this->uid != $holder_id)throw new Exception('非库存品和采返商品只能由供应商负责人操作');
                             $process=["order_code"=>$cgdinfo['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>$holder_id,'handle_user_list'=>$holder_id];//非库存品和采返商品,推给供应商负责人
                         }
                     }else $process=["order_code"=>$cgdinfo['cgdNo'],"order_id"=>$cgdinfo['id'],"order_status"=>$cgdinfo['status'],"order_type"=>'CGD',"before_status"=>$order['status'],'holder_id'=>Db::name('supplier')->where(['code' => $cgdinfo['supplierNo'], 'is_del' => 0])->value('personid', 0)];

+ 7 - 3
app/admin/controller/Reorder.php

@@ -5,6 +5,7 @@ namespace app\admin\controller;
 
 use app\admin\model\GoodLog;
 use app\admin\model\GoodStockInfo;use app\admin\model\ProcessOrder;
+use think\Exception;
 use think\facade\Db;
 use think\App;
 use app\admin\model\ActionLog;
@@ -923,6 +924,7 @@ class Reorder extends Base
                     ]);
 
                     //对应采购单也要处理
+                    $holder_id = Db::name('supplier')->where(['code' => $cgd['supplierNo'], 'is_del' => 0])->value('personid', 0);
                     if(in_array($cgd['status'],[1,2])){
                         if($orderinfo['is_stock']==1){
                             //库存品,推给31库管人员、41库管-张凯旋
@@ -932,16 +934,18 @@ class Reorder extends Base
                                     ['roleid', 'in', [31, 41]],
                                     ['status', '=', 1]
                                 ])->column('uid');
+                            if(!in_array($this->uid,$uid)) throw new Exception('库存品订单只能由库管人员操作');
                             ProcessOrder::AddProcess(['id' => $this->uid, 'nickname' => $this->uname], [
                                 "order_type" => 'CGD',
                                 "order_code" => $cgd['cgdNo'],
                                 "order_id" => $cgd["id"],
                                 "order_status" => $cgd['status'],
                                 "before_status" => $lor,
-                                'holder_id' => Db::name('supplier')->where(['code' => $cgd['supplierNo'], 'is_del' => 0])->value('personid', 0),
+                                'holder_id' => $holder_id,
                                 'handle_user_list' => implode(',', $uid),
                             ]);
                         }elseif ($orderinfo['is_stock']==0 || $orderinfo['order_type']==3){
+                            if($this->uid != $holder_id)throw new Exception('非库存品和采返商品只能由供应商负责人操作');
                             //非库存品和采返商品,推给供应商负责人
                             ProcessOrder::AddProcess(['id' => $this->uid, 'nickname' => $this->uname], [
                                 "order_type" => 'CGD',
@@ -949,7 +953,7 @@ class Reorder extends Base
                                 "order_id" => $cgd["id"],
                                 "order_status" => $cgd['status'],
                                 "before_status" => $lor,
-                                'holder_id' => Db::name('supplier')->where(['code' => $cgd['supplierNo'], 'is_del' => 0])->value('personid', 0),
+                                'holder_id' => $holder_id,
                                 'handle_user_list' => $orderinfo['cgderid'],
                             ]);
                         }
@@ -960,7 +964,7 @@ class Reorder extends Base
                             "order_id" => $cgd["id"],
                             "order_status" => $cgd['status'],
                             "before_status" => $lor,
-                            'holder_id' => Db::name('supplier')->where(['code' => $cgd['supplierNo'], 'is_del' => 0])->value('personid', 0)
+                            'holder_id' => $holder_id
                         ]);
                     }