Răsfoiți Sursa

add - 长期工程师结算定时

liugc 1 an în urmă
părinte
comite
c8d9165959

+ 15 - 8
app/adminapi/logic/master_worker/EngineerSettlementPermanentlyLogic.php

@@ -74,9 +74,9 @@ class EngineerSettlementPermanentlyLogic extends BaseLogic
      */
     public static function edit(array $params): bool
     {
-        Db::startTrans();
+        //Db::startTrans();
         try {
-            EngineerSettlementPermanently::where('id', $params['id'])->update([
+            /*EngineerSettlementPermanently::where('id', $params['id'])->update([
                 'amount' => $params['amount']??0,
                 'payment_time' => $params['payment_time']??'',
                 'deduction_amount' => $params['deduction_amount']??0,
@@ -84,12 +84,15 @@ class EngineerSettlementPermanentlyLogic extends BaseLogic
                 'status' => 1,
                 'admin_id' => $params['admin_id']??0,
                 'remark' => $params['remark']??''
-            ]);
+            ]);*/
+            if(self::settlement($params)){
+                throw new \Exception(self::getError());
+            }
 
-            Db::commit();
+            //Db::commit();
             return true;
         } catch (\Exception $e) {
-            Db::rollback();
+            //Db::rollback();
             self::setError($e->getMessage());
             return false;
         }
@@ -145,10 +148,14 @@ class EngineerSettlementPermanentlyLogic extends BaseLogic
             if($settlementPermanently->isEmpty()){
                 throw new \Exception('结算记录不存在');
             }
-            $amount = SalaryItemPermanently::where('permanently_settlement_id', $params['id'])->sum('term_amount');
-            $settlementPermanently->status = $params['status']??0;
+            //$amount = SalaryItemPermanently::where('permanently_settlement_id', $params['id'])->sum('term_amount');
+            $settlementPermanently->payment_time = $params['payment_time']??'';
+            $settlementPermanently->deduction_amount = $params['deduction_amount']??0;
+            $settlementPermanently->deduction_describe = $params['deduction_describe']??'';
+            $settlementPermanently->remark = $params['remark']??'';
+            $settlementPermanently->status = 1;
             $settlementPermanently->admin_id = $params['admin_id']??0;
-            $settlementPermanently->amount = $amount;
+            $settlementPermanently->amount = $params['amount']??0;
             $settlementPermanently->save();
 
             Db::commit();

+ 32 - 0
app/common/command/SalaryItemPermanently.php

@@ -0,0 +1,32 @@
+<?php
+namespace app\common\command;
+
+use app\adminapi\logic\master_worker\EngineerSettlementPermanentlyLogic;
+use think\console\Command;
+use think\console\Input;
+use think\console\Output;
+use think\facade\Log;
+
+/**
+ *  长期工程师结算
+ * Class SalaryItemPermanently
+ * @package app\command
+ */
+class SalaryItemPermanently extends Command
+{
+    protected function configure()
+    {
+        $this->setName('salary_item_permanently')->setDescription('长期工程师结算');
+    }
+
+    protected function execute(Input $input, Output $output)
+    {
+        try {
+            EngineerSettlementPermanentlyLogic::settlementRegular();
+            return true;
+        } catch (\Exception $e) {
+            Log::write('EngineerSettlementPermanentlyLogic:'.$e->getMessage());
+            return $e->getMessage();
+        }
+    }
+}

+ 4 - 0
app/common/model/works/ServiceWork.php

@@ -75,6 +75,10 @@ class ServiceWork extends BaseModel
                 $is_settlement = true;
             }
         }
+
+        // 长期工程师不结算
+        if((int)MasterWorker::where('master_worker_id',$model->master_worker_id)->value('type') === 2) $is_settlement = false;
+
         if($is_settlement){
             if($model->user_equity_id > 0){
                 // 权益卡不分成于工程师,则不进行结算