format('Y-m-d h:i:s')); Auth::logout(); if (! config('ninja.db.multi_db_enabled')) { $recurring_expenses = RecurringExpense::query()->where('next_send_date', '<=', now()->toDateTimeString()) ->whereNotNull('next_send_date') ->whereNull('deleted_at') ->where('status_id', RecurringInvoice::STATUS_ACTIVE) ->where('remaining_cycles', '!=', '0') ->whereHas('company', function ($query) { $query->where('is_disabled', 0); }) ->with('company') ->cursor(); nlog(now()->format('Y-m-d').' Generating Recurring Expenses. Count = '.$recurring_expenses->count()); $recurring_expenses->each(function ($recurring_expense, $key) { nlog('Current date = '.now()->format('Y-m-d').' Recurring date = '.$recurring_expense->next_send_date); if (! $recurring_expense->company->is_disabled) { $this->generateExpense($recurring_expense); } }); } else { //multiDB environment, need to foreach (MultiDB::$dbs as $db) { MultiDB::setDB($db); $recurring_expenses = RecurringExpense::query()->where('next_send_date', '<=', now()->toDateTimeString()) ->whereNotNull('next_send_date') ->whereNull('deleted_at') ->where('status_id', RecurringInvoice::STATUS_ACTIVE) ->where('remaining_cycles', '!=', '0') ->whereHas('company', function ($query) { $query->where('is_disabled', 0); }) ->with('company') ->cursor(); nlog(now()->format('Y-m-d').' Generating Recurring Expenses. Count = '.$recurring_expenses->count()); $recurring_expenses->each(function ($recurring_expense, $key) { nlog('Current date = '.now()->format('Y-m-d').' Recurring date = '.$recurring_expense->next_send_date); if (! $recurring_expense->company->is_disabled) { $this->generateExpense($recurring_expense); } }); } } } private function generateExpense(RecurringExpense $recurring_expense) { $expense = RecurringExpenseToExpenseFactory::create($recurring_expense); $expense->saveQuietly(); if($expense->company->mark_expenses_paid) { $expense->payment_date = now()->format('Y-m-d'); } if ((int)$expense->company->settings->currency_id != $expense->currency_id) { $exchange_rate = new CurrencyApi(); $expense->exchange_rate = $exchange_rate->exchangeRate($expense->currency_id, (int)$expense->company->settings->currency_id, Carbon::parse($expense->date)); } else { $expense->exchange_rate = 1; } $expense->number = $this->getNextExpenseNumber($expense); $expense->saveQuietly(); event(new ExpenseWasCreated($expense, $expense->company, Ninja::eventVars(null))); event('eloquent.created: App\Models\Expense', $expense); $recurring_expense->next_send_date = $recurring_expense->nextSendDate(); $recurring_expense->next_send_date_client = $recurring_expense->next_send_date; $recurring_expense->last_sent_date = now(); $recurring_expense->remaining_cycles = $recurring_expense->remainingCycles(); $recurring_expense->save(); } }