mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-24 15:49:39 +02:00
* Remove balance mode, sketch out refactor * Activity view checkpoint * Entry partials, checkpoint * Finish txn partial * Give entries context when editing for different turbo responses * Calculate change of balance for each entry * Account tabs consolidation * Translations, linting, brakeman updates * Account actions concern * Finalize forms, get account system tests passing * Get tests passing * Lint, rubocop, schema updates * Improve routing and stream responses * Fix broken routes * Add import option for adding accounts * Fix system test * Fix test specificity * Fix sparklines * Improve account redirects
67 lines
1.6 KiB
Ruby
67 lines
1.6 KiB
Ruby
class Account::Transaction < ApplicationRecord
|
|
include Account::Entryable
|
|
|
|
belongs_to :category, optional: true
|
|
belongs_to :merchant, optional: true
|
|
has_many :taggings, as: :taggable, dependent: :destroy
|
|
has_many :tags, through: :taggings
|
|
|
|
accepts_nested_attributes_for :taggings, allow_destroy: true
|
|
|
|
scope :active, -> { where(excluded: false) }
|
|
|
|
class << self
|
|
def search(params)
|
|
query = all
|
|
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?
|
|
query = query.joins(:tags)
|
|
.where(tags: { name: params[:tags] })
|
|
.distinct
|
|
end
|
|
|
|
query
|
|
end
|
|
|
|
def requires_search?(params)
|
|
searchable_keys.any? { |key| params.key?(key) }
|
|
end
|
|
|
|
private
|
|
|
|
def searchable_keys
|
|
%i[categories merchants tags]
|
|
end
|
|
end
|
|
|
|
def name
|
|
entry.name || "(no description)"
|
|
end
|
|
|
|
def eod_balance
|
|
entry.amount_money
|
|
end
|
|
|
|
private
|
|
def account
|
|
entry.account
|
|
end
|
|
|
|
def daily_transactions
|
|
account.entries.account_transactions
|
|
end
|
|
end
|