cqpCow 1 tahun lalu
induk
melakukan
cf0492c9cd

+ 1 - 1
app/Model/UseScopeBaseModel.php

@@ -102,7 +102,7 @@ class UseScopeBaseModel extends Model
                 }
             }
         }else{
-            //分社
+            //某个分社
             if(! $is_see){
                 //某个分社全部
                 $query->where('top_depart_id', $top_depart_id)

+ 51 - 15
app/Service/RangeService.php

@@ -6,6 +6,7 @@ use App\Model\ConstructionInfo;
 use App\Model\CustomerInfo;
 use App\Model\Depart;
 use App\Model\Employee;
+use App\Model\Product;
 use App\Model\SalesOrderInfo;
 use App\Model\SeeRange;
 use Illuminate\Support\Facades\DB;
@@ -79,23 +80,32 @@ class RangeService extends Service
         $depart = $employee = $depart2 = [];
         foreach ($see as $value){
             if ($value['type'] == SeeRange::data_one){
-                $tmp = [
-                    'id' => $value['param_id'],
-                    'name' => $depart_map[$value['param_id']] ?? "",
-                ];
-                $depart[] = $tmp;
+                $name = $depart_map[$value['param_id']] ?? "";
+                if(! empty($name)){
+                    $tmp = [
+                        'id' => $value['param_id'],
+                        'name' => $depart_map[$value['param_id']] ?? "",
+                    ];
+                    $depart[] = $tmp;
+                }
             }elseif ($value['type'] == SeeRange::data_two){
-                $tmp = [
-                    'id' => $value['param_id'],
-                    'name' => $emp_map[$value['param_id']] ?? '',
-                ];
-                $employee[] = $tmp;
+                $name = $emp_map[$value['param_id']] ?? '';
+                if(! empty($name)){
+                    $tmp = [
+                        'id' => $value['param_id'],
+                        'name' => $emp_map[$value['param_id']] ?? '',
+                    ];
+                    $employee[] = $tmp;
+                }
             }elseif ($value['type'] == SeeRange::data_three){
-                $tmp = [
-                    'id' => $value['param_id'],
-                    'name' => $depart_map[$value['param_id']] ?? '',
-                ];
-                $depart2[] = $tmp;
+                $name = $depart_map[$value['param_id']] ?? '';
+                if(! empty($name)) {
+                    $tmp = [
+                        'id' => $value['param_id'],
+                        'name' => $depart_map[$value['param_id']] ?? '',
+                    ];
+                    $depart2[] = $tmp;
+                }
             }
         }
 
@@ -315,4 +325,30 @@ class RangeService extends Service
 
         return $return_id;
     }
+
+    //产品可见部门
+    public static function productSeeRange($product_id){
+        $return = [];
+        $product = Product::whereIn('id',$product_id)
+            ->select('id','top_depart_id','depart_id')
+            ->get()->toArray();
+        foreach ($product as $value){
+            $return[$value['id']][] = $value['depart_id'];
+            $return[$value['id']][] = $value['top_depart_id'];
+            $return[$value['id']] = array_unique($return[$value['id']]);
+        }
+
+        $result = SeeRange::where('del_time',0)
+            ->where('data_type', SeeRange::type_four)
+            ->whereIn('data_id',$product_id)
+            ->where('type',SeeRange::data_one)
+            ->select('param_id as depart_id','data_id as product_id')
+            ->get()->toArray();
+        foreach ($result as $value){
+            $return[$value['product_id']][] = $value['depart_id'];
+            $return[$value['product_id']] = array_unique($return[$value['product_id']]);
+        }
+
+        return $return;
+    }
 }

+ 13 - 4
app/Service/SalesOrderService.php

@@ -667,7 +667,7 @@ class SalesOrderService extends Service
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $data['data'][$key]['product'] = $product[$value['id']] ?? [];
-            $data['data'][$key]['fee'] = $fee[$value['id']] ?? [];
+            $data['data'][$key]['fee'] = $fee[$value['id']] ?? "";
             if($value['sales_order_type'] == SalesOrder::Order_type_one){
                 $data['data'][$key]['state_name'] = SalesOrder::$state[$value['state']] ?? '';
             }else{
@@ -854,10 +854,11 @@ class SalesOrderService extends Service
         $sale = $sale->toArray();
         if($sale['sales_order_type'] != SalesOrder::Order_type_one) return [false,'非安装件合同,操作失败'];
         if($sale['state'] > SalesOrder::State_two) return [false,'请确认合同状态,操作失败'];
-        $bool = SalesOrderProductInfo::where('del_time',0)
+        $product = SalesOrderProductInfo::where('del_time',0)
             ->where('sales_order_id',$data['id'])
-            ->exists();
-        if(! $bool) return [false,'合同产品不能为空'];
+            ->select('product_id')
+            ->get()->toArray();
+        if(empty($product)) return [false,'合同产品不能为空'];
 
         $bool = Construction::where('del_time',0)
             ->where('sales_order_id',$data['id'])
@@ -865,6 +866,14 @@ class SalesOrderService extends Service
         if($bool) return [false,'合同已下施工,操作失败'];
 
         if(empty($data['dispatch_depart_two'])) return [false, '请指派总社或分社'];
+        $return = RangeService::productSeeRange(array_column($product,'product_id'));
+        if(empty($return)) return [false,'产品对于该总社或分社可见范围不能为空'];
+        foreach ($data['dispatch_depart_two'] as $value){
+            foreach ($return as $values){
+                if(! in_array($value, $values)) return [false,'产品对于该总社或分社可见范围不能为空'];
+            }
+        }
+
         if(empty($data['other_fee_1'])) return [false,'价格不能为空'];
         $res = $this->checkNumber($data['other_fee_1']);
         if(! $res) return [false,'价格请输入不超过两位小数并且大于0的数值'];