Mudanças entre as edições de "Requisitos RFW.SEFAZ"
Linha 5: | Linha 5: | ||
Para atingir este objetivo o módulo fornece objetos com a estrutura de dados | 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>