Ir para conteúdo
  • Cadastre-se

Programador Automaserv

Membros
  • Total de ítens

    26
  • Registro em

  • Última visita

Tudo que Programador Automaserv postou

  1. ## 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.
  2. é o mesmo demo da pasta, a diferença é escolher a conexão externa da cielo
  3. 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
  4. Intent.setDataAndType(Uri, StringToJString('document/pdf'));
  5. 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>
  6. Tive alguns caso que o registro do boleto foi apagado do banco, e como a api pode fazer a consulta somente com o nosso número, eu vou manter essa alteração direto na minha maquina.
  7. 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.
  8. 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.
  9. Já uso a V2, mas a alteração ai foi também na V2 e nessas unit que passei.
  10. 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
  11. ACBrBoletoRet_Sicredi_APIV2.pasACBrBoletoRet_Sicredi_APIECOMM.pas
  12. Adicionei nos Retornos da Sicredi a leitura dos campos de SeuNumero, Valor e Data Creditado. ACBrBoletoRet_Sicredi_APIECOMM.pas ACBrBoletoRet_Sicredi_APIV2.pas
  13. Erro ao Consultar Boletos, sem informar nenhum boleto. ACBrBoletoW_Sicredi_APIECOMM.pas
  14. Eu já testei com um leitor da Elgin EL220, eu puxo um pouco o zoom na tela e ele lê normal.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.