Class: Debitcredit::Entry

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/debitcredit/entry.rb

Defined Under Namespace

Classes: Dsl

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#ignore_overdraftObject

Returns the value of attribute ignore_overdraft.



25
26
27
# File 'app/models/debitcredit/entry.rb', line 25

def ignore_overdraft
  @ignore_overdraft
end

#is_inverseObject

Returns the value of attribute is_inverse.



24
25
26
# File 'app/models/debitcredit/entry.rb', line 24

def is_inverse
  @is_inverse
end

Class Method Details

.prepare(opts = {}, &block) ⇒ Object



18
19
20
21
22
# File 'app/models/debitcredit/entry.rb', line 18

def self.prepare(opts = {}, &block)
  new(opts).tap do |t|
    Docile.dsl_eval(Dsl.new(t), &block)
  end
end

Instance Method Details

#balanced?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/models/debitcredit/entry.rb', line 42

def balanced?
  items_balance.zero?
end

#inverse(opts = {}) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'app/models/debitcredit/entry.rb', line 27

def inverse(opts = {})
  self.class.new({ignore_overdraft: true, is_inverse: true}.merge(opts)) do |res|
    res.items = items.map(&:inverse)
    res.description ||= "reverse of tr ##{id}: #{description}"
    res.kind ||= 'rollback'
    res.reference ||= reference
    res.parent_entry = self
    self.inverse_entry ||= res
  end
end

#items_balanceObject



38
39
40
# File 'app/models/debitcredit/entry.rb', line 38

def items_balance
  items.map(&:value_for_balance).sum
end