class Quickbooks::Service::BaseService

def parse_intuit_error

def parse_intuit_error
  error = {:message => "", :detail => "", :type => nil, :code => 0, :intuit_tid => @last_response_intuit_tid}
  fault = @last_response_xml.xpath("//xmlns:IntuitResponse/xmlns:Fault")[0]
  if fault
    error[:type] = fault.attributes['type'].value
    error_element = fault.xpath("//xmlns:Error")[0]
    if error_element
      code_attr = error_element.attributes['code']
      if code_attr
        error[:code] = code_attr.value
      end
      element_attr = error_element.attributes['element']
      if element_attr
        error[:element] = element_attr.try(:value)
      end
      error[:message] = error_element.xpath("//xmlns:Message").text
      error[:detail] = error_element.xpath("//xmlns:Detail").text
    end
  end
  error
rescue Nokogiri::XML::XPath::SyntaxError => exception
  error[:detail] = @last_response_xml.to_s
  error
end