mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Fixes for endless reminders
This commit is contained in:
parent
eb396e890b
commit
a5054f87a5
@ -89,7 +89,7 @@ class SendRemindersCron extends Command
|
||||
->cursor();
|
||||
|
||||
$invoices->each(function ($invoice) {
|
||||
WebHookHandler::dispatch(Webhook::EVENT_LATE_INVOICE, $invoice, $invoice->company);
|
||||
WebhookHandler::dispatch(Webhook::EVENT_LATE_INVOICE, $invoice, $invoice->company);
|
||||
|
||||
});
|
||||
|
||||
@ -99,7 +99,7 @@ class SendRemindersCron extends Command
|
||||
->cursor();
|
||||
|
||||
$quotes->each(function ($quote) {
|
||||
WebHookHandler::dispatch(Webhook::EVENT_EXPIRED_QUOTE, $quote, $quote->company);
|
||||
WebhookHandler::dispatch(Webhook::EVENT_EXPIRED_QUOTE, $quote, $quote->company);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -109,9 +109,8 @@ class EmailEntity implements ShouldQueue
|
||||
|
||||
App::setLocale($this->invitation->contact->preferredLocale());
|
||||
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new TemplateEmail($this->email_entity_builder,$this->invitation->contact, $this->invitation);
|
||||
$nmo->mailable = new TemplateEmail($this->email_entity_builder, $this->invitation->contact, $this->invitation);
|
||||
$nmo->company = $this->company;
|
||||
$nmo->settings = $this->settings;
|
||||
$nmo->to_user = $this->invitation->contact;
|
||||
|
@ -14,7 +14,7 @@ namespace App\Jobs\Ninja;
|
||||
use App\DataMapper\InvoiceItem;
|
||||
use App\Events\Invoice\InvoiceWasEmailed;
|
||||
use App\Jobs\Entity\EmailEntity;
|
||||
use App\Jobs\Util\WebHookHandler;
|
||||
use App\Jobs\Util\WebhookHandler;
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Account;
|
||||
use App\Models\Invoice;
|
||||
@ -84,7 +84,7 @@ class SendReminders implements ShouldQueue
|
||||
|
||||
if (in_array($reminder_template, ['reminder1', 'reminder2', 'reminder3', 'endless_reminder'])) {
|
||||
$this->sendReminder($invoice, $reminder_template);
|
||||
WebHookHandler::dispatch(Webhook::EVENT_REMIND_INVOICE, $invoice, $invoice->company);
|
||||
WebhookHandler::dispatch(Webhook::EVENT_REMIND_INVOICE, $invoice, $invoice->company);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -128,9 +128,9 @@ class SendReminders implements ShouldQueue
|
||||
$set_reminder3 = false;
|
||||
|
||||
if ((int)$settings->schedule_reminder1 > 0) {
|
||||
$next_reminder_date = $this->calculateScheduledDate($invoice, (int)$settings->schedule_reminder1, (int)$settings->num_days_reminder1);
|
||||
$next_reminder_date = $this->calculateScheduledDate($invoice, $settings->schedule_reminder1, (int)$settings->num_days_reminder1);
|
||||
|
||||
if ($next_reminder_date->gt(Carbon::parse($invoice->last_sent_date)));
|
||||
if ($next_reminder_date && $next_reminder_date->gt(Carbon::parse($invoice->last_sent_date)));
|
||||
$dates->push($next_reminder_date);
|
||||
|
||||
if (!$invoice->reminder1_sent) {
|
||||
@ -139,20 +139,20 @@ class SendReminders implements ShouldQueue
|
||||
}
|
||||
|
||||
if ((int)$settings->num_days_reminder2 > 0) {
|
||||
$next_reminder_date = $this->calculateScheduledDate($invoice, (int)$settings->schedule_reminder2, (int)$settings->num_days_reminder2);
|
||||
$next_reminder_date = $this->calculateScheduledDate($invoice, $settings->schedule_reminder2, (int)$settings->num_days_reminder2);
|
||||
|
||||
if ($next_reminder_date->gt(Carbon::parse($invoice->last_sent_date)));
|
||||
if ($next_reminder_date && $next_reminder_date->gt(Carbon::parse($invoice->last_sent_date)));
|
||||
$dates->push($next_reminder_date);
|
||||
|
||||
if (!$invoice->reminder2_sent) {
|
||||
$set_reminder3 = true;
|
||||
$set_reminder2 = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ((int)$settings->num_days_reminder3 > 0) {
|
||||
$next_reminder_date = $this->calculateScheduledDate($invoice, (int)$settings->schedule_reminder3, (int)$settings->num_days_reminder3);
|
||||
$next_reminder_date = $this->calculateScheduledDate($invoice, $settings->schedule_reminder3, (int)$settings->num_days_reminder3);
|
||||
|
||||
if ($next_reminder_date->gt(Carbon::parse($invoice->last_sent_date)));
|
||||
if ($next_reminder_date && $next_reminder_date->gt(Carbon::parse($invoice->last_sent_date)));
|
||||
$dates->push($next_reminder_date);
|
||||
|
||||
if (!$invoice->reminder3_sent) {
|
||||
@ -178,6 +178,7 @@ class SendReminders implements ShouldQueue
|
||||
*/
|
||||
private function calculateScheduledDate($invoice, $schedule_reminder, $num_days_reminder) :?Carbon
|
||||
{
|
||||
|
||||
switch ($schedule_reminder) {
|
||||
case 'after_invoice_date':
|
||||
return Carbon::parse($invoice->date)->addDays($num_days_reminder)->startOfDay();
|
||||
@ -219,15 +220,16 @@ class SendReminders implements ShouldQueue
|
||||
if ($this->checkSendSetting($invoice, $template)) {
|
||||
event(new InvoiceWasEmailed($invoice->invitations->first(), $invoice->company, Ninja::eventVars(), $template));
|
||||
}
|
||||
|
||||
|
||||
$invoice->last_sent_date = now();
|
||||
$invoice->next_send_date = $this->calculateNextSendDate($invoice);
|
||||
|
||||
if (in_array($template, ['reminder1', 'reminder2', 'reminder3'])) {
|
||||
$invoice->{$template."_sent"} = now();
|
||||
}
|
||||
$invoice->service()->touchReminder($template)->save();
|
||||
|
||||
$invoice->save();
|
||||
// $invoice->save();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -8,6 +8,7 @@
|
||||
*
|
||||
* @license https://opensource.org/licenses/AAL
|
||||
*/
|
||||
|
||||
namespace App\Jobs\Util;
|
||||
|
||||
use App\Jobs\Util\SystemLogger;
|
||||
|
@ -47,6 +47,9 @@ class CreditEmailEngine extends BaseEmailEngine
|
||||
$t = app('translator');
|
||||
$t->replace(Ninja::transformTranslations($this->client->getMergedSettings()));
|
||||
|
||||
if($this->reminder_template == 'endless_reminder')
|
||||
$this->reminder_template = 'reminder_endless';
|
||||
|
||||
if (is_array($this->template_data) && array_key_exists('body', $this->template_data) && strlen($this->template_data['body']) > 0) {
|
||||
$body_template = $this->template_data['body'];
|
||||
} else {
|
||||
|
@ -50,6 +50,9 @@ class InvoiceEmailEngine extends BaseEmailEngine
|
||||
$t = app('translator');
|
||||
$t->replace(Ninja::transformTranslations($this->client->getMergedSettings()));
|
||||
|
||||
if($this->reminder_template == 'endless_reminder')
|
||||
$this->reminder_template = 'reminder_endless';
|
||||
|
||||
if (is_array($this->template_data) && array_key_exists('body', $this->template_data) && strlen($this->template_data['body']) > 0) {
|
||||
$body_template = $this->template_data['body'];
|
||||
} elseif (strlen($this->client->getSetting('email_template_'.$this->reminder_template)) > 0) {
|
||||
|
@ -47,6 +47,9 @@ class QuoteEmailEngine extends BaseEmailEngine
|
||||
App::forgetInstance('translator');
|
||||
$t = app('translator');
|
||||
$t->replace(Ninja::transformTranslations($this->client->getMergedSettings()));
|
||||
|
||||
if($this->reminder_template == 'endless_reminder')
|
||||
$this->reminder_template = 'reminder_endless';
|
||||
|
||||
if (is_array($this->template_data) && array_key_exists('body', $this->template_data) && strlen($this->template_data['body']) > 0) {
|
||||
$body_template = $this->template_data['body'];
|
||||
|
@ -376,7 +376,9 @@ class InvoiceService
|
||||
$this->invoice->reminder3_sent = now()->format('Y-m-d');
|
||||
$this->invoice->reminder_last_sent = now()->format('Y-m-d');
|
||||
break;
|
||||
|
||||
case 'endless_reminder':
|
||||
$this->invoice->reminder_last_sent = now()->format('Y-m-d');
|
||||
break;
|
||||
default:
|
||||
// code...
|
||||
break;
|
||||
|
@ -51,20 +51,20 @@ trait MakesReminders
|
||||
if ($this->inReminderWindow(
|
||||
$client->getSetting('schedule_reminder1'),
|
||||
$client->getSetting('num_days_reminder1')
|
||||
)) {
|
||||
) && !$this->reminder1_sent) {
|
||||
return 'reminder1';
|
||||
} elseif ($this->inReminderWindow(
|
||||
$client->getSetting('schedule_reminder2'),
|
||||
$client->getSetting('num_days_reminder2')
|
||||
)) {
|
||||
) && !$this->reminder2_sent) {
|
||||
return 'reminder2';
|
||||
} elseif ($this->inReminderWindow(
|
||||
$client->getSetting('schedule_reminder3'),
|
||||
$client->getSetting('num_days_reminder3')
|
||||
)) {
|
||||
) && !$this->reminder3_sent) {
|
||||
return 'reminder3';
|
||||
} elseif ($this->checkEndlessReminder(
|
||||
$this->last_sent_date,
|
||||
$this->reminder_last_sent,
|
||||
$client->getSetting('endless_reminder_frequency_id')
|
||||
)) {
|
||||
return 'endless_reminder';
|
||||
@ -76,7 +76,11 @@ trait MakesReminders
|
||||
}
|
||||
|
||||
private function checkEndlessReminder($last_sent_date, $endless_reminder_frequency_id) :bool
|
||||
{
|
||||
{
|
||||
nlog("endless date match = ".$this->addTimeInterval($last_sent_date, $endless_reminder_frequency_id));
|
||||
nlog("Endless reminder bool = ");
|
||||
nlog(Carbon::now()->startOfDay()->eq($this->addTimeInterval($last_sent_date, $endless_reminder_frequency_id)));
|
||||
|
||||
if (Carbon::now()->startOfDay()->eq($this->addTimeInterval($last_sent_date, $endless_reminder_frequency_id))) {
|
||||
return true;
|
||||
}
|
||||
@ -85,12 +89,15 @@ trait MakesReminders
|
||||
}
|
||||
|
||||
private function addTimeInterval($date, $endless_reminder_frequency_id) :?Carbon
|
||||
{
|
||||
{
|
||||
|
||||
if (!$date)
|
||||
return null;
|
||||
|
||||
switch ($endless_reminder_frequency_id) {
|
||||
case RecurringInvoice::FREQUENCY_WEEKLY:
|
||||
case RecurringInvoice::FREQUENCY_DAILY:
|
||||
return Carbon::parse($date)->addDay()->startOfDay();
|
||||
case RecurringInvoice::FREQUENCY_WEEKLY:
|
||||
return Carbon::parse($date)->addWeek()->startOfDay();
|
||||
case RecurringInvoice::FREQUENCY_TWO_WEEKS:
|
||||
return Carbon::parse($date)->addWeeks(2)->startOfDay();
|
||||
|
Loading…
x
Reference in New Issue
Block a user