Jump to content

dev botao

ACBrNFSeX - Prefeitura do Recife (Quebra de Linha Não funciona)


Go to solution Solved by Italo Giurizzato Junior,
  • Este tópico foi criado há 453 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa noite !

Despois que migrei para Acbrnfsex, não estou conseguindo realizar a quebra de linha na prefeitura de recife.

No manual Abrasf1 que baixei da prefeitura do recife  não deixa claro qual e forma correta de passar a quebra de linha.

Já tentei com ;   com  |  e nada funciona, deixei a quebra com char(13)+char(10) e nada.

No arquivo ACBrNFSeXGravarXml_ABRASFv1.pas eu alterei a opção de quebra Opcoes.QuebraLinha := FAOwner.ConfigGeral.QuebradeLinha;  já alterei e mesmo assim ele não quebra da erro de  Falha ao interpretar o XML "xmlParseDoc"

 

E quando deixo com o ; ele fica dessa forma no site da prefeitura.

Alguma ideia ?

 

unknown.png

Edited by kahlilgibran
Link to comment
Share on other sites

  • kahlilgibran changed the title to ACBrNFSeX - Prefeitura do Recife (Quebra de Linha Não funciona)
  • Membros Pro

Boa tarde Renata Rubinho!

Já tentei essas opção de quebra: \n ou <br>.

Eu baixei o xml já de uma nota com quebra e ele vem com CRLF

mas quando envio dessa forma  Falha ao interpretar o XML "xmlParseDoc".

no componente antigo ACbrNfse funcionava depois que migrei para AcbrNfsex ele não funciona mais.

Link to comment
Share on other sites

  • Moderadores
4 horas atrás, kahlilgibran disse:

Boa tarde Renata Rubinho!

Já tentei essas opção de quebra: \n ou <br>.

Eu baixei o xml já de uma nota com quebra e ele vem com CRLF

mas quando envio dessa forma  Falha ao interpretar o XML "xmlParseDoc".

no componente antigo ACbrNfse funcionava depois que migrei para AcbrNfsex ele não funciona mais.

Conforme já citado o componente está em constante evolução, correção e novas implementações e esse pode ser um dos casos.

acho que um passo a passo com o exemplo ou se sugere alguma alteração no fonte já é um caminho para ajudarmos

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link to comment
Share on other sites

  • Administradores

Bom dia,

15 horas atrás, kahlilgibran disse:

no componente antigo ACbrNfse funcionava depois que migrei para AcbrNfsex ele não funciona mais.

Estamos criando uma tarefa em nosso backlog para análise do problema.

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

Link to comment
Share on other sites

  • Administradores

@kahlilgibran seria interessante anexar um XML onde o problema ocorre para facilitar a análise.

TK-2625

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

Link to comment
Share on other sites

  • Consultores

Bom dia Gibran,

Favor anexar o XML de uma NFS-e, pois esse que você anexou é de um Rps.

Para definir o caractere ou sequencia de caracteres a serem utilizados para quebra de linha devemos informar da seguinte forma:

  ConfigGeral.QuebradeLinha := 'x';

Essa alteração deve ser feita na procedure Configuracao da unit ISSRecife.Provider

Não devemos usar os caracteres de CR (#13) LF (#10), pois o componente os remove do XML pelo simples fato de que podem invalidar uma assinatura digital.

E o provedor em questão devemos assinar o Rps, o Lote de Rps bem como o pedido de cancelamento de uma NFS-e.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Membros Pro

Boa noite !

Italo , fiz essa alteração no fonte do provedor  da prefeitura e incluir vários caracteres e não resolveu 

ConfigGeral.QuebradeLinha := 'x', '|', ';','/';

Todos esses não funciona nessa prefeitura do recife, procurei no manual que ela disponibiliza e não encontrei nada sobre quebra de linha.

Anexei a nota fiscal 

 

abaixo eu abrir o arquivo de modelo que a prefeitura disponibiliza e mostra que a quebra no arquivo e com CRLF 

image.thumb.png.da140d5c7f7933bae910094b134ee9d1.png

Vou anexar os exemplos de xml que a prefeitura disponibiliza.

 

2622042347189200010456000000000000037-nfse.xml exemplos.zip

Link to comment
Share on other sites

  • Consultores

Bom dia Gibran,

Os caracteres CR e LF como quebra de linha não vai rolar, como lhe disse o componente os remove para não ocorrer erro de validação da assinatura digital.

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Consultores
  • Solution

Boa tarde Gibran,

Tente dessa forma:

  ConfigGeral.QuebradeLinha := '&#xD;&#xA;';

Lembre-se que na sua aplicação você vai ter que incluir também essa sequencia de caracteres como quebra de linha na discriminação do serviço.

Exemplo:

Discriminacao := 'Texto da primeira linha&#xD;&#xA;Texto da segunda linha';

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • 10 months later...
  • Membros Pro
Em 05/05/2022 at 15:09, Italo Giurizzato Junior disse:

Boa tarde Gibran,

Tente dessa forma:

  ConfigGeral.QuebradeLinha := '&#xD;&#xA;';

Lembre-se que na sua aplicação você vai ter que incluir também essa sequencia de caracteres como quebra de linha na discriminação do serviço.

Exemplo:

Discriminacao := 'Texto da primeira linha&#xD;&#xA;Texto da segunda linha';

Boa tarde! 

No caso do provedor recife, onde eu coloco isso no arquivo ACBrNFSeXLerXml_ABRASFv1.pas que o ISSRecife herda ?

Abaixo coloquei o trecho que eu deveria substituir essa quebra de linha:

Opcoes.QuebraLinha := FpAOwner.ConfigGeral.QuebradeLinha;

por  

Opcoes.QuebraLinha := '&#xD;&#xA;';

Seria ai ?

image.png.5f2412291e09ab1c1adbb18d4382cd4d.png

 

Edited by kahlilgibran
Link to comment
Share on other sites

  • Consultores

Boa tarde Gibran,

Substitua a unit pela que esta em anexo.

ISSRecife.Provider.pas

Reinstale o ACBr.

Na sua aplicação no campo discriminação utilize o caracter ";" ponto e virgula para indicar uma quebra de linha.

Faça os testes.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • 2 months later...
  • Membros Pro

Boa noite !

Fiz o que me recomendou mais não deu certo.

 

Coloquei a quebra com ; e da erro de assinatura do documento.

Exemplo:

Servico.Discriminacao := 'SERVICO DE REAPRO;TROCA DE TELA;TROCA DE DE BATERIA;'

ele gerar um erro de Assinatura RPS:

---------------------------
Aviso do Sistema
---------------------------
 
Erro(s):
Código  : E973
Mensagem: Assinatura RPS: Rps_17182
Correção: Verifique a assinatura dos RPS

---------------------------
OK   
---------------------------

 

Quando removo o ; e removo a quebra de linha a nota é enviada.

 


 

Edited by kahlilgibran
Link to comment
Share on other sites

  • Consultores
13 horas atrás, kahlilgibran disse:

Boa noite !

Fiz o que me recomendou mais não deu certo.

 

Coloquei a quebra com ; e da erro de assinatura do documento.

Exemplo:

Servico.Discriminacao := 'SERVICO DE REAPRO;TROCA DE TELA;TROCA DE DE BATERIA;'

ele gerar um erro de Assinatura RPS:

---------------------------
Aviso do Sistema
---------------------------
 
Erro(s):
Código  : E973
Mensagem: Assinatura RPS: Rps_17182
Correção: Verifique a assinatura dos RPS

---------------------------
OK   
---------------------------

 

Quando removo o ; e removo a quebra de linha a nota é enviada.

 


 

Bom dia.

Como você está recebendo erro de assinatura, apenas para confirmar, como está sua configuração de certificado e afins?

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

Link to comment
Share on other sites

  • Membros Pro

Segue minha configuração tale do software:

image.png.1376977f9deead4d8e305819cd73cec8.png

 

Parte do  código :

 

   ACBrNFSe.Configuracoes.Geral.SSLLib := libWinCrypt;
        ACBrNFSe.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;

   NotaFiscalDM.ACBrNFSe.Configuracoes.Certificados.NumeroSerie :=
          ParametroDM.cdsConfigNotaCERNRSERIE.AsString;

  • Like 1
Link to comment
Share on other sites

  • Consultores
43 minutos atrás, kahlilgibran disse:

Segue minha configuração tale do software:

image.png.1376977f9deead4d8e305819cd73cec8.png

 

Parte do  código :

 

   ACBrNFSe.Configuracoes.Geral.SSLLib := libWinCrypt;
        ACBrNFSe.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;

   NotaFiscalDM.ACBrNFSe.Configuracoes.Certificados.NumeroSerie :=
          ParametroDM.cdsConfigNotaCERNRSERIE.AsString;

Você está usando WinCrypt com A1.

Neste caso, pode apenas definir o Nº de Série, mas o certificado precisa estar instalado na máquina e a mesma precisa estar com as atualizações do Windows em dia.

Por favor, forneça também o arquivo que foi pedido pelo @Italo Giurizzato Junior para análise.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

Link to comment
Share on other sites

  • Administradores

Bom dia,

Criado card em nosso backlog para esta analise, TK-4023

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

Link to comment
Share on other sites

  • 4 weeks later...
  • Consultores

Boa tarde Gibran,

Pela minha analise o provedor se utiliza dos caracteres #13 e #10 para quebra de linha.

Se o componente gerar o XML do Rps com esses caracteres como quebra de linha, após realizar a assinatura vai ocorrer a remoção, pois o no final do método responsável pela assinatura ocorre a remoção das quebras de linha que por ventura exista no arquivo.

Eu não entendo muito bem, mas me parece que a DLL que o ACBr se utiliza para realizar a assinatura inclui quebras de linha na assinatura que depois são removidas.

Vou conversar com a Equipe para ver se encontramos uma maneira de remover as quebras de linha da assinatura e não do XML inteiro.

Peço-lhe um pouco mais de paciência na busca de uma solução para esse problema.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Consultores

Bom dia Gibran,

Conversando com a Equipe ACBr a remoção dos caracteres #13 e #10 do XML é uma etapa chamada canonicalização, isso é realizado antes do XML ser assinado.

No lugar desses caracteres usei a sequencia: 

  ConfigGeral.QuebradeLinha := '&#xD;&#xA;';

Fiz um teste usando o programa exemplo do componente.

O XML do Rps que é assinado bem como o de envio do lote que tem 2 assinaturas (do Rps e a do Lote) foram submetidos no site da Receita Federal que valida a assinatura.

Receita Federal do Brasil - Validador de Assinaturas (fazenda.gov.br)

Os dos XML (do Rps e de envio do lote) estão com as assinaturas validas.

O problema é o webservice do provedor que não aceita essa sequencia escape e acusa que a assinatura esta invalida.

Solução para o problema:

1. Usar o caractere ";" (ponto e virgula) mesmo que a impressão do DANFSE via site a discriminação saia bagunçada.

2. Entrar em contato com o provedor, expor o problema, mostrar para eles que o uso dos caracteres #13 e #10 da forma que eles estão usando ao gerar o XML da NFS-e esta fora das normas, quem sabe eles façam as adequações necessárias no webservice.

Resumindo: Se ficar o bicho come, se correr o bicho pega.

  • Like 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Consultores

Bom dia Gibran,

Enviei para o SVN a seguinte alteração:

Comentado a linha que definia uma sequencia escape para quebra de linha.

O provedor estava recusando alegando que a assinatura estava invalida. 

Como relatado acima, não tem o que fazer.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...