Mudanças entre as edições de "Requisitos RFW.SEFAZ"

De Wiki do Leitão
Ir para: navegação, pesquisa
 
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 
= Requisitos =
= Objetivo Principal =
== Objetivo Principal ==


O objetivo deste módulo é permitir uma integração transparente com os serviços da SEFAZ (WebServices) de forma mais transparente possível e integrada ao framework RFW para facilitar sua utilização.
O objetivo deste módulo é permitir uma integração transparente com os serviços da SEFAZ (WebServices) de forma mais transparente possível e integrada ao framework RFW para facilitar sua utilização.
Linha 7: Linha 7:
Para atingir este objetivo o módulo fornece objetos com a estrutura de dados defina nos Schemas dos XMLs da SEFAZ. Desta forma o desenvolvedor pode abstrair toda a preocupação escrita e tratamento do XML. O módulo recebe esses objetos e faz toda a conversão e comunicação com a SEFAZ internamente.
Para atingir este objetivo o módulo fornece objetos com a estrutura de dados defina nos Schemas dos XMLs da SEFAZ. Desta forma o desenvolvedor pode abstrair toda a preocupação escrita e tratamento do XML. O módulo recebe esses objetos e faz toda a conversão e comunicação com a SEFAZ internamente.


= Objetos de Representação do XML =
== Status do Desenvolvimento ==
 
=== Métodos Implementados ===
 
* WebServices Suportados
** Homologação SP
** Produção SP
 
 
* Métodos Implementados
** consultaCadastro - Layout v2.00
** nfeAutorizacaoLote - Layout v4.00
** nfeRetAutorizacao - Layout v4.00
** nfeStatusServicoNF - Layout v4.00
 
 
=== Pendêncis da Implementação (Próximos passos e melhorias) ===
 
* Próximos Passos de Implementação:
# Implementar suporte aos demais servidores
# Implementação dos métodos restantes:
#:* nfeAutorizacaoLoteZip
 
== Objetos de Representação do XML ==


Os objetos que representam as tags do XML são criados com o JAXB a partir do Schema fornecido pela própria SEFAZ.
Os objetos que representam as tags do XML são criados com o JAXB a partir do Schema fornecido pela própria SEFAZ.
Linha 17: Linha 40:




Esses objetos de representação do XML são organizados dentro do package '''br.eng.rodrigogml.rfw.sefaz.xsdobjects''', com subpackages nomeados de acordo com o nome e versão do schema de solicitação:
= Resumo de Informações que Você Deve Saber =
 
== Estrutura das Tags da NFe ==
 
=== Definição do Documento Fiscal ===
 
* A estrutura de informações de uma NFe é inteiramente escrita dentro de uma tag '''<NFe>''', e a documentação do seu conteúdo está descrito no Anexo I do Manual de Orientações ao Contribuinte (MOC).
** Dentro dessa estrutura existem duas tags: '''<infNFe>''' e '''<Signature> que respecitivamente contém as informações do documento fiscal, e a assinatura digital dos dados dessa nota.
 
A estrutura simplificada fica assim:
<pre>
&lt;NFe&gt;
  &lt;infNFe&gt;
      [dados da NFe]
  &lt;/infNFe&gt;
  &lt;Signature&gt;
      [assinatura digital]
  &lt;/Signature&gt;
&lt;/NFe&gt;
</pre>
 
 
=== Envio da NFe para Autorização ===
 
Para solicitar a autorização da NFe no WebService da SEFAZ enviamos a tag '''&lt;NFe&gt;''' encapsulada dentro da tag '''&lt;enviNFe&gt;''', que aceita uma lista de até 50 tags '''&lt;NFe&gt;''' para autorização em Lote. Montando a seguinte estrutura:
 
<pre>
&lt;enviNFe&gt;
  &lt;NFe&gt;
      &lt;infNFe&gt;
        [dados da NFe]
      &lt;/infNFe&gt;
      &lt;Signature&gt;
        [assinatura digital]
      &lt;/Signature&gt;
  &lt;/NFe&gt;
  &lt;NFe&gt;
      &lt;infNFe&gt;
        [dados da NFe]
      &lt;/infNFe&gt;
      &lt;Signature&gt;
        [assinatura digital]
      &lt;/Signature&gt;
  &lt;/NFe&gt;
  ...
&lt;/enviNFe&gt;
</pre>
 
No método assíncrono, temos de consultar a autorização do lote com outro método do WebService, cujo retorno tem a seguinte estrutura:
 
<pre>
&lt;retConsReciNFe&gt;
  &lt;protNFe&gt;
      [protocolo de autorização da NFe]
  &lt;/protNFe&gt;
  &lt;protNFe&gt;
      [protocolo de autorização da NFe]
  &lt;/protNFe&gt;
  ...
&lt;/retConsReciNFe&gt;
</pre>
 
Note que há uma tag '''&lt;protNFe&gt;''' para cada tag '''&lt;NFe&gt;''' enviada para autorização.
 
 
=== Layout de Distribuição ===
 
Por fim, o Manual de Orientações ao Contribuinte, define o '''Layout de Distribuição'''. Este layout define como os arquivos .XML da NFe devem ser compatilhado entre as pontas. E sua estrutura, de forma simplificada, é a seguinte:
 
 
<pre>
&lt;nfeProc&gt;
  &lt;NFe&gt;
      &lt;infNFe&gt;
        [dados da NFe]
      &lt;/infNFe&gt;
      &lt;Signature&gt;
        [assinatura digital]
      &lt;/Signature&gt;
  &lt;/NFe&gt;
  &lt;protNFe&gt;
      [protocolo de autorização da NFe]
  &lt;/protNFe&gt;
&lt;/nfeProc&gt;
</pre>
 


* '''br.eng.rodrigogml.rfw.sefaz.xsdobjects.conscadv200.*''' - Objetos to serviço '''Web Service – NfeConsultaCadastro'''.
Note que o arquivo final .XML da NFe contém a tag '''&lt;NFe&gt;''' com a assinatura que foi enviada no começo para a autorização, seguida da tag '''&lt;protNFe&gt;''' que contém os dados da sua autorização.
** '''Root Solicitação:''' TConsCad
** '''Root Resposta:''' TRetConsCad
* '''br.eng.rodrigogml.rfw.sefaz.xsdobjects.envinfev400.*''' - Objetos to serviço '''Web Service – NfeAutorizacao'''.
** '''Root Solicitação:''' TEnviNFe
** '''Root Resposta:''' TRetEnviNFe

Edição atual tal como às 00h07min de 14 de fevereiro de 2025

Requisitos

Objetivo Principal

O objetivo deste módulo é permitir uma integração transparente com os serviços da SEFAZ (WebServices) de forma mais transparente possível e integrada ao framework RFW para facilitar sua utilização.


Para atingir este objetivo o módulo fornece objetos com a estrutura de dados defina nos Schemas dos XMLs da SEFAZ. Desta forma o desenvolvedor pode abstrair toda a preocupação escrita e tratamento do XML. O módulo recebe esses objetos e faz toda a conversão e comunicação com a SEFAZ internamente.

Status do Desenvolvimento

Métodos Implementados

  • WebServices Suportados
    • Homologação SP
    • Produção SP


  • Métodos Implementados
    • consultaCadastro - Layout v2.00
    • nfeAutorizacaoLote - Layout v4.00
    • nfeRetAutorizacao - Layout v4.00
    • nfeStatusServicoNF - Layout v4.00


Pendêncis da Implementação (Próximos passos e melhorias)

  • Próximos Passos de Implementação:
  1. Implementar suporte aos demais servidores
  2. Implementação dos métodos restantes:
    • nfeAutorizacaoLoteZip

Objetos de Representação do XML

Os objetos que representam as tags do XML são criados com o JAXB a partir do Schema fornecido pela própria SEFAZ.


Note 64.png
Diferenças Entre os Nomes das Tags e Classes
Quando o JAXB gera os arquivos a partir do Schema ele utiliza os nomes dos "tipos" definidos pelo Schema para batizar o objeto ao invés do nome da Tag.

Por isso é comum termos os nomes das classes precedidas com a letra "T" (embora não seja uma regra), já que a SEFAZ batiza o 'type' dentro do schema com o mesmo nome da tag precedida da letra 'T".


Resumo de Informações que Você Deve Saber

Estrutura das Tags da NFe

Definição do Documento Fiscal

  • A estrutura de informações de uma NFe é inteiramente escrita dentro de uma tag <NFe>, e a documentação do seu conteúdo está descrito no Anexo I do Manual de Orientações ao Contribuinte (MOC).
    • Dentro dessa estrutura existem duas tags: <infNFe> e <Signature> que respecitivamente contém as informações do documento fiscal, e a assinatura digital dos dados dessa nota.

A estrutura simplificada fica assim:

<NFe>
   <infNFe>
      [dados da NFe]
   </infNFe>
   <Signature>
      [assinatura digital]
   </Signature>
</NFe> 


Envio da NFe para Autorização

Para solicitar a autorização da NFe no WebService da SEFAZ enviamos a tag <NFe> encapsulada dentro da tag <enviNFe>, que aceita uma lista de até 50 tags <NFe> para autorização em Lote. Montando a seguinte estrutura:

<enviNFe>
   <NFe>
      <infNFe>
         [dados da NFe]
      </infNFe>
      <Signature>
         [assinatura digital]
      </Signature>
   </NFe> 
   <NFe>
      <infNFe>
         [dados da NFe]
      </infNFe>
      <Signature>
         [assinatura digital]
      </Signature>
   </NFe> 
   ...
</enviNFe>

No método assíncrono, temos de consultar a autorização do lote com outro método do WebService, cujo retorno tem a seguinte estrutura:

<retConsReciNFe>
   <protNFe>
      [protocolo de autorização da NFe]
   </protNFe>
   <protNFe>
      [protocolo de autorização da NFe]
   </protNFe>
   ...
</retConsReciNFe>

Note que há uma tag <protNFe> para cada tag <NFe> enviada para autorização.


Layout de Distribuição

Por fim, o Manual de Orientações ao Contribuinte, define o Layout de Distribuição. Este layout define como os arquivos .XML da NFe devem ser compatilhado entre as pontas. E sua estrutura, de forma simplificada, é a seguinte:


<nfeProc>
   <NFe>
      <infNFe>
         [dados da NFe]
      </infNFe>
      <Signature>
         [assinatura digital]
      </Signature>
   </NFe> 
   <protNFe>
      [protocolo de autorização da NFe]
   </protNFe>
</nfeProc>


Note que o arquivo final .XML da NFe contém a tag <NFe> com a assinatura que foi enviada no começo para a autorização, seguida da tag <protNFe> que contém os dados da sua autorização.