Bläddra i källkod

add - 自配件审核通过后结算

liugc 1 år sedan
förälder
incheckning
d644d7c407
2 ändrade filer med 28 tillägg och 10 borttagningar
  1. 9 9
      app/api/logic/PerformanceLogic.php
  2. 19 1
      app/common/model/works/ServiceWork.php

+ 9 - 9
app/api/logic/PerformanceLogic.php

@@ -57,15 +57,14 @@ class PerformanceLogic extends BaseLogic
                     $settlement_amount = bcmul(bcsub($work->work_total ,$work->spare_total), $rule['rate'],2);
                     $settlement_amount = bcmul(bcsub($work->work_total ,$work->spare_total), $rule['rate'],2);
                     break;
                     break;
                 case 1://按照结算金额结算
                 case 1://按照结算金额结算
-                    $worker_price = $work->work_amount;
-                    //$settlement_amount = bcmul($worker_price, $rule['rate'],2);
-                    // 运营新定 - 配件费不包进总工单金额扣除
-                    $settlement_amount = bcmul(bcsub($worker_price ,$work->spare_total) , $rule['rate'],2);
+                    $worker_price = bcsub($work->work_amount ,$work->spare_total);
+                    $settlement_amount = bcmul($worker_price, $rule['rate'],2);
                     break;
                     break;
                 case 2://按照服务总费用结算
                 case 2://按照服务总费用结算
                     //搜索所有优惠券
                     //搜索所有优惠券
                     $worker_price = $work->service_fee-$coupon_price;
                     $worker_price = $work->service_fee-$coupon_price;
-                    $settlement_amount = bcmul(bcsub($worker_price,$work->spare_total), $rule['rate'],2);
+                    $worker_price = bcsub($worker_price,$work->spare_total);
+                    $settlement_amount = bcmul($worker_price, $rule['rate'],2);
                     break;
                     break;
                 default://按照固定金额结算
                 default://按照固定金额结算
                     $worker_price = $work->service_fee-$coupon_price;
                     $worker_price = $work->service_fee-$coupon_price;
@@ -159,10 +158,10 @@ class PerformanceLogic extends BaseLogic
             $work->work_pay_status = 2;
             $work->work_pay_status = 2;
             //工程师金额结算
             //工程师金额结算
             //$coupon_price = RechargeOrder::where('work_id',$work->id)->sum('coupon_price');
             //$coupon_price = RechargeOrder::where('work_id',$work->id)->sum('coupon_price');
-            $work->worker_price = $work->work_total;
+            $work->worker_price = bcsub($work->work_amount,$work->spare_total);
             //$settlement_amount = bcmul($work->work_total, $ratio,2);
             //$settlement_amount = bcmul($work->work_total, $ratio,2);
             // 运营新定 - 配件费不包进总工单金额扣除
             // 运营新定 - 配件费不包进总工单金额扣除
-            $settlement_amount = bcmul(bcsub($work->worker_price,$work->spare_total), $ratio,2);
+            $settlement_amount = bcmul($work->worker_price, $ratio,2);
             // 缴纳质保金
             // 缴纳质保金
             $masterWorkerInfo = MasterWorker::where('id', $work->master_worker_id)->where('retention_money_status', 1)->findOrEmpty()->toArray();
             $masterWorkerInfo = MasterWorker::where('id', $work->master_worker_id)->where('retention_money_status', 1)->findOrEmpty()->toArray();
             Log::info('缴纳质保金工程师信息:'.json_encode($masterWorkerInfo));
             Log::info('缴纳质保金工程师信息:'.json_encode($masterWorkerInfo));
@@ -338,7 +337,7 @@ class PerformanceLogic extends BaseLogic
                     case 0:
                     case 0:
                     case 1://按照结算金额结算
                     case 1://按照结算金额结算
                     case 2:
                     case 2:
-                        $worker_price = $work->work_amount;
+                        $worker_price = bcsub($work->work_amount ,$work->spare_total);
                         $settlement_amount = bcmul($worker_price, $rule['rate'],2);
                         $settlement_amount = bcmul($worker_price, $rule['rate'],2);
                         break;
                         break;
                 }
                 }
@@ -401,7 +400,8 @@ class PerformanceLogic extends BaseLogic
 
 
                 //工程师可提现金额,汇总了加单金额
                 //工程师可提现金额,汇总了加单金额
                 $settlement_amount += (float)$work->add_work_amount;
                 $settlement_amount += (float)$work->add_work_amount;
-
+                //工程师可提现金额,汇总 配件总金额
+                $settlement_amount += (float)$work->spare_total;
                 Log::info('工单'.$work->id.',总服务费:'.$worker_price.'可提现金额:'.$settlement_amount.',加单金额:'.$work->add_work_amount.',缴纳质保金:'.$work->earnest_money.',系统回收金额:'.$work->system_amount.',门店总金额(包含工程师):'.$work->tenant_all_amount . ',门店实际金额:'.$work->tenant_amount);
                 Log::info('工单'.$work->id.',总服务费:'.$worker_price.'可提现金额:'.$settlement_amount.',加单金额:'.$work->add_work_amount.',缴纳质保金:'.$work->earnest_money.',系统回收金额:'.$work->system_amount.',门店总金额(包含工程师):'.$work->tenant_all_amount . ',门店实际金额:'.$work->tenant_amount);
 
 
                 WorkerAccountLogLogic::addAccountLog($work,$settlement_amount,WorkerAccountLogEnum::UM_INC_ADMIN,WorkerAccountLogEnum::INC);
                 WorkerAccountLogLogic::addAccountLog($work,$settlement_amount,WorkerAccountLogEnum::UM_INC_ADMIN,WorkerAccountLogEnum::INC);

+ 19 - 1
app/common/model/works/ServiceWork.php

@@ -54,7 +54,25 @@ class ServiceWork extends BaseModel
                 ]
                 ]
             ]);
             ]);
         }
         }
-        if($model->user_confirm_status == 5 and $model->work_status == 7 and $model->work_pay_status==1){
+
+        $is_settlement = false;
+        if($model->user_confirm_status == 5 and $model->work_status == 7 and $model->work_pay_status==1) {
+            $isOneselfSpare = ServiceWorkSpare::where("service_work_id", $model->id)->where('spare_part_id', 0)->count('id');
+            $isAudit = ServiceWorkSpareAudit::where("service_work_id", $model->id)->findOrEmpty();
+            if ($isOneselfSpare > 0 && $isAudit->isEmpty()) {
+                // 结算待审
+                ServiceWorkSpareAudit::create(['service_work_id' => $model->id]);
+                $model->work_pay_status = 3;
+                $model->save();
+            }elseif ($isOneselfSpare == 0){
+                // 直接结算
+                $is_settlement = true;
+            }else{
+                // 通过审核且未结算
+                $isAudit->status == 1 && $model->settlement_amount == 0 && $model->earnest_money == 0 && $model->system_amount == 0 && $is_settlement = true;
+            }
+        }
+        if($is_settlement){
             if($model->user_equity_id > 0){
             if($model->user_equity_id > 0){
                 // 权益卡不分成于工程师,则不进行结算
                 // 权益卡不分成于工程师,则不进行结算
                 $userEquity = UserEquity::with(['equityConfig'])->where('id',$model->user_equity_id)->findOrEmpty();
                 $userEquity = UserEquity::with(['equityConfig'])->where('id',$model->user_equity_id)->findOrEmpty();