Estrutura de Classes

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

SPEDFiscalFile e SPEDContribFile

As classes SPEDFiscalFile e SPEDContribFile são a base da escrutura do arquivo de SPED Fiscal e SPED Contribuições.


Para começar a montar um arquivo de SPED é necessário instanciar um desses objetos.


SPEDRegister

Esta classe abstrata representa um registro de qualquer um dos SPED e tem as segintes métodos:

  • writeFileRegister() que é capaz de escrever o conteúdo do registro e de seus filhos recursivamente no formato do arquivo do SPED;
  • countRegister() que retorna o total de registros que é gerado por este registro e seus registros filhos;


Além disso, é importante entender as seguintes características dessa classe para entender seu funcionamento:

  • os atributos das classes filhas devem começar com o prefixo rXX_ onde XX é o número da ordem do atributo, pois esse prefixo é utilizado para ordernar os valores dos atributos no momento de escrever o arquivo final;
  • o primeiro registro já é definido na classe pai pelo método abstrato get01_Register(), que deve ser sobrescrito pela classe filha e retornar o nome código do registro (que, por via de regra, deve ser o sufixo da classe);
  • os atributos devem receber a annotation SPEDField que permite definir o tipo do dado que é esperado pelo campo do SPED, permitindo que os valores já sejam validados de forma genérica pelo módulo.


SPEDFiscalXXX e SPEDContribXXX

As classes SPEDFiscalFile e SPEDContribFile são compostas por uma estrutura de classes que extendem SPEDRegister. Essas classes mantêm os prefixos SPEDFiscal e SPEDContrib seguidos do nome do registro correpondente.

Por exemplo: SPEDFiscalC800 representa o registro C800 do arquivo do SPED Fiscal.

Dentro de cada casse que representa um registro existem atributos para receber os valores dos campos desse registro, além de uma lista, hash ou referência para eventuais registros filhos que o registro possa ter.

SPEDFiscalBuilder e SPEDContribBuilder

Essas classes são classes utilitárias de métodos estáticos para facilitar a tarefa de montar e manipular os arquivos de SPED e seus registros. Nesta classe são disponiblizados vários métodos utilitádios, alguns, são caracterizados pelos seus prefixos, veja:

  • add[Registro]() - os métodos add tem a finalidade de adicionar um determinado registro dentro da estrutura do SPED. Os argumentos solicitados dependem da necessidade de cada registro e podem haver mais de uma opção para a criação de um mesmo registro. Os detalhes de cada método estarão escritos no seu javadoc.
    Note que na especificação do SPED há registros que são únicos, outros tem um relacionamento 1
    N (que podem ou não ser únicos de acordo com uma chave). O método add criará o registro na estrutura se ele ainda não existir, porém, se for único duas ações podem ocorrer: os dados do registro atual serem substituídos, ou para registros que tem valores que se acumulam (como totais de venda agrupados por CFOP) o método add poderá acumular os valores automaticamente (somando o valor recebido com o valor já existente no campo). Verifique o javadoc de cada método para mais detalhes sobre seu funcionamento.
  • updateCloseRegistersLineCount() este método cria/atualiza os registros finals (?990) que deve conter a quantidade de registros de cada bloco.