2024-07-01 10:49:43 -04:00
|
|
|
module Account::EntriesHelper
|
|
|
|
def permitted_entryable_partial_path(entry, relative_partial_path)
|
|
|
|
"account/entries/entryables/#{permitted_entryable_key(entry)}/#{relative_partial_path}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def unconfirmed_transfer?(entry)
|
|
|
|
entry.marked_as_transfer? && entry.transfer.nil?
|
|
|
|
end
|
|
|
|
|
|
|
|
def transfer_entries(entries)
|
|
|
|
transfers = entries.select { |e| e.transfer_id.present? }
|
|
|
|
transfers.map(&:transfer).uniq
|
|
|
|
end
|
|
|
|
|
2024-11-04 20:27:31 -05:00
|
|
|
def entries_by_date(entries, selectable: true, totals: false)
|
2024-08-09 11:22:57 -04:00
|
|
|
entries.group_by(&:date).map do |date, grouped_entries|
|
2024-11-08 15:17:55 +01:00
|
|
|
# Valuations always go first, then sort by created_at desc
|
2024-11-04 20:27:31 -05:00
|
|
|
sorted_entries = grouped_entries.sort_by do |entry|
|
2024-11-08 15:17:55 +01:00
|
|
|
[ entry.account_valuation? ? 0 : 1, -entry.created_at.to_i ]
|
2024-11-04 20:27:31 -05:00
|
|
|
end
|
|
|
|
|
2024-08-09 11:22:57 -04:00
|
|
|
content = capture do
|
2024-11-04 20:27:31 -05:00
|
|
|
yield sorted_entries
|
2024-08-09 11:22:57 -04:00
|
|
|
end
|
|
|
|
|
2024-11-04 20:27:31 -05:00
|
|
|
render partial: "account/entries/entry_group", locals: { date:, entries: sorted_entries, content:, selectable:, totals: }
|
2024-08-09 11:22:57 -04:00
|
|
|
end.join.html_safe
|
|
|
|
end
|
|
|
|
|
2024-07-01 10:49:43 -04:00
|
|
|
private
|
|
|
|
|
|
|
|
def permitted_entryable_key(entry)
|
2024-07-25 16:46:04 -04:00
|
|
|
permitted_entryable_paths = %w[transaction valuation trade]
|
2024-07-01 10:49:43 -04:00
|
|
|
entry.entryable_name_short.presence_in(permitted_entryable_paths)
|
|
|
|
end
|
|
|
|
end
|