liugc hace 9 meses
padre
commit
fde4e781ec
Se han modificado 1 ficheros con 124 adiciones y 1 borrados
  1. 124 1
      app/common/model/master_worker/SalaryItemPermanently.php

+ 124 - 1
app/common/model/master_worker/SalaryItemPermanently.php

@@ -43,7 +43,7 @@ class SalaryItemPermanently extends BaseModel
     }
 
 
-    // 接单服务费
+    // 接单服务费 - 每周一次 不论等级都按 50%
     public function salary_item_1($permanently_settlement_id,$master_worker_id,$params,$extra = [])
     {
         try {
@@ -282,8 +282,130 @@ class SalaryItemPermanently extends BaseModel
             return false;
         }
     }
+    // 全职工程师的当月基础薪资
+    public function salary_item_7($permanently_settlement_id,$master_worker_id,$params,$extra = [])
+    {
+        try {
+            // 查询时间范围内所有投诉的工单
+            /*$order_count = ReturnWork::where('master_worker_id',$master_worker_id)->
+            where('finished_time','between',[$params['start_time'],$params['end_time']])->
+            where('return_work_status','=',4)->count();
+            $amount = 50.00;
+            $term_amount = -(float)bcmul($order_count, $amount,2);*/
+
+            /*$itemData = [
+                'permanently_settlement_id' => $permanently_settlement_id,
+                'master_worker_id' => $master_worker_id,
+                'term' => 6,
+                'term_amount' => $term_amount,
+                'remark' => $params['item_name'].':  扣减金额--'.$term_amount.';投诉单量:--'.$order_count,// .'xx:--'.$ranking
+                'extra' => json_encode([
+                    'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
+                    'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],
+                    'amount'=>$amount,'order_count'=>$order_count
+                ]),
+            ];*/
+            self::salaryCreateUpdate($itemData??[]);
+            return true;
+        } catch (\Exception $e) {
+            Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
+            return false;
+        }
+    }
+    // 全职工程师的当月的提成
+    public function salary_item_8($permanently_settlement_id,$master_worker_id,$params,$extra = [])
+    {
+        try {
+            // 查询时间范围内所有投诉的工单
+            /*$order_count = ReturnWork::where('master_worker_id',$master_worker_id)->
+            where('finished_time','between',[$params['start_time'],$params['end_time']])->
+            where('return_work_status','=',4)->count();
+            $amount = 50.00;
+            $term_amount = -(float)bcmul($order_count, $amount,2);*/
 
+            /*$itemData = [
+                'permanently_settlement_id' => $permanently_settlement_id,
+                'master_worker_id' => $master_worker_id,
+                'term' => 6,
+                'term_amount' => $term_amount,
+                'remark' => $params['item_name'].':  扣减金额--'.$term_amount.';投诉单量:--'.$order_count,// .'xx:--'.$ranking
+                'extra' => json_encode([
+                    'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
+                    'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],
+                    'amount'=>$amount,'order_count'=>$order_count
+                ]),
+            ];*/
+            self::salaryCreateUpdate($itemData??[]);
+            return true;
+        } catch (\Exception $e) {
+            Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
+            return false;
+        }
+    }
+    // 接单服务费 - 每月一次
+    public function salary_item_9($permanently_settlement_id,$master_worker_id,$params,$extra = [])
+    {
+        try {
+            //$params['start_time'] $params['end_time']
+            $promotion_level = MasterWorker::where('id',$master_worker_id)->value('promotion_level');
+            $ratio = 0.00;
+            switch ($promotion_level){
+                case 1:
+                    $ratio = 0.65;
+                    break;
+                case 2:
+                    $ratio = 0.63;
+                    break;
+                case 3:
+                    $ratio = 0.61;
+                    break;
+                case 4:
+                    $ratio = 0.59;
+                    break;
+                case 5:
+                    $ratio = 0.57;
+                    break;
+                case 6:
+                    $ratio = 0.55;
+                    break;
+                case 7:
+                    $ratio = 0.5;
+                    break;
+            }
+            //$ratio
+            // 查询时间范围内所有已经完单的工单
+            $order_list = ServiceWork::where('master_worker_id',$master_worker_id)->
+            where('finished_time','between',[$params['start_time'],$params['end_time']])->
+            where('service_status',3)->where('work_pay_status',2)->
+            field(['id','work_sn','work_amount','spare_total','master_worker_id','finished_time','service_status','work_pay_status'])->
+            select()->toArray();
+            $amount = 0.00;
+            $spare_total = 0.00;
+            foreach ($order_list as $item) {
+                $amount += (float)bcsub($item['work_amount'] ,$item['spare_total']);//(float)bcmul(, $ratio,2);
+                $spare_total += $item['spare_total'];
+            }
+            $term_amount = (float)bcmul($amount, $ratio,2);
 
+            $itemData = [
+                'permanently_settlement_id' => $permanently_settlement_id,
+                'master_worker_id' => $master_worker_id,
+                'term' => 1,
+                'term_amount' => $term_amount,
+                'remark' => $params['item_name'].':配件总金额--'.$spare_total.': 奖励总金额--'.$term_amount.';比例:--'.$ratio,
+                'extra' => json_encode([
+                    'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
+                    'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],'promotion_level'=>$promotion_level,'ratio'=>$ratio,
+                    'amount'=>$amount,'count_order'=>count($order_list),'order_ids'=> array_column($order_list,'id')
+                ]),
+            ];
+            self::salaryCreateUpdate($itemData);
+            return true;
+        } catch (\Exception $e) {
+            Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
+            return false;
+        }
+    }
 
 
 
@@ -294,6 +416,7 @@ class SalaryItemPermanently extends BaseModel
 
     public function salaryCreateUpdate($itemData = [])
     {
+        if(empty($itemData)) return false;
         $wh = ['permanently_settlement_id' => $itemData['permanently_settlement_id'], 'master_worker_id' => $itemData['master_worker_id'], 'term' => $itemData['term']];
         $info = self::where($wh)->findOrEmpty();
         if($info->isEmpty()){