Implementação Fiscal 2026 – JuxtaPOS V3 IBS / CBS – NFC-e e NF-e
1️⃣ Objetivo desta documentação
Este documento descreve:
-
O que foi alterado no JuxtaPOS V3 para suportar a Reforma Tributária 2026
-
Como o sistema continua emitindo 2025 normalmente
-
Como “girar a chave” para ativar as regras de 2026
-
Onde ficam os pontos críticos de código
-
Como testar sem transmitir para a SEFAZ
- Meta: permitir ativar ou desativar 2026 sem recompilar o sistema.
2️⃣ Conceito-chave da implementação (Visão Geral)
A implementação segue este princípio:
O sistema passa a suportar 2026, mas só aplica as regras quando a chave estiver ligada.
Em termos práticos:
-
O código 2025 continua intacto
-
O código 2026 existe em paralelo
-
Um controle central (
FiscalRulesVersion) decide qual regra aplicar
3️⃣ Controle de versão fiscal (o coração de tudo)
Variável central
FiscalRulesVersion: Integer;
Valores possíveis:
| Valor | Significado |
|---|---|
| 2025 | Regra atual (ICMS / PIS / COFINS) |
| 2026 | Nova regra (IBS / CBS) |
4️⃣ Como o sistema descobre qual regra usar
Arquivo de configuração (chave liga/desliga)
Criamos um arquivo externo, para não depender de recompilação.
Exemplo:
FiscalRules.ini
Exemplo de conteúdo:
[FISCAL]
FiscalRulesVersion=2025
Para ativar 2026:
[FISCAL]
FiscalRulesVersion=2026
Trocar para 2026 = editar o INI e reiniciar o sistema
5️⃣ Leitura da chave no sistema
Na inicialização do módulo fiscal:
FiscalRulesVersion := ReadFiscalRulesVersion;
Com fallback seguro:
if FiscalRulesVersion <> 2026 then
FiscalRulesVersion := 2025;
Isso garante:
-
Nunca cair em versão inválida
-
Segurança para clientes que não atualizarem o INI
6️⃣ Estrutura do código (arquitetura)
Separação clara por versão
Fiscal
├─ ApplyFiscalRules2025()
├─ ApplyFiscalRules2026()
├─ GenerateNFCe()
├─ GenerateNFe()
Chamada central:
if FiscalRulesVersion = 2026 then
ApplyFiscalRules2026()
else
ApplyFiscalRules2025();
7️⃣ O que muda em 2026 (tecnicamente)
O que NÃO é mais usado
-
ICMS
-
PIS
-
COFINS
O que entra
-
IBS (Imposto sobre Bens e Serviços)
-
CBS (Contribuição sobre Bens e Serviços)
8️⃣ Implementação dos novos impostos (IBS / CBS)
Inicialização obrigatória (evita lixo de memória)
// === BEGIN FIX 2025-12-29 (PLAN A NFe init) ===
TotalIBS := 0;
TotalCBS := 0;
// === END FIX ===
Nunca remover isso
Sem essa inicialização surgem erros intermitentes e totais incorretos.
9️⃣ Aplicação por item (NFe / NFCe)
Dentro do loop de produtos:
ItemIBS := CalculateIBS(Item);
ItemCBS := CalculateCBS(Item);
TotalIBS := TotalIBS + ItemIBS;
TotalCBS := TotalCBS + ItemCBS;
10 - Totais no XML
Preenchimento correto:
vIBS := TotalIBS;
vCBS := TotalCBS;
Estes campos só existem quando FiscalRulesVersion = 2026
1️⃣1️⃣ Transmissão para SEFAZ (controle de testes)
Durante testes:
-
O XML é gerado
-
A transmissão pode ser bloqueada
-
Nenhum documento fiscal real é emitido
if IsTestMode then
Exit; // gera XML, não transmite
1️⃣2️⃣ Como testar corretamente (checklist)
✔️ Teste técnico
-
Gerar NFC-e 2026
-
Gerar NF-e 2026
-
Verificar XML
-
Confirmar tags IBS / CBS
-
Conferir totais
✔️ Teste funcional
-
Produto com imposto
-
Produto isento
-
Desconto
-
Troco
-
Cancelamento
1️⃣3️⃣ Como “girar a chave” para 2026 (PASSO A PASSO)
Em produção (quando for autorizado):
-
Fechar o JuxtaPOS
-
Editar o arquivo:
FiscalRules.ini -
Alterar:
FiscalRulesVersion=2026 -
Salvar
-
Reabrir o JuxtaPOS
Pronto. Sistema operando em 2026.