false]); // Get all companies $companies = Company::enabled()->withCount('invoices')->cursor(); foreach ($companies as $company) { // Has company invoices if (!$company->invoices_count) { continue; } $this->info('Sending invoice reminders for ' . $company->name . ' company.'); // Set company $company->makeCurrent(); // Don't send reminders if disabled if (!setting('schedule.send_invoice_reminder')) { $this->info('Invoice reminders disabled by ' . $company->name . '.'); continue; } $days = explode(',', setting('schedule.invoice_days')); foreach ($days as $day) { $day = (int) trim($day); $this->remind($day); } } Company::forgetCurrent(); } protected function remind($day) { // Get due date $date = Date::today()->subDays($day)->toDateString(); // Get upcoming invoices $invoices = Document::invoice()->with('contact')->accrued()->notPaid()->due($date)->cursor(); foreach ($invoices as $invoice) { try { event(new DocumentReminded($invoice, Notification::class)); } catch (\Exception | \Throwable | \Swift_RfcComplianceException | \Illuminate\Database\QueryException $e) { $this->error($e->getMessage()); logger('Invoice reminder:: ' . $e->getMessage()); } } } }