Files

63 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

# Definição de Padrão para Configuração de Novos Impostos
Este documento estabelece o protocolo técnico e funcional para a introdução de novos tributos, contribuições ou retenções no Sistema Integrado de Gestão (SIGEFP), garantindo a automatização sem necessidade de refatoração de código.
## 1. Princípio da Extensibilidade
O sistema foi desenhado para suportar a adição de novas figuras tributárias desde que estas obedeçam a modelos matemáticos pré-definidos (Fixo ou Progressivo). Qualquer imposto que dependa de variáveis exógenas não previstas na entidade `Agente` ou `Tabela Salarial` requer desenvolvimento específico.
## 2. Contrato de Dados (Data Contract)
Para que um novo imposto seja reconhecido e processado automaticamente pelo Motor de Cálculo (`PayrollService`), este deve ser registado na base de dados obedecendo rigorosamente à seguinte estrutura:
### 2.1. Entidade: Tipo de Desconto (`deduction_type`)
Representa a "Categoria" do tributo.
* **Identificador (Code)**: Deve ser único, curto e em caixa alta (Ex: `TSAN`).
* **Nome (Name)**: O nome amigável que aparecerá nas abas de configuração e nos recibos de vencimento.
* **Mandatório (Mandatory)**: `TRUE` se for aplicado a todos automaticamente.
### 2.2. Entidade: Regra de Escalão (`tax_bracket`)
Define a lógica matemática. O sistema interpreta cada registo como uma regra condicional: *"Se o salário base estiver entre X e Y, aplique Z"*.
| Campo | Obrigatoriedade | Descrição Técnica |
| :--- | :--- | :--- |
| `deduction_type_id` | Obrigatório | Chave estrangeira para o Tipo de Desconto. |
| `lower_limit` | Obrigatório | Limite inferior da faixa de incidência (Inclusive). |
| `upper_limit` | Opcional | Limite superior. Se nulo, considera-se infinito. |
| `fixed_amount` | Condicional | Valor monetário fixo a descontar. Preivalece sobre percentagens. |
| `rate_percentage` | Condicional | Coeficiente decimal (Ex: 0.15 para 15%) aplicado sobre a base tributável. |
| `excess_deduction` | Opcional | "Parcela a Abater". Valor subtraído do resultado da multiplicação da taxa. |
---
## 3. Modelos Matemáticos Suportados
O motor de cálculo executa a seguinte lógica de decisão para cada escalão encontrado. Ao configurar um novo imposto, deve-se escolher **apenas um** dos modelos abaixo.
### 3.1. Modelo A: Tributação Fixa (Flat Fee)
Aplicável a taxas de valor nominal (ex: Taxa de Saneamento, Contribuição Sindical Fixa).
* **Configuração**: Preencher apenas `fixed_amount`.
* **Fórmula**: `Desconto = Valor Fixo`
### 3.2. Modelo B: Tributação Proporcional Simples (Flat Rate)
Aplicável a impostos de percentagem única ou variável por faixa, sem dedução (ex: Dízimo, Contribuições Especiais).
* **Configuração**: Preencher `rate_percentage`. Deixar `excess_deduction` e `fixed_amount` nulos.
* **Fórmula**: `Desconto = Base Tributável × Taxa`
### 3.3. Modelo C: Tributação Progressiva Completa (padrão IRPS)
Aplicável a impostos sobre rendimento com suavização de curvas.
* **Configuração**: Preencher `rate_percentage` e `excess_deduction`.
* **Fórmula**: `Desconto = (Base Tributável × Taxa) - Parcela a Abater`
---
## 4. Protocolo de Inserção (Procedimento)
Para operacionalizar um novo imposto:
1. **Definição**: Insira o registo mestre na tabela `deduction_type`.
2. **Parametrização**: Insira os N escalões necessários na tabela `tax_bracket`, cobrindo todas as faixas salariais possíveis (de 0 ao infinito).
3. **Verificação**:
* Acesse o módulo de Recursos Humanos -> Configurações -> Escalões.
* Verifique se uma nova aba com o nome do imposto foi gerada automaticamente.
* Confirme se os valores aparecem conforme inserido.
4. **Execução**: Na próxima execução da folha, o sistema iterará sobre o novo tipo e aplicará as regras aos agentes elegíveis.
**Nota Importante**: O sistema assume que a base de cálculo para novos impostos progressivos é (Salário Bruto - Segurança Social), salvo configuração específica em contrário nas Regras Globais.