Packages

Flexible double entry based accounting for Ecto.

Current section

Files

Jump to
money_bin lib money_bin ledgers ledger.ex
Raw

lib/money_bin/ledgers/ledger.ex

defmodule MoneyBin.Ledger do
use MoneyBin, :schema
schema @tables[:ledger] do
has_many(:members, @schemas[:ledger_member])
has_many(:accounts, through: [:members, :account])
has_many(:entries, through: [:accounts, :entries])
has_many(:transactions, through: [:entries, :transaction])
field(:value, :decimal, virtual: true, default: 0)
field(:account_count, :integer, virtual: true, default: 0)
field(:entry_count, :integer, virtual: true, default: 0)
timestamps()
end
@doc false
def changeset(record \\ %__MODULE__{}, attrs),
do:
record
|> cast(attrs, [])
|> cast_assoc(:members, required: true)
|> validate_length(:members, min: 2)
end