-
Total de ítens
26 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Programador Automaserv postou
-
## 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.
- 13 replies
-
- acbrnfe nfe
- nt 2022.002
- (e 6 mais)
-
é o mesmo demo da pasta, a diferença é escolher a conexão externa da cielo
- 6 replies
-
- acbrposprinter
- fmx
-
(e 1 mais)
Tags:
-
Adicionado Impressão Via Intent da Cielo e da Stone
um tópico no fórum postou Programador Automaserv ACBrSerial
Adicionado Impressão via Intent da Cielo LIO e Stone. Alterado AJBarcode para geração no FMX. ACBrBase.pas AJBarcode.pas ACBrPosPrinterCielo.pas ACBrPosPrinterStone.pas- 6 replies
-
- 1
-
-
- acbrposprinter
- fmx
-
(e 1 mais)
Tags:
-
ACBrInstall_Trunk2.exe não aparece IDEs
Programador Automaserv replied to Juliano Van's tópico in ACBrMonitor PLUS
-
enviar pdf pelo app
Programador Automaserv replied to felipeiw's tópico in Object Pascal - Delphi & Lazarus
Intent.setDataAndType(Uri, StringToJString('document/pdf')); -
Erro ao tentar cancelar NFSe - SpeedGov - Sobral.
Programador Automaserv replied to Programador Automaserv's tópico in ACBrNFSe
Não -
Erro ao tentar cancelar NFSe - SpeedGov - Sobral.
um tópico no fórum postou Programador Automaserv ACBrNFSe
Estou com um Erro ao tentar cancelar NFse emitido no Teste, a nota foi emitido corretamente pelo o ACBrNFSeX e já aparece no portal https://iss.speedgov.com.br/sobral. - <p:CancelarNfseEnvio xmlns:p="http://ws.speedgov.com.br/cancelar_nfse_envio_v1.xsd" xmlns:p1="http://ws.speedgov.com.br/tipos_v1.xsd"> - <p:Pedido> - <p1:InfPedidoCancelamento Id="Canc_09475888000193957111149"> - <p1:IdentificacaoNfse> <p1:Numero>11149</p1:Numero> <p1:Cnpj>09475888000193</p1:Cnpj> <p1:InscricaoMunicipal>9571</p1:InscricaoMunicipal> <p1:CodigoMunicipio>2312908</p1:CodigoMunicipio> </p1:IdentificacaoNfse> <p1:CodigoCancelamento>4</p1:CodigoCancelamento> </p1:InfPedidoCancelamento> </p:Pedido> </p:CancelarNfseEnvio> Esse é o retorno - <CancelarNfseResposta> <Sucesso>false</Sucesso> <DataHora>2025-01-15T04:19:19</DataHora> - <MensagemRetorno> <Codigo>E160</Codigo> <Mensagem>Arquivo enviado fora da estrutura do arquivo XML de entrada.</Mensagem> <Correcao>Envie um arquivo dentro do schema do arquivo XML de entrada.</Correcao> </MensagemRetorno> </CancelarNfseResposta> -
esse é o retorno que tenho ao fazer a consulta detalhada, { "linhaDigitavel":"74891124202936422301510005901037898500000019100", "codigoBarras":"74898985000000191001124229364223011000590103", "carteira":"SIMPLES", "seuNumero":"29364", "nossoNumero":"242293642", "pagador":{ "codigo":"025JA", "documento":"26780400000150", "nome":"ADILSON TAVARES TOBELEM 45151997220" }, "dataEmissao":"2024-07-01", "dataVencimento":"2024-09-25", "valorNominal":191, "situacao":"LIQUIDADO COMPE", "multa":3, "abatimento":0, "tipoJuros":"A - VALOR", "juros":0, "diasProtesto":0, "validadeAposVencimento":60, "diasNegativacao":0, "tipoDesconto":"B - PERCENTUAL", "descontoAntecipacao":0, "dadosLiquidacao":{ "data":"2024-09-25T07:11:30-03:00", "valor":191, "multa":0, "abatimento":0, "juros":0, "desconto":0 }, "descontos":[ ] } com isso, consigo fazer uma melhor conciliação bancária, mas pra fazer esse consulta preciso utilizar o nossonumero que já vem do retorno da api. lembrando que não estou tentando usar o campo seu número para fazer a consulta detalhada, que ele só tem 5 digitos e ainda precisa entrar no leiaute da sicred.
-
Mas se eu só tenho o nosso número, como posso fazer a consulta, sendo que precisa da data de geração do boleto, para gerar o nosso número novamente? Esse é o retorno da consulta dos boletos baixados, na API v2 da Sicred, não tem a data de geração, se eu quiser consulta o detalhe desse boleto, eu não poderia por não ter essa data, mas na api, só é necessário o nossoNumero que já está montado. "cooperativa": "2301", "codigoBeneficiario": "00590", "cooperativaPostoBeneficiario": "230110", "nossoNumero": "242314577", "seuNumero": "31457", "tipoCarteira": "A", "dataPagamento": "2024-10-07 00:00:00.0", "valor": 200, "valorLiquidado": 200, "jurosLiquido": 0, "descontoLiquido": 0, "multaLiquida": 0, "abatimentoLiquido": 0, "tipoLiquidacao": "COMPE" mas na api, precisa gerar novamente o nossoNumero, mas como a data do documento vai estar em branco, ele gera novamente todo errado aqui, precisa de informações que não vem no retorno da api, se eu quiser ver os detalhes do pagamento.
-
Alterado ACBrBoletoW para uso do nosso número no lugar de gerar novamente.
um tópico no fórum postou Programador Automaserv ACBrBoleto
Alterado Opção para fazer consulta detalhada de boleto sem precisar gerar novamente o nosso número. ACBrBoletoW_BancoBrasil_API.pas ACBrBoletoW_Banrisul.pas ACBrBoletoW_Bradesco.pas ACBrBoletoW_PenseBank_API.pas ACBrBoletoW_Sicoob.pas ACBrBoletoW_Sicoob_V3.pas ACBrBoletoW_Sicredi_APIECOMM.pas ACBrBoletoW_Sicredi_APIV2.pas -
Ajustes na Consulta via API Sicred.
Programador Automaserv replied to Programador Automaserv's tópico in ACBrBoleto
ACBrBoletoRet_Sicredi_APIV2.pasACBrBoletoRet_Sicredi_APIECOMM.pas -
Adicionei nos Retornos da Sicredi a leitura dos campos de SeuNumero, Valor e Data Creditado. ACBrBoletoRet_Sicredi_APIECOMM.pas ACBrBoletoRet_Sicredi_APIV2.pas
-
Erro ao Consultar Boletos, sem informar nenhum boleto. ACBrBoletoW_Sicredi_APIECOMM.pas
