# Escopo técnico — Calculadora da Reforma Tributária

**Versão:** 1.0  
**Data:** 2026-06-30  
**Cliente-alvo:** Escritórios contábeis do agro (referência: Lagoa Bonita Sementes — multi-filial SP/PR/MG/RS)  
**Base:** EC 132/2023 · LC 214/2025 · cronograma de transição CBS/IBS  

---

## 1. Objetivo do produto

Ferramenta para **simular o impacto da Reforma Tributária (CBS + IBS)** a partir de dados reais do **SPED**, classificando operações/produtos por **origem** (nacional, importado, exportação) e permitindo **imputar alíquotas** de transição.

### O que É

- Calculadora comparativa: **regime atual × pós-reforma**
- Análise de produtos/operações extraídos dos blocos **A, C e D** do SPED
- Simulação de cenários (Simples na lógica da reforma, alíquotas CBS/IBS editáveis)
- Multi-filial e multi-período (escritório contábil)

### O que NÃO É (escopo explícito do cliente)

- **Revisão de cadastro fiscal** (reenquadramento de NCM/CST)
- Substituto de Domínio, SCI, Fortes ou apuração oficial
- Simulador genérico estilo IOB (IRPJ completo, folha, etc.)

---

## 2. Situação atual vs. alvo

| Capacidade | Hoje | Alvo |
|---|---|---|
| Import SPED `.txt` | EFD ICMS/IPI + PIS/COFINS parcial | Blocos A, C, D completos |
| Produto (NCM, COD_ITEM) | NCM não preenchido no parser C170 | Registro 0200 + C170 |
| Origem nacional/importado | Não | CFOP + CST + 0200 |
| CBS / IBS | Não | Sim, com cronograma |
| Comparativo atual × reforma | Não | Sim |
| Simples (reforma) | Campo fixo % | Cenário simplificado reforma |
| Multi-filial | Sim (por CNPJ) | Consolidado grupo |

**Reaproveitamento:** `SpedImportProcessor`, `SpedDocItem`, cadastro `Pessoa`, multi-tenant, telas de simulação existentes.

---

## 3. Arquitetura proposta

```
┌─────────────────────────────────────────────────────────────┐
│  UI: Calculadora Reforma (nova área ou evolução Simulação)  │
├─────────────────────────────────────────────────────────────┤
│  ReformaSimulacaoController                                 │
│    · create / upload SPED                                   │
│    · parametros CBS/IBS                                     │
│    · calcular / comparar                                    │
├─────────────────────────────────────────────────────────────┤
│  Services                                                   │
│    SpedReformaParser        ← blocos A, C, D + 0200         │
│    ProdutoOrigemClassifier  ← nacional / importado / exp.   │
│    ReformaCalculoService    ← CBS + IBS + legado            │
│    ReformaTransicaoConfig   ← alíquotas por ano 2026-2033   │
├─────────────────────────────────────────────────────────────┤
│  Models / tabelas novas                                     │
│    reforma_simulacao                                        │
│    reforma_produto_item       ← produto agregado por origem  │
│    reforma_parametro          ← CBS/IBS imputados           │
│    reforma_resultado          ← comparativo por tributo     │
│    sped_reg_0200              ← cadastro itens SPED         │
└─────────────────────────────────────────────────────────────┘
```

---

## 4. Blocos SPED — o que importar

### 4.1 Bloco C — EFD ICMS/IPI (Fiscal)

**Arquivo:** `*SPED-EFD.txt` · **Prioridade:** P0

| Registro | Uso na calculadora |
|---|---|
| **0000** | CNPJ, UF, período, razão social |
| **0150** | Participantes (fornecedor/cliente) |
| **0200** | **Cadastro produto:** COD_ITEM, DESCR, **NCM**, CEST, UNID |
| **C100** | Documento (NF): operação, valores totais, chave |
| **C170** | **Item:** COD_ITEM, CFOP, CST_ICMS, valor, bases ICMS/IPI/PIS/COFINS |
| **C190** | Consolidado CFOP/CST (fallback quando sem C170) |

**Classificação origem (bloco C):**

| Situação | Regra |
|---|---|
| **Nacional** | CFOP 1xxx/2xxx/5xxx/6xxx (exceto export.) + CST origem 0,3,4,5,8 |
| **Importado** | CFOP 3xxx (entrada exterior) ou CST origem 1,2,6,7 |
| **Exportação** | CFOP 7xxx (ex.: **6101** — presente nos SPEDs Lagoa Bonita) |
| **Produção própria** | CFOP **1556** (venda produção estab.) — perfil sementes |

> Origem ICMS: 1º dígito do CST_ICMS no C170 (campo `cst_icms`).

### 4.2 Bloco A — EFD Contribuições (PIS/COFINS)

**Arquivo:** `PISCOFINS_*.txt` · **Prioridade:** P0 (matriz) / P1 (filiais)

| Registro | Uso |
|---|---|
| **0000** | Período, CNPJ |
| **A100** | NF serviço (quando houver) |
| **C100/C170** | Mercadorias no PIS/COFINS |
| **F100** | Outras operações/despesas |
| **M200/M210** | Apuração PIS (validação cruzada) |
| **M400/M410** | Receitas isentas/alíq. zero |
| **M600/M610** | Apuração COFINS |

**Uso:** base para **CBS** (substituto PIS/COFINS) e créditos federais atuais.

### 4.3 Bloco D — Serviços (ISS)

**Arquivo:** `*SPED-EFD.txt` · **Prioridade:** P1

| Registro | Uso |
|---|---|
| **D100** | NF serviço transporte/comunicação |
| **D500** | NF serviço (modelo 06/21/22) |
| **D590** | Consolidado |

**Uso:** base para **IBS municipal** (substituto ISS) na reforma.

---

## 5. Regras de negócio — classificação de produtos

### 5.1 Entidade `reforma_produto_item`

Agregação por: `COD_ITEM` + `NCM` + `origem_classificada` + `CFOP_grupo`

```
origem_classificada ENUM:
  - producao_propria    (1556, 1551…)
  - nacional
  - importado
  - exportacao          (6101, 7101…)
  - servico
  - indefinido          (revisão manual)
```

### 5.2 Algoritmo `ProdutoOrigemClassifier`

```
1. Se CFOP in 7xxx → exportacao
2. Se CFOP in 3xxx → importado
3. Se CFOP in 1556, 1551 (saída produção) → producao_propria
4. Se CST_ICMS[0] in (1,2,6,7) → importado
5. Se CST_ICMS[0] in (0,3,4,5,8) → nacional
6. Senão → indefinido (flag na UI)
```

**Importante:** classificar **operação**, não revalidar NCM (conforme cliente).

### 5.3 Dados agro — Lagoa Bonita (validado nos SPEDs)

| CFOP | % linhas | Papel |
|---|---|---|
| 1556 | ~45% | Venda produção (sementes) |
| 2101/1101 | ~15% | Compras industrialização |
| 2152 | ~15% | Compras interestaduais |
| 6101 | ~1% | Exportação |
| 1653/192x | ~8% | Devoluções/ajustes |

---

## 6. Motor de cálculo — Reforma

### 6.1 Tributos simulados

| Tributo | Regime atual | Pós-reforma |
|---|---|---|
| ICMS | Bloco C | **IBS UF** (parte estadual) |
| ISS | Bloco D / A100 | **IBS Mun.** (parte municipal) |
| PIS + COFINS | Bloco A | **CBS** |
| IPI | Bloco C | Mantido até regulamentação (fase inicial) |

### 6.2 Parâmetros imputáveis (`reforma_parametro`)

| Parâmetro | Default | Fonte |
|---|---|---|
| `ano_cenario` | 2026 | Cronograma LC 214 |
| `aliq_cbs` | conforme ano | Usuário pode sobrescrever |
| `aliq_ibs_uf` | conforme UF | Usuário pode sobrescrever |
| `aliq_ibs_mun` | conforme município | Usuário pode sobrescrever |
| `fator_transicao_cbs` | % substituição PIS/COFINS | Tabela por ano |
| `fator_transicao_ibs` | % substituição ICMS/ISS | Tabela por ano |
| `regime_empresa` | lucro_real | Simples = cenário alternativo |

### 6.3 Cronograma de transição (configurável)

| Ano | CBS (referência) | IBS (referência) | Observação |
|---|---|---|---|
| 2026 | 0,9% (teste) | 0,1% (teste) | Fase teste |
| 2027-2028 | escalonamento | escalonamento | Ajustar conforme regulamentação |
| 2029+ | alíquota plena | alíquota plena | Parametrizável em `ReformaTransicaoConfig` |

> Valores exatos em arquivo PHP/JSON editável — **não hardcoded** sem possibilidade de atualização.

### 6.4 Fórmula simplificada (v1)

**Regime atual (por item):**
```
debito_icms  = base × aliq_icms
debito_pis   = base × aliq_pis
debito_cofins= base × aliq_cofins
debito_iss   = base_servico × aliq_iss
credito_*    = conforme SPED (bloco A/C)
```

**Pós-reforma (por item):**
```
debito_cbs = base_federal × aliq_cbs × fator_transicao_cbs
debito_ibs = base × (aliq_ibs_uf + aliq_ibs_mun) × fator_transicao_ibs
```

**Comparativo:**
```
impacto = total_reforma - total_atual
impacto_pct = impacto / total_atual × 100
```

### 6.5 Cenário Simples (reforma)

- Não implementar tabelas completas Anexo I–V na v1
- Simular **DAS unificado** pós-reforma (CBS+IBS embutidos) vs. carga atual
- Entrada: `receita_bruta_12m` (manual ou soma SPED 12 meses)
- Saída: comparativo simplificado (indicativo, não apuração)

---

## 7. Telas (UI)

### 7.1 Fluxo principal

```
[Nova Análise Reforma]
    ↓ upload SPED (Fiscal + PIS/COFINS)
[Pré-visualização]
    · CNPJ, período, filial detectada
    · Qtd produtos, % nacional/importado/exportação
    ↓
[Produtos identificados]  ← tabela editável só flags, NÃO edita NCM
    · COD_ITEM | Descrição | NCM | CFOP | Origem | Valor | [corrigir origem ▼]
    ↓
[Parâmetros CBS/IBS]
    · Ano cenário (2026–2033)
    · Alíquotas CBS, IBS UF, IBS Mun. (%)
    · Regime: LR / LP / Simples (reforma)
    ↓
[Resultado comparativo]
    · Tabela: Tributo | Atual | Reforma | Diferença
    · Gráfico barras (opcional v1.1)
    · Export PDF/Excel (v1.1)
    ↓
[Consolidado grupo]  ← se multi-filial
    · SP + PR + MG + RS
```

### 7.2 Integração com simulador existente

- Menu: **Simulações** → aba **Reforma Tributária** (ou módulo separado)
- Simulação atual (ICMS/PIS/COFINS legado) **permanece** — reforma é camada nova
- Botão na edição: *"Analisar impacto da reforma"* (usa SPED já importado)

### 7.3 Wireframe textual — Resultado

| Tributo | Débito atual | Crédito atual | Líquido atual | CBS/IBS reforma | Diferença |
|---|---|---|---|---|---|
| ICMS → IBS UF | R$ X | R$ Y | R$ Z | R$ W | ±R$ |
| PIS+COFINS → CBS | … | … | … | … | … |
| ISS → IBS Mun. | … | … | … | … | … |
| **TOTAL** | | | **R$ A** | **R$ B** | **±R$ C (±%)** |

---

## 8. Modelo de dados (migrations)

### 8.1 `reforma_simulacao`

```sql
idreforma PK
idtenant, idpessoa, idsimulacao NULL  -- vínculo opcional simulação legado
cnpj, uf, periodo (YYYY-MM)
tipo_sped ENUM('EFD_ICMSIPI','EFD_CONTRIB','MISTO')
status ENUM('rascunho','calculado')
created_at, updated_at
```

### 8.2 `sped_reg_0200`

```sql
id PK, idimport FK
cod_item, descr_item, ncm, cest, unid_inv
idtenant
UNIQUE(idimport, cod_item)
```

### 8.3 `reforma_produto_item`

```sql
id PK, idreforma FK
cod_item, descr, ncm
cfop_principal, origem_classificada ENUM(...)
valor_operacao DECIMAL(18,2)
base_icms, base_pis, base_cofins
qtd_operacoes INT
origem_fonte ENUM('sped_auto','usuario')  -- usuário só corrige origem, não NCM
idtenant
```

### 8.4 `reforma_parametro`

```sql
idreforma FK (1:1)
ano_cenario INT
aliq_cbs, aliq_ibs_uf, aliq_ibs_mun DECIMAL(7,4)
fator_transicao_cbs, fator_transicao_ibs DECIMAL(7,4)
regime ENUM('lucro_real','lucro_presumido','simples_reforma')
receita_bruta_12m NULL  -- para cenário Simples
```

### 8.5 `reforma_resultado`

```sql
idreforma FK
tributo VARCHAR(20)   -- ICMS, PIS, COFINS, ISS, CBS, IBS_UF, IBS_MUN, TOTAL
regime ENUM('atual','reforma')
debito, credito, liquido DECIMAL(18,2)
detalhes JSON NULL
```

---

## 9. Rotas e API

```php
// routes/web.php — prefix admin/reforma
GET    /reforma                          → index (lista análises)
GET    /reforma/create                   → create
POST   /reforma                          → store (upload SPED)
GET    /reforma/{id}                     → show (wizard)
POST   /reforma/{id}/preview-sped        → preview JSON
PATCH  /reforma/{id}/produtos            → corrigir origem (não NCM)
PATCH  /reforma/{id}/parametros          → salvar CBS/IBS
POST   /reforma/{id}/calcular            → executar comparativo
GET    /reforma/{id}/export              → Excel (v1.1)
GET    /reforma/grupo/{idpessoa}         → consolidado multi-filial
```

---

## 10. Serviços — especificação

### 10.1 `SpedReformaParser` (evolução `SpedTxtParser`)

- [ ] Parser registro **0200** → `sped_reg_0200`
- [ ] C170: preencher `cod_prod`, `ncm` (via 0200), `cst_icms`
- [ ] Marcar `aba_origem`: `C`, `A`, `D`
- [ ] Suportar EFD Contribuições bloco A completo

### 10.2 `ProdutoOrigemClassifier`

- [ ] Método `classificar(SpedDocItem $item): string`
- [ ] Método `agregarPorProduto(Collection $itens): Collection`

### 10.3 `ReformaTransicaoConfig`

- [ ] `getAliquotas(int $ano, string $uf, ?string $ibge): array`
- [ ] Arquivo config: `config/reforma_tributaria.php`

### 10.4 `ReformaCalculoService`

- [ ] `calcularAtual(ReformaSimulacao $sim): array`
- [ ] `calcularReforma(ReformaSimulacao $sim): array`
- [ ] `comparar(array $atual, array $reforma): array`

---

## 11. Fases de entrega

### Fase 1 — Fundação SPED (3–4 semanas)

| # | Entrega | Critério de aceite |
|---|---|---|
| 1.1 | Parser 0200 + NCM no C170 | NCM preenchido nos itens Lagoa Bonita |
| 1.2 | Parser bloco D (D100/D500) | Serviços extraídos do EFD |
| 1.3 | Import PIS/COFINS bloco A integrado | Matriz SP: A100+C170+F100+M200 |
| 1.4 | Tela produtos identificados | Lista com origem auto + correção manual |

### Fase 2 — Calculadora reforma v1 (2–3 semanas)

| # | Entrega | Critério de aceite |
|---|---|---|
| 2.1 | `ReformaCalculoService` | Comparativo atual × CBS/IBS |
| 2.2 | Tela parâmetros CBS/IBS | Imputação alíquotas + ano cenário |
| 2.3 | Tela resultado comparativo | TOTAL com diferença R$ e % |
| 2.4 | Auto-calcular após import | Fluxo similar ao SPED atual |

### Fase 3 — Agro + multi-filial (2 semanas)

| # | Entrega | Critério de aceite |
|---|---|---|
| 3.1 | Regras CFOP agro (1556, 6101…) | Classificação correta nos SPEDs teste |
| 3.2 | Consolidado grupo 4 filiais | Visão única Lagoa Bonita |
| 3.3 | Cenário Simples reforma (simplificado) | Comparativo indicativo |

### Fase 4 — Refinamento (1–2 semanas)

| # | Entrega |
|---|---|
| 4.1 | Export Excel/PDF |
| 4.2 | Gráficos impacto |
| 4.3 | Histórico 12 meses (série SPED) |
| 4.4 | Atualização tabela transição via admin |

**Estimativa total:** 8–11 semanas (1 dev full-time)

---

## 12. Casos de teste (SPEDs reais)

| Arquivo | Teste |
|---|---|
| `20540462000109-*-202504*-SPED-EFD.txt` | Matriz SP: 1556, 2101, volume alto |
| `20540462000109-*-202509*-SPED-EFD.txt` | Pico movimento (1164 C100) |
| `20540462000451-*-202501*-SPED-EFD.txt` | Filial RS: export/classificação |
| `PISCOFINS_202504*_20540462000109*.txt` | Bloco A: bases CBS |
| Filial MG mês vazio | 0 itens → mensagem clara, não erro |
| CFOP 6101 | Deve classificar **exportação** |
| CFOP 1556 | Deve classificar **produção própria** |

---

## 13. Riscos e premissas

| Risco | Mitigação |
|---|---|
| Regulamentação reforma muda | Config externa, não código |
| NCM ausente no C170 | Join obrigatório com 0200 |
| PIS/COFINS só na matriz | UI informa "bloco A indisponível" na filial |
| Cliente confunde com apuração | Disclaimer em toda tela resultado |
| Alíquotas IBS por município | Default UF; município refinado v2 |

**Premissas:**
- SPED entregue é **retificador/original válido**
- Escritório usa Lucro Real (agroindústria porte Lagoa Bonita)
- Não há revisão de enquadramento fiscal de produtos

---

## 14. O que permanece do simulador atual

- Importação SPED one-click (criar simulação)
- Cadastro clientes + CNPJ Brasil API
- Apuração legado ICMS/PIS/COFINS (evoluir motor separadamente)
- Participantes Simples Nacional

A **Calculadora da Reforma** é um **módulo novo** que consome os mesmos SPEDs, não substitui o fluxo operacional atual.

---

## 15. Próximo passo imediato (Sprint 0)

1. Migration `sped_reg_0200` + `reforma_*`
2. Parser 0200 + NCM no `SpedTxtParser`
3. `ProdutoOrigemClassifier` com testes nos 61 arquivos da pasta simulador
4. Tela mínima: upload → lista produtos com origem → placeholder resultado

**Branch sugerida:** `feature/calculadora-reforma-tributaria`

---

*Documento alinhado ao memorando cliente (12/11/25): Calculadora da Reforma Tributária · Blocos A, C, D · CBS/IBS · análise produtos nacional/importado · NÃO revisão NCM.*
