Class: PgLedger::LedgerScope

Inherits:
Object
  • Object
show all
Defined in:
lib/pg_ledger/ledger_scope.rb

Overview

Every module operation, pinned to one ledger:

billing = PgLedger.ledger("billing")
billing.create_account!(code: "cash", currency: "USD", normal_balance: :debit)
billing.transfer!(from: "cash", to: "fees", amount: 100)

Constant Summary collapse

SCOPED =
%i[
  post! transfer! reverse! create_account! freeze_account! unfreeze_account!
  close_period! balances
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(record) ⇒ LedgerScope

Returns a new instance of LedgerScope.



11
12
13
# File 'lib/pg_ledger/ledger_scope.rb', line 11

def initialize(record)
  @record = record
end

Instance Attribute Details

#record ⇒ Object (readonly)

Returns the value of attribute record.



9
10
11
# File 'lib/pg_ledger/ledger_scope.rb', line 9

def record
  @record
end

Instance Method Details

#accounts ⇒ Object



39
40
41
# File 'lib/pg_ledger/ledger_scope.rb', line 39

def accounts
  Account.where(ledger_id: id)
end

#batch {|collector| ... } ⇒ Object

Yields:

  • (collector)


29
30
31
32
33
# File 'lib/pg_ledger/ledger_scope.rb', line 29

def batch
  collector = Batch.new(default_ledger_id: id)
  yield collector
  collector.commit!
end

#id ⇒ Object



15
# File 'lib/pg_ledger/ledger_scope.rb', line 15

def id = record.id

#name ⇒ Object



16
# File 'lib/pg_ledger/ledger_scope.rb', line 16

def name = record.name

#resolve!(ref, currency: nil) ⇒ Object



35
36
37
# File 'lib/pg_ledger/ledger_scope.rb', line 35

def resolve!(ref, currency: nil)
  Account.resolve!(ref, currency: currency, ledger_id: id)
end