Estrutura de Classes
SPEDFiscalFile e SPEDContribFile
As classes SPEDFiscalFile
e SPEDContribFile
são a base da escrutura do arquivo de SPED Fiscal
e SPED Contribuições
, respectivamente. Elas representam o próprio arquivo, e sua estrutura interna os dados dos arquivos.
Para começar a montar um arquivo de SPED é necessário instanciar um desses objetos.
SPEDRegister
SPEDRegister
é uma classe abstrata utilizada representa de forma genérica um registro de qualquer um dos arquivos SPED.- Para cada registro dos arquivos do SPED, uma nova classe deve ser implementada, extendendo esta classe, como explicado a seguir no capítulo SPEDFiscalXXX e SPEDContribXXX
Organização Interna da Classe
Internamente
Métodos
Esta classe abstrata representa um registro de qualquer um dos SPED e tem métodos gerais comuns a todos os registros:
- 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;
Também têm os seguintes métodos abstratos que precisam ser implementados para cada registro individualmente:
- get01_Register() que deve retornar o nome código do registro (que, por via de regra, deve ser o sufixo da classe), por exemplo: "C800", conforme definido para o campo 01 do registro no manual do SPED;
- calculateFields() Este método tem a finalidade de calcular todos os campos que são "calculáveis" a partir de outros, e que, por consequência, não precisam ser completados ou informados manualmente na criação do registro. Por exmeplo, registros acumuladores de valores de 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;
- 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.
![]() |
|
- updateCloseRegistersLineCount() este método cria/atualiza os registros finals (?990) que deve conter a quantidade de registros de cada bloco.