Tecnologia além do código.
Régys Borges da Silveira
← Voltar para explorar os artigos

ACBrNFe e NT 2025.002: O Guia Definitivo da Reforma Tributária (IBS/CBS) para Desenvolvedores Delphi

Neste artigo 7 tópicos

A Reforma Tributária não é mais apenas uma discussão política; para nós, desenvolvedores, ela já tem nome e sobrenome: Nota Técnica 2025.002, que está va versão 1.32 no momento que este artigo foi escrito.

A partir de 2026, entramos no Período de Teste, onde conviveremos com o sistema atual (ICMS/ISS/PIS/COFINS) e o novo sistema (IBS/CBS). O desafio técnico é que as tags do XML mudaram drasticamente em relação ao que conhecíamos. Não se trata de novos campos no grupo Imposto, mas sim de um novo grupo “pai” chamado IBSCBS.

Neste artigo, vou mostrar a hierarquia correta das classes no componente ACBrNFe, como preencher as alíquotas de teste de 2026 e como calcular os totais sem erros de validação, considerando o básico a preencher para essa primeira fase.

1. O Cenário de 2026: Alíquotas e Regras

Antes de abrir o Delphi, precisamos alinhar a regra de negócio. Em 2026, a cobrança é educativa e de calibração.

  • CBS (Federal): Alíquota de 0,90%.
  • IBS (Estadual/Municipal): Alíquota de 0,10%.
  • Total: 1,00% sobre a operação.

Importante: Mesmo sendo um teste, o preenchimento é obrigatório para a validação da nota a partir das datas definidas na NT (Produção em 2026). O não preenchimento gerará rejeição.

2. A Nova Estrutura do Componente ACBr

No ACBr (Trunk2 atualizado), a estrutura foi consolidada para refletir o XML.

  1. Det.Imposto.IBSCBS: O grupo pai.
  2. CST e cClassTrib: Definidos na raiz deste grupo.
  3. gIBSCBS: Subgrupo para operações tributadas por valor (Ad Valorem).
  4. gIBSCBSMono: Subgrupo para operações monofásicas (Ad Rem – Combustíveis).

2.1. Tabela de CSTs (3 Dígitos)

Os CSTs agora possuem 3 dígitos. Os códigos antigos (00, 20, 90) não servem aqui. Consultando a Tabela Oficial (disponível no Portal da NFe):

  • 001: Operação tributável com alíquota ad valorem.
  • 002: Operação tributável com alíquota ad rem.
  • 070: Operação com isenção.

3. Implementação Prática (Delphi)

Vamos ao código para uma venda simples (CST 001), aplicando as alíquotas de 2026.

Snippet de código

procedure TForm1.PreencherIBS_CBS_2026(Item: TDetCollectionItem; ValorProduto: Currency);
begin
  // Acessamos o novo grupo IBSCBS (Certifique-se que seu ACBr está atualizado)
  with Item.Imposto.IBSCBS do
  begin
    // 1. Definição do CST (Use String ou Enum se disponível na sua versão)
    // 001 = Tributação Normal Ad Valorem
    CST := '001'; 

    // 2. Classificação Tributária (Novo Campo Obrigatório)
    // Tabela publicada no Portal NFe. Exemplo genérico:
    cClassTrib := '001000'; 

    // 3. Preenchimento do Grupo Ad Valorem (gIBSCBS)
    // Se fosse Combustível, usaríamos o with gIBSCBSMono
    with gIBSCBS do
    begin
      // Base de Cálculo (Geralmente o valor da operação)
      vBC := ValorProduto;

      // --- CBS (Federal - 0,90%) ---
      with gCBS do
      begin
        pCBS := 0.90; // Alíquota fixa 2026
        vCBS := RoundABNT(vBC * (pCBS / 100), 2);
      end;

      // --- IBS (Estadual/Municipal - 0,10%) ---
      // O IBS é compartilhado. Na fase de teste, a alíquota de 0,1% deve ser informada.
      // A divisão exata entre UF e Município depende da legislação local, 
      // mas para validação, a soma deve bater.
      
      // Parte Estadual (Exemplo: Alocando o 0,1% aqui)
      with gIBSUF do
      begin
        pIBSUF := 0.10;
        vIBSUF := RoundABNT(vBC * (pIBSUF / 100), 2);
      end;

      // Parte Municipal (Se houver split na sua UF, ajuste aqui)
      with gIBSMun do
      begin
        pIBSMun := 0.00; 
        vIBSMun := 0.00;
      end;

      // --- Totalizador do Item ---
      // A soma das partes do IBS (UF + Mun) deve ser preenchida no vIBS
      vIBS := gIBSUF.vIBSUF + gIBSMun.vIBSMun;
    end;

    // tag de valor do item, deve ser gerada quando o ibs/cbs é gerado
    vItem := Prod.vProd + IBSCBS.gIBSCBS.vIBS + IBSCBS.gIBSCBS.gCBS.vCBS + ISel.vIS;
  end;
end;

4. Onde ficam os Totalizadores?

A estrutura de totais também mudou. Não procure em Total.ICMS. Existe um objeto específico para os novos tributos.

  // A classe correta é Total.IBSCBS
  Total.IBSCBSTot.vBCIBSCBS              
  Total.IBSCBSTot.gIBS.gIBSUFTot.vIBSUF
  Total.IBSCBSTot.gIBS.gIBSMunTot.vIBSMun
  Total.IBSCBSTot.gIBS.vIBS               
  Total.IBSCBSTot.gCBS.vCBS            
  
  // Lembre-se: Em 2026, estes valores SOMAM ao vNFtot (Valor Total da Nota),
  // mas não substituem o destaque do ICMS/PIS/COFINS. Eles convivem.
  Total.vNFTot := Total.ICMSTot.vNF + Total.IBSCBSTot.gIBS.vIBS + Total.IBSCBSTot.gCBS.vCBS + Total.ISTot.vIS;

5. Cuidados Essenciais e Validação

  1. Compatibilidade de Schemas: Se você atualizar o componente mas não atualizar os arquivos .xsd na pasta Schemas/NFe do seu cliente, a nota será rejeitada com erro de “Elemento não esperado” (unexpected element IBSCBS).
  2. Regra do Valor Total: O vNFTot (Valor da Nota) deve considerar o IBS e CBS.
    • Fórmula: vNFTot = vProd – vDesc + vST + vFrete … + vIBS + vCBS.
  3. Tabelas de Apoio: Você precisará das tabelas de CST e cClassTrib. Elas não são fixas no código, podem sofrer atualizações. Recomendo criar uma tabela no banco de dados para importá-las.

6. Referências Oficiais

Para aprofundamento, utilize as fontes utilizadas para a construção deste artigo:

Compartilhar por e-mail

0 comentário(s)

Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Um próximo passo para cada interesse.

Continue estudando com os livros, acompanhe as videoaulas ou consulte as soluções para o seu projeto.

Descubra mais sobre Régys Borges da Silveira

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo