Wire up Reminder activities

This commit is contained in:
David Bomba 2023-03-17 17:23:48 +11:00
parent 58491eaf06
commit 4add5be307
2 changed files with 30 additions and 28 deletions

View File

@ -11,27 +11,33 @@
namespace App\Jobs\Util; namespace App\Jobs\Util;
use App\DataMapper\InvoiceItem;
use App\Events\Invoice\InvoiceWasEmailed;
use App\Jobs\Entity\EmailEntity;
use App\Jobs\Ninja\TransactionLog;
use App\Libraries\MultiDB;
use App\Models\Invoice;
use App\Models\TransactionEvent;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Traits\MakesDates; use App\Models\Invoice;
use App\Utils\Traits\MakesReminders; use App\Libraries\MultiDB;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Support\Carbon;
use App\DataMapper\InvoiceItem;
use App\Jobs\Entity\EmailEntity;
use App\Models\TransactionEvent;
use App\Utils\Traits\MakesDates;
use App\Jobs\Ninja\TransactionLog;
use Illuminate\Support\Facades\App;
use App\Utils\Traits\MakesReminders;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use App\Events\Invoice\InvoiceWasEmailed;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use App\Events\Invoice\InvoiceReminderWasEmailed;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\App;
class ReminderJob implements ShouldQueue class ReminderJob implements ShouldQueue
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, MakesReminders, MakesDates; use Dispatchable;
use InteractsWithQueue;
use Queueable;
use SerializesModels;
use MakesReminders;
use MakesDates;
public $tries = 1; public $tries = 1;
@ -125,22 +131,17 @@ class ReminderJob implements ShouldQueue
$enabled_reminder = 'enable_reminder_endless'; $enabled_reminder = 'enable_reminder_endless';
} }
//check if this reminder needs to be emailed
//15-01-2022 - insert addition if block if send_reminders is definitely set
if (in_array($reminder_template, ['reminder1', 'reminder2', 'reminder3', 'reminder_endless', 'endless_reminder']) && if (in_array($reminder_template, ['reminder1', 'reminder2', 'reminder3', 'reminder_endless', 'endless_reminder']) &&
$invoice->client->getSetting($enabled_reminder) && $invoice->client->getSetting($enabled_reminder) &&
$invoice->client->getSetting('send_reminders') && $invoice->client->getSetting('send_reminders') &&
(Ninja::isSelfHost() || $invoice->company->account->isPaidHostedClient())) { (Ninja::isSelfHost() || $invoice->company->account->isPaidHostedClient())) {
$invoice->invitations->each(function ($invitation) use ($invoice, $reminder_template) { $invoice->invitations->each(function ($invitation) use ($invoice, $reminder_template) {
if ($invitation->contact && !$invitation->contact->trashed() && $invitation->contact->email) { if ($invitation->contact && !$invitation->contact->trashed() && $invitation->contact->email) {
EmailEntity::dispatch($invitation, $invitation->company, $reminder_template)->delay(now()->addSeconds(3)); EmailEntity::dispatch($invitation, $invitation->company, $reminder_template);
nlog("Firing reminder email for invoice {$invoice->number} - {$reminder_template}"); nlog("Firing reminder email for invoice {$invoice->number} - {$reminder_template}");
$invoice->entityEmailEvent($invitation, $reminder_template);
} }
}); });
if ($invoice->invitations->count() > 0) {
event(new InvoiceWasEmailed($invoice->invitations->first(), $invoice->company, Ninja::eventVars(), $reminder_template));
}
} }
$invoice->service()->setReminder()->save(); $invoice->service()->setReminder()->save();
} else { } else {
@ -217,7 +218,7 @@ class ReminderJob implements ShouldQueue
$fee += round($invoice->balance * $percent / 100, 2); $fee += round($invoice->balance * $percent / 100, 2);
} }
$invoice_item = new InvoiceItem; $invoice_item = new InvoiceItem();
$invoice_item->type_id = '5'; $invoice_item->type_id = '5';
$invoice_item->product_key = trans('texts.fee'); $invoice_item->product_key = trans('texts.fee');
$invoice_item->notes = ctrans('texts.late_fee_added', ['date' => $this->translateDate(now()->startOfDay(), $invoice->client->date_format(), $invoice->client->locale())]); $invoice_item->notes = ctrans('texts.late_fee_added', ['date' => $this->translateDate(now()->startOfDay(), $invoice->client->date_format(), $invoice->client->locale())]);

View File

@ -721,7 +721,7 @@ class Invoice extends BaseModel
return 0; return 0;
} }
public function entityEmailEvent($invitation, $reminder_template, $template) public function entityEmailEvent($invitation, $reminder_template, $template = '')
{ {
switch ($reminder_template) { switch ($reminder_template) {
case 'invoice': case 'invoice':
@ -737,6 +737,7 @@ class Invoice extends BaseModel
event(new InvoiceReminderWasEmailed($invitation, $invitation->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), Activity::INVOICE_REMINDER3_SENT)); event(new InvoiceReminderWasEmailed($invitation, $invitation->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), Activity::INVOICE_REMINDER3_SENT));
break; break;
case 'reminder_endless': case 'reminder_endless':
case 'endless_reminder':
event(new InvoiceReminderWasEmailed($invitation, $invitation->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), Activity::INVOICE_REMINDER_ENDLESS_SENT)); event(new InvoiceReminderWasEmailed($invitation, $invitation->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), Activity::INVOICE_REMINDER_ENDLESS_SENT));
break; break;
default: default: