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

De Wiki do Leitão
Ir para: navegação, pesquisa
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 das Tags XMLs =
= Objetos de Representação do XML =


O módulo oferece objetos o mais similar possível do layout e nomes das tags do XML, de maneira que o desenvolvedor possa consulta os manuais da própria SEFAZ e utilizar o módulo de maneira transparente.
Os objetos que representam as tags do XML são criados com o JAXB a partir do Schema fornecido pela própria SEFAZ.


Os diferenciais que precisam ser notados são:
* Para aproveitar os benefícios do [[RFWValidator]] e outras vantagens do RFW, os objetos que representam a estrutura do XML tem o sufixo "VO" e todos extends [[RFWVO]],
* Por estenderem [[RFWVO]] o atributo "id" herdado por vezes gera conflito com o atributo "id" do XML, nestes casos o "id" do XML foi representado no VO como "idAttribute",
* Para manter o padrão de nomes do Java, mesmo as tags do XML começando com letras minúsculas, as classes tem a primeira letra capitalizada.
* Nos atributos, para evitar problemas com os padrões de métodos get e set, ao menos 2 letras iniciais do atributo foram deixadas como minúsculas mesmo que no XML elas sejam minúsculas. Mas sem aumentar a letra no meio de uma palavra, por exemplo a tag "<pBCICMS>" foi convertida no atributo "pbcICMS" com os métodos getPbcICMS() e setPbcICMS().


{{nota|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.


== Validação dos Objetos ==
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".}}


Todos os objetos e atributos são descritos com as [[RFWMetaAnnotations]] isso quer dizer o [[RFWValidator]] pode ser utilizado para validar os cados e a algumas das composições do objeto. Mas para uma validação mais completa (incluindo validações cruzadas e outras descritas pelo manual) utilize a classe [[SEFAZValidator]], que já faz as validações do [[RFWValidator]].


 
Esses objetos de representação do XML são organizados dentro dos packages:
=== Exceções nas Validações ===
* '''br.eng.rodrigogml.rfw.sefaz.xsdobjects.retConsCadv200'''. Objetos to serviço '''Web Service – NfeConsultaCadastro'''.
 
**: Root Solicitação: '''TConsCad''' / Root Resposta: '''TRetConsCad'''.
* '''Todos as definições de casas decimais mínimas devem ser definidas como 0'''. Embora o layout do XML indique muitas vezes a obrigatoriedade de 2 casas (valores monetários por exemplo), é recomendado que zeros não significativos não sejam enviados. Já encontrei registros de notas fiscais com a tag a abaixo na nota aprovada de layout 4.00:
<pre>
&lt;IPITrib&gt;
  &lt;CST&gt;99&lt;/CST&gt;
  &lt;vBC&gt;0&lt;/vBC&gt;
  &lt;pIPI&gt;0&lt;/pIPI&gt;
  &lt;vIPI&gt;0&lt;/vIPI&gt;
&lt;/IPITrib&gt;
</pre>

Edição das 17h52min de 28 de agosto de 2023

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.

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".


Esses objetos de representação do XML são organizados dentro dos packages:

  • br.eng.rodrigogml.rfw.sefaz.xsdobjects.retConsCadv200. Objetos to serviço Web Service – NfeConsultaCadastro.
    • Root Solicitação: TConsCad / Root Resposta: TRetConsCad.