# PROC001-Imposto por CFOP no CTe

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">CTe - GerencieAqui</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
PROC001 -Imposto por CFOP no CTe</td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">Luís Leite</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">11/01/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

<span style="color: #000000;">**Este processo visa demonstrar a criação da tabela de impostos por CFOP para o CTe**</span>

##### <span style="color: #000000;">**2. Processo**</span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" style="width: 100%;" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 27%; border-style: solid; border-color: black;" width="27%"><span style="color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="width: 19%; border-style: solid; border-color: black;" width="19%"><span style="color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="width: 27%; border-style: solid; border-color: black;" width="27%"><span style="color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="width: 27%; border-style: solid; border-color: black;" width="27%"><span style="color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="width: 27%; border-style: solid; border-color: black;" width="27%"><span style="color: #000000;">PROC001-Imposto por CFOP no CTe</span>

</td><td style="width: 19%; border-style: solid; border-color: black;" width="19%"></td><td style="width: 27%; border-style: solid; border-color: black;" width="27%"><span style="color: #000000;">Regra de Impostos</span>

</td><td style="width: 27%; border-style: solid; border-color: black;" width="27%"><span style="color: #000000;">Configurações de impostos de tabela de imposto e CFOP</span>

</td></tr><tr><td style="border-style: solid; border-color: black; width: 27%;"><span style="font-size: small; color: #000000;">PROC002 - Tabela de Imposto de CTe</span>

</td><td style="border-style: solid; border-color: black; width: 19%;"><span style="font-size: small; color: #000000;"> </span>

</td><td style="border-style: solid; border-color: black; width: 27%;"><span style="font-size: small; color: #000000;">Parametrização de impostos</span>

</td><td style="border-style: solid; border-color: black; width: 27%;"><span style="font-size: small; color: #000000;">Tabela de imposto cadastrada</span>

</td></tr><tr><td style="border-style: solid; border-color: black; width: 27%;"><span style="font-size: small; color: #000000;">PROC003 - Tabela de Imposto de CTe - Reforma Tributária</span>

</td><td style="border-style: solid; border-color: black; width: 19%;"><span style="font-size: small; color: #000000;"> </span>

</td><td style="border-style: solid; border-color: black; width: 27%;"><span style="font-size: small; color: #000000;">Parametrização de impostos</span>

</td><td style="border-style: solid; border-color: black; width: 27%;"><span style="font-size: small; color: #000000;">Tabela de imposto cadastrada</span>

</td></tr></tbody></table>

#### **Processos Relacionados**

[PROC002 - Tabela de Imposto de CTe](https://docs.softensistemas.com.br/books/cte/page/proc002-tabela-de-imposto-de-cte)

[PROC003 - Tabela de Imposto de CTe - Reforma Tributária](https://docs.softensistemas.com.br/books/cte/page/proc003-tabela-de-imposto-de-cte-reforma-tributaria)

#### **Especificação Funcional**

- - - - - -

#### **PROC001-Imposto por CFOP no CTe:**

##### ***Protótipo de Tela:***

[![image-1770826756457.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-02/scaled-1680-/image-1770826756457.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-02/image-1770826756457.png)

Imagem I - Botão "Configurar CFOP" em "Documentos Fiscais"

[![image-1774459872794.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1774459872794.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1774459872794.png)

Imagem II - *Dialog* de configuração de imposto por CFOP

##### ***Descrição dos Campos:***

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px; height: 755px;"><tbody><tr style="height: 35px;" valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr style="height: 87px;"><td style="width: 168px; border-style: solid; border-color: black; height: 87px;"><span style="color: #000000;">Configurar CFOP</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 87px;"><span style="color: #000000;">Botão</span>

</td><td style="width: 88px; border-style: solid; border-color: black; height: 87px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 87px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 87px;">-

</td><td style="width: 201px; border-style: solid; border-color: black; height: 87px;"></td></tr><tr style="height: 29px;"><td class="align-center" colspan="6" style="width: 843px; border-style: solid; border-color: black; height: 29px;">Configuração de Imposto CFOP - CTe</td></tr><tr style="height: 35px;"><td style="width: 168px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">CFOP</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 35px;">Texto

</td><td style="width: 88px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">3</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 35px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 35px;">-

</td></tr><tr style="height: 35px;"><td style="width: 168px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">UF</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 35px;">Texto

</td><td style="width: 88px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">2</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;"> </span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 35px;"></td><td style="width: 201px; border-style: solid; border-color: black; height: 35px;"></td></tr><tr style="height: 57px;"><td style="width: 168px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">Tabela de Imposto</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 57px;">*Select*

</td><td style="width: 88px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">-

</td></tr><tr style="height: 57px;"><td style="width: 168px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">Tipo CFOP</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 57px;">*Select*

</td><td style="width: 88px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">-

</td></tr><tr style="height: 57px;"><td style="width: 168px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">Inserir</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">Botão</span>

</td><td style="width: 88px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">-

</td></tr><tr style="height: 35px;"><td style="width: 168px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">CFOP</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">*Column Header*</span>

</td><td style="width: 88px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">-

</td></tr><tr style="height: 57px;"><td style="width: 168px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">UF</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">*Column Header*</span>

</td><td style="width: 88px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">-

</td></tr><tr style="height: 57px;"><td style="width: 168px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">Tabela de Imposto</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">*Column Header*</span>

</td><td style="width: 88px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">-

</td></tr><tr style="height: 57px;"><td style="width: 168px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">Tipo CFOP</span>

</td><td class="align-center" style="width: 102px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">*Column Header*</span></td><td class="align-center" style="width: 88px; border-style: solid; border-color: black; height: 57px;">-</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">-

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Botão de Exclusão</span>

</td><td class="align-center" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">*Column Header*</span></td><td class="align-center" style="width: 88px; border-style: solid; border-color: black; height: 57px;">-</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">[![image-1770835066467.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-02/scaled-1680-/image-1770835066467.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-02/image-1770835066467.png)

</td></tr><tr style="height: 35px;"><td style="width: 168px; border-style: solid; border-color: black; height: 35px;">Fechar</td><td class="align-center" style="width: 102px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Botão</span></td><td class="align-center" style="width: 88px; border-style: solid; border-color: black; height: 35px;">-</td><td style="width: 165px; border-style: solid; border-color: black; height: 57px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 57px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 57px;">-

</td></tr><tr style="height: 35px;"><td style="width: 168px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Salvar</span>

</td><td style="width: 102px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Botão</span>

</td><td style="width: 88px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black; height: 35px;">-

</td><td class="align-center" style="width: 201px; border-style: solid; border-color: black; height: 35px;">-

</td></tr></tbody></table>

##### ***Regras de Interface:***

<span style="color: #000000;">***1.*** **Botão "Configurar CFOP":**  
Deve abrir a *Dialog* de configuração de Imposto CFOP - CTe.</span>

<span style="color: #000000;">***2.*** ***Dialog* "Configuração de Imposto CFOP - CTe"** (Imagem II)</span>

<span style="color: #000000;">**2.1 CFOP:** Deve conter o *Placeholder* "CFOP". Não permitir campo em branco.  
**2.2 UF:** Deve conter o *Placeholder* "UF". Não permitir campo em branco.</span>  
**<span style="color: #000000;">2.3 Tabela de Imposto</span><span style="color: #000000;">:</span>**<span style="color: #000000;"> Deve carregar todas as tabelas de impostos cadastradas na empresa.</span>**<span style="color: #000000;">  
2.4 Tipo CFOP: </span>**<span style="color: #000000;">Deve exibir as opções "Entrada" e "Saída", por padrão deve vir como "Saída".  
**2.5 Botão "Inserir":** Se for possível realizar a inserção, deve ser inserido na listagem. Caso não seja possível realizar a inserção, retornar o aviso em tela:</span>

<p class="callout danger"><span style="color: #000000;">Erro! Verifique o preenchimento dos campos.</span></p>

**<span style="color: #000000;">2.6 Listagem CFOP: </span>**<span style="color: #000000;">Deve permitir a ordenação ASC e DESC.</span>**<span style="color: #000000;">  
2.7 Listagem UF: </span>**<span style="color: #000000;">Deve permitir a ordenação ASC e DESC.</span>**<span style="color: #000000;">  
2.8 Listagem Tabela de Imposto: </span>**<span style="color: #000000;">Deve permitir a ordenação ASC e DESC.</span>**<span style="color: #000000;">  
2.9 Listagem Tipo CFOP: </span>**<span style="color: #000000;">Deve permitir a ordenação ASC e DESC.  
**2.10 Botão "Exclusão" na Listagem[![image-1770835088289.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-02/scaled-1680-/image-1770835088289.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-02/image-1770835088289.png):** Deve abrir uma tela para confirmação "Deseja excluir a regra?" Caso o usuário selecionar sim, deve realizar a exclusão do registro da listagem em tela. Caso clique em não, nada deve ocorrer.  
</span>**<span style="color: #000000;">2.11 Botão Fechar: </span>**<span style="color: #000000;">Deve encerrar a tela.</span>

##### ***Regras de Negócio:***

**<span style="color: #000000;">1</span>*****<span style="color: #000000;">.</span>*****<span style="color: #000000;">Botão "Inserir": </span>**<span style="color: #000000;">Deve validar se os campos estão preenchidos antes de realizar a inserção na listagem. Se possível inserir, deve ser feito a modificação na base de dados.  
</span>**<span style="color: #000000;">2. Botão "Exclusão" na Listagem</span>[![image-1770835088289.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-02/scaled-1680-/image-1770835088289.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-02/image-1770835088289.png)<span style="color: #000000;">: </span>**<span style="color: #000000;">Se possível, deve excluir o registro do banco.  
</span><span style="color: #000000;">**3. Aplicação automática da tabela de imposto no CT-e:** As tabelas de imposto configuradas deverão ser aplicadas automaticamente ao CT-e durante o preenchimento do documento, desde que os critérios definidos no cadastro da regra sejam atendidos.</span>  
<span style="color: #000000;">A aplicação ocorrerá quando os dados do CT-e coincidirem com os filtros previamente configurados na regra, considerando obrigatoriamente:</span>

- - <span style="color: #000000;">**CFOP** do documento</span>
    - <span style="color: #000000;">**UF de destino**</span>
    - <span style="color: #000000;">**Tipo de CFOP** (Entrada ou Saída)</span>

<span style="color: #000000;">Quando todos os filtros definidos na regra forem satisfeitos, a **tabela de imposto vinculada à configuração deverá ser aplicada automaticamente ao CT-e**, determinando os impostos correspondentes ao documento fiscal. Caso o usuário faça um **preenchimento que não corresponda aos filtros em questão**, **nenhuma tabela deve ser vinculada deixando sem preenchimento os tributos**. Retornar aviso que não há tabela de imposto que satisfaz os critérios do documento fiscal.</span>

```MarkDown
abrir novo CT-e

verificar se existem regras de imposto cadastradas para a empresa

se NÃO existir nenhuma regra:
    buscar último CT-e emitido

    se existir:
        copiar impostos do último CT-e
    senão:
        não preencher impostos automaticamente

se EXISTIR pelo menos uma regra cadastrada:
    validar regra de imposto por critérios no CTe em preenchimento
        critérios:
            empresa_id
            cfop
            uf_destino
            tipo_cfop

    se regra validar:
        aplicar tabela de imposto vinculada à regra

    senão:
        não preencher impostos automaticamente
        exibir aviso:
            "Não foi encontrada regra de imposto compatível com os critérios deste CT-e."
```

#####  

##### ***Questões Técnicas:***

***1. Criar a tabela na base de dados:***

```SQL
CREATE TABLE impostocfopcte (
  id BIGINT,
  empresaId BIGINT,
  cfop char(3),
  uf char(2),
  tbImposto BIGINT,
  tipoCfop BIGINT,
 );
```

©SOFTEN SISTEMAS 2026