Ir para conteúdo
  • Cadastre-se

dev botao

Problema na hora de imprimir DANFSe, Não está sendo reconhecido o '' no provedor IPM quando a discriminação é muito longa


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

Recommended Posts

Estou tendo problema na hora de imprimir o Danfse na NFS-e do provedor da IPM

Cidade: RS - Novo Hamburgo

A situação é a seguinte, quando eu faço uma discriminação muito longa e divido as frases com o ENTER(
) o componente parece não conseguir reconhecer essa quebra de linha, mas se eu fazer uma descrição pequena, ele consegue identificá-la. 

Eu gerei um RPS com a mesma descrição só que com o provedor da Ginfes, e no Danfse foi reconhecido a quebra de linha mesmo sendo longa a descriminação.

Alguem consegue ajudar com esse problema?

OBS: deixei em anexo o que está acontecendo sobre a quebra de linha, o anexo comporta sobre o erro que ocorre no RPS/XML de retorno do provedor da IPM na cidade Novo Hamburgo

 

 

imagem sem quebra.png

Imagem com quebra.png

Editado por DOUGLAS GUIMARÃES DOS SANTOS
Link para o comentário
Compartilhar em outros sites

  • DOUGLAS GUIMARÃES DOS SANTOS changed the title to Problema na hora de imprimir DANFSe, Não está sendo reconhecido o '' no provedor IPM quando a discriminação é muito longa
  • Consultores

Boa tarde Douglas,

Devemos sempre utilizar como quebra de linha o caracter ";" (ponto e virgula).

Veja o programa exemplo.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Mais ali nas imagens que mandei, já possui o '
' no final de cada linha, até pq ele quebra caso texto for um pouco menor a linha quebra ou eu troque de provedor como falei anteriormente

 

Ou você quer dizer que o componente em casos bem específicos não consegue reconhecer a quebra de linha?

 

Editado por DOUGLAS GUIMARÃES DOS SANTOS
Link para o comentário
Compartilhar em outros sites

Certo, fiz a modificação que você falou para fazer

Servico.Discriminacao:= 'Prestacao de servicos conforme a ordem de servico: 002234; Valor aproximado de tributos federais, estaduais e municipais';

e fiz a geração do RPS, quando eu fui olhar dentro do RPS, tem o '
'

imagem_2023-10-31_172454891.thumb.png.657ab77619336eb42817f7cd5daaf99d.png

imagem_2023-10-31_173518662.png.6037665e66df5699733a4c249d22e414.png

 

 

Ai eu fui lá e tirei o '&#13' na mão dentro do RPS e deixei só o ';' pra fica senhor solicitou a cimaimagem_2023-10-31_174658355.thumb.png.038c127ebbfe27d30b58084102196e09.pngimagem_2023-10-31_174730462.png.703c90760c16be7ceb85dbd4b75f2e96.png

A nota parou de ter o '&#13' e agora só tem o ';' mas ainda continua sem pular a linha.

 

 

E se eu for gerar um RPS com provedor diferente, como o ginfes por exemplo passando a mesma string, ele pula a linha. Eu não sei o que pode ser, imagem_2023-10-31_175129061.png.96f51de6892a29eff5d42137af447e32.png

Editado por DOUGLAS GUIMARÃES DOS SANTOS
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Douglas,

A questão é o seguinte:

1. sempre devemos ao alimentar o componente usar como quebra de linha o caracter ";" conforme o tópico abaixo.

2. Ao gerar o XML poderá ocorrer a troca do ";" por outro caracter conforme configuração definida na unit provider do provedor que no caso do IPM temos o seguinte:

procedure TACBrNFSeProviderIPM204.Configuracao;
begin
  inherited Configuracao;

  ConfigGeral.QuebradeLinha := sLineBreak;
  ConfigGeral.Identificador := '';
  ConfigGeral.ConsultaPorFaixaPreencherNumNfseFinal := True;

  ConfigWebServices.AtribVerLote := '';

  ConfigMsgDados.GerarPrestadorLoteRps := True;
end;

Como você pode ver vai ocorrer a troca do ";" pelo LineBreak que é #13, isso explica a troca.

Quando o componente faz a leitura do XML da NFS-e realiza o processo inverso, veja:

      Descricao := ObterConteudo(ANodes[i].Childrens.FindAnyNs('Discriminacao'), tcStr);
      Descricao := StringReplace(Descricao, FpQuebradeLinha,
                                      sLineBreak, [rfReplaceAll, rfIgnoreCase]);

Que no caso do provedor IPM vai substituir o LineBreak por LineBreak, ou seja, vai ficar exatamente igual, mas vai ocorrer a quebra de linha no DANFSE.

Lembre-se que o XML a ser utilizado para imprimir o DANFSE tem que ser o XML da NFS-e e não o XML do RPS.

Até agora não consegui entender o problema que você esta tendo.

Você poderia anexar o XML do RPS gerado pelo componente e da NFS-e gerada pelo webservice do provedor após o envio desse RPS, para que possamos analisar?

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Certo, vou deixar em anexo os dois xml o de envio e o retorno aqui.

Não tem muito o que eu conseguir explicar sobre o erro, já falei tudo que consegui perceber sobre.

Que é caso a discriminação for muito longa, quando tu faz o danfse do provedor da IPM ele não consegue quebrar a linha.

0041851-rps.xml 2631-nfse.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Douglas,

No campo Discriminacao do RPS notei que você não usou a quebra de linha que é recomendado.

Por favor gere um novo RPS inserindo o caracter ";" onde você deseja que ocorra a quebra de linha.

Depois você anexa o XML desse novo RPS e o XML da NFS-e referente a esse RPS. 

Só assim vamos poder analisar melhor o problema.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa Tarde, sobre o uso de quebra de linha eu estou atribuindo a essa string esse valor:

 'Prestacao de servicos conforme a ordem de servico: 002234;Valor aproximado de tributos federais, estaduais e municipais: R$ 152,03 (18,45 %). Fonte: IBPT' para o campo de Discriminacao 

 

e quando ele termina de gerar o XML do RPS, ele já está substituindo o ';' pelo '
'.

Eu não faço nenhum tratamento antes nessa string antes atribuir o valor da discriminação no componente

Editado por DOUGLAS GUIMARÃES DOS SANTOS
Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Douglas,

Substitua a unit pela que esta em anexo.

Reinstale o ACBr e faça um novo teste.

IPM.Provider.pas

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Douglas,

Essa alteração feita na unit já esta no SVN.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 215 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.