Ir para conteúdo
  • Cadastre-se

dev botao

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


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 505 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado (editado)

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

Editado por kahlilgibran
  • kahlilgibran changed the title to ACBrNFSeX - Prefeitura do Recife (Quebra de Linha Não funciona)
  • Consultores
Postado

Consegue emitir uma nfse pelo site com quebra de linha?

Se conseguir, baixe o XML e veja qual o critério que eles usam para utilizar o mesmo.

Se quiser mais tentativa e erro, teste:

\n ou <br>

  • Membros Pro
Postado

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.

  • Moderadores
Postado
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
 

 

  • Administradores
Postado

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

  • Administradores
Postado

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

  • Consultores
Postado

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

  • Membros Pro
Postado

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

  • Consultores
  • Solution
Postado

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

  • 10 meses depois ...
  • Membros Pro
Postado (editado)
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

 

Editado por kahlilgibran
  • Consultores
Postado

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

  • 2 meses depois ...
  • Membros Pro
Postado (editado)

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.

 


 

Editado por kahlilgibran
  • Consultores
Postado
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 !!

  • Membros Pro
Postado

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;

  • Curtir 1
  • Consultores
Postado
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 !!

  • Administradores
Postado

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

  • 4 semanas depois ...
  • Consultores
Postado

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

  • Consultores
Postado

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.

  • Curtir 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

  • Consultores
Postado

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

×
×
  • 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.