Sha256: 1157974123c6e13a5f5ce940981e21c8cb92966884e6df0c63169d9e16c79dd8
Contents?: true
Size: 1.88 KB
Versions: 2
Compression:
Stored size: 1.88 KB
Contents
module HasAccounts module Model extend ActiveSupport::Concern included do class_attribute :direct_account has_many :bookings, :as => :reference, :dependent => :destroy do # TODO: duplicated in Booking (without parameter) def direct_balance(value_date = nil, direct_account = nil) return BigDecimal.new('0') unless proxy_owner.direct_account direct_account ||= proxy_owner.direct_account balance = BigDecimal.new('0') # Scope by value_date if value_date.is_a? Range or value_date.is_a? Array direct_bookings = where("date(value_date) BETWEEN :from AND :to", :from => value_date.first, :to => value_date.last) elsif value_date direct_bookings = where("date(value_date) <= ?", value_date) if value_date else direct_bookings = scoped end # Accumulate for booking in direct_bookings.all balance += booking.accounted_amount(direct_account) end balance end end end module ClassMethods end module InstanceMethods # Delegate to class def direct_account self.class.direct_account end # Build booking def build_booking(params = {}, template_code = nil) template_code ||= self.class.to_s.underscore + ':invoice' booking_template = BookingTemplate.find_by_code(template_code) # Prepare booking parameters booking_params = {:reference => self} booking_params.merge!(params) # Build and assign booking booking = booking_template.build_booking(booking_params) bookings << booking booking end def balance(value_date = nil, direct_account = nil) bookings.direct_balance(value_date, direct_account) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
has_accounts-0.16.0 | lib/has_accounts/model.rb |
has_accounts-0.15.2 | lib/has_accounts/model.rb |