where('is_deleted', 0) ->pluck('company_id'); Invoice::query() ->where('is_deleted', false) ->whereNull('deleted_at') ->whereNotNull('due_date') ->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL]) ->where('balance', '>', 0) ->whereIn('company_id', $company_ids) ->whereHas('client', function ($query) { $query->where('is_deleted', 0) ->where('deleted_at', null); }) ->whereHas('company', function ($query) { $query->where('is_disabled', 0); }) ->whereBetween('due_date', [now()->subDay()->startOfDay(), now()->startOfDay()->subSecond()]) ->cursor() ->each(function ($invoice) { (new WebhookHandler(Webhook::EVENT_LATE_INVOICE, $invoice, $invoice->company, 'client'))->handle(); }); } else { foreach (MultiDB::$dbs as $db) { MultiDB::setDB($db); $company_ids = Webhook::where('event_id', Webhook::EVENT_LATE_INVOICE) ->where('is_deleted', 0) ->pluck('company_id'); Invoice::query() ->where('is_deleted', false) ->whereNull('deleted_at') ->whereNotNull('due_date') ->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL]) ->where('balance', '>', 0) ->whereIn('company_id', $company_ids) ->whereHas('client', function ($query) { $query->where('is_deleted', 0) ->where('deleted_at', null); }) ->whereHas('company', function ($query) { $query->where('is_disabled', 0); }) ->whereBetween('due_date', [now()->subDay()->startOfDay(), now()->startOfDay()->subSecond()]) ->cursor() ->each(function ($invoice) { (new WebhookHandler(Webhook::EVENT_LATE_INVOICE, $invoice, $invoice->company, 'client'))->handle(); }); } } } }