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

Version Path
xero_gateway-float-2.1.7 lib/xero_gateway/tax_rate.rb
xero_gateway-float-2.1.6 lib/xero_gateway/tax_rate.rb
xero_gateway-float-2.1.4 lib/xero_gateway/tax_rate.rb
xero_gateway-float-2.1.3 lib/xero_gateway/tax_rate.rb
xero_gateway-float-2.1.1 lib/xero_gateway/tax_rate.rb
xero_gateway-2.1.0 lib/xero_gateway/tax_rate.rb