class Quickbooks::Model::TaxService

def self.from_json(response)

def self.from_json(response)
  result = JSON.parse(response)
  if result.present?
    ts = Quickbooks::Model::TaxService.new
    ts.tax_code = result['TaxCode']
    ts.tax_code_id = result['TaxCodeId']
    result['TaxRateDetails'].each do |item|
      attrs = item.keys.inject({}){|mem, k| mem[k.underscore] = item[k]; mem}
      ts.tax_rate_details << Quickbooks::Model::TaxRateDetailLine.new(attrs)
    end
    return ts
  else
    return nil
  end
end

def check_details_item

def check_details_item
  if tax_rate_details.blank?
    errors.add(:tax_rate_details, "must have at least one item")
  else
    tax_rate_details.each do |line|
      unless line.valid?
        errors.add(:base, line.errors.full_messages.join(', '))
      end
    end
    names = tax_rate_details.map(&:tax_rate_name).uniq
    if names.size < tax_rate_details.size
      errors.add(:tax_rate_name, "Duplicate Tax Rate Name")
    end
  end
end

def initialize(options = {})

def initialize(options = {})
  self.tax_rate_details = options['tax_rate_details'] || []
  super
end