class Subledger::Domain::Line
Attributes
account[RW]
journal_entry[R]
order[RW]
value[RW]
Public Class Methods
active_klass()
click to toggle source
# File lib/subledger/domain/line.rb, line 39 def self.active_klass ActiveLine end
archived_klass()
click to toggle source
# File lib/subledger/domain/line.rb, line 35 def self.archived_klass ArchivedLine end
new(args)
click to toggle source
# File lib/subledger/domain/line.rb, line 56 def initialize args describable args identifiable args storable args versionable args @journal_entry = args[:journal_entry] @account = args[:account] @value = args[:value] @order = args[:order] specialized_initialization args end
posted_klass()
click to toggle source
# File lib/subledger/domain/line.rb, line 43 def self.posted_klass PostedLine end
root_klass()
click to toggle source
# File lib/subledger/domain/line.rb, line 27 def self.root_klass Line end
specialized_raise_unless_creatable(args)
click to toggle source
# File lib/subledger/domain/line.rb, line 53 def self.specialized_raise_unless_creatable args end
sub_klasses()
click to toggle source
# File lib/subledger/domain/line.rb, line 31 def self.sub_klasses [ archived_klass, active_klass, posted_klass ] end
update(args)
click to toggle source
Calls superclass method
# File lib/subledger/domain/line.rb, line 47 def self.update args raise_on_duplicate_orders args super end
Private Class Methods
raise_on_duplicate_orders(args)
click to toggle source
# File lib/subledger/domain/line.rb, line 103 def self.raise_on_duplicate_orders args client = args[:client] journal_entry = client.journal_entry :id => args[:journal_entry].id order = BigDecimal args[:order] journal_entry.lines.each do |line| if order == BigDecimal( line.order ) raise LineError, "lines must have unique orders: #{args[:orders]}" end end end
raise_unless_creatable(args)
click to toggle source
# File lib/subledger/domain/line.rb, line 117 def self.raise_unless_creatable args raise_on_duplicate_orders args raise_unless_create_and_postable args journal_entry = args[:journal_entry] if UUID.invalid? journal_entry.id raise LineError, ':journal_entry must have a valid :id' end end
raise_unless_create_and_postable(args)
click to toggle source
# File lib/subledger/domain/line.rb, line 129 def self.raise_unless_create_and_postable args journal_entry = args[:journal_entry] if journal_entry.nil? or not journal_entry.kind_of? JournalEntry raise LineError, ':journal_entry is required and must be a JournalEntry' end account = args[:account] if account.nil? or not account.kind_of? Account raise LineError, ':account is required and must be an Account' elsif UUID.invalid? account.id raise LineError, ':account must have a valid :id' end value = args[:value] if value.nil? or not value.kind_of? Value raise LineError, ':value is required and must be a Value' end order = args[:order] if order.nil? or order !~ /^\d{1,4}[.]?\d{0,2}$/ raise LineError, ':order is required and in the form [###]#[.##]' end bd_order = BigDecimal order if bd_order <= 0 or bd_order >= 10_000 raise LineError, ':order must be > 0 and < 10,000' end specialized_raise_unless_creatable args end
specialized_keys()
click to toggle source
# File lib/subledger/domain/line.rb, line 99 def self.specialized_keys [] end
Public Instance Methods
amount()
click to toggle source
# File lib/subledger/domain/line.rb, line 70 def amount value.amount end
Private Instance Methods
specialized_initialization(args)
click to toggle source
# File lib/subledger/domain/line.rb, line 166 def specialized_initialization args end