Class: FocusNfe::Modelos::Documento

Inherits:
Object
  • Object
show all
Defined in:
lib/focus_nfe/modelos/documento.rb

Overview

Objeto de valor imutável que representa o estado fiscal de um documento. Encapsula o corpo (Hash) das respostas de emissão e consulta — que compartilham o mesmo schema — expondo os campos comuns e predicados de status. Campos não mapeados continuam acessíveis via #[]/#dados.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dados:, ref: nil, response: nil) ⇒ Documento

Returns a new instance of Documento.

Parameters:

  • dados (Object)

    corpo da resposta/webhook (usa {} quando não é Hash)

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

    referência conhecida pela chamada

  • response (FocusNfe::HTTP::Response, nil) (defaults to: nil)

    resposta original, quando houver



74
75
76
77
78
79
# File 'lib/focus_nfe/modelos/documento.rb', line 74

def initialize(dados:, ref: nil, response: nil)
  @response = response
  @dados = dados.is_a?(Hash) ? dados : {}
  @ref = ref || @dados["ref"]
  freeze
end

Instance Attribute Details

#dadosHash (readonly)

Returns corpo cru da resposta.

Returns:

  • (Hash)

    corpo cru da resposta



17
18
19
# File 'lib/focus_nfe/modelos/documento.rb', line 17

def dados
  @dados
end

#refString? (readonly)

Returns referência informada na chamada (nem sempre presente no corpo).

Returns:

  • (String, nil)

    referência informada na chamada (nem sempre presente no corpo)



14
15
16
# File 'lib/focus_nfe/modelos/documento.rb', line 14

def ref
  @ref
end

#responseFocusNfe::HTTP::Response? (readonly)

Returns resposta original que originou o documento (nil em webhooks inbound).

Returns:



11
12
13
# File 'lib/focus_nfe/modelos/documento.rb', line 11

def response
  @response
end

Class Method Details

.from_payload(corpo, ref: nil) ⇒ FocusNfe::Modelos::Documento

Constrói um FocusNfe::Modelos::Documento a partir do corpo já parseado de um webhook inbound — sem HTTP::Response associada.

Parameters:

  • corpo (Hash)

    corpo do webhook, com o mesmo schema das respostas

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

    referência conhecida, injetada quando ausente do corpo

Returns:



67
68
69
# File 'lib/focus_nfe/modelos/documento.rb', line 67

def self.from_payload(corpo, ref: nil)
  new(dados: corpo, ref: ref)
end

.from_response(response, ref: nil) ⇒ FocusNfe::Modelos::Documento

Constrói um FocusNfe::Modelos::Documento a partir de uma HTTP::Response.

Parameters:

  • response (FocusNfe::HTTP::Response)

    resposta de emissão/consulta

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

    referência conhecida pela chamada, injetada quando ausente do corpo

Returns:



57
58
59
# File 'lib/focus_nfe/modelos/documento.rb', line 57

def self.from_response(response, ref: nil)
  new(dados: response.body, ref: ref, response: response)
end

Instance Method Details

#[](chave) ⇒ Object?

Returns valor do campo cru.

Parameters:

  • chave (String)

    nome do campo no corpo da resposta

Returns:

  • (Object, nil)

    valor do campo cru



83
84
85
# File 'lib/focus_nfe/modelos/documento.rb', line 83

def [](chave)
  dados[chave]
end

#autorizado?Boolean

Returns:

  • (Boolean)


88
89
90
# File 'lib/focus_nfe/modelos/documento.rb', line 88

def autorizado?
  status == "autorizado"
end

#caminho_danfeString?

Returns caminho relativo do PDF (DANFe/DACTe/DANFSe) na Focus NFe.

Returns:

  • (String, nil)

    caminho relativo do PDF (DANFe/DACTe/DANFSe) na Focus NFe



41
# File 'lib/focus_nfe/modelos/documento.rb', line 41

def caminho_danfe = dados["caminho_danfe"]

#caminho_pdf_carta_correcaoString?

Returns caminho relativo do PDF da carta de correção na Focus NFe.

Returns:

  • (String, nil)

    caminho relativo do PDF da carta de correção na Focus NFe



47
# File 'lib/focus_nfe/modelos/documento.rb', line 47

def caminho_pdf_carta_correcao = dados["caminho_pdf_carta_correcao"]

#caminho_xml_carta_correcaoString?

Returns caminho relativo do XML da carta de correção na Focus NFe.

Returns:

  • (String, nil)

    caminho relativo do XML da carta de correção na Focus NFe



44
# File 'lib/focus_nfe/modelos/documento.rb', line 44

def caminho_xml_carta_correcao = dados["caminho_xml_carta_correcao"]

#caminho_xml_nota_fiscalString?

Returns caminho relativo do XML da nota na Focus NFe.

Returns:

  • (String, nil)

    caminho relativo do XML da nota na Focus NFe



38
# File 'lib/focus_nfe/modelos/documento.rb', line 38

def caminho_xml_nota_fiscal = dados["caminho_xml_nota_fiscal"]

#cancelado?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/focus_nfe/modelos/documento.rb', line 93

def cancelado?
  status == "cancelado"
end

#chave_nfeString?

Returns chave de acesso do documento autorizado.

Returns:

  • (String, nil)

    chave de acesso do documento autorizado



29
# File 'lib/focus_nfe/modelos/documento.rb', line 29

def chave_nfe = dados["chave_nfe"]

#denegado?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/focus_nfe/modelos/documento.rb', line 108

def denegado?
  status == "denegado"
end

#erro?Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/focus_nfe/modelos/documento.rb', line 103

def erro?
  status.to_s.start_with?("erro")
end

#mensagem_sefazString?

Returns mensagem descritiva retornada pela SEFAZ.

Returns:

  • (String, nil)

    mensagem descritiva retornada pela SEFAZ



26
# File 'lib/focus_nfe/modelos/documento.rb', line 26

def mensagem_sefaz = dados["mensagem_sefaz"]

#numeroString?

Returns número do documento fiscal.

Returns:

  • (String, nil)

    número do documento fiscal



32
# File 'lib/focus_nfe/modelos/documento.rb', line 32

def numero = dados["numero"]

#numero_carta_correcaoString?

Returns número sequencial da carta de correção emitida.

Returns:

  • (String, nil)

    número sequencial da carta de correção emitida



50
# File 'lib/focus_nfe/modelos/documento.rb', line 50

def numero_carta_correcao = dados["numero_carta_correcao"]

#processando?Boolean

Returns:

  • (Boolean)


98
99
100
# File 'lib/focus_nfe/modelos/documento.rb', line 98

def processando?
  status == "processando_autorizacao"
end

#serieString?

Returns série do documento fiscal.

Returns:

  • (String, nil)

    série do documento fiscal



35
# File 'lib/focus_nfe/modelos/documento.rb', line 35

def serie = dados["serie"]

#statusString?

Returns status do documento na Focus NFe (ex.: autorizado).

Returns:

  • (String, nil)

    status do documento na Focus NFe (ex.: autorizado)



20
# File 'lib/focus_nfe/modelos/documento.rb', line 20

def status = dados["status"]

#status_sefazString?

Returns código de status retornado pela SEFAZ.

Returns:

  • (String, nil)

    código de status retornado pela SEFAZ



23
# File 'lib/focus_nfe/modelos/documento.rb', line 23

def status_sefaz = dados["status_sefaz"]