# 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.

<p class="callout info">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.</p>

- - - - - -

##### **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:

```SQL
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:

```SQL
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 &gt; 1.102  
5.106 &gt; 1.102  
5.123 &gt; 1.122  
5.405 &gt; 1.403  
5.655 &gt; 1.652  
5.929 &gt; 1.949  
6.409 &gt; 2.402  
6.656 &gt; 2.653

Caso ainda tenha dúvidas de qual código poderá ser substituído, confira a [tabela de CFOP](https://www.sefaz.pe.gov.br/Legislacao/Tributaria/Documents/Legislacao/Tabelas/CFOP.htm#Sa%C3%ADdas_Outros_Estados_6000). Também poderá consultar com outros técnicos especializados na geração do arquivo.

<p class="callout info">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!</p>

**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:

```SQL
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 &gt; 03  
50 &gt; 00  
51 &gt; 01  
52 &gt; 02  
53 &gt; 03  
54 &gt; 04  
55 &gt; 05  
99 &gt; 49

Sendo os valores à esquerda, saída, e na direita, entrada.

**Alteração PIS e COFINS**

```SQL
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 &gt; 71  
01 &gt; 50  
02 &gt; 50  
03 &gt; 99  
04 &gt; 50  
05 &gt; 75  
06 &gt; 73  
07 &gt; 71  
08 &gt; 74  
09 &gt; 72  
49 &gt; 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

```SQL
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

```SQL
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.

```sql
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.

```sql
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.

```SQL
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:

```SQL
UPDATE Estoque_Itens SET Estoque_Itens.SPED_ProdFInal = 1;
```

```sql
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "00"
WHERE (((Estoque_Itens.Mercadoria)=True));
```

```SQL
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "01"
WHERE (((Estoque_Itens.Materia_Prima)=True));
```

```sql
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**

```SQL
UPDATE Estoque_Itens SET Estoque_Itens.SPEDContaContabil = [Estoque_Itens]![Código]
WHERE (((Estoque_Itens.SPEDContaContabil)="" Or (Estoque_Itens.SPEDContaContabil) Is Null));
```