Programador Automaserv Postado 27 Abril Postado 27 Abril ## Descrição (corpo do post) **Versão ACBr**: trunk2 r45813 em diante (testado também na r45929 de 23/04/2026) **Componente**: ACBrNFe — `ACBrNFe.XmlWriter.pas` **Sintoma**: toda NFe (modelo 55) com produto CST=90 é gerada com a tag `<cBenefRBC></cBenefRBC>` vazia, causando rejeição da SEFAZ por falha de schema. --- ### Mensagem da rejeição (cliente real, SEFAZ-CE, 24/04/2026) ``` Falha na validação dos dados da nota: 17784 TAG:%TAGNIVEL% ID:N14a/cBenefRBC(Código de Benefício Fiscal na UF aplicado ao item quando houver RBC.) - Nenhum valor informado. (×N itens) 1871 - Element {http://www.portalfiscal.inf.br/nfe}cBenefRBC: This element is not expected. Expected is one of ({http://www.portalfiscal.inf.br/nfe}pRedBC, {http://www.portalfiscal.inf.br/nfe}pICMS). ``` A primeira mensagem é o `wAlerta` interno do próprio `TACBrXmlWriter.AddNode` (linha 422 do `ACBrXmlWriter.pas`); a segunda (1871) é o validador XSD da SEFAZ rejeitando a tag vazia injetada no XML. --- ### Causa raiz A revisão **r45813** (16/04/2026 — commit `ACBR-9067 — Alterações visando atender a NT 2022/002 versão 1.30a`) acrescentou a geração de `cBenefRBC` no bloco `cst90, cstPart90` do `GerarDetImpostoICMS`, mas com parâmetros incorretos: **`ACBrNFe.XmlWriter.pas` linhas 2572-2573 (estado atual)**: ```pascal xmlNode.AppendChild(AddNode(tcStr, 'N14a', 'cBenefRBC', 01, 01, 1, NFe.Det[i].Imposto.ICMS.cBenefRBC, DSC_CBENEFRBC)); ``` São 2 erros: 1. **Tamanho `01,01`** — a NT 2022.002 v1.30a (página 8, item 237.01) define o campo como tipo `C` com tamanho `8,10` e o XSD oficial `leiauteNFe_v4.00.xsd` declara o pattern `[!-ÿ]{8}|[!-ÿ]{10}`. 2. **Ocorrência mínima `1`** — a NT define ocorrência **`0-1`** (opcional). Combinada com valor vazio (clientes que não têm benefício fiscal cadastrado), o `TACBrXmlWriter.AddNode` (linhas 441-445) gera `<cBenefRBC></cBenefRBC>` E adiciona alerta "Nenhum valor informado". Para comparação, o bloco `cst51` (linha 2352) está **correto** e usa exatamente os parâmetros que a NT especifica: ```pascal xmlNode.AppendChild(AddNode(tcStr, 'N14a', 'cBenefRBC', 8, 10, 0, NFe.Det[i].Imposto.ICMS.cBenefRBC, DSC_CBENEFRBC)); ``` --- ### Trecho oficial da NT 2022.002 v1.30a (Grupo N10 — ICMS=90) | # | ID | Campo | Descrição | Ele | Pai | Tipo | Ocor. | Tam. | |------------|----------|---------------|--------------------------------------------------------------------------|-------|-----------|-------|---------|---------| | 237 | N14 | pRedBC | Percentual da Redução de BC | E | N12.1 | N | 0-1 | 3v2-4 | | **237.01** | **N14a** | **cBenefRBC** | **Código de Benefício Fiscal na UF aplicado ao item quando houver RBC.** | **E** | **N12.1** | **C** | **0-1** | **8,10**| | 238 | N16 | pICMS | Alíquota do imposto | E | N12.1 | N | 1-1 | 3v2-4 | Fonte: [NT 2022.002 v1.30a publicada 26/03/2026](https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=NpWPjigODyU=) — pg 8. --- ### Patch proposto ```diff --- a/Fontes/ACBrDFe/ACBrNFe/Base/ACBrNFe.XmlWriter.pas +++ b/Fontes/ACBrDFe/ACBrNFe/Base/ACBrNFe.XmlWriter.pas @@ -2572,2 +2572,2 @@ - xmlNode.AppendChild(AddNode(tcStr, 'N14a', 'cBenefRBC', - 01, 01, 1, NFe.Det[i].Imposto.ICMS.cBenefRBC, DSC_CBENEFRBC)); + xmlNode.AppendChild(AddNode(tcStr, 'N14a', 'cBenefRBC', + 8, 10, 0, NFe.Det[i].Imposto.ICMS.cBenefRBC, DSC_CBENEFRBC)); ``` Com `ocorrencias=0` e valor vazio, o `AddNode` omite a tag (linhas 441-448 do `ACBrXmlWriter.pas`) — exatamente o que `cst51` já faz. Para clientes que populam o campo, a tag é gerada com tamanho válido (8 ou 10 chars). --- ### Possível bug adicional na ordem dos elementos do ICMS90 Conforme a NT v1.30a, dentro do grupo `N12.1` a sequência correta é: ``` modBC (N13) → vBC (N15) → pRedBC (N14) → cBenefRBC (N14a) → pICMS (N16) → [grupo opcional N16a: vICMSOp (N16b), pDif (N16c), vICMSDif (N16d)] → vICMS (N17) ``` Mas o `XmlWriter` linhas 2563-2589 está gerando: ``` modBC → vBC → pRedBC → cBenefRBC → vICMSOp → pDif → vICMSDif → pICMS → vICMS ``` `vICMSOp/pDif/vICMSDif` aparecem **antes** de `pICMS` em vez de **depois** (e fora do grupo opcional `N16a`). Para UFs onde `NrOcorr=0` (CE, MG etc.), os campos zerados são omitidos e o problema não aparece. Mas para RJ/SP/PR (`NrOcorr=1`, linhas 2557-2559), as tags zeradas seriam emitidas em ordem inválida — provavelmente causando outra rejeição de schema. --- ### Como reproduzir 1. Cliente CRT=3, qualquer UF. 2. Cadastrar produto com `cstICMS='090'`, `pICMS=20`, `codCFOP='5403'` (ou 5405). 3. Emitir NFe modelo 55. O XML gerado contém `<cBenefRBC></cBenefRBC>` vazio entre `<pRedBC>` (omitido) e `<vICMSOp>`. 4. SEFAZ rejeita com erro 1871. --- ### Histórico relacionado no log de mudanças ``` r45813 | italojjr | 16/04/2026 -- ACBrNFe.XmlWriter -- [*] ACBR-9067 - Alterações visando atender a NT 2022/002 versão 1.30a Por: Italo Giurizzato Junior ``` Obrigado.
Consultores Juliomar Marchetti Postado 27 Abril Consultores Postado 27 Abril sugestão de correção anexe a unit modificada Juliomar Marchetti Ajude o Projeto ACBr crescer - Seja Pro discord: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!
LS Adriano Postado 27 Abril Postado 27 Abril Estou emitindo NF de Devolução CST 090 no PR, e mesmo com o arquivo xmlWriter.pas fornecido ainda da erro no campo vICMSOp.
julio_cld Postado 27 Abril Postado 27 Abril a posição da tag pICMS está incorreta na unit. segue a unit correta ACBrNFe.XmlWriter.pas
Consultores Juliomar Marchetti Postado 27 Abril Consultores Postado 27 Abril Foi criada a tarefa ACBR-9310 para análise. 1 Juliomar Marchetti Ajude o Projeto ACBr crescer - Seja Pro discord: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!
Membros Pro Terasoft Postado 29 Abril Membros Pro Postado 29 Abril Bom dia estou com o mesmo problema desse tópico. Qualquer NF-e emitida com cst 90 ocorre esse erro.
Moderadores BigWings Postado 2 Maio Moderadores Postado 2 Maio 1 BigWingsAjude o Projeto ACBr crescer - Assine o SAC
cercris Postado 5 Maio Postado 5 Maio Boa noite! Essas últimas alterações feitas no arquivo "ACBrNFe.XmlWriter.pas" (mês de Abril, precisamente a Revision 45813), causou erro para nós aqui enviarmos a Nota Fiscal de Lançamento de Crédito do Ativo Permanente - CIAP. Para o CST de ICMS "90 - Outras." foi implementado para adicionar a tag "cBenefRBC" no XML. Mas essa tag segundo a Nota Técnica 2019.001 (última versão 1.70 - Publicada em 18/08/2025) pelo que eu entendi, a mesma deve ser gerada quando for CST "51-Diferimento". Está causando o erro: "Falha na validação dos dados da nota: 00000 TAG:%TAGNIVEL% ID:N14a/cBenefRBC(Código de Benefício Fiscal na UF aplicado ao item quando houver RBC.) - Nenhum valor informado." Fiz uma pequena alteração no arquivo "ACBrNFe.XmlWriter.pas" e resolveu. Em anexo imagem do XML antes de depois da alteração e do arquivo "ACBrNFe.XmlWriter.pas" alterado. ACBrNFe.XmlWriter.pas
Moderadores BigWings Postado 6 Maio Moderadores Postado 6 Maio 14 horas atrás, cercris disse: Para o CST de ICMS "90 - Outras." foi implementado para adicionar a tag "cBenefRBC" no XML. Mas essa tag segundo a Nota Técnica 2019.001 (última versão 1.70 - Publicada em 18/08/2025) pelo que eu entendi, a mesma deve ser gerada quando for CST "51-Diferimento". A NT 2012/002 v1.30a adicionou a tag cBenefRBC no CST 90. Pela sua imagem gerou a tag vazia o que causou o erro, mas pelo código atual o ACBr não vai gerar a tag caso não informada. Veja se por acaso não informou string diferente de '' para a tag. 14 horas atrás, cercris disse: Essas últimas alterações feitas no arquivo "ACBrNFe.XmlWriter.pas" (mês de Abril, precisamente a Revision 45813) Teve correção na rev. 46034, atualize os fontes. BigWingsAjude o Projeto ACBr crescer - Assine o SAC
cercris Postado 6 Maio Postado 6 Maio 47 minutos atrás, BigWings disse: A NT 2012/002 v1.30a adicionou a tag cBenefRBC no CST 90. Pela sua imagem gerou a tag vazia o que causou o erro, mas pelo código atual o ACBr não vai gerar a tag caso não informada. Veja se por acaso não informou string diferente de '' para a tag. Teve correção na rev. 46034, atualize os fontes. Bom dia, Dr. @BigWings Eu estou com os fontes atualizados. Em anexo um Print indicado exatamente a alteração feita e que persiste no fonte e que causa o erro que passei.
Moderadores BigWings Postado 6 Maio Moderadores Postado 6 Maio 10 minutos atrás, cercris disse: Em anexo um Print indicado exatamente a alteração feita e que persiste no fonte e que causa o erro que passei. Novamente, com esse código só vai gerar a tag caso seja informado valor, conforme o sexto parâmetro do método AddNode. A correção já tinha sido feita na rev. 45940. Na sua imagem também gerou as tags de diferimento vICMSOp, pDif, vDif que também não vai ser gerado quando o valor 0, correção esta feita na rev. 46034. Testei aqui no programa exemplo, está gerando correto: Então tem algo errado aí, se está com os fontes atualizados tente reinstalar o ACBr marcando a opção de apagar arquivos antigos. E veja se não tem outra versão do ACBr que possa estar sendo enxergada pelo Delphi ao compilar. BigWingsAjude o Projeto ACBr crescer - Assine o SAC
cercris Postado 6 Maio Postado 6 Maio 5 horas atrás, BigWings disse: Novamente, com esse código só vai gerar a tag caso seja informado valor, conforme o sexto parâmetro do método AddNode. A correção já tinha sido feita na rev. 45940. Na sua imagem também gerou as tags de diferimento vICMSOp, pDif, vDif que também não vai ser gerado quando o valor 0, correção esta feita na rev. 46034. Testei aqui no programa exemplo, está gerando correto: Então tem algo errado aí, se está com os fontes atualizados tente reinstalar o ACBr marcando a opção de apagar arquivos antigos. E veja se não tem outra versão do ACBr que possa estar sendo enxergada pelo Delphi ao compilar. Sempre que atualizo os fontes eu reinstalo o ACBr. Mas não mando apagar arquivos antigos. Reinstalei apagando os arquivos antigos. E gerei uma NF no ambiente de Homologação e deu certo. Vamos ver... está promissor. kkk Obrigado pela atenção.
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora