Sha256: 0eb90ff2dfee08291e52e6d2c934325357caeaf07d0b963094dd5ec30c2c25c7
Contents?: true
Size: 1.25 KB
Versions: 51
Compression:
Stored size: 1.25 KB
Contents
module Piggybak class TaxMethod < ActiveRecord::Base has_many :tax_method_values, :dependent => :destroy alias :metadata :tax_method_values validates_presence_of :description validates_presence_of :klass accepts_nested_attributes_for :tax_method_values, :allow_destroy => true validates_each :tax_method_values do |record, attr, value| if record.klass calculator = record.klass.constantize metadata_keys = value.collect { |v| v.key }.sort if calculator::KEYS.sort != metadata_keys if calculator::KEYS.empty? record.errors.add attr, "You don't need any metadata for this method." else record.errors.add attr, "You must define key values for #{calculator::KEYS.join(', ')} for this tax method." end end end end def klass_enum Piggybak.config.tax_calculators end def self.calculate_tax(object) total_tax = 0 TaxMethod.all.each do |tax_method| calculator = tax_method.klass.constantize if calculator.available?(tax_method, object) total_tax += calculator.rate(tax_method, object) end end total_tax end def admin_label self.description end end end
Version data entries
51 entries across 51 versions & 1 rubygems