Fixes for sent notifications for reminders + recurring invoices

This commit is contained in:
David Bomba 2025-01-25 11:45:36 +11:00
parent 869a3df065
commit 9d52b76747
4 changed files with 23 additions and 3 deletions

View File

@ -89,6 +89,9 @@ class SendRemindersCron extends Command
if ($invoice->invitations->count() > 0) {
// event(new InvoiceWasEmailed($invoice->invitations->first(), $invoice->company, Ninja::eventVars(), $reminder_template));
event(new \App\Events\General\EntityWasEmailed($invoice->invitations->first(), $invoice->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), $reminder_template));
$invoice->entityEmailEvent($invoice->invitations->first(), $reminder_template);
}
}

View File

@ -154,6 +154,8 @@ class SendRecurring implements ShouldQueue
{
//Admin notification for recurring invoice sent.
if ($invoice->invitations->count() >= 1) {
event(new \App\Events\General\EntityWasEmailed($invoice->invitations->first(), $invoice->company, \App\Utils\Ninja::eventVars(auth()->user() ? auth()->user()->id : null), 'invoice'));
$invoice->entityEmailEvent($invoice->invitations->first(), 'invoice', 'email_template_invoice');
}

View File

@ -146,13 +146,22 @@ class ReminderJob implements ShouldQueue
$invoice->client->getSetting($enabled_reminder) &&
$invoice->client->getSetting('send_reminders') &&
(Ninja::isSelfHost() || $invoice->company->account->isPaidHostedClient())) {
$invoice->invitations->each(function ($invitation) use ($invoice, $reminder_template) {
$event_fired = false;
$invoice->invitations->each(function ($invitation) use ($invoice, $reminder_template, &$event_fired) {
if ($invitation->contact && !$invitation->contact->trashed() && $invitation->contact->email) {
EmailEntity::dispatch($invitation->withoutRelations(), $invitation->company->db, $reminder_template);
nrlog("Firing reminder email for invoice {$invoice->number} - {$reminder_template}");
$invoice->entityEmailEvent($invitation, $reminder_template);
$invoice->sendEvent(Webhook::EVENT_REMIND_INVOICE, "client");
usleep(300000);
if (!$event_fired) {
event(new \App\Events\General\EntityWasEmailed($invitation, $invoice->company, \App\Utils\Ninja::eventVars(auth()->user() ? auth()->user()->id : null), $reminder_template));
$event_fired = true;
}
usleep(200000);
}
});
}

View File

@ -140,8 +140,14 @@ class TemplateService
}));
$this->twig->addFilter($filter);
$filter = new \Twig\TwigFilter('json_decode', \Closure::fromCallable(function (?string $json_string) {
return json_decode($json_string ?? '', true, 512);
}));
$this->twig->addFilter($filter);
$allowedTags = ['if', 'for', 'set', 'filter'];
$allowedFilters = ['date_modify','trim','round','format_spellout_number','split','replace', 'escape', 'e', 'upper', 'lower', 'capitalize', 'filter', 'length', 'merge','format_currency', 'format_number','format_percent_number','map', 'join', 'first', 'date', 'sum', 'number_format','nl2br','striptags','markdown_to_html'];
$allowedFilters = ['format_date','json_decode','date_modify','trim','round','format_spellout_number','split','replace', 'escape', 'e', 'upper', 'lower', 'capitalize', 'filter', 'length', 'merge','format_currency', 'format_number','format_percent_number','map', 'join', 'first', 'date', 'sum', 'number_format','nl2br','striptags','markdown_to_html'];
$allowedFunctions = ['range', 'cycle', 'constant', 'date','img','t'];
$allowedProperties = ['type_id'];
// $allowedMethods = ['img','t'];