class Nfe
Public Class Methods
new(xml_content)
click to toggle source
# File lib/sefazp/nfe.rb, line 2 def initialize(xml_content) @document = REXML::Document.new(xml_content) end
Public Instance Methods
parse()
click to toggle source
# File lib/sefazp/nfe.rb, line 6 def parse case @document.elements["nfeProc"].attributes["versao"] when "2.00" parse_v200 when "3.10" parse_v310 else return nil end end
Private Instance Methods
parse_v200()
click to toggle source
# File lib/sefazp/nfe.rb, line 20 def parse_v200 begin municipio_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/cMun"].get_text.to_s rescue nil municipio_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/cMun"].get_text.to_s rescue nil chave_de_acesso = @document.elements["nfeProc/protNFe/infProt/chNFe"].get_text.to_s rescue nil numero = @document.elements["nfeProc/NFe/infNFe/ide/nNF"].get_text.to_s rescue nil serie = @document.elements["nfeProc/NFe/infNFe/ide/serie"].get_text.to_s rescue nil natureza_da_operacao = @document.elements["nfeProc/NFe/infNFe/ide/natOp"].get_text.to_s rescue nil protocolo_de_autorizacao = "#{@document.elements['nfeProc/protNFe/infProt/nProt'].get_text.to_s} #{@document.elements['nfeProc/protNFe/infProt/dhRecbto'].get_text.to_s}" rescue nil cnpj_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/CNPJ"].get_text.to_s rescue nil inscricao_estadual_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/IE"].get_text.to_s rescue nil nome_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/xNome"].get_text.to_s rescue nil logradouro_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/xLgr"].get_text.to_s rescue nil numero_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/nro"].get_text.to_s rescue nil bairro_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/xBairro"].get_text.to_s rescue nil cep_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/CEP"].get_text.to_s rescue nil telefone_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/fone"].get_text.to_s rescue nil if @document.elements["nfeProc/NFe/infNFe/dest/CNPJ"] documento_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/CNPJ"].get_text.to_s rescue nil inscricao_estadual_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/IE"].get_text.to_s rescue nil else documento_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/CPF"].get_text.to_s rescue nil inscricao_estadual_do_destinatario = nil end nome_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/xNome"].get_text.to_s rescue nil logradouro_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/xLgr"].get_text.to_s rescue nil numero_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/nro"].get_text.to_s rescue nil bairro_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/xBairro"].get_text.to_s rescue nil cep_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/CEP"].get_text.to_s rescue nil telefone_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/fone"].get_text.to_s rescue nil data_de_emissao = @document.elements["nfeProc/NFe/infNFe/ide/dEmi"].get_text.to_s rescue nil data_de_entrada_saida = @document.elements["nfeProc/NFe/infNFe/ide/dSaiEnt"].get_text.to_s rescue nil hora_de_entrada_saida = @document.elements["nfeProc/NFe/infNFe/ide/hSaiEnt"].get_text.to_s rescue nil base_de_calculo_do_icms = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vBC"].get_text.to_s rescue nil valor_do_icms = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vICMS"].get_text.to_s rescue nil valor_dos_produtos = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vProd"].get_text.to_s rescue nil valor_do_frete = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vFrete"].get_text.to_s rescue nil valor_do_seguro = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vSeg"].get_text.to_s rescue nil valor_do_desconto = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vDesc"].get_text.to_s rescue nil valor_de_outras_despesas = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vOutro"].get_text.to_s rescue nil valor_do_ipi = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vIPI"].get_text.to_s rescue nil valor_total_da_nota = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vNF"].get_text.to_s rescue nil cnpj_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/CNPJ"].get_text.to_s : nil rescue nil inscricao_estadual_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/IE"].get_text.to_s : nil rescue nil nome_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/xNome"].get_text.to_s : nil rescue nil logradouro_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/xEnder"].get_text.to_s : nil rescue nil municipio_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/xMun"].get_text.to_s : nil rescue nil uf_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/UF"].get_text.to_s : nil rescue nil frete_por_conta = @document.elements["nfeProc/NFe/infNFe/transp/modFrete"].get_text.to_s rescue nil placa_do_veiculo = @document.elements["nfeProc/NFe/infNFe/transp/veicTransp"] ? @document.elements["nfeProc/NFe/infNFe/transp/veicTransp/placa"].get_text.to_s : nil rescue nil uf_do_veiculo = @document.elements["nfeProc/NFe/infNFe/transp/veicTransp"] ? @document.elements["nfeProc/NFe/infNFe/transp/veicTransp/UF"].get_text.to_s : nil rescue nil quantidade = @document.elements["nfeProc/NFe/infNFe/transp/vol/qVol"].get_text.to_s rescue nil especie = @document.elements["nfeProc/NFe/infNFe/transp/vol/esp"].get_text.to_s rescue nil peso_bruto = @document.elements["nfeProc/NFe/infNFe/transp/vol/pesoB"].get_text.to_s rescue nil peso_liquido = @document.elements["nfeProc/NFe/infNFe/transp/vol/pesoL"].get_text.to_s rescue nil informacoes_complementares = @document.elements["nfeProc/NFe/infNFe/infAdic/infCpl"].get_text.to_s rescue nil items = [] @document.elements.each('nfeProc/NFe/infNFe/det') do |item| prod = item[0] imposto = item[1] item_codigo = prod.elements['cProd'].get_text.to_s rescue nil item_descricao = prod.elements['xProd'].get_text.to_s rescue nil item_ncm_sh = prod.elements['NCM'].get_text.to_s rescue nil item_cfop = prod.elements['CFOP'].get_text.to_s rescue nil item_unidade = prod.elements['uCom'].get_text.to_s rescue nil item_quantidade = prod.elements['qCom'].get_text.to_s rescue nil item_valor_unitario = prod.elements['vUnCom'].get_text.to_s rescue nil item_valor_total = prod.elements['vProd'].get_text.to_s rescue nil item_cst = imposto.elements['ICMS/ICMS51/CST'].get_text.to_s rescue nil item_base_de_calculo_do_icms = imposto.elements['ICMS/ICMS51/vBC'].get_text.to_s rescue nil item_valor_do_icms = imposto.elements['ICMS/ICMS51/vICMS'].get_text.to_s rescue nil item_aliquota_do_icms = imposto.elements['ICMS/ICMS51/pICMS'].get_text.to_s rescue nil items << { "codigo" => item_codigo, "descricao" => item_descricao, "ncm_sh" => item_ncm_sh, "cfop" => item_cfop, "unidade" => item_unidade, "quantidade" => item_quantidade, "valor_unitario" => item_valor_unitario, "valor_total" => item_valor_total, "cst" => item_cst, "base_de_calculo_do_icms" => item_base_de_calculo_do_icms, "valor_do_icms" => item_valor_do_icms, "aliquota_do_icms" => item_aliquota_do_icms } end return { municipio_do_emitente: municipio_do_emitente, municipio_do_destinatario: municipio_do_destinatario, chave_de_acesso: chave_de_acesso, numero: numero, serie: serie, natureza_da_operacao: natureza_da_operacao, protocolo_de_autorizacao: protocolo_de_autorizacao, cnpj_do_emitente: cnpj_do_emitente, inscricao_estadual_do_emitente: inscricao_estadual_do_emitente, nome_do_emitente: nome_do_emitente, logradouro_do_emitente: logradouro_do_emitente, numero_do_emitente: numero_do_emitente, bairro_do_emitente: bairro_do_emitente, cep_do_emitente: cep_do_emitente, telefone_do_emitente: telefone_do_emitente, documento_do_destinatario: documento_do_destinatario, inscricao_estadual_do_destinatario: inscricao_estadual_do_destinatario, nome_do_destinatario: nome_do_destinatario, logradouro_do_destinatario: logradouro_do_destinatario, numero_do_destinatario: numero_do_destinatario, bairro_do_destinatario: bairro_do_destinatario, cep_do_destinatario: cep_do_destinatario, telefone_do_destinatario: telefone_do_destinatario, data_de_emissao: data_de_emissao, data_de_entrada_saida: data_de_entrada_saida, hora_de_entrada_saida: hora_de_entrada_saida, base_de_calculo_do_icms: base_de_calculo_do_icms, valor_do_icms: valor_do_icms, valor_dos_produtos: valor_dos_produtos, valor_do_frete: valor_do_frete, valor_do_seguro: valor_do_seguro, valor_do_desconto: valor_do_desconto, valor_de_outras_despesas: valor_de_outras_despesas, valor_do_ipi: valor_do_ipi, valor_total_da_nota: valor_total_da_nota, cnpj_da_transportadora: cnpj_da_transportadora, inscricao_estadual_da_transportadora: inscricao_estadual_da_transportadora, nome_da_transportadora: nome_da_transportadora, logradouro_da_transportadora: logradouro_da_transportadora, municipio_da_transportadora: municipio_da_transportadora, uf_da_transportadora: uf_da_transportadora, frete_por_conta: frete_por_conta, placa_do_veiculo: placa_do_veiculo, uf_do_veiculo: uf_do_veiculo, quantidade: quantidade, especie: especie, peso_bruto: peso_bruto, peso_liquido: peso_liquido, informacoes_complementares: informacoes_complementares, items: items } rescue return nil end end
parse_v310()
click to toggle source
# File lib/sefazp/nfe.rb, line 153 def parse_v310 begin municipio_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/cMun"].get_text.to_s rescue nil municipio_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/cMun"].get_text.to_s rescue nil chave_de_acesso = @document.elements["nfeProc/protNFe/infProt/chNFe"].get_text.to_s rescue nil numero = @document.elements["nfeProc/NFe/infNFe/ide/nNF"].get_text.to_s rescue nil serie = @document.elements["nfeProc/NFe/infNFe/ide/serie"].get_text.to_s rescue nil natureza_da_operacao = @document.elements["nfeProc/NFe/infNFe/ide/natOp"].get_text.to_s rescue nil protocolo_de_autorizacao = "#{@document.elements['nfeProc/protNFe/infProt/nProt'].get_text.to_s} #{@document.elements['nfeProc/protNFe/infProt/dhRecbto'].get_text.to_s}" rescue nil cnpj_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/CNPJ"].get_text.to_s rescue nil inscricao_estadual_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/IE"].get_text.to_s rescue nil nome_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/xNome"].get_text.to_s rescue nil logradouro_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/xLgr"].get_text.to_s rescue nil numero_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/nro"].get_text.to_s rescue nil bairro_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/xBairro"].get_text.to_s rescue nil cep_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/CEP"].get_text.to_s rescue nil telefone_do_emitente = @document.elements["nfeProc/NFe/infNFe/emit/enderEmit/fone"].get_text.to_s rescue nil if @document.elements["nfeProc/NFe/infNFe/dest/CNPJ"] documento_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/CNPJ"].get_text.to_s rescue nil inscricao_estadual_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/IE"].get_text.to_s rescue nil else documento_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/CPF"].get_text.to_s rescue nil inscricao_estadual_do_destinatario = nil end nome_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/xNome"].get_text.to_s rescue nil logradouro_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/xLgr"].get_text.to_s rescue nil numero_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/nro"].get_text.to_s rescue nil bairro_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/xBairro"].get_text.to_s rescue nil cep_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/CEP"].get_text.to_s rescue nil telefone_do_destinatario = @document.elements["nfeProc/NFe/infNFe/dest/enderDest/fone"].get_text.to_s rescue nil data_de_emissao = @document.elements["nfeProc/NFe/infNFe/ide/dhEmi"].get_text.to_s rescue nil data_de_entrada_saida = @document.elements["nfeProc/NFe/infNFe/ide/dhSaiEnt"].get_text.to_s rescue nil base_de_calculo_do_icms = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vBC"].get_text.to_s rescue nil valor_do_icms = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vICMS"].get_text.to_s rescue nil valor_dos_produtos = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vProd"].get_text.to_s rescue nil valor_do_frete = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vFrete"].get_text.to_s rescue nil valor_do_seguro = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vSeg"].get_text.to_s rescue nil valor_do_desconto = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vDesc"].get_text.to_s rescue nil valor_de_outras_despesas = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vOutro"].get_text.to_s rescue nil valor_do_ipi = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vIPI"].get_text.to_s rescue nil valor_total_da_nota = @document.elements["nfeProc/NFe/infNFe/total/ICMSTot/vNF"].get_text.to_s rescue nil cnpj_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/CNPJ"].get_text.to_s : nil rescue nil inscricao_estadual_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/IE"].get_text.to_s : nil rescue nil nome_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/xNome"].get_text.to_s : nil rescue nil logradouro_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/xEnder"].get_text.to_s : nil rescue nil municipio_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/xMun"].get_text.to_s : nil rescue nil uf_da_transportadora = @document.elements["nfeProc/NFe/infNFe/transp/transporta"] ? @document.elements["nfeProc/NFe/infNFe/transp/transporta/UF"].get_text.to_s : nil rescue nil frete_por_conta = @document.elements["nfeProc/NFe/infNFe/transp/modFrete"].get_text.to_s rescue nil placa_do_veiculo = @document.elements["nfeProc/NFe/infNFe/transp/veicTransp"] ? @document.elements["nfeProc/NFe/infNFe/transp/veicTransp/placa"].get_text.to_s : nil rescue nil uf_do_veiculo = @document.elements["nfeProc/NFe/infNFe/transp/veicTransp"] ? @document.elements["nfeProc/NFe/infNFe/transp/veicTransp/UF"].get_text.to_s : nil rescue nil quantidade = @document.elements["nfeProc/NFe/infNFe/transp/vol/qVol"].get_text.to_s rescue nil especie = @document.elements["nfeProc/NFe/infNFe/transp/vol/esp"].get_text.to_s rescue nil peso_liquido = @document.elements["nfeProc/NFe/infNFe/transp/vol/pesoL"].get_text.to_s rescue nil informacoes_complementares = @document.elements["nfeProc/NFe/infNFe/infAdic/infCpl"].get_text.to_s rescue nil items = [] @document.elements.each('nfeProc/NFe/infNFe/det') do |item| prod = item[0] imposto = item[1] item_codigo = prod.elements['cProd'].get_text.to_s rescue nil item_descricao = prod.elements['xProd'].get_text.to_s rescue nil item_ncm_sh = prod.elements['NCM'].get_text.to_s rescue nil item_cfop = prod.elements['CFOP'].get_text.to_s rescue nil item_unidade = prod.elements['uCom'].get_text.to_s rescue nil item_quantidade = prod.elements['qCom'].get_text.to_s rescue nil item_valor_unitario = prod.elements['vUnCom'].get_text.to_s rescue nil item_valor_total = prod.elements['vProd'].get_text.to_s rescue nil item_cst = imposto.elements['ICMS/ICMS51/CST'].get_text.to_s rescue nil item_base_de_calculo_do_icms = imposto.elements['ICMS/ICMS51/vBC'].get_text.to_s rescue nil item_valor_do_icms = imposto.elements['ICMS/ICMS51/vICMS'].get_text.to_s rescue nil item_aliquota_do_icms = imposto.elements['ICMS/ICMS51/pICMS'].get_text.to_s rescue nil items << { "codigo" => item_codigo, "descricao" => item_descricao, "ncm_sh" => item_ncm_sh, "cfop" => item_cfop, "unidade" => item_unidade, "quantidade" => item_quantidade, "valor_unitario" => item_valor_unitario, "valor_total" => item_valor_total, "cst" => item_cst, "base_de_calculo_do_icms" => item_base_de_calculo_do_icms, "valor_do_icms" => item_valor_do_icms, "aliquota_do_icms" => item_aliquota_do_icms } end return { municipio_do_emitente: municipio_do_emitente, municipio_do_destinatario: municipio_do_destinatario, chave_de_acesso: chave_de_acesso, numero: numero, serie: serie, natureza_da_operacao: natureza_da_operacao, protocolo_de_autorizacao: protocolo_de_autorizacao, cnpj_do_emitente: cnpj_do_emitente, inscricao_estadual_do_emitente: inscricao_estadual_do_emitente, nome_do_emitente: nome_do_emitente, logradouro_do_emitente: logradouro_do_emitente, numero_do_emitente: numero_do_emitente, bairro_do_emitente: bairro_do_emitente, cep_do_emitente: cep_do_emitente, telefone_do_emitente: telefone_do_emitente, documento_do_destinatario: documento_do_destinatario, inscricao_estadual_do_destinatario: inscricao_estadual_do_destinatario, nome_do_destinatario: nome_do_destinatario, logradouro_do_destinatario: logradouro_do_destinatario, numero_do_destinatario: numero_do_destinatario, bairro_do_destinatario: bairro_do_destinatario, cep_do_destinatario: cep_do_destinatario, telefone_do_destinatario: telefone_do_destinatario, data_de_emissao: data_de_emissao, data_de_entrada_saida: data_de_entrada_saida, base_de_calculo_do_icms: base_de_calculo_do_icms, valor_do_icms: valor_do_icms, valor_dos_produtos: valor_dos_produtos, valor_do_frete: valor_do_frete, valor_do_seguro: valor_do_seguro, valor_do_desconto: valor_do_desconto, valor_de_outras_despesas: valor_de_outras_despesas, valor_do_ipi: valor_do_ipi, valor_total_da_nota: valor_total_da_nota, cnpj_da_transportadora: cnpj_da_transportadora, inscricao_estadual_da_transportadora: inscricao_estadual_da_transportadora, nome_da_transportadora: nome_da_transportadora, logradouro_da_transportadora: logradouro_da_transportadora, municipio_da_transportadora: municipio_da_transportadora, uf_da_transportadora: uf_da_transportadora, frete_por_conta: frete_por_conta, placa_do_veiculo: placa_do_veiculo, uf_do_veiculo: uf_do_veiculo, quantidade: quantidade, especie: especie, peso_liquido: peso_liquido, informacoes_complementares: informacoes_complementares, items: items } rescue return nil end end