Sha256: 9f2fac5e1f120677cc9f4214f51650dbdc82300c0e82620f58d00339fec4a0ec
Contents?: true
Size: 1.7 KB
Versions: 6
Compression:
Stored size: 1.7 KB
Contents
module XeroGateway class TaxRate unless defined? ATTRS ATTRS = { "Name" => :string, "TaxType" => :string, "CanApplyToAssets" => :boolean, "CanApplyToEquity" => :boolean, "CanApplyToExpenses" => :boolean, "CanApplyToLiabilities" => :boolean, "CanApplyToRevenue" => :boolean, "DisplayTaxRate" => :float, "EffectiveRate" => :float } end attr_accessor *ATTRS.keys.map(&:underscore) def initialize(params = {}) params.each do |k,v| self.send("#{k}=", v) end end def ==(other) ATTRS.keys.map(&:underscore).each do |field| return false if send(field) != other.send(field) end return true end def to_xml b = Builder::XmlMarkup.new b.TaxRate do ATTRS.keys.each do |attr| eval("b.#{attr} '#{self.send(attr.underscore.to_sym)}'") end end end def self.from_xml(tax_rate_element) TaxRate.new.tap do |tax_rate| tax_rate_element.children.each do |element| attribute = element.name underscored_attribute = element.name.underscore next if !ATTRS.keys.include?(attribute) case (ATTRS[attribute]) when :boolean then tax_rate.send("#{underscored_attribute}=", (element.text == "true")) when :float then tax_rate.send("#{underscored_attribute}=", element.text.to_f) else tax_rate.send("#{underscored_attribute}=", element.text) end end end end end end
Version data entries
6 entries across 6 versions & 2 rubygems