1. CONTEXTO
Com a Reforma Tributária prevista para 2026, a NF-e passa a utilizar os novos tributos:
-
IBS (Imposto sobre Bens e Serviços)
-
CBS (Contribuição sobre Bens e Serviços)
Esses tributos substituem gradualmente ICMS, PIS e COFINS, conforme regras definidas por Nota Técnica da SEFAZ.
O JuxtaPOS foi preparado de forma antecipada, respeitando:
-
Estrutura oficial do XML
-
Implementação atual do ACBr
-
Compatibilidade com versões anteriores
2. ESTRATÉGIA ADOTADA (IMPORTANTE)
Foi adotada uma estratégia segura e progressiva, evitando hacks ou XML manual:
✔️ O que foi feito
-
Implementação completa de IBS/CBS no nível de item (det)
-
Cálculo de:
-
Base (
vBC) -
Alíquotas (
pIBS,pCBS) -
Valores (
vIBS,vCBS)
-
-
Controle por flag de versão fiscal (2026)
❌ O que não foi forçado
-
Totais IBS/CBS no bloco
<total> -
Alterações manuais no XML
-
Quebra de compatibilidade com ACBr
⚠️ Motivo: o ACBr ainda não serializa oficialmente os totais IBS/CBS no XML.
3. CONTROLE DE VERSÃO FISCAL (CHAVE DO PROCESSO)
Foi criado o conceito de FiscalRulesVersion.
Exemplo:
-
FiscalRulesVersion < 2026→ regras antigas -
FiscalRulesVersion >= 2026→ regras novas (IBS/CBS)
Isso permite:
-
Ativar/desativar a reforma sem recompilar
-
Testes graduais
-
Rollback seguro
4. IMPLEMENTAÇÃO NO ITEM (det) — ✔️ CONCLUÍDA
Cada produto da NF-e possui o grupo:
✔️ Situação atual
-
XML gerado corretamente
-
Estrutura compatível com NT 2026
-
Sem rejeições
-
Já validado na prática
Esse é o ponto mais crítico da reforma — e já está pronto.
5. TOTAIS IBS/CBS — STATUS ATUAL
Situação
-
Os valores totais de IBS/CBS:
-
São calculados internamente
-
São acumulados (
TotalIBS,TotalCBS)
-
-
Mas ainda não aparecem no XML
Motivo técnico
-
O ACBr ainda não implementou oficialmente:
-
<IBSCBSTot> -
ou campos
vIBS/vCBSno<ICMSTot>
-
Mesmo usando RTTI, o serializer do ACBr:
-
ignora esses campos
-
não gera o nó no XML
Isso não é erro do JuxtaPOS
6. USO DE RTTI (PROTEÇÃO CONTRA FUTURO)
Foi implementado um mecanismo via RTTI para:
-
Tentar preencher
vIBS/vCBSse existirem -
Ignorar silenciosamente se não existirem
-
Evitar erros de compilação
Isso garante que:
-
Quando o ACBr atualizar → o sistema já está pronto
-
Não será necessário refatorar lógica
