SPED
Detalhes sobre a geração e validação do arquivo SPED
- Informacional e Comandos - SPED
- Comandos Reg. Específicos - SPED
- Geração do Arquivo
- Validação dos Arquivos
Informacional e Comandos - SPED
O SPED é um Sistema Público de Escrituração Digital, ou seja, um sistema que tem como principal objetivo facilitar o arquivamento, o envio e a validação dos deveres tributários de uma companhia.
Este arquivo auxilia no controle e gerenciamento das questões fiscais e contábeis da empresa, ele também vai fazer um controle mais assertivo dos tributos a serem recolhidos.
O governo exige que as empresas que exercem sua função nos regimes de tributação em lucro presumido e em lucro real precisam fazer a entrega desse documento. Já as organizações inseridas do Simples Nacional são isentas da entrega.
No SIEM:
Será necessário, assim como no SINTEGRA, primeiro a correção de certas informações que estão na base de dados.
Assegure que o sistema se encontra em uma versão recente e válida para a geração.
Para que a geração seja feita sem prejudicar o cliente, retire uma cópia da base de dados atuais da máquina do cliente e, se necessário, uma cópia dos arquivos XML caso o mesmo também deseje o envio destes junto ao arquivo de SPED.
As SQL que serão utilizadas na base de dados onde será feita a geração do SPED seguem a ordem abaixo:
Alteração da CFOP para códigos de entrada:
É necessário que as notas de compra registradas na Estoque_Movimento estejam com códigos de CFOP de entrada.
A SQL abaixo faz essa mudança nos códigos mais comuns. Ela é dividida em duas partes
Primeiro sendo executado:
UPDATE Estoque_Movimento SET Estoque_Movimento.CFOP = IIf([Estoque_Movimento.CFOP]="5405","1403",IIf([Estoque_Movimento.CFOP]="5403","1403",IIf([Estoque_Movimento.CFOP]="5102","1102",IIf([Estoque_Movimento.CFOP]="5101","1101",IIf([Estoque_Movimento.CFOP]="6101","2101",IIf([Estoque_Movimento.CFOP]="6102","2102",IIf([Estoque_Movimento.CFOP]="5929","1949",IIf([Estoque_Movimento.CFOP]="6929","2949",IIf([Estoque_Movimento.CFOP]="5152","1152",IIf([Estoque_Movimento.CFOP]="5409","1409",IIf([Estoque_Movimento.CFOP]="6403","2403",IIf([Estoque_Movimento.CFOP]="5910","1910",IIf([Estoque_Movimento.CFOP]="5105","1102",IIf([Estoque_Movimento.CFOP]="6105","2101"))))))))))))))
WHERE (((Estoque_Movimento.CFOP)="5405" Or (Estoque_Movimento.CFOP)="5403" Or (Estoque_Movimento.CFOP)="5102" Or (Estoque_Movimento.CFOP)="5101" Or (Estoque_Movimento.CFOP)="6101" Or (Estoque_Movimento.CFOP)="6102" Or (Estoque_Movimento.CFOP)="5929" Or (Estoque_Movimento.CFOP)="6929" Or (Estoque_Movimento.CFOP)="5152" Or (Estoque_Movimento.CFOP)="5409" Or (Estoque_Movimento.CFOP)="6403" Or (Estoque_Movimento.CFOP)="5910" Or (Estoque_Movimento.CFOP)="5105" Or (Estoque_Movimento.CFOP)="6105"));
E em seguida:
UPDATE Estoque_Movimento SET Estoque_Movimento.CFOP = IIf([Estoque_Movimento.CFOP]="5401","1401",IIf([Estoque_Movimento.CFOP]="6401","2401",IIf([Estoque_Movimento.CFOP]="5908","1901",IIf([Estoque_Movimento.CFOP]="6106","2102",IIf([Estoque_Movimento.CFOP]="6404","2403",IIf([Estoque_Movimento.CFOP]="6910","2910"))))))
WHERE (((Estoque_Movimento.CFOP)="5401" Or (Estoque_Movimento.CFOP)="6401" Or (Estoque_Movimento.CFOP)="5908" Or (Estoque_Movimento.CFOP)="6106" Or (Estoque_Movimento.CFOP)="6404" Or (Estoque_Movimento.CFOP)="6910"));
Outros códigos que comumente são utilizados são
5.108 > 1.102
5.106 > 1.102
5.123 > 1.122
5.405 > 1.403
5.655 > 1.652
5.929 > 1.949
6.409 > 2.402
6.656 > 2.653
Caso ainda tenha dúvidas de qual código poderá ser substituído, confira a tabela de CFOP. Também poderá consultar com outros técnicos especializados na geração do arquivo.
Feito o comando de correção das CFOP, lembre-se de abrir a Estoque_Movimento e validar se não ficou nenhum código de saída nas operações de compra!
Alteração CST IPI
Assim como na CFOP, os códigos de CST do IPI, PIS e COFINS também devem representar operações de entrada.
Para a correção dos códigos de IPI, siga o comando:
UPDATE Estoque_Movimento SET Estoque_Movimento.CSTIPI = IIf([Estoque_Movimento.CSTIPI]="0","03",IIf([Estoque_Movimento.CSTIPI]="50","00",IIf([Estoque_Movimento.CSTIPI]="51","01",IIf([Estoque_Movimento.CSTIPI]="52","02",IIf([Estoque_Movimento.CSTIPI]="53","03",IIf([Estoque_Movimento.CSTIPI]="54","04",IIf([Estoque_Movimento.CSTIPI]="55","05",IIf([Estoque_Movimento.CSTIPI]="99","49"))))))))
WHERE (((Estoque_Movimento.CSTIPI)="0" Or (Estoque_Movimento.CSTIPI)="50" Or (Estoque_Movimento.CSTIPI)="51" Or (Estoque_Movimento.CSTIPI)="52" Or (Estoque_Movimento.CSTIPI)="53" Or (Estoque_Movimento.CSTIPI)="54" Or (Estoque_Movimento.CSTIPI)="55" Or (Estoque_Movimento.CSTIPI)="99"));
Comumente, os códigos alterados são os abaixo:
00 > 03
50 > 00
51 > 01
52 > 02
53 > 03
54 > 04
55 > 05
99 > 49
Sendo os valores à esquerda, saída, e na direita, entrada.
Alteração PIS e COFINS
UPDATE Estoque_Movimento SET Estoque_Movimento.CSTPIS = IIf([Estoque_Movimento.CSTPIS]="00","71",IIf([Estoque_Movimento.CSTPIS]="01","50",IIf([Estoque_Movimento.CSTPIS]="02","50",IIf([Estoque_Movimento.CSTPIS]="03","99",IIf([Estoque_Movimento.CSTPIS]="04","50",IIf([Estoque_Movimento.CSTPIS]="05","75",IIf([Estoque_Movimento.CSTPIS]="06","73",IIf([Estoque_Movimento.CSTPIS]="07","71",IIf([Estoque_Movimento.CSTPIS]="08","74",IIf([Estoque_Movimento.CSTPIS]="09","72",IIf([Estoque_Movimento.CSTPIS]="49","99"))))))))))), Estoque_Movimento.CSTCOFINS = IIf([Estoque_Movimento.CSTCOFINS]="00","71",IIf([Estoque_Movimento.CSTCOFINS]="01","50",IIf([Estoque_Movimento.CSTCOFINS]="02","50",IIf([Estoque_Movimento.CSTCOFINS]="03","99",IIf([Estoque_Movimento.CSTCOFINS]="04","50",IIf([Estoque_Movimento.CSTCOFINS]="05","75",IIf([Estoque_Movimento.CSTCOFINS]="06","73",IIf([Estoque_Movimento.CSTCOFINS]="07","71",IIf([Estoque_Movimento.CSTCOFINS]="08","74",IIf([Estoque_Movimento.CSTCOFINS]="09","72",IIf([Estoque_Movimento.CSTCOFINS]="49","99")))))))))))
WHERE (((Estoque_Movimento.CSTPIS)="00" Or (Estoque_Movimento.CSTPIS)="01" Or (Estoque_Movimento.CSTPIS)="02" Or (Estoque_Movimento.CSTPIS)="03" Or (Estoque_Movimento.CSTPIS)="04" Or (Estoque_Movimento.CSTPIS)="05" Or (Estoque_Movimento.CSTPIS)="06" Or (Estoque_Movimento.CSTPIS)="07" Or (Estoque_Movimento.CSTPIS)="08" Or (Estoque_Movimento.CSTPIS)="09" Or (Estoque_Movimento.CSTPIS)="49") AND ((Estoque_Movimento.CSTCOFINS)="00" Or (Estoque_Movimento.CSTCOFINS)="01" Or (Estoque_Movimento.CSTCOFINS)="02" Or (Estoque_Movimento.CSTCOFINS)="03" Or (Estoque_Movimento.CSTCOFINS)="04" Or (Estoque_Movimento.CSTCOFINS)="05" Or (Estoque_Movimento.CSTCOFINS)="06" Or (Estoque_Movimento.CSTCOFINS)="07" Or (Estoque_Movimento.CSTCOFINS)="08" Or (Estoque_Movimento.CSTCOFINS)="09" Or (Estoque_Movimento.CSTCOFINS)="49"));
Novamente, seguindo a mesma regra apresentada para o IPI, os códigos de PIS e COFINS geralmente utilizados nas operações de entrada são os abaixo:
00 > 71
01 > 50
02 > 50
03 > 99
04 > 50
05 > 75
06 > 73
07 > 71
08 > 74
09 > 72
49 > 99
Mudança Tipo de Estoque
Também é necessário o comando para preencher a informação de tipo de estoque valido para o SPED
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "00"
WHERE (((Estoque_Itens.TipoEstoqueSPED)="" Or (Estoque_Itens.TipoEstoqueSPED) Is Null));
NCM com menos de 8 dígitos
E para a correção da quantidade de caracteres no NCM
UPDATE Estoque_Itens SET Estoque_Itens.NCM = "00000000"
WHERE (((Len([Estoque_Itens]![NCM]))<>8));
Ajustar IE com dígitos faltantes: MG
Para ajustar o cadastro de clientes PJ que sejam de Minas Gerais e os quais a IE está com dígitos faltantes.
UPDATE (Cad_Estado INNER JOIN Cad_Cidade ON Cad_Estado.Código = Cad_Cidade.Região) INNER JOIN Cad_Cliente ON Cad_Cidade.Código = Cad_Cliente.Cidade SET Cad_Cliente.RG = "00" & [Cad_Cliente]![RG]
WHERE (((Cad_Cliente.RG) Is Not Null And (Cad_Cliente.RG)<>"ISENTO") AND ((Cad_Estado.Estado)="MG") AND ((Cad_Cliente.TPessoa)=2) AND ((Len([Cad_Cliente]![RG]))=11));
Ajustar IE com dígitos faltantes: ES
Para ajustar o cadastro de clientes PJ que sejam do Espirito Santo e os quais a IE está com dígitos faltantes.
UPDATE Cad_Estado INNER JOIN (Cad_Cidade INNER JOIN Cad_Cliente ON Cad_Cidade.Código = Cad_Cliente.Cidade) ON Cad_Estado.Código = Cad_Cidade.Região SET Cad_Cliente.RG = "0" & [Cad_Cliente]![RG]
WHERE (((Cad_Cliente.RG) Is Not Null And (Cad_Cliente.RG)<>"ISENTO") AND ((Cad_Estado.Estado)="ES") AND ((Cad_Cliente.TPessoa)=2) AND ((Len([Cad_Cliente]![RG]))=8));
Ajustar IE com dígitos faltantes: RS
Para ajustar o cadastro de clientes PJ que sejam do Rio Grande do Sul e os quais a IE está com dígitos faltantes.
UPDATE Cad_Estado INNER JOIN (Cad_Cidade INNER JOIN Cad_Cliente ON Cad_Cidade.Código = Cad_Cliente.Cidade) ON Cad_Estado.Código = Cad_Cidade.Região SET Cad_Cliente.RG = "0" & [Cad_Cliente]![RG]
WHERE (((Cad_Cliente.RG) Is Not Null And (Cad_Cliente.RG)<>"ISENTO") AND ((Cad_Estado.Estado)="RS") AND ((Cad_Cliente.TPessoa)=2) AND ((Len([Cad_Cliente]![RG]))=9));
Bloco K
O bloco K é a versão digital em substituição ao Livro Registro de Controle de Produção e Estoque.
Ele tem o objetivo de prestar informações mensais da produção e respectivo consumo de insumos, bem como do estoque escriturado, com obrigatoriedade para os estabelecimentos industriais ou a eles equiparados pela legislação federal. Além disso, para os estabelecimentos atacadistas, podendo, a critério do Fisco, ser exigida de estabelecimento de contribuintes de outros setores
Caso o cliente precise do bloco K, realize os seguintes comandos:
Na Estoque_Itens é preciso marcar todas as linhas na coluna SPED_ProdFinal.
Os comandos abaixo fazem o preenchimento de acordo com a marcação do tipo de estoque do item:
UPDATE Estoque_Itens SET Estoque_Itens.SPED_ProdFInal = 1;
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "00"
WHERE (((Estoque_Itens.Mercadoria)=True));
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "01"
WHERE (((Estoque_Itens.Materia_Prima)=True));
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "04"
WHERE (((Estoque_Itens.Produto)=True));
Também será necessário entrar no SIEM e habilitar as Config. II:
- SPED: OMITIR REG ORDEM PRODUCAO (K200)
- SPED: K230 SOMENTE PRODUTO FINAL SEM ORDEM PRODUCAO
Com o valor 1 - Sim.
Bloco H
O Bloco H é um dos registros transmitido como um dos módulos da EFD, sendo o registro destinado a informar para a Receita Federal tudo sobre o inventário físico das empresas.
Se for realizada a geração do arquivo com o Bloco H, realize o comando abaixo
Inserir o mesmo código do produto na coluna SPEDContaContabil
UPDATE Estoque_Itens SET Estoque_Itens.SPEDContaContabil = [Estoque_Itens]![Código]
WHERE (((Estoque_Itens.SPEDContaContabil)="" Or (Estoque_Itens.SPEDContaContabil) Is Null));
Comandos Reg. Específicos - SPED
Para a correção de alguns registros e blocos específicos no SPED é necessário realizar certos comandos dentro da base de dados para observar dados.
Abaixo estarão linhas de comandos para ajudar na visualização dessas informações para preenchimento adequado no arquivo de remessa.
E520 - Apuração de IPI
A apuração dos valores de IPI precisa, assim como a maioria dos campos, dos dados fiscais das operações de entrada e saída.
Utilize a SQL abaixo na base de dados para obter os valores respectivos e data.
- IPI SAÍDA
SELECT Faturamento_NotaFiscal_movimento.CFOP_ITEM, Faturamento_NotaFiscal_movimento.TIPO_IPI, Sum(Faturamento_NotaFiscal_movimento.Valor_Total) AS SomaDeValor_Total, Sum(Faturamento_NotaFiscal_movimento.VL_BC_IPI) AS SomaDeVL_BC_IPI, Sum(Faturamento_NotaFiscal_movimento.VL_IPI) AS SomaDeVL_IPI
FROM Faturamento_NotaFiscal INNER JOIN Faturamento_NotaFiscal_movimento ON Faturamento_NotaFiscal.Código = Faturamento_NotaFiscal_movimento.NotaFiscal
GROUP BY Faturamento_NotaFiscal_movimento.CFOP_ITEM, Faturamento_NotaFiscal_movimento.TIPO_IPI, Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao]), Faturamento_NotaFiscal.Cancelado, Faturamento_NotaFiscal.NFe_stAutorizado
HAVING (((Sum(Faturamento_NotaFiscal_movimento.VL_IPI))>0) AND ((Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao]))="1/2024") AND ((Faturamento_NotaFiscal.Cancelado)=False) AND ((Faturamento_NotaFiscal.NFe_stAutorizado)=True));
- IPI ENTRADA
SELECT Estoque_Movimento.CFOP, Estoque_Movimento.CSTIPI, Sum(Estoque_Movimento.Valor_Total) AS SomaDeValor_Total, Sum(Estoque_Movimento.vBCIPI) AS SomaDevBCIPI, Sum(Estoque_Movimento.vlIPI) AS SomaDevlIPI
FROM Estoque_Movimento
GROUP BY Estoque_Movimento.CFOP, Estoque_Movimento.CSTIPI, Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data])
HAVING (((Sum(Estoque_Movimento.vlIPI))>0) AND ((Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data]))="1/2024"));
Não se esqueça de ajustar a data para a referente ao mês de apuração do arquivo dentro da SQL ou no Modo Design da consulta.
O preenchimento dos valores apresentados na SQL devem ser preenchidos no Registro E510 e a somatória dos valores no E520.
E200 - Apuração ICMS ST
ICMS ST Saída
SELECT IIf([Cad_Estado]![Código]=[Cad_Estado_1]![Código],"ESTADUAL","INTERESTADUAL") AS OPERAÇÃO, Sum(Faturamento_NotaFiscal_movimento.VL_ICMS_SUB) AS SomaDeVL_ICMS_SUB, Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao]) AS MÊS
FROM (((Cad_Cidade INNER JOIN (Cd_Empresa INNER JOIN (Cad_Cliente INNER JOIN (Faturamento_NotaFiscal INNER JOIN Faturamento_NotaFiscal_movimento ON Faturamento_NotaFiscal.Código = Faturamento_NotaFiscal_movimento.NotaFiscal) ON Cad_Cliente.Código = Faturamento_NotaFiscal.Cliente) ON Cd_Empresa.Código = Faturamento_NotaFiscal.Empresa) ON Cad_Cidade.Código = Cd_Empresa.Cidade) INNER JOIN Cad_Cidade AS Cad_Cidade_1 ON Cad_Cliente.Cidade = Cad_Cidade_1.Código) INNER JOIN Cad_Estado ON Cad_Cidade.Região = Cad_Estado.Código) INNER JOIN Cad_Estado AS Cad_Estado_1 ON Cad_Cidade_1.Região = Cad_Estado_1.Código
GROUP BY IIf([Cad_Estado]![Código]=[Cad_Estado_1]![Código],"ESTADUAL","INTERESTADUAL"), Faturamento_NotaFiscal.Cancelado, Faturamento_NotaFiscal.NFe_stAutorizado, Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao])
HAVING (((Faturamento_NotaFiscal.Cancelado)=False) AND ((Faturamento_NotaFiscal.NFe_stAutorizado)=True) AND ((Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao]))="6/2022"))
ORDER BY IIf([Cad_Estado]![Código]=[Cad_Estado_1]![Código],"ESTADUAL","INTERESTADUAL");
ICMS ST Entrada
SELECT Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data]) AS MÊS, Sum(Estoque_Movimento.vlST) AS SomaDevlST
FROM Estoque_Movimento
GROUP BY Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data])
HAVING (((Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data]))="6/2022"));
Geração do Arquivo
Para a geração do arquivo de SPED no SIEM, é preciso que o módulo esteja habilitado para o cliente.
Ele pode ser localizado na aba Fiscal
Antes da geração do arquivo, é preciso que as informações da empresa e do contador estejam preenchidas de acordo.
Por isso, selecione em Outros Lançamentos a opção Dados da Empresa e confira se os dados estão de acordo:
Todos os campos devem estar preenchidos, com exceção dos campos de endereço quando não existem.
Exemplo: Complemento
Feita a conferência de dados da empresa, confira o Período de Apuração.
O mesmo deve indicar o mês a qual será gerado o SPED, e após usar da função Exibir, os registros de entrada e saída serão exibidos.
Basta usar agora a opção Gerar arquivo EFD para o próximo passo
Aqui deve ser informado o tipo de SPED a ser gerado.
Caso não contenha Bloco H e nem Bloco K, a opção Inventário deve permanecer como "NÃO GERAR REGISTRO"
Se é preciso ter as informações desses blocos, utilize a opção "FINAL DE PERIODO" e em Dt.Estoque preencha com o ultimo dia do mês de apuração.
O arquivo gerado será encaminhado para uma pasta de nome SPED em seu Disco C
Validação dos Arquivos
Para fazer a validação do arquivo de SPED é necessário algumas ferramentas fornecidas pelo próprio governo.
Sendo os principais o EFD ICMS IPI (Escrituração Fiscal Digital) e o EFD Contribuições que farão a validação principal do arquivo.
Algumas outras ferramentas vão auxiliar na edição e correção do mesmo em diferentes situações, são eles:
- PRN - Edite
- NotePad++
Caso não tenha nenhum deles instalado em seu computador, poderá obter uma cópia no link AQUI
EFD ICMS/IPI
Para a validação do arquivo de ICMS, após a geração do mesmo pelo SIEM, abra o aplicativo da Escrituração Digital e use a função Importar Escrituração Fiscal
Uma nova tela será aberta para a importação do arquivo.
Por padrão, o sistema era fazer a geração deles no Disco C:\ do computador, na pasta SPED.
Basta selecionar o arquivo desejado para a geração da escrituração e abrir.
Aqui já será feita a primeira validação de conteúdo caso confirme o aviso.
Se alguma informação diferente for exibida nessa tela, dizendo que "não foi possível fazer a importação do arquivo", provavelmente há um erro na estrutura.
Isso pode ser causado por preenchimento incorreto nos Dados da Empresa (Contabilidade) ou por ter esquecido alguma operação de importação.
Uma tela de erro será exibida mostrando oque precisa ser corrigido antes da importação.
Após a validação do arquivo, se ainda houverem correções necessárias no arquivo, a mensagem de erro irá aparecer:
A tela de Pendências seguirá a mensagem com a contagem de erros e as informações da empresa emitente.
Marque a caixa de ERROS localizado no topo da tela e a opção EXIBIR ao lado para começar as correções.
Boa parte dos erros vindos no arquivo de SPED são ajustados com as SQL informadas nos passos anteriores.
Certifique-se de ter passado por todas elas!
A resolução dos erros mais comuns será abordado em outra documentação!
Feito a correção dos erros, use a função de validação para conferir os dados.
Em alguns casos uma mensagem de avisos pode constar após esse passo
Porém a mesma é usada para notificar de que há Advertências, apenas avisos, e não influenciam a validação do arquivo.
Se não houver mais erros, a caixa ERROS ficará apagada. Isso indica que o Arquivo de Entrega está pronto para ser gerado
Basta selecionar a opção de Gerar arquivo de Escrituração para Entrega ou então fazer o caminho abaixo
Ou
Pronto!
Basta selecionar onde irá fazer o salvamento do arquivo e encaminhar para o cliente.