startOfMonth(); // Find all budgets that need monthly reset $budgets = UserBudget::where('month_started_at', '<', $thisMonth) ->where('is_active', true) ->get(); $resetCount = 0; foreach ($budgets as $budget) { $budget->current_month_spending = 0.0; $budget->month_started_at = $thisMonth; $budget->is_budget_exceeded = false; $budget->last_alert_sent_at = null; $budget->save(); $resetCount++; Log::info('Monthly budget reset for user', [ 'user_id' => $budget->user_id, 'previous_spending' => $budget->current_month_spending ]); } Log::info('Monthly budgets reset', [ 'count' => $resetCount, 'month' => $thisMonth->format('Y-m') ]); } }