class NfeReader::Nfe

Attributes

authorizations[R]
billing[R]
cane[R]
client[R]
customer[R]
date[R]
delivery[R]
description[R]
digest[R]
enviroment[R]
error[R]
export[R]
fiscal[R]
header[R]
information[R]
key[R]
number[R]
products[R]
protocol[R]
provider[R]
purchase[R]
removal[R]
signature[R]
status[R]
total[R]
trace[R]
transport[R]
version[R]
version_app[R]
version_schema[R]

Public Class Methods

new(file) click to toggle source
# File lib/nfe_reader/nfe.rb, line 12
def initialize(file)

  xml = file.is_a?(Nokogiri::XML::Document) ? file : Nokogiri::XML(file)
  xml = xml.to_hash

  if xml[:nfeProc]
    # Versao da NFe
    @version_schema = xml[:nfeProc][:versao]
    # Assinatura
    @signature = xml[:nfeProc][:NFe][:Signature]

    # Protocolo
    if xml[:nfeProc][:protNFe]
      protocol = xml[:nfeProc][:protNFe][:infProt]

      @enviroment = protocol[:tpAmb]
      @version_app = protocol[:verAplic]
      @key = protocol[:chNFe]
      @date = protocol[:dhRecbto]
      @protocol = protocol[:nProt]
      @digest = protocol[:digVal]
      @status = protocol[:cStat]
      @description = protocol[:xMotivo]
    end

    xml = xml[:nfeProc][:NFe][:infNFe]
  else
    xml = xml[:NFe][:infNFe]
  end

  # Numero da Nfe
  @number = xml[:Id]
  # Versao da NFe
  @version = xml[:versao]

  # Identificação da Nota Fiscal eletrônica
  @header = Header.new(xml[:ide])

  # Identificação do Emitente da Nota Fiscal eletrônica
  @provider = Provider.new(xml[:emit])

  # Identificação do Fisco Emitente da NF-e
  if xml[:avulsa]
    @fiscal = Fiscal.new(xml[:avulsa])
  end

  # Identificação do Destinatário da Nota Fiscal eletrônica
  @customer = Customer.new(xml[:dest])

  # Informacoes Adicional
  if xml[:infAdic]
    @information = Information.new(xml[:infAdic])
  end

  # Detalhamento de Produtos e Serviços da NF-e
  @products = create_resources(Product, xml[:det])

  # Totalizadores
  @total = Total.new(xml[:total])

  # Informacao de Pagamento
  if xml[:cobr]
    @billing = Billing.new(xml[:cobr])
  end

  # Transporte
  if xml[:transp]
    @transport = Transport.new(xml[:transp])
  end

  # Identificação do Local de Entrega
  if xml[:retirada]
    @removal = Removal.new(xml[:retirada])
  end

  # Identificação do Local de Retirada
  if xml[:entrega]
    @delivery = Delivery.new(xml[:entrega])
  end

  # Autorização para obter XML
  @authorizations = create_resources(Authorization, xml[:autXML])

  # Informacoes de Comercio Exterior
  if xml[:exporta]
    @export = Export.new(xml[:exporta])
  end

  # Informacoes de Compra
  if xml[:compra]
    @purchase = Purchase.new(xml[:compra])
  end

  # Cana de Acucar
  if xml[:cana]
    @cane = Cane.new(xml[:cana])
  end

rescue => exception
  @error = exception
  @trace = exception.backtrace
ensure
  file.close if file.respond_to? :close
end

Public Instance Methods

error?() click to toggle source
# File lib/nfe_reader/nfe.rb, line 117
def error?
  !error.nil?
end