liugc 1 год назад
Родитель
Сommit
1bdafc3966

+ 63 - 5
app/adminapi/logic/master_worker/EngineerSettlementLogic.php

@@ -16,6 +16,7 @@ namespace app\adminapi\logic\master_worker;
 
 
 use app\common\model\finance\MasterWorkerCaseOutLog;
+use app\common\model\financial\MasterSettlementDetails;
 use app\common\model\master_worker\EngineerSettlement;
 use app\common\logic\BaseLogic;
 use app\common\model\master_worker\MasterWorker;
@@ -40,10 +41,62 @@ class EngineerSettlementLogic extends BaseLogic
      */
     public static function add(array $params, $adminId): bool
     {
+
+        /*判断表格中打款状态是否已打款:
+            已打款 - 再判断数据表la_engineer_settlement中状态是否真已打 - la_master_settlement_details 更新为 已结算及不参与下批次计算
+                                                                                对已结算的:添加实发扣款记录
+                                                                                            添加直接扣款记录
+        更新|添加xls到详细记录数据表:包括打款状态
+        检查 la_master_settlement_details 中该批号的所有记录,判断打款状态, 更新表格记录 : 已上传、全部已打款*/
+
+
+
         Db::startTrans();
         try {
             foreach ($params as $param) {
-                EngineerSettlement::create([
+                //$param['payment_status'] == 1
+                $engineerSettlement = EngineerSettlement::where('master_worker_id', $param['master_worker_id'])
+                    ->where('batch_number', $param['batch_number'])
+                    ->where('is_export', 1)
+                    ->where('is_deduction', 0)
+                    ->where('payment_status', 0)
+                    ->findOrEmpty();
+                if(!$engineerSettlement->isEmpty()){
+                    MasterSettlementDetails::where('master_worker_id', $param['master_worker_id'])
+                        ->where('batch_number', $param['batch_number'])
+                        ->where('status', 2)
+                        ->update([
+                            'payment_status' => 1,
+                            'payment_time' => $param['settlement_time']??date('Y-m-d H:i:s'),
+                            'status'=>3, 'remark'=>''
+                        ]);
+
+                    // 添加实发扣款记录
+                $masterWorker = MasterWorker::where('id', $param['master_worker_id'])->where('worker_number', $param['worker_number'])->find();
+                if($masterWorker && $masterWorker->user_money >= $param['total_settlement_amount']){
+                    $masterWorker->user_money = $masterWorker->user_money - $param['total_settlement_amount'];
+                    $masterWorker->save();
+                    MasterWorkerCaseOutLog::create([
+                        'sn' => generate_sn(MasterWorkerCaseOutLog::class,'sn'),
+                        'worker_id' => $masterWorker->id,
+                        'title' => '财务打款',
+                        'change_amount' => $param['total_settlement_amount'],
+                        'review_status' => 3,
+                        'admin_id' => $adminId,
+                        'remark' => '财务打款',
+                        'create_time' => time(),
+                        'update_time' => time(),
+                    ]);
+                }else{
+                    throw new \Exception('工程师不存在、余额不足');
+                }
+添加直接扣款记录
+
+
+                }
+
+
+                /*EngineerSettlement::create([
                     'master_worker_id' => $param['master_worker_id'],
                     'worker_number' => $param['worker_number'],
                     'engineer_name' => $param['engineer_name'],
@@ -53,12 +106,13 @@ class EngineerSettlementLogic extends BaseLogic
                     'final_settlement_amount' => $param['final_settlement_amount'],
                     'settlement_time' => $param['settlement_time'],
                     'settlement_details_remarks' => $param['settlement_details_remarks'],
-                ]);
+                ]);*/
 
                 $masterWorker = MasterWorker::where('id', $param['master_worker_id'])->where('worker_number', $param['worker_number'])->find();
-                if($masterWorker && $masterWorker->user_money >= $param['total_settlement_amount']){
-                    $masterWorker->user_money = $masterWorker->user_money - $param['total_settlement_amount'];
-                    $masterWorker->save();
+                $user_money = $masterWorker->user_money;
+                if($masterWorker && $user_money >= $param['total_settlement_amount']){
+                    $user_money = $user_money - $param['total_settlement_amount'];
+                    $masterWorker->user_money = $user_money;
                     MasterWorkerCaseOutLog::create([
                         'sn' => generate_sn(MasterWorkerCaseOutLog::class,'sn'),
                         'worker_id' => $masterWorker->id,
@@ -73,6 +127,10 @@ class EngineerSettlementLogic extends BaseLogic
                 }else{
                     throw new \Exception('工程师不存在、余额不足');
                 }
+
+                $masterWorker->save();
+
+
             }
             Db::commit();
             return true;

+ 1 - 1
app/common/service/ExcelExportService.php

@@ -111,7 +111,7 @@ class ExcelExportService
             更新表 la_master_settlement_details 批次编号、状态-待算
             */
 
-            $batch_number = 'bn' . date('YmdHis') . rand(0, 9);
+            $batch_number = 'bn' . date('YmdHis') . rand(1000, 9999);
 
             // 添加财务打款记录表 -- 批次编号、状态待上传
             $params['infoExport_id'] = $infoExport->id;