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

De Wiki do Leitão
Ir para: navegação, pesquisa
Linha 5: Linha 5:




Para atingir este objetivo o módulo fornece objetos com a estrutura de dados similar as descritas nos XMLs da NFe, que seguem as mesmas restrições e regras impostas. Desta forma o desenvolvedor pode abstrair toda a preocupação escrita e tratamento do XML. O módulo recebe esses objetos (Beans/POJOs) 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 das Tags XMLs =

Edição das 17h40min 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 das Tags XMLs

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 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().


Validação dos Objetos

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.


Exceções nas Validações

  • 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:
<IPITrib>
   <CST>99</CST>
   <vBC>0</vBC>
   <pIPI>0</pIPI>
   <vIPI>0</vIPI>
</IPITrib>