Sha256: c2d059934bf708e060fb9c6be7fa2cc0d82bfe77fdea89c77816e8bbd116669e
Contents?: true
Size: 1.04 KB
Versions: 3
Compression:
Stored size: 1.04 KB
Contents
module DeathAndTaxes module Taxable def self.included(base) base.extend ClassMethods end module ClassMethods ## # Makes this model taxable # It will then be able to have taxations applied # Example: # class Invoicing < ActiveRecord::Base # acts_as_taxable # end def acts_as_taxable(*args) class_eval do has_many :taxations, :as => :taxable, :class_name => 'DeathAndTaxes::Taxation' end include DeathAndTaxes::Taxable::InstanceMethods end def calculate_rate taxes taxes.reduce(1) { |rate, tax| rate + tax.apply(1) } end end module InstanceMethods def apply_taxes(taxes) taxes = [taxes] unless taxes.is_a? Array self.taxations = taxes.collect do |tax| Taxation.new :amount => tax.apply(amount).round, :percentage => tax.percentage, :name => tax.name, :account_number => tax.account_number end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
death_and_taxes-0.0.5 | lib/death_and_taxes/taxable.rb |
death_and_taxes-0.0.4 | lib/death_and_taxes/taxable.rb |
death_and_taxes-0.0.3 | lib/death_and_taxes/taxable.rb |