|
|
@@ -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;
|