Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2721 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Italo, bom dia.

 

Ja verifiquei alguns topicos aqui sobre quebra de linha, mas a maioria falava sobre a impressão, que não é meu problema.

 

O meu problema é que o cliente quer que o sistema mande a descrição da NFS-e com quebra de linha igual quando se faz a NFSe no site da prefeitura. Pois eles querem que as NFS-e fiquem gravadas "certas" la (¬¬ ... clientes...).

 

Conversando com o suporte do provedor ginfes eles garantiram que se eu passar qualquer quebra de linha o webservice vai aceitar, so que isso não esta acontecendo. Não importa o caractere de quebra que eu passe a descrição do serviço sempre fica em uma linha só.

Achei que era problema do provedor ou qualquer outra coisa MAS...

debugando o envio da NFS-e, eu identifiquei que a função FiltrarTextoXML do fonte pncAuxiliar remove as quebras de linha.

 

Eu tentei passar RetirarAcentos como FALSE mas não de certo por que os serviços do meu cliente estão todos cadastrados com "ç", "acentos" e etc...

 

tambem tentei fazer uma POG, passando um " | " no lugar da quebra de linha e depois da função fazer um stringreplace, mas ai me retorna um erro dizendo que o xml não pode ser alterado depois da assinatura...~~

 

 

tem como me dar uma luz???

Massao Aihara

Postado

Amigos.

Não uso o acbr, mas uso bem similiar, pois quando desenvolvi ainda nãio tinhamos o acbrnfse.

Minha solução foi, ao assinar, que é onde remover as quebras de linha, fazer um IF para, se for tal provedor,

não remover.

Não sei se a idéia ajuda ou server aos metódos usados, mas taí uma alternativa.

Abraço.

Postado

Italo...CONSEGUIII...

 

com a ideia do nosso amigo shdw...

eu tinha tentado não remover a quebra no envio, mas na assiantura ainda estava removendo! Assim gerava o erro:

 

"O xml não pode ser alterado depois da assinatura."

 

Oque eu fiz:

na função de assinatura do fonte ACBrNFSeUtil na linha 752:
 

ANTES:
   XMLAssinado := StringReplace( XMLAssinado, #10, '', [rfReplaceAll] );
   XMLAssinado := StringReplace( XMLAssinado, #13, '', [rfReplaceAll] );

 ALTEREI PARA:

   if AProvedor <> proGINFES
   then begin
    XMLAssinado := StringReplace( XMLAssinado, #10, '', [rfReplaceAll] );
    XMLAssinado := StringReplace( XMLAssinado, #13, '', [rfReplaceAll] );
   end;

e na funcao FiltrarTextoXML no fonte pncAuxiliar na linha 174:

ANTES:
  if RetirarAcentos then
   begin
     for i := 1 to Length(aTexto) do
      begin
{$WARNINGS OFF}
        if Pos(aTexto[i], COM_ACENTO) <> 0 then
          aTexto[i] := AnsiChar(SEM_ACENTO[Pos(aTexto[i], COM_ACENTO)]);
//          aTexto[i] := SEM_ACENTO[Pos(aTexto[i], COM_ACENTO)];
        if not (aTexto[i] in [' '..'~']) then
          aTexto[i] := ' ';
{$WARNINGS ON}
      end;
   end;


ALTEREI PARA:
  if RetirarAcentos then
   begin
     for i := 1 to Length(aTexto) do
      begin
{$WARNINGS OFF}
        if Pos(aTexto[i], COM_ACENTO) <> 0 then
          aTexto[i] := AnsiChar(SEM_ACENTO[Pos(aTexto[i], COM_ACENTO)]);
//          aTexto[i] := SEM_ACENTO[Pos(aTexto[i], COM_ACENTO)];
        if not (aTexto[i] in [' '..'~']) then
          if (aTexto[i] <> #13) then
            if (aTexto[i] <> #10) then
          aTexto[i] := ' ';
{$WARNINGS ON}
      end;
   end;

So que tem um problema,

não tenho com testar o provedor dentro do fonte pncAuxiliar...ai tenho que tratar meus dados antes de passar para o ACBr.

Massao Aihara

  • 2 semanas depois ...
Postado

Salve, Salve Galera, voltando a novela da quebra de linha, percebi o seguinte, se usar a tag  TC: faz a quebra, porém o nfs-e sempre retorna sem esta TAG do webservice, e quando gera o XML pelo site da prefeitura a TAG TC é mantida.

 

TAG TC para quebra de linha

          <tc:Discriminacao>TESTE 01
TESTE 02
TESTE 03</tc:Discriminacao>

OBS.: ISSnet

Ricardo

Flexnet Sistemas

Postado

Salve, Salve Galera, voltando a novela da quebra de linha, percebi o seguinte, se usar a tag  TC: faz a quebra, porém o nfs-e sempre retorna sem esta TAG do webservice, e quando gera o XML pelo site da prefeitura a TAG TC é mantida.

 

TAG TC para quebra de linha

          <tc:Discriminacao>TESTE 01
TESTE 02
TESTE 03</tc:Discriminacao>

OBS.: ISSnet

 

          Pessoal postei esta resposta mas na verdade isto não tem a ver com a tag TC e sim porque pelo site inss.net vem com a querbra de linha, se você editar o xml da nfse, colocando uma linha abaixo da outra  como no exemplo irá funcionar também mesmo sem a tag TC, então o saga continua....

Ricardo

Flexnet Sistemas

Postado

Altere apenas antes de imprimir não precisa mexer no XML, carrega ele pro componente quebra com #13 e manda imprimir, basta implementar isso na rotina impressão do seu aplicativo. Eu fiz e funcionou

-----------------------------------------------------------

Até a Vitória sempre!

Atenciosamente

Ronnei Peterson

Invictos Tecnologia - www.invictos.com.br

  • 4 semanas depois ...
Postado

NFS-e de Goiânia.

 

A impressão do DANFS-e esta saindo a quebra de linha que vem no XML de resposta, já temos alguma solução?

 

DISCRIMINAÇÃO DOS SERVIÇOS:
 
TESTE DE GERACAO OK.\s\nEM PRODUCAO, SUA NOTA SERIA GERADA SEM CRITICAS.\s\nOS DADOS DESSA NOTA SAO FICTICIOS.

 

NFS-e_ 370.pdf

Analysis and System Development - Delphi Programmer - Computer Technician - Developing solutions together

 

  • 2 meses depois ...
Postado

Segui a ideia do Akai mas não modifiquei os arquivos básicos. Alterei o seguinte:

 

ACBrNFSeUtil: Comentei as duas linhas que retiravam os caracteres #13 e #10

 

TNFSeW.Create: Adicionei a linha: 

 FGerador.Opcoes.RetirarAcentos := False;
 
E pronto. NFS-e emitida corretamente...
  • 1 mês depois ...
  • Membros Pro
Postado (editado)

Mando as informações separadas por |, e antes da impressão eu Substituo a | pelo #13#10

 

      with NFSe.NotasFiscais.Items[0].NFSe do
        Servico.Discriminacao := StringReplace(Servico.Discriminacao,'|', sLineBreak,[rfReplaceAll]);
Editado por marciotga

Atenciosamente,

Márcio Lopes

Analista de Sistemas

  • 3 meses depois ...
Postado

Também faço como o marciotga, coloco I (pipe) e no xml de retorno faço um stringReplace.

A única diferença é que minha impressão é separada e feita no ReportBuilder.

Funciona, mas deixo livre para o cliente colocar o I (pipe) onde deseja fazer a quebra de linha e algumas vezes eles esquecem...

  • 1 ano depois...
Postado

Ola Pessoal na impressão do RPS funciona tanto com ";" quanto com o próprio ENTER , porem na impressão da NFSe pelo servidor nenhum deles funciona, alguém já teve solução para este problema?

  • 1 mês depois ...
Postado
Pessoal, tive o mesmo problema.
 
Seguindo a ideia do membro Akai, fiz umas alterações no fontes nos quais, só é necessário alterar a linha ConfigCidade.QuebradeLinha na function GetConfigCidade de cada provedor.
 
Pelo menos no meu caso, do provedor issCuritiba, está funcionando ok.
 
Caso possam ajudar a testar, agradeço.

ACBr.zip

  • 2 semanas depois ...
Postado

Italo e moderadores, por que não implementar as alterações que estão aqui? Alguma razão?

 

Atualizamos a ACBr aqui e fiz novamente a atualização nos fontes, sorte nossa que tínhamos no fórum aqui a solução... Estamos há dois anos quase usando a solução que coloquei ali e está funcionando tudo legal, tanto na prefeitura quanto na impressão local...

Postado
Henrique, concordo contigo na questão de que precisamos de uma solução definitiva para a questão da quebra de linha na nfs-e tanto na impressão pelo componente quanto pelo servidor do estado porem, conforme os próprios moderadores, seria somente necessário a alteração da linha ConfigCidade.QuebradeLinha na function GetConfigCidade do provedor em questão para que isso funcionasse.
Pelo menos utilizo o servidor ISSCuritiba, assim como o membro Akai, e isso não funciona.
 
Havia realizado as alterações que propôs, para o provedor ISSCuritiba e não obtive sucesso não. Somente consegui seguindo o código do Akai.
 
Fiz umas alterações nos fontes para alterar por meio da linha que comentei, e coloquei logo a cima. No meu caso pelo menos funcionou mas para saber se está 100% e para colocarmos isso como uma "solução definitiva", precisamos ter a certeza de funcionamento em todos os servidores.
Sendo assim, quanto mais pessoas testarem e postarem se funcionou o não, facilitará o processo.
 
Obrigado desde já pela colaboração.
Postado

é como eu disse, 

 

eu não pude seguir com a alteração que eu havia feito porque acabou causando erro na NF-e,

eu deixei imprimindo a NFS-e corretamente (todos provedores que uso), mas no webservice da prefeitura ela esta sem as quebras de linha.

por hora esta assim.

Massao Aihara

  • Consultores
Postado

Boa tarde a todos,

 

O problema que não existe uma padronização entre os provedores, corremos o risco de funcionar para alguns e não funcionar para outros.

 

Digo isso a respeito da assinatura, pois fazendo um leitura rápida pelo tópico notei que uma das soluções seria não remover o #10 e #13, até onde sei esses caracteres são inseridos automaticamente na assinatura.

 

Se não remover, corremos o risco de algum provedor recusar a assinatura.

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

Postado

Boa tarde a todos,

 

O problema que não existe uma padronização entre os provedores, corremos o risco de funcionar para alguns e não funcionar para outros.

 

Digo isso a respeito da assinatura, pois fazendo um leitura rápida pelo tópico notei que uma das soluções seria não remover o #10 e #13, até onde sei esses caracteres são inseridos automaticamente na assinatura.

 

Se não remover, corremos o risco de algum provedor recusar a assinatura.

Italo, obrigado pelo retorno.

 

Não lembro ao certo mas estou retirando os #10 e #13 somente do campo descrição e somente se for alterado no arquivo do provedor para quebra de linha sendo #10#13, se não, não faz a alteração.

 

Obrigado.

Postado

Pessoal, realmente, conforme já comentado por um membro, tive problema também na emissão da nf-e por conta da quebra de linha...

 

Voltei a estaca 0 /o\.

 

Obrigado a todos pela ajuda.

  • 4 semanas depois ...
Postado

Apenas para relatar minhas experiências agora que coloquei a NFSe em produção para meus clientes... Por enquanto testei apenas em Porto Alegre (provedor BHISS).

 

Acho que não adianta tentarmos inserir quebras de linha no XML, pois é provável que os provedores removam esse tipo de coisa do mesmo. No meu primeiro teste com a NFSe, tentei montar uma tabelinha com algumas informações, formatando-a com sequências de espaços e quebras de linha. Quando o XML voltou da prefeitura, minhas sequências de espaços tinham se tornado um único espaço, e as quebras de linha sumiram.

 

Hoje eu estava experimentando um pouco mais com a discriminação do serviço. Percebi que na consulta online de uma NF que enviei, o provedor interpretou o caractere pipe ("|") como quebra de linha, como pode ser visto na imagem abaixo:

 

FcFzefY.png

 

Infelizmente, acredito que isso seja arbitrário e que não sejam todos os provedores que fazem isso. Sendo assim, não posso me basear nesse método, já que minha empresa atende todo o Brasil.

 

Portanto, já que não existe um padrão entre os provedores, pretendo implementar o seguinte no meu sistema (assumindo que o DANFSe será gerado (principalmente) pelo meu sistema):

  • Vou criar símbolos a serem inseridos onde eu quero ter quebra de linha, TAB, espaços, etc
    • Exemplos, ainda não testados (é possível que alguns provedores removam alguns destes do XML):
      • quebra de linha = "</br>"
      • tab = "</tab>"
      • 4 espaços = "</esp=4>"
  • Na hora de gerar o relatório do DANFSe, basta interpretar estes símbolos e formatar a discriminação de acordo

Claro que essa proposta irá deixar bem esquisito os DANFSes gerados pelos sites dos provedores. No meu caso, como meus clientes irão quase sempre gerá-lo pelo meu sistema, isso não é um grande problema.

 

Se alguém tiver sugestões/críticas ou se interessar pela minha solução, entre em contato e eu posso ver se disponibilizo as rotinas quando estiverem prontas.

 

---

Ricardo Godoy de Oliveira

  • Este tópico foi criado há 2721 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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