app/models/billing/charge.rb in billing-0.0.3 vs app/models/billing/charge.rb in billing-0.0.4a
- old
+ new
@@ -1,12 +1,27 @@
module Billing
class Charge < ActiveRecord::Base
include AccountItem
belongs_to :account, inverse_of: :charges, validate: true
belongs_to :chargable, polymorphic: true
+ belongs_to :origin, inverse_of: :charges
+ has_one :modifier, inverse_of: :charge
+
monetize :price_cents
+ monetize :value_cents
+ delegate :paid?, to: :account
+
+ scope :unpaid, -> { joins(:account).where.not(billing_accounts: { balance_cents: 0}) }
+ scope :paid, -> { joins(:account).where(billing_accounts: { balance_cents: 0}) }
+ scope :in_period, lambda {|from, to| where(revenue_at: from..to) }
+
validates_presence_of :price
+ validates_numericality_of :value, greater_than_or_equal_to: 0
+
+ before_save do
+ self.value = price unless modifier.present? #FIXME global account modifier lost
+ end
class << self
def args(*args)
case when args.blank? || args.first.is_a?(Hash) then
{}.merge(*args)