mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-22 06:39:39 +02:00
* Trade and Transaction builders * Consolidate logic * Remove redundant fields from trade form * Add deposit, withdrawal, and interest form controls
61 lines
1.6 KiB
Ruby
61 lines
1.6 KiB
Ruby
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
|
|
|
|
def entry_icon(entry, is_oldest: false)
|
|
if is_oldest
|
|
"keyboard"
|
|
elsif entry.trend.direction.up?
|
|
"arrow-up"
|
|
elsif entry.trend.direction.down?
|
|
"arrow-down"
|
|
else
|
|
"minus"
|
|
end
|
|
end
|
|
|
|
def entry_style(entry, is_oldest: false)
|
|
color = is_oldest ? "#D444F1" : entry.trend.color
|
|
|
|
mixed_hex_styles(color)
|
|
end
|
|
|
|
def entry_name(entry)
|
|
if entry.account_trade?
|
|
trade = entry.account_trade
|
|
prefix = trade.sell? ? "Sell " : "Buy "
|
|
generated = prefix + "#{trade.qty.abs} shares of #{trade.security.ticker}"
|
|
name = entry.name || generated
|
|
name
|
|
else
|
|
entry.name || "Transaction"
|
|
end
|
|
end
|
|
|
|
def entries_by_date(entries, selectable: true)
|
|
entries.group_by(&:date).map do |date, grouped_entries|
|
|
content = capture do
|
|
yield grouped_entries
|
|
end
|
|
|
|
render partial: "account/entries/entry_group", locals: { date:, entries: grouped_entries, content:, selectable: }
|
|
end.join.html_safe
|
|
end
|
|
|
|
private
|
|
|
|
def permitted_entryable_key(entry)
|
|
permitted_entryable_paths = %w[transaction valuation trade]
|
|
entry.entryable_name_short.presence_in(permitted_entryable_paths)
|
|
end
|
|
end
|