Browse Source

修改物业分成/质保金缴纳

liugc 1 year ago
parent
commit
2b4f21f610

+ 3 - 1
app/api/logic/PerformanceLogic.php

@@ -26,6 +26,7 @@ class PerformanceLogic extends BaseLogic
      */
      */
     public static function calculatePerformance($work)
     public static function calculatePerformance($work)
     {
     {
+        Log::info('calculatePerformance:'.json_encode($work->toArray()));
         //工单已完结,进行结算,结算完成后设置work_pay_status为2,已结算
         //工单已完结,进行结算,结算完成后设置work_pay_status为2,已结算
         $rule = PerformanceRules::whereFindInSet('goods_category_ids',$work->goods_category_id)->findOrEmpty();
         $rule = PerformanceRules::whereFindInSet('goods_category_ids',$work->goods_category_id)->findOrEmpty();
         if($rule->isEmpty()){
         if($rule->isEmpty()){
@@ -33,6 +34,7 @@ class PerformanceLogic extends BaseLogic
         }else{
         }else{
             $work->work_pay_status = 2;
             $work->work_pay_status = 2;
         }
         }
+        Log::info('calculatePerformance:'.json_encode($rule->toArray()));
         //师傅金额结算
         //师傅金额结算
         if(!$rule->isEmpty()){
         if(!$rule->isEmpty()){
             switch ($rule['type']){
             switch ($rule['type']){
@@ -54,7 +56,7 @@ class PerformanceLogic extends BaseLogic
 
 
             // 缴纳质保金
             // 缴纳质保金
             $masterWorkerInfo = MasterWorker::where('id', $work->master_worker_id)->findOrEmpty()->toArray();
             $masterWorkerInfo = MasterWorker::where('id', $work->master_worker_id)->findOrEmpty()->toArray();
-            if( $masterWorkerInfo['retention_pay_status'] == 2 && ($masterWorkerInfo['earnest_money'] > $masterWorkerInfo['earnest_money_usable'])){
+            if(!empty($masterWorkerInfo) && $masterWorkerInfo['retention_pay_status'] == 2 && ($masterWorkerInfo['earnest_money'] > $masterWorkerInfo['earnest_money_usable'])){
                 $retentionData['action'] = WorkerAccountLogEnum::INC;
                 $retentionData['action'] = WorkerAccountLogEnum::INC;
                 $retentionData['worker_id'] = $work->master_worker_id;
                 $retentionData['worker_id'] = $work->master_worker_id;
                 $retentionData['work_id'] = $work->id;
                 $retentionData['work_id'] = $work->id;

+ 5 - 2
app/api/logic/PropertyCommissionLogic.php

@@ -46,11 +46,14 @@ class PropertyCommissionLogic extends BaseLogic
             if($service_work->user_confirm_status!=5){
             if($service_work->user_confirm_status!=5){
                 throw new Exception('未完结订单,无法完成分成');
                 throw new Exception('未完结订单,无法完成分成');
             }
             }
-            $user_id = $service_work->user_id;
+            $propertyUserId = PropertyUser::where('user_id',$service_work->user_id)->value('id');
+            // 非物业负责人-无需分成
+            if(empty($propertyUserId)){
+                throw new Exception("非物业负责人,该工单无需物业分成:".json_encode($service_work->toArray()));
+            }
             // 以工单服务费-优惠费 为基准,计算物业分成金额
             // 以工单服务费-优惠费 为基准,计算物业分成金额
             $coupon_price = RechargeOrder::where('work_id',$work_id)->sum('coupon_price');
             $coupon_price = RechargeOrder::where('work_id',$work_id)->sum('coupon_price');
             $work_amount = $service_work->service_fee - $coupon_price;
             $work_amount = $service_work->service_fee - $coupon_price;
-            $propertyUserId = PropertyUser::where('user_id',$user_id)->value('id');
             $propertyOrderInfo = PropertyOrder::where(['property_user_id' => $propertyUserId,'order_status' => 1,'work_id'=>$work_id])->findOrEmpty()->toArray();
             $propertyOrderInfo = PropertyOrder::where(['property_user_id' => $propertyUserId,'order_status' => 1,'work_id'=>$work_id])->findOrEmpty()->toArray();
             //计算分成金额
             //计算分成金额
             $ratio = PropertyHead::where('id',$propertyOrderInfo['property_head_id'])->value('ratio');
             $ratio = PropertyHead::where('id',$propertyOrderInfo['property_head_id'])->value('ratio');

+ 13 - 10
app/api/logic/RetentionMoneyLogic.php

@@ -7,6 +7,7 @@ use app\common\model\master_worker\MasterWorker;
 use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
 use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
 use app\common\model\works\ServiceWork;
 use app\common\model\works\ServiceWork;
 use think\facade\Db;
 use think\facade\Db;
+use think\facade\Log;
 
 
 class RetentionMoneyLogic extends BaseLogic
 class RetentionMoneyLogic extends BaseLogic
 {
 {
@@ -22,24 +23,26 @@ class RetentionMoneyLogic extends BaseLogic
                     throw new \Exception('工单不存在');
                     throw new \Exception('工单不存在');
                 }
                 }
             }
             }
+            Log::info('RetentionMoneyLogic-params:'.json_encode($params));
+            // $params['worker_id']
+            $masterWorkerInfo = MasterWorker::where('id', $params['worker_id'])->findOrEmpty();
+            $earnest_money_usable = (float)$masterWorkerInfo->earnest_money_usable + (float)$params['amount'];
+            if($earnest_money_usable > (float)$masterWorkerInfo->earnest_money){
+                $surplus_money = $earnest_money_usable - (float)$masterWorkerInfo->earnest_money;
+                $params['remark'] .= "\n原质保金:{$masterWorkerInfo->earnest_money},原可用质保金:{$masterWorkerInfo->earnest_money_usable},缴纳多余:{$surplus_money},实际缴纳:".((float)$params['amount']-$surplus_money);
+                $masterWorkerInfo->earnest_money_usable += ((float)$params['amount']-$surplus_money);
+            }
+            $masterWorkerInfo->save();
+
             MasterWorkerRetentionMoneyLog::create([
             MasterWorkerRetentionMoneyLog::create([
                 'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
                 'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
                 'worker_id' => $params['worker_id'],
                 'worker_id' => $params['worker_id'],
                 'action' => $params['action'],
                 'action' => $params['action'],
-                'amount' => $params['amount'],
+                'amount' => ((float)$params['amount']-$surplus_money),
                 'work_id' => $params['work_id'],
                 'work_id' => $params['work_id'],
                 'remark' => $params['remark'],
                 'remark' => $params['remark'],
             ]);
             ]);
 
 
-            // $params['worker_id']
-            $masterWorkerInfo = MasterWorker::where('id', $params['worker_id'])->findOrEmpty();
-            $masterWorkerInfo->earnest_money_usable += $params['earnest_money_usable'];
-            if($masterWorkerInfo->earnest_money_usable > $masterWorkerInfo->earnest_money){
-                $surplus_money = $masterWorkerInfo->earnest_money_usable - $masterWorkerInfo->earnest_money;
-                $masterWorkerInfo->earnest_money_usable += ($params['earnest_money_usable']-$surplus_money);
-            }
-            $masterWorkerInfo->save();
-
             Db::commit();
             Db::commit();
             return $surplus_money;
             return $surplus_money;
         } catch (\Exception $e) {
         } catch (\Exception $e) {