|
|
@@ -4,6 +4,7 @@ namespace App\Jobs;
|
|
|
|
|
|
use App\Models\Address;
|
|
|
use App\Models\Client;
|
|
|
+use App\Models\Payment;
|
|
|
use App\Models\Provider;
|
|
|
use App\Models\Schedule;
|
|
|
use App\Models\User;
|
|
|
@@ -36,6 +37,7 @@ class FinishScheduleJob implements ShouldQueue
|
|
|
}
|
|
|
|
|
|
Log::channel('schedule_end_jobs')->info('Verificando status do agendamento id: '.$schedule->id);
|
|
|
+
|
|
|
Log::channel('schedule_end_jobs')->info('Status do agendamento: '.$schedule->status);
|
|
|
|
|
|
if ($schedule->status !== 'started') {
|
|
|
@@ -43,7 +45,9 @@ class FinishScheduleJob implements ShouldQueue
|
|
|
}
|
|
|
|
|
|
Log::channel('schedule_end_jobs')->info('Verificando data');
|
|
|
+
|
|
|
Log::channel('schedule_end_jobs')->info('Data do agendamento: '.$date_cleaned);
|
|
|
+
|
|
|
Log::channel('schedule_end_jobs')->info('Data atual: '.now()->toDateString());
|
|
|
|
|
|
if ($date_cleaned > now()->toDateString()) {
|
|
|
@@ -51,7 +55,9 @@ class FinishScheduleJob implements ShouldQueue
|
|
|
}
|
|
|
|
|
|
Log::channel('schedule_end_jobs')->info('Verificando horário');
|
|
|
+
|
|
|
Log::channel('schedule_end_jobs')->info('Horário do agendamento: '.$schedule->end_time);
|
|
|
+
|
|
|
Log::channel('schedule_end_jobs')->info('Horário atual: '.now()->toTimeString());
|
|
|
|
|
|
$end_date_time = Carbon::parse($date_cleaned.' '.$schedule->end_time);
|
|
|
@@ -82,7 +88,19 @@ class FinishScheduleJob implements ShouldQueue
|
|
|
|
|
|
$serviceAmount = (float) $schedule->total_amount;
|
|
|
|
|
|
- $serviceFee = round($serviceAmount * (float) config('services.pagarme.platform_fee_rate'), 2);
|
|
|
+ $payment = Payment::query()
|
|
|
+ ->where('schedule_id', $schedule->id)
|
|
|
+ ->whereIn('status', ['paid', 'authorized'])
|
|
|
+ ->latest('id')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ $paymentMethod = $payment?->payment_method ?? 'pix';
|
|
|
+
|
|
|
+ $platformFeeRate = $paymentMethod === 'credit_card'
|
|
|
+ ? (float) config('services.pagarme.platform_credit_card_fee_rate')
|
|
|
+ : (float) config('services.pagarme.platform_pix_fee_rate');
|
|
|
+
|
|
|
+ $serviceFee = round($serviceAmount * $platformFeeRate, 2);
|
|
|
|
|
|
$finalAmount = $serviceAmount + $serviceFee;
|
|
|
|
|
|
@@ -91,17 +109,17 @@ class FinishScheduleJob implements ShouldQueue
|
|
|
$address = Address::find($schedule->address_id);
|
|
|
|
|
|
$emailService->sendEmailReceipt(
|
|
|
- email: $email_cliente,
|
|
|
- schedule: $schedule,
|
|
|
- client_name: $schedule->client->user->name,
|
|
|
- service_date: $schedule->date,
|
|
|
- start_time: $schedule->start_time,
|
|
|
- end_time: $schedule->end_time,
|
|
|
- address: $address->address.', '.$address->number.($address->has_complement ? ', '.$address->complement : '').' - '.$address->district.', '.$address->city->name.'/'.$address->state->code,
|
|
|
- total_amount: $serviceAmount,
|
|
|
- service_fee: $serviceFee,
|
|
|
- final_amount: $finalAmount,
|
|
|
- payment_method: 'PIX'
|
|
|
+ email: $email_cliente,
|
|
|
+ schedule: $schedule,
|
|
|
+ client_name: $schedule->client->user->name,
|
|
|
+ service_date: $schedule->date,
|
|
|
+ start_time: $schedule->start_time,
|
|
|
+ end_time: $schedule->end_time,
|
|
|
+ address: $address->address.', '.$address->number.($address->has_complement ? ', '.$address->complement : '').' - '.$address->district.', '.$address->city->name.'/'.$address->state->code,
|
|
|
+ total_amount: $serviceAmount,
|
|
|
+ service_fee: $serviceFee,
|
|
|
+ final_amount: $finalAmount,
|
|
|
+ payment_method: $paymentMethod === 'credit_card' ? 'Cartão de crédito' : 'PIX'
|
|
|
);
|
|
|
} catch (\Exception $e) {
|
|
|
Log::channel('schedule_end_jobs')->error('Erro ao finalizar agendamento id: '.$this->scheduleId.'. Erro: '.$e->getMessage());
|