Class: Nfcom::Utils::XmlAuthorized

Inherits:
Object
  • Object
show all
Defined in:
lib/nfcom/utils/xml_authorized.rb

Constant Summary collapse

NFCOM_NAMESPACE =
'http://www.portalfiscal.inf.br/nfcom'

Class Method Summary collapse

Class Method Details

.build_nfcom_proc(xml_assinado:, xml_protocolo:) ⇒ Object

Raises:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/nfcom/utils/xml_authorized.rb', line 8

def self.build_nfcom_proc(xml_assinado:, xml_protocolo:)
  nfcom_doc = Nokogiri::XML(xml_assinado, &:strict)
  prot_doc  = Nokogiri::XML(xml_protocolo, &:strict)

  nfcom_node = nfcom_doc.at_xpath('/*[local-name()="NFCom"]')
  prot_node  = prot_doc.at_xpath('/*[local-name()="protNFCom"]')

  raise Errors::XmlError, 'NFCom não encontrada no XML assinado' unless nfcom_node
  raise Errors::XmlError, 'protNFCom não encontrada no XML de protocolo' unless prot_node

  builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
    xml.nfcomProc(xmlns: NFCOM_NAMESPACE, versao: '1.00') do
      xml << nfcom_node.to_xml
      xml << prot_node.to_xml
    end
  end

  builder.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::AS_XML)
end