Ir para conteúdo
  • Cadastre-se

dev botao

Informações Complementares Cortando no DANFE


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

Recommended Posts

Boa tarde. Estamos com o seguinte problema: Na impressão do DANFE pelo Fortes, notei que há uma variável chamada iLimiteLinhas que recebe o valor 10 no FormCreate da ACBrNFeDANFeRLRetrato. Assim, as informações complementares no DANFE são limitadas a 10 linhas e, quando ultrapassa, alimenta o memo rlmContinuacaoDadosAdicionais. Até aí tudo bem. O problema é que, quando uma linha do memo de informações complementares recebe um texto grande a ponto de quebrar linha, cada linha quebrada representa uma linha na impressão, porém é apenas uma linha do memo. Sendo assim, o memo de continuação dos dados adicionais não é gerado, pois no primeiro memo as 10 linhas não foram ultrapassadas, mas na impressão sai "cortado", por causa das linhas que quebraram. Sei que a explicação ficou confusa, então estou anexando uma imagem para ilustrar o problema.

MemoDanfe.JPG

Link para o comentário
Compartilhar em outros sites

Bom dia. Notamos que o problema mencionado acontece somente na pré-visualização do DANFE. Após autorizar a nota, a impressão se comporta como deveria. Para evitar que os colegas aqui percam tempo analisando o xml, primeiro vamos fazer mais testes aqui para entender por que só acontece antes de autorizar. Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Solution

Boa tarde. Consegui resolver. O problema era o seguinte: quando eu alimentava a tag infCpl com os dados adicionais, nos trechos onde quebrava linha, estava passando isso aqui: #$D#$A

Quando a nota é enviada, automaticamente é gerado o arquivo xml. No arquivo xml, os trechos #$D#$A são gravados como ';'.

Na função InsereLinhas da unit ACBrNFeDANFeRL, quando a nota já está autorizada, o texto passado é o buscado do próprio arquivo xml, que já estava com os ';'. Assim, quando chega no if Pos(';', sLinhaProvisoria) = 0, a linha é quebrada e a impressão fica correta.

Já quando a nota ainda não foi enviada, não há arquivo xml. Então o texto usado no método InsereLinhas é alimentado em tempo de execução, na tag infCpl.

Só que, quando pega direto da tag alimentada em tempo de execução, o texto das informações adicionais ainda fica com #$D#$A, em vez de ficar com o ';'.

Assim, ao fazer a pré-impressão do DANFE, quando chega no if Pos(';', sLinhaProvisoria) = 0 do método InsereLinhas da unit ACBrNFeDANFeRL, não quebrava a linha corretamente, pois não encontrava o ';'.

Enfim, resolvi da seguinte maneira: quando alimento a tag infCpl no meu código, faço um StringReplace trocando #$D#$A por ';'. Fazendo assim, funcionou corretamente tanto para a pré-impressão como para a impressão normal (após enviar a nota).

Fica a dica para quem se deparar com esse problema.

Link para o comentário
Compartilhar em outros sites

Não, @Juliomar Marchetti. A pré-impressão não é impressa. Só aparece na tela para o usuário ver uma prévia da nota. O que é impresso é apenas a nota propriamente dita, após o envio e autorização.

O termo correto é pré-visualização.

O usuário só pode pré-visualizar notas não autorizadas e só pode imprimir notas autorizadas.

Editado por leotelles
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2244 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.