Class: FocusNfe::Recursos::Nfe

Overview

Recurso de Nota Fiscal eletrônica (NF-e). Emissão assíncrona com consulta de estado, cancelamento, Carta de Correção Eletrônica (CC-e), inutilização de numeração, prévia da DANFe, envio por e-mail e importação a partir do XML.

Constant Summary

Constants included from Concerns::Enviavel

Concerns::Enviavel::MAX_EMAILS

Constants included from Concerns::Inutilizavel

Concerns::Inutilizavel::CAMINHO_INUTILIZACAO, Concerns::Inutilizavel::CAMINHO_INUTILIZACOES, Concerns::Inutilizavel::JUSTIFICATIVA_MINIMA

Constants included from Concerns::Corrigivel

Concerns::Corrigivel::TAMANHO_CORRECAO

Constants inherited from Base

Base::REFERENCIA

Instance Method Summary collapse

Methods included from Concerns::Conciliavel

#cancelar_econf, #consultar_econf, #registrar_econf

Methods included from Concerns::Enviavel

#enviar_email

Methods included from Concerns::Notificavel

#reenviar_hook

Methods included from Concerns::Visualizavel

#previa

Methods included from Concerns::Inutilizavel

#consultar_inutilizacoes, #inutilizar

Methods included from Concerns::Corrigivel

#corrigir

Methods included from Concerns::Cancelavel

#cancelar

Methods included from Concerns::Consultavel

#consultar

Methods included from Concerns::Emitivel

#emitir

Methods inherited from Base

caminho_base, #caminho_base, caminho_base_previa, #caminho_base_previa, #initialize

Constructor Details

This class inherits a constructor from FocusNfe::Recursos::Base

Instance Method Details

#cancelar_evento(ref, tipo_evento:) ⇒ FocusNfe::Modelos::Documento

Cancela um evento da NF-e (+DELETE /nfe/:ref/evento+ com tipo_evento no corpo).

Parameters:

  • ref (String)

    referência da nota

  • tipo_evento (String)

    tipo do evento a cancelar

Returns:

Raises:



56
57
58
# File 'lib/focus_nfe/recursos/nfe.rb', line 56

def cancelar_evento(ref, tipo_evento:)
  cancelar_evento_em(ref, caminho: "evento", tipo_evento: tipo_evento)
end

#cancelar_insucesso_entrega(ref) ⇒ FocusNfe::Modelos::Documento

Cancela o evento de Insucesso na Entrega (+DELETE /nfe/:ref/insucesso_entrega+).

Parameters:

  • ref (String)

    referência da nota

Returns:

Raises:



101
102
103
# File 'lib/focus_nfe/recursos/nfe.rb', line 101

def cancelar_insucesso_entrega(ref)
  cancelar_evento_em(ref, caminho: "insucesso_entrega")
end

#emitir_evento(ref, tipo_evento:, **dados) ⇒ FocusNfe::Modelos::Documento

Emite um evento genérico sobre a NF-e (+POST /nfe/:ref/evento+).

Parameters:

  • ref (String)

    referência da nota

  • tipo_evento (String)

    tipo do evento suportado pela API

  • dados (Hash)

    campos adicionais específicos do evento

Returns:

Raises:



45
46
47
# File 'lib/focus_nfe/recursos/nfe.rb', line 45

def emitir_evento(ref, tipo_evento:, **dados)
  emitir_evento_em(ref, caminho: "evento", tipo_evento: tipo_evento, **dados)
end

#importar(xml, ref: nil) ⇒ FocusNfe::Modelos::Documento

Importa uma NF-e a partir do seu XML autorizado.

Parameters:

  • xml (String)

    XML da NF-e (enviado como application/xml)

  • ref (String, nil) (defaults to: nil)

    referência a atribuir; omitida usa a chave da nota

Returns:

Raises:



29
30
31
32
33
34
35
# File 'lib/focus_nfe/recursos/nfe.rb', line 29

def importar(xml, ref: nil)
  params = ref ? { ref: ref } : {}
  response = connection.post("#{caminho_base}/importacao",
                             params: params, body: xml,
                             headers: { "Content-Type" => "application/xml" })
  Modelos::Documento.from_response(response, ref: ref)
end

#registrar_ator_interessado(ref, permite_autorizacao_terceiros:, cpf: nil, cnpj: nil) ⇒ FocusNfe::Modelos::Documento

Registra o Ator Interessado da NF-e (+POST /nfe/:ref/ator_interessado+), autorizando um terceiro a acessar o XML. Informe cpf ou cnpj.

Parameters:

  • ref (String)

    referência da nota

  • permite_autorizacao_terceiros (Boolean)

    libera o acesso ao terceiro

  • cpf (String, nil) (defaults to: nil)

    CPF do ator interessado

  • cnpj (String, nil) (defaults to: nil)

    CNPJ do ator interessado

Returns:

Raises:



70
71
72
73
74
75
# File 'lib/focus_nfe/recursos/nfe.rb', line 70

def registrar_ator_interessado(ref, permite_autorizacao_terceiros:, cpf: nil, cnpj: nil)
  dados = { permite_autorizacao_terceiros: permite_autorizacao_terceiros }
  dados[:cpf] = cpf if cpf
  dados[:cnpj] = cnpj if cnpj
  emitir_evento_em(ref, caminho: "ator_interessado", **dados)
end

#registrar_insucesso_entrega(ref, data_tentativa_entrega:, motivo_insucesso:, hash_tentativa_entrega:, **dados) ⇒ FocusNfe::Modelos::Documento

Registra o evento de Insucesso na Entrega (+POST /nfe/:ref/insucesso_entrega+). Quando motivo_insucesso for 4, a API exige justificativa_insucesso.

Parameters:

  • ref (String)

    referência da nota

  • data_tentativa_entrega (String)

    data/hora da tentativa (ISO 8601)

  • motivo_insucesso (Integer)

    código do motivo (1 a 4)

  • hash_tentativa_entrega (String)

    hash SHA-1 em Base64 da tentativa

  • dados (Hash)

    campos opcionais (+numero_tentativas+, justificativa_insucesso, …)

Returns:

Raises:



88
89
90
91
92
93
# File 'lib/focus_nfe/recursos/nfe.rb', line 88

def registrar_insucesso_entrega(ref, data_tentativa_entrega:, motivo_insucesso:, hash_tentativa_entrega:, **dados)
  emitir_evento_em(ref, caminho: "insucesso_entrega",
                        data_tentativa_entrega: data_tentativa_entrega,
                        motivo_insucesso: motivo_insucesso,
                        hash_tentativa_entrega: hash_tentativa_entrega, **dados)
end