mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-18 20:59:39 +02:00
* Minimal code style enforcement * Formatting and lint code updates (no change in functionality)
45 lines
950 B
Ruby
45 lines
950 B
Ruby
class Account::EntryBuilder
|
|
include ActiveModel::Model
|
|
|
|
TYPES = %w[income expense buy sell interest transfer_in transfer_out].freeze
|
|
|
|
attr_accessor :type, :date, :qty, :ticker, :price, :amount, :currency, :account, :transfer_account_id
|
|
|
|
validates :type, inclusion: { in: TYPES }
|
|
|
|
def save
|
|
if valid?
|
|
create_builder.save
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def create_builder
|
|
case type
|
|
when "buy", "sell"
|
|
create_trade_builder
|
|
else
|
|
create_transaction_builder
|
|
end
|
|
end
|
|
|
|
def create_trade_builder
|
|
Account::TradeBuilder.new \
|
|
type: type,
|
|
date: date,
|
|
qty: qty,
|
|
ticker: ticker,
|
|
price: price,
|
|
account: account
|
|
end
|
|
|
|
def create_transaction_builder
|
|
Account::TransactionBuilder.new \
|
|
type: type,
|
|
date: date,
|
|
amount: amount,
|
|
account: account,
|
|
transfer_account_id: transfer_account_id
|
|
end
|
|
end
|