cqpCow 1 年間 前
コミット
2e0b470a2b

+ 7 - 0
app/Model/SalesOrderInfo.php

@@ -14,10 +14,17 @@ class SalesOrderInfo extends Model
     const type_two = 2; // 负责人
     const type_three = 3; // 协同人
     const type_four = 4; // 文件
+    const type_five = 5; // 活动包id
     public static $type = [
         self::type_one,
         self::type_two,
         self::type_three,
         self::type_four,
+        self::type_five,
+    ];
+    public static $man = [
+        self::type_one,
+        self::type_two,
+        self::type_three,
     ];
 }

+ 2 - 1
app/Service/RangeService.php

@@ -64,7 +64,8 @@ class RangeService extends Service
     public static function salesOrderRange($user){
         //单据中选择的签订负责协同人
         $sales_order_id = SalesOrderInfo::where('del_time',0)
-            ->where('employee_id',$user['id'])
+            ->whereIn('type',SalesOrderInfo::$man)
+            ->where('data_id',$user['id'])
             ->select('sales_order_id')
             ->get()->toArray();
         $sales_order_id = array_unique(array_column($sales_order_id,'sales_order_id'));

+ 69 - 20
app/Service/SalesOrderService.php

@@ -7,12 +7,12 @@ use App\Model\Construction;
 use App\Model\Customer;
 use App\Model\Depart;
 use App\Model\Employee;
-use App\Model\Product;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderInfo;
 use App\Model\SalesOrderOtherFee;
 use App\Model\SalesOrderProductInfo;
 use App\Model\SalesOrderRange;
+use App\Model\SportsBag;
 use Illuminate\Support\Facades\DB;
 
 /**
@@ -82,7 +82,7 @@ class SalesOrderService extends Service
                 foreach ($data['employee_one'] as $value){
                     $insert[] = [
                         'sales_order_id' => $model->id,
-                        'employee_id' => $value,
+                        'data_id' => $value,
                         'type' => SalesOrderInfo::type_one,
                         'crt_time' => $time,
                     ];
@@ -95,7 +95,7 @@ class SalesOrderService extends Service
                 foreach ($data['employee_two'] as $value){
                     $insert[] = [
                         'sales_order_id' => $model->id,
-                        'employee_id' => $value,
+                        'data_id' => $value,
                         'type' => SalesOrderInfo::type_two,
                         'crt_time' => $time,
                     ];
@@ -108,7 +108,7 @@ class SalesOrderService extends Service
                 foreach ($data['employee_three'] as $value){
                     $insert[] = [
                         'sales_order_id' => $model->id,
-                        'employee_id' => $value,
+                        'data_id' => $value,
                         'type' => SalesOrderInfo::type_three,
                         'crt_time' => $time,
                     ];
@@ -144,11 +144,26 @@ class SalesOrderService extends Service
                         'basic_type_id' => $value['basic_type_id'],
                         'price' => $value['price'],
                         'final_amount' => $value['final_amount'] ?? 0,
+                        'sports_bag_id' => $value['sports_bag_id'] ?? 0,
+                        'activity_price' => $value['activity_price'] ?? 0,
                     ];
                 }
                 SalesOrderProductInfo::insert($insert);
             }
 
+            if(! empty($data['activity'])){
+                $insert = [];
+                foreach ($data['activity'] as $value){
+                    $insert[] = [
+                        'sales_order_id' => $model->id,
+                        'data_id' => $value,
+                        'type' => SalesOrderInfo::type_five,
+                        'crt_time' => $time,
+                    ];
+                }
+                SalesOrderInfo::insert($insert);
+            }
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -214,7 +229,7 @@ class SalesOrderService extends Service
                 foreach ($data['employee_one'] as $value){
                     $insert[] = [
                         'sales_order_id' => $model->id,
-                        'employee_id' => $value,
+                        'data_id' => $value,
                         'type' => SalesOrderInfo::type_one,
                         'crt_time' => $time,
                     ];
@@ -227,7 +242,7 @@ class SalesOrderService extends Service
                 foreach ($data['employee_two'] as $value){
                     $insert[] = [
                         'sales_order_id' => $model->id,
-                        'employee_id' => $value,
+                        'data_id' => $value,
                         'type' => SalesOrderInfo::type_two,
                         'crt_time' => $time,
                     ];
@@ -240,7 +255,7 @@ class SalesOrderService extends Service
                 foreach ($data['employee_three'] as $value){
                     $insert[] = [
                         'sales_order_id' => $model->id,
-                        'employee_id' => $value,
+                        'data_id' => $value,
                         'type' => SalesOrderInfo::type_three,
                         'crt_time' => $time,
                     ];
@@ -276,11 +291,26 @@ class SalesOrderService extends Service
                         'basic_type_id' => $value['basic_type_id'],
                         'price' => $value['price'],
                         'final_amount' => $value['final_amount'] ?? 0,
+                        'sports_bag_id' => $value['sports_bag_id'] ?? 0,
+                        'activity_price' => $value['activity_price'] ?? 0,
                     ];
                 }
                 SalesOrderProductInfo::insert($insert);
             }
 
+            if(! empty($data['activity'])){
+                $insert = [];
+                foreach ($data['activity'] as $value){
+                    $insert[] = [
+                        'sales_order_id' => $model->id,
+                        'data_id' => $value,
+                        'type' => SalesOrderInfo::type_five,
+                        'crt_time' => $time,
+                    ];
+                }
+                SalesOrderInfo::insert($insert);
+            }
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -345,7 +375,7 @@ class SalesOrderService extends Service
         $customer = Customer::where('id',$sales['customer_id'])->value('title');
         $sales['customer_title'] = $customer;
         $sales['sales_order_type_title'] = SalesOrder::$order_type[$sales['sales_order_type']] ?? '';
-        $sales['file'] = $sales['employee_one'] = $sales['employee_two'] = $sales['employee_three'] = $sales['product'] = $sales['dispatch_depart_one'] = $sales['dispatch_employee'] = $sales['dispatch_depart_two'] = [];
+        $sales['activity'] = $sales['file'] = $sales['employee_one'] = $sales['employee_two'] = $sales['employee_three'] = $sales['product'] = $sales['dispatch_depart_one'] = $sales['dispatch_employee'] = $sales['dispatch_depart_two'] = [];
         $array = [
             $sales['order_type'],
             $sales['deal_type'],
@@ -375,25 +405,44 @@ class SalesOrderService extends Service
         $sales_info = SalesOrderInfo::where('del_time',0)
             ->where('sales_order_id',$sales['id'])
             ->get()->toArray();
-        $emp_map = Employee::whereIn('id',array_unique(array_merge_recursive([$sales['crt_id']],array_column($sales_info,'employee_id'))))
+        $emp_id = [];
+        $emp_id[] = $sales['crt_id'];
+        $sports_bag = [];
+        foreach ($sales_info as $value){
+            if(in_array($value['type'],SalesOrderInfo::$man)){
+                $emp_id[] = $value['data_id'];
+            }else{
+                if($value['type'] == SalesOrderInfo::type_five) $sports_bag[] = $value['data_id'];
+            }
+        }
+        $sports_bag = SportsBag::whereIn('id',$sports_bag)->pluck('title','id')->toArray();
+
+        $emp_map = Employee::whereIn('id',array_unique($emp_id))
             ->pluck('emp_name','id')
             ->toArray();
         foreach ($sales_info as $value){
-            $tmp = [
-                'id' => $value['employee_id'],
-                'name' => $emp_map[$value['employee_id']] ?? '',
-            ];
-            if($value['type'] == SalesOrderInfo::type_one){
-                $sales['employee_one'][] = $tmp;
-            }elseif ($value['type'] == SalesOrderInfo::type_two){
-                $sales['employee_two'][] = $tmp;
-            }elseif ($value['type'] == SalesOrderInfo::type_three){
-                $sales['employee_three'][] = $tmp;
-            }elseif ($value['type'] == SalesOrderInfo::type_four){
+            if(in_array($value['type'],SalesOrderInfo::$man)){
+                $tmp = [
+                    'id' => $value['data_id'],
+                    'name' => $emp_map[$value['data_id']] ?? '',
+                ];
+                if($value['type'] == SalesOrderInfo::type_one){
+                    $sales['employee_one'][] = $tmp;
+                }elseif ($value['type'] == SalesOrderInfo::type_two){
+                    $sales['employee_two'][] = $tmp;
+                }elseif ($value['type'] == SalesOrderInfo::type_three){
+                    $sales['employee_three'][] = $tmp;
+                }
+            } elseif ($value['type'] == SalesOrderInfo::type_four){
                 $sales['file'][] = [
                     'url' => $value['file'],
                     'name' => $value['name'],
                 ];
+            }elseif ($value['type'] == SalesOrderInfo::type_five){
+                $sales['activity'][] = [
+                    'id' => $value['data_id'],
+                    'title' => $sports_bag[$value['data_id']] ?? '',
+                ];
             }
         }
 

+ 29 - 16
app/Service/SportsBagService.php

@@ -2,18 +2,11 @@
 
 namespace App\Service;
 
-use App\Model\BasicType;
 use App\Model\Depart;
 use App\Model\Employee;
-use App\Model\ReturnExchangeOrder;
-use App\Model\ReturnExchangeOrderProductInfo;
-use App\Model\ReturnExchangeOrderRange;
-use App\Model\SalesOrder;
-use App\Model\SalesOrderProductInfo;
 use App\Model\SportsBag;
 use App\Model\SportsBagProductInfo;
 use App\Model\SportsBagRange;
-use App\Model\Storehouse;
 use Illuminate\Support\Facades\DB;
 
 class SportsBagService extends Service
@@ -30,6 +23,7 @@ class SportsBagService extends Service
             $material_model->number = $data['number'];
             $material_model->start_time = $data['start_time'] ?? 0;
             $material_model->end_time = $data['end_time'] ?? 0;
+            $material_model->total_amount = $data['total_amount'] ?? 0;
             $material_model->save();
             $time = time();
 
@@ -37,18 +31,22 @@ class SportsBagService extends Service
                 ->where('sports_bag_id',$data['id'])
                 ->update(['del_time' => $time]);
             if(!empty($data['product'])){
+                $map = (new ProductService())->getProductDetail(array_column($data['product'],'product_id'));
                 $sub = [];
                 foreach ($data['product'] as $value){
+                    $tmp = $map[$value['product_id']] ?? [];
                     $sub[] = [
                         'sports_bag_id' => $material_model->id,
                         'product_id' => $value['product_id'],
                         'number' => $value['number'],
                         'mark' => $value['mark'] ?? '',
                         'cost' => $value['cost'] ?? 0,
-                        'retail_price' => $value['retail_price'] ?? 0,
+                        'retail_price' => $tmp['retail_price'] ?? 0,
                         'crt_time' => $time,
                         'basic_type_id' => $value['basic_type_id'],
                         'price' => $value['price'],
+                        'activity_price' => $value['activity_price'],
+                        'activity_amount' => $value['activity_amount'],
                     ];
                 }
                 SportsBagProductInfo::insert($sub);
@@ -99,7 +97,7 @@ class SportsBagService extends Service
 
         try{
             DB::beginTransaction();
-            $material_model = new ReturnExchangeOrder();
+            $material_model = new SportsBag();
             $material_model->title = $data['title'];
             $material_model->mark = $data['mark'];
             $material_model->number = $data['number'];
@@ -108,22 +106,27 @@ class SportsBagService extends Service
             $material_model->crt_id = $user['id'];
             $material_model->depart_id = $data['depart_id'] ?? 0;
             $material_model->top_depart_id = $data['top_depart_id'] ?? 0;
+            $material_model->total_amount = $data['total_amount'] ?? 0;
             $material_model->save();
             $time = time();
 
             if(!empty($data['product'])){
+                $map = (new ProductService())->getProductDetail(array_column($data['product'],'product_id'));
                 $sub = [];
                 foreach ($data['product'] as $value){
+                    $tmp = $map[$value['product_id']] ?? [];
                     $sub[] = [
                         'sports_bag_id' => $material_model->id,
                         'product_id' => $value['product_id'],
                         'number' => $value['number'],
                         'mark' => $value['mark'] ?? '',
                         'cost' => $value['cost'] ?? 0,
-                        'retail_price' => $value['retail_price'] ?? 0,
+                        'retail_price' => $tmp['retail_price'] ?? 0,
                         'crt_time' => $time,
                         'basic_type_id' => $value['basic_type_id'],
                         'price' => $value['price'],
+                        'activity_price' => $value['activity_price'],
+                        'activity_amount' => $value['activity_amount'],
                     ];
                 }
                 SportsBagProductInfo::insert($sub);
@@ -224,8 +227,8 @@ class SportsBagService extends Service
 
     public function del($data,$user){
         if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
-        $order = ReturnExchangeOrder::where('del_time',0)->where('id',$data['id'])->first();
-        if(empty($order)) return [false,'活动不存在或已被删除'];
+        $order = SportsBag::where('del_time',0)->where('id',$data['id'])->first();
+        if(empty($order)) return [false,'活动不存在或已被删除'];
 
         try{
             DB::beginTransaction();
@@ -251,13 +254,20 @@ class SportsBagService extends Service
     public function getList($data,$user){
         $model = new SportsBag(['userData' => $user,'search' => $data]);
         $model = $model->where('del_time',0)
-            ->select('id','title','number','start_time','end_time','crt_time','crt_id','mark')
+            ->select('id','title','number','start_time','end_time','crt_time','crt_id','mark','total_amount')
             ->orderby('id', 'desc');
 
+        if(isset($data['valid'])) {
+            //获取有效时间内的活动包
+            $time = time();
+            $model->where('start_time','<=',$time);
+            $model->where('end_time','>=',$time);
+        }
         if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
             $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
-            $model->whereBetween('crt_time',[$return[0],$return[1]]);
+            $model->where('crt_time','>=',$return[0]);
+            $model->where('crt_time','<=',$return[1]);
         }
         if(! empty($data['sports_bag_time'][0]) && ! empty($data['sports_bag_time'][1])) {
             $return = $this->changeDateToTimeStampAboutRange($data['sports_bag_time']);
@@ -291,13 +301,16 @@ class SportsBagService extends Service
 
     public function orderRule(&$data, $user, $is_check = true){
         if(empty($data['title'])) return [false,'请填写活动名称'];
-        if($this->isEmpty($data,'sales_order_id')) return [false,'合同不能为空!'];
         if(empty($data['sports_bag_time'][0]) || empty($data['sports_bag_time'][1])) return [false,'请填写活动时间范围'];
         $data['start_time'] = $this->changeDateToDateMin($data['sports_bag_time'][0]);
         $data['end_time'] = $this->changeDateToDateMin($data['sports_bag_time'][1]);
         if(empty($data['number'])) return [false,'必选产品种数不能为空'];
         $res = $this->checkNumber($data['number']);
-        if(! $res) return [false,'请输入正确的换货产品数量'];
+        if(! $res) return [false,'请输入正确的必选产品种数'];
+
+        if(empty($data['total_amount'])) return [false,'活动包总金额不能为空'];
+        $res = $this->checkNumber($data['total_amount']);
+        if(! $res) return [false,'活动包总金额请输入不超过两位小数并且大于0的数值'];
 
         //所属部门 以及  顶级部门
         if(empty($data['depart_id'])) $data['depart_id'] = $this->getDepart($user);

+ 2 - 2
routes/api.php

@@ -184,8 +184,8 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('productInAndOutList', 'Api\ProductInventoryController@productInAndOutList');
     //库存台账
     $route->any('productInventoryStockList', 'Api\ProductInventoryController@productInventoryStockList');
-    //库存设置列表
+    //设置列表
     $route->any('productInventorySetList', 'Api\ProductInventoryController@productInventorySetList');
-    //库存设置校验开关
+    //设置开关
     $route->any('productInventorySet', 'Api\ProductInventoryController@productInventorySet');
 });