liugc hace 1 año
padre
commit
0a66a6b757

+ 15 - 4
app/api/logic/PerformanceLogic.php

@@ -206,9 +206,9 @@ class PerformanceLogic extends BaseLogic
         // 前工单
         // 前工单
         $serviceWork = ServiceWork::where('id',$orderEffectiveLog->work_id)->findOrEmpty();
         $serviceWork = ServiceWork::where('id',$orderEffectiveLog->work_id)->findOrEmpty();
         if($serviceWork->master_worker_id != $work->master_worker_id){
         if($serviceWork->master_worker_id != $work->master_worker_id){
-            // 扣掉 原工单工程师的提成+质保金 + 惩罚金额 to 新工程师余额
+            // 扣掉 原工单工程师的提成+质保金 to 新工程师余额  + 惩罚金额
             $income_fee = \app\adminapi\logic\effective\OrderEffectiveLogLogic::commissionAndAssuranceDeposit($serviceWork);
             $income_fee = \app\adminapi\logic\effective\OrderEffectiveLogLogic::commissionAndAssuranceDeposit($serviceWork);
-            $new_amount = $income_fee + $orderEffectiveLog->penalty_amount;
+            $new_amount = bcadd((string)$income_fee,(string)$orderEffectiveLog->penalty_amount,2);
 
 
             $remark = '工单号:'.$work->work_sn.',扣除金额:'.$new_amount.',扣除原因:保修工单新工程师收益';
             $remark = '工单号:'.$work->work_sn.',扣除金额:'.$new_amount.',扣除原因:保修工单新工程师收益';
             RetentionMoneyLogic::refundRetention([
             RetentionMoneyLogic::refundRetention([
@@ -218,10 +218,21 @@ class PerformanceLogic extends BaseLogic
                 'amount'=>$new_amount
                 'amount'=>$new_amount
             ],false);
             ],false);
 
 
-            $remark = '保修单结算-工单号:'.$work->work_sn.',收益金额:'.$new_amount.',原因:保修工单新工程师收益';
-            WorkerAccountLogLogic::addAccountLog($work,$new_amount,WorkerAccountLogEnum::UM_INC_ADMIN,WorkerAccountLogEnum::INC,$remark);
+            // 新工程师收益: 原工单工程师的提成+质保金
+            $remark = '保修单结算-工单号:'.$work->work_sn.',收益金额:'.$income_fee.',原因:保修工单新工程师收益';
+            WorkerAccountLogLogic::addAccountLog($work,$income_fee,WorkerAccountLogEnum::UM_INC_ADMIN,WorkerAccountLogEnum::INC,$remark);
 
 
             Log::info('effectivePerformance:'.$remark);
             Log::info('effectivePerformance:'.$remark);
+        }else{
+            $new_amount = $orderEffectiveLog->penalty_amount;
+
+            $remark = '工单号:'.$work->work_sn.',扣除金额:'.$new_amount.',扣除原因:保修工单原工程师差额|罚金';
+            RetentionMoneyLogic::refundRetention([
+                'remark'=>$remark,
+                'work_id'=>$work->id,
+                'worker_id'=>$serviceWork->master_worker_id,
+                'amount'=>$new_amount
+            ],false);
         }
         }
         $orderEffectiveLog->effective_status = 3;
         $orderEffectiveLog->effective_status = 3;
         $orderEffectiveLog->save();
         $orderEffectiveLog->save();

+ 10 - 1
app/api/logic/ServiceOrderLogic.php

@@ -20,6 +20,7 @@ use app\common\model\master_commission\MasterWorkerCommissionConfig;
 use app\common\model\master_commission\MasterWorkerCommissionNotice;
 use app\common\model\master_commission\MasterWorkerCommissionNotice;
 use app\common\model\master_worker\MasterWorker;
 use app\common\model\master_worker\MasterWorker;
 use app\common\model\master_worker\MasterWorkerRule;
 use app\common\model\master_worker\MasterWorkerRule;
+use app\common\model\orders\OrderEffectiveLog;
 use app\common\model\orders\RechargeOrder;
 use app\common\model\orders\RechargeOrder;
 use app\common\model\property\PropertyActivity;
 use app\common\model\property\PropertyActivity;
 use app\common\model\recharge\OrderGoods;
 use app\common\model\recharge\OrderGoods;
@@ -541,7 +542,15 @@ class ServiceOrderLogic extends BaseLogic
                 $propertyActivity = PropertyActivity::findOrEmpty($order_info['service_work']['property_activity_id']);
                 $propertyActivity = PropertyActivity::findOrEmpty($order_info['service_work']['property_activity_id']);
                 $order_info['service_work']['url_page'] = rawurlencode($params['domain'].'/static/wxapp/H5/'.$propertyActivity['url_page'].'/index.html?property_activity_id='.$propertyActivity['id'].'&token='.$params['user_info']['token']);
                 $order_info['service_work']['url_page'] = rawurlencode($params['domain'].'/static/wxapp/H5/'.$propertyActivity['url_page'].'/index.html?property_activity_id='.$propertyActivity['id'].'&token='.$params['user_info']['token']);
             }
             }
-
+            //保修工单时的信息
+            if(!empty($order_info['service_work']['order_effective_id'])){
+                $order_effective = OrderEffectiveLog:: findOrEmpty($order_info['service_work']['order_effective_id']);
+                $serviceWork = ServiceWork::findOrEmpty($order_effective->work_id);
+                $order_info['effective_income_amount'] = 0;
+                if($serviceWork->master_worker_id != $order_info['service_work']['master_worker_id']){
+                    $order_info['effective_income_amount'] = \app\adminapi\logic\effective\OrderEffectiveLogLogic::commissionAndAssuranceDeposit($serviceWork);
+                }
+            }
             return $order_info;
             return $order_info;
         }
         }
         catch (\Exception $e) {
         catch (\Exception $e) {

+ 3 - 2
app/common/logic/RetentionMoneyLogic.php

@@ -190,8 +190,9 @@ class RetentionMoneyLogic extends BaseLogic
             $earnest_money_usable = $masterWorkerInfo->earnest_money_usable - $params['amount'];
             $earnest_money_usable = $masterWorkerInfo->earnest_money_usable - $params['amount'];
             if($earnest_money_usable < 0){
             if($earnest_money_usable < 0){
                 Log::info('RetentionMoneyLogic-refundRetention-error:退可用质保金不足:'.$earnest_money_usable.',可用质保金:'.$masterWorkerInfo->earnest_money_usable);
                 Log::info('RetentionMoneyLogic-refundRetention-error:退可用质保金不足:'.$earnest_money_usable.',可用质保金:'.$masterWorkerInfo->earnest_money_usable);
-                $earnest_money_usable = 0;
-                $params['amount'] = $masterWorkerInfo->earnest_money_usable;
+                //允许负数
+                //$earnest_money_usable = 0;
+                //$params['amount'] = $masterWorkerInfo->earnest_money_usable;
             }
             }
             $masterWorkerInfo->earnest_money_usable = $earnest_money_usable;
             $masterWorkerInfo->earnest_money_usable = $earnest_money_usable;
             // 是否要扣到 冻结 里面?
             // 是否要扣到 冻结 里面?