Ir para conteúdo
  • Cadastre-se

dev botao

Quebra De Linha Na Tag Discriminação


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

Recommended Posts

Postado (editado)

Boa Tarde amigos.

 

Os componentes de impressão de NFSe do ACBR usam por padrão o caractere ';'(ponto e vírgula) para quebra de linha no momento da impressão, por isso devemos passar os serviços da NFSe separados por esse caractere para que no momento da impressão eles saiam separados em linhas. Exemplo:
 

Servico.Discriminacao:= 'Teste de Serviço I' + ';' + 'Teste de Serviço II'

A impressão fica dessa forma:

 

kRRD6p.png

 

Mas quando a nota é impressa pelo site, ela fica dessa maneira:

 

lPPhyF.png

 

Em consulta ao manual da Abrasf e a empresa responsável pela NFSe aqui da minha cidade, verifiquei que o separador correto para esses casos é o conjunto de caracteres \s\n.

 

Usando esse conjunto a impressão no site da prefeitura acontece da maneira correta.

 

Pensando nisso adicionei a classe ACBrNFSeDANFSeClass a propriedade "CaractereQuebraLinha" que deixará a cargo do usuário do componente a escolha do caractere usado para quebra de linha.

 

Mantive o ';' como padrão para não ocorrerem problemas com os que já usam dessa forma.

 

Peço a algum dos moderadores que verifiquem a alteração que fiz e se essa é uma alteração interessante para ser incorporada ao componente.

 

Obs: a principio fiz apenas para FortesReport, pois só tenho ele instalado na minha máquina.

 

Obrigado.

 

 

 

 

ACBrNFSeDANFSe.rar

Editado por brsamn
  • Moderadores
Postado

Bom dia

Interessante sua implementação !

estive conversando com o nosso amigo Italo  e ele fez uma sugestão diferente mas que tratará de forma igual essa questão!

nos próximos dias estará disponível no svn!

 

desde já agradecemos a contribuição e ideia!

Forte abraço

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
 

 

  • Consultores
Postado

Boa tarde a todos,

 

A ideia é incluir uma parametrização nas Units referentes aos provedores.

 

A principio esse parâmetro que pode se chamar QuebradeLinha terá o valor ";".

 

Quando você for alimentar o componente deve-se sempre utilizar o carácter ";" para identificar que naquele ponto deve ocorrer uma quebra de linha.

 

Vamos supor que o provedor XYZ se utiliza do carácter "|", o que vai ocorrer?

 

Ao gerar o XML para ser enviado para o Web Services o componente vai substituir o ";" pelo "|".

 

Por outro lado ao imprimir o DANFSE, o componente vai saber qual é o carácter ou sequencia de caracteres que ele deve utilizar para realizar a quebra de linha em função do provedor.

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

Estou com um problema referente a descrição

 

quando uso um tamanho de caracter muito grande ele corta e não aumenta de tamanho.

somente ate o item 7 que e impresso

 

1,00 REVISAO KM 45.000 VL/UN: 0,00 VL/TOTAL: 0,00;
1,00 TROCAR OLEO DE MOTOR E FILTROS VL/UN: 0,00 VL/TOTAL: 0,00;
1,00 TROCAR DISCO E PASTILHA DE FREIO VL/UN: 0,00 VL/TOTAL: 0,00;
2,00 TROCAR AMORTECEDORES TRAS VL/UN: 0,00 VL/TOTAL: 0,00;
2,00 TROCAR KIT AMORT DIANTEIRO VL/UN: 0,00 VL/TOTAL: 0,00;
1,00 HIGIENIZAR E REG LUBRIFICAR FREIO TRAS VL/UN: 0,00 VL/TOTAL: 0,00;
1,00 CORRIGIR ATERRAMENTO CHICOTE TRAS VL/UN: 0,00 VL/TOTAL: 0,00;

1,00 TOTAL SERVICO MECANICO VL/UN: 350,00 VL/TOTAL: 350,00;
1,00 ALINHAMENTO VL/UN: 50,00 VL/TOTAL: 50,00;
4,00 BALANCEAMENTO VL/UN: 8,75 VL/TOTAL: 35,00

 

Dangelo Porto

  • Consultores
Postado

Bom dia brsamn,

 

Por favor atualize os fontes e teste novamente.

 

Ao alimentar o componente continue utilizando o ";" para informar a quebra de linha no campo Discriminação.

 

Verifique se ao gerar o XML do RPS o mesmo foi trocado por "\s\n".

Envie o lote contendo esse RPS e verifique o conteúdo da TAG Discriminação do XML na NFS-e.

Visualize tanto pelo componente quanto pelo site essa NFS-e e veja como fica essa informação.

  • 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

Postado

Bom Dia Italo.

 

Não sei se estou fazendo alguma coisa errada, mas todas as vezes que tento abrir o arquivo ACBrNFSeDanfseRL.pkg para recompilar e reinstalar, ele me retorna o seguinte erro:

 

H9lXDR.png

Postado

Bom Dia.

 

Os testes que fiz aqui apresentaram o seguinte comportamenteo. Assim que emito a nota, na primeira impressão, os itens são apresentados com quebra.

 

Se saio do sistema e volto a tentar imprimir depois, os serviços saem todos juntos, dessa forma:

 

Md4JAL.png

 

Acredito que na primeira impressão sai correta porque ele imprime o que esta no componente.

 

Depois que você fecha o DANFE e vai imprimir novamente, ele passa a imprimir lendo o xml.

Postado

Já baixei aqui, obrigado Juliomar Marchetti.

 

Marco o tópico como resolvido ou deixo aberto, já que outros provedores podem necessitar de separadores diferentes?

  • 4 semanas depois ...
Postado

olá, estou utilizando o provedor fiorilli e fiz a mudança acima indicada de trocar o ";" pelo "\s\n", só que no danfe do fastreports, ele imprime esses caracteres, pois continua verificando a quebra por ";".

 

Então fiz o seguinte, onde

//procedure TdmACBrNFSeFR.CarregaServicos;  Unit ACBrNFSeDANFSeFRDM
FieldByName('Discriminacao').AsString := StringReplace(Discriminacao,';', #13, [rfReplaceAll]);

troquei por

//procedure TdmACBrNFSeFR.CarregaServicos; Unit ACBrNFSeDANFSeFRDM
FieldByName('Discriminacao').AsString := StringReplace(StringReplace(Discriminacao, '\s\n', ';', [rfReplaceAll]), ';', #13, [rfReplaceAll]);

Isso resolveu meu problema.

Postado (editado)

Bom dia, agora que achei a referida propriedade, estava procurando no componente danfse.

FieldByName('Discriminacao').AsString := StringReplace(Discriminacao, TACBrNFSe(DANFSeClassOwner.ACBrNFSe).Configuracoes.WebServices.QuebradeLinha, #13, [rfReplaceAll, rfIgnoreCase]);
Editado por jGuto
  • Este tópico foi criado há 3631 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.