cqpCow há 1 ano atrás
pai
commit
10fe078117
2 ficheiros alterados com 33 adições e 5 exclusões
  1. 21 0
      app/Model/PurchaseOrder.php
  2. 12 5
      app/Service/PurchaseOrderService.php

+ 21 - 0
app/Model/PurchaseOrder.php

@@ -2,10 +2,12 @@
 
 namespace App\Model;
 
+use App\Scopes\DepartmentScope;
 use Illuminate\Database\Eloquent\Model;
 
 class PurchaseOrder extends Model
 {
+    protected $fillable = ['userData'];
     protected $table = "purchase_order"; //指定表
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
@@ -27,4 +29,23 @@ class PurchaseOrder extends Model
         self::Order_type_two => '代发采购',
         self::Order_type_three => '采购施工(安装费)'
     ];
+
+    public static $user = [];
+    public static $is_search = false;
+
+    public function __construct(array $attributes = [])
+    {
+        if(! empty($attributes['userData'])) {
+            self::$user = $attributes['userData'];
+            self::$is_search = true;
+        }
+        parent::__construct($attributes);
+    }
+
+    protected static function boot(){
+        parent::boot();
+        if(self::$is_search){
+            static::addGlobalScope(new DepartmentScope(self::$user));
+        }
+    }
 }

+ 12 - 5
app/Service/PurchaseOrderService.php

@@ -22,7 +22,7 @@ class PurchaseOrderService extends Service
      * @return array
      */
     public function edit($data,$user){
-        list($status,$msg) = $this->orderRule($data,false);
+        list($status,$msg) = $this->orderRule($data,$user, false);
         if(!$status) return [$status,$msg];
 
         try{
@@ -30,6 +30,7 @@ class PurchaseOrderService extends Service
             $material_model = PurchaseOrder::where('order_number',$data['order_number'])->first();
             $material_model->order_number = $data['order_number'];
             $material_model->depart_id = $data['depart_id'] ?? 0;
+            $material_model->top_depart_id = $data['top_depart_id'] ?? 0;
             $material_model->rate = $data['rate'] ?? 0;
             $material_model->total = $data['total'] ?? 0;
             $material_model->other_fee = $data['other_fee'] ?? 0;
@@ -82,13 +83,14 @@ class PurchaseOrderService extends Service
      * @return array
      */
     public function add($data,$user){
-        list($status,$msg) = $this->orderRule($data);
+        list($status,$msg) = $this->orderRule($data, $user);
         if(!$status) return [$status,$msg];
         try{
             DB::beginTransaction();
             $material_model = new PurchaseOrder();
             $material_model->order_number = $data['order_number'];
             $material_model->depart_id = $data['depart_id'] ?? 0;
+            $material_model->top_depart_id = $data['top_depart_id'] ?? 0;
             $material_model->rate = $data['rate'] ?? 0;
             $material_model->total = $data['total'] ?? 0;
             $material_model->other_fee = $data['other_fee'] ?? 0;
@@ -204,8 +206,9 @@ class PurchaseOrderService extends Service
      * @return array
      */
     public function getList($data,$user){
-        $model = PurchaseOrder::where('del_time',0)
-            ->select('order_number','id','depart_id','mark','crt_time','state','crt_id','order_type','sales_order_id','supplier','purchase_id','purchase_total','rate','discount_fee','other_fee','total')
+        $model = new PurchaseOrder(['userData' => $user]);
+        $model->where('del_time',0)
+            ->select('order_number','id','depart_id','top_depart_id','mark','crt_time','state','crt_id','order_type','sales_order_id','supplier','purchase_id','purchase_total','rate','discount_fee','other_fee','total','is_purchase_to_main')
             ->orderby('id', 'desc');
         if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
         if(! empty($data['depart_id'])) $model->where('depart_id', $data['depart_id']);
@@ -260,7 +263,7 @@ class PurchaseOrderService extends Service
      * @param $is_check
      * @return array
      */
-    public function orderRule(&$data, $is_check = true){
+    public function orderRule(&$data, $user, $is_check = true){
         if(empty($data['order_type'])) return [false,'采购订单类型不能为空'];
         if($this->isEmpty($data,'product')) return [false,'产品不能为空'];
         if(! empty($data['rate'])){
@@ -289,6 +292,10 @@ class PurchaseOrderService extends Service
             if(! $res) return [false,'请输入正确的产品数量'];
         }
 
+        //所属部门 以及 顶级部门
+        if(empty($data['depart_id'])) $data['depart_id'] = $this->getDepart($user);
+        $data['top_depart_id'] = $user['depart_map'][$data['depart_id']] ?? 0;
+
         if($is_check){
             $order_number = (new OrderNoService())->createOrderNumber(PurchaseOrder::prefix);
             if(empty($order_number)) return [false,'采购单号生成失败!'];