diff --git a/app/helpers/categories_helper.rb b/app/helpers/categories_helper.rb index 83bddbf3..c58713d4 100644 --- a/app/helpers/categories_helper.rb +++ b/app/helpers/categories_helper.rb @@ -4,4 +4,8 @@ module CategoriesHelper name: "Uncategorized", color: Category::UNCATEGORIZED_COLOR end + + def family_categories + [ null_category ].concat(Current.family.categories.alphabetically) + end end diff --git a/app/models/account/transaction.rb b/app/models/account/transaction.rb index bf08ef0c..52a0f9bd 100644 --- a/app/models/account/transaction.rb +++ b/app/models/account/transaction.rb @@ -13,7 +13,19 @@ class Account::Transaction < ApplicationRecord class << self def search(params) query = all - query = query.joins(:category).where(categories: { name: params[:categories] }) if params[:categories].present? + if params[:categories].present? + if params[:categories].exclude?("Uncategorized") + query = query + .joins(:category) + .where(categories: { name: params[:categories] }) + else + query = query + .left_joins(:category) + .where(categories: { name: params[:categories] }) + .or(query.where(category_id: nil)) + end + end + query = query.joins(:merchant).where(merchants: { name: params[:merchants] }) if params[:merchants].present? if params[:tags].present? diff --git a/app/views/transactions/searches/filters/_category_filter.html.erb b/app/views/transactions/searches/filters/_category_filter.html.erb index 5f399126..5212bbe4 100644 --- a/app/views/transactions/searches/filters/_category_filter.html.erb +++ b/app/views/transactions/searches/filters/_category_filter.html.erb @@ -5,7 +5,7 @@ <%= lucide_icon("search", class: "w-5 h-5 text-gray-500 absolute inset-y-0 left-2 top-1/2 transform -translate-y-1/2") %>