Cron command to send reminders

This commit is contained in:
David Callizaya 2021-10-28 17:32:37 -04:00
parent deb51733e7
commit 189dd396d6
2 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,48 @@
<?php
namespace Webkul\Core\Console\Commands;
use Illuminate\Console\Command;
use Webkul\Sales\Models\Invoice;
class InvoiceOverdueCron extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'invoice:cron';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Invoice reminders';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
// Get 'overdue' invoices
Invoice::whereOverdueReminders()
->get()
->each(function (Invoice $invoice) {
$invoice->sendInvoiceReminder();
});
}
}

View File

@ -53,4 +53,17 @@ trait InvoiceReminder
$this->reminders++;
$this->save();
}
/**
* Scope a query to include only the overdue invoices and at the limit of reminders.
*/
public function scopeOverdueReminders($query)
{
if ($this->hasOverdueRemindersLimit()) {
$limit = $this->getOverdueRemindersLimit();
return $query->where('reminders', '<', $limit);
}
return $query;
}
}