Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde, fui testar o imprimir PDF evento com Fortes Report e deu erro.

Então rodei o Demo_ACBrCTe e  imprime normalmente, mas quando clico no botão PDF também dá erro.

Está com problema ou é alguma configuração?

Obrigado.

 

 

Postado (editado)

Olá Sergiom;

Qual o erro que ocorre? para que possamos tentar te ajudar.

Editado por Maiquel

Maiquel Parisotto

 

"Ora, a fé é o firme fundamento das coisas que se esperam, e a prova das coisas que se não vêem"

Postado

Access violation at address 00769ECE

Acho que é neste ponto

      if ACTe <> nil then
        FCTe := ACTe;

      with RLPDFFilter1.DocumentInfo do
      begin
        Title := ACBrStr('DACTE - Conhecimento nº ') +
          FormatFloat('000,000,000', FCTe.Ide.nCT);
        KeyWords := ACBrStr('Número:') + FormatFloat('000,000,000', FCTe.Ide.nCT) +
          ACBrStr('; Data de emissão: ') + FormatDateTime('dd/mm/yyyy', FCTe.Ide.dhEmi) +
          ACBrStr('; Destinatário: ') + FCTe.Dest.xNome +
          '; CNPJ: ' + FCTe.Dest.CNPJCPF;
      end;
 

Por que o imprimir EVENTO manda abrir duas vezes o OPENDIALOG e carrega em conhecimento, depois em evento?

Eu só preciso carregar o evento, certo?

 

  OpenDialog1.Title := 'Selecione o CTe';
  OpenDialog1.DefaultExt := '*-cte.xml';
  OpenDialog1.Filter := 'Arquivos CTe (*-cte.xml)|*-cte.xml|Arquivos XML (*.xml)|*.xml|Todos os Arquivos (*.*)|*.*';
  OpenDialog1.InitialDir := ACBrCTe1.Configuracoes.Arquivos.PathSalvar;

  ACBrCTe1.Conhecimentos.Clear;
  if OpenDialog1.Execute then
  begin
    ACBrCTe1.Conhecimentos.LoadFromFile(OpenDialog1.FileName);
  end;

  OpenDialog1.Title := 'Selecione o Evento';
  OpenDialog1.DefaultExt := '*-procEventoCTe.xml';
  OpenDialog1.Filter := 'Arquivos Evento (*-procEventoCTe.xml)|*-procEventoCTe.xml|Arquivos XML (*.xml)|*.xml|Todos os Arquivos (*.*)|*.*';
  OpenDialog1.InitialDir := ACBrCTe1.Configuracoes.Arquivos.PathSalvar;

  if OpenDialog1.Execute then
  begin
    ACBrCTe1.EventoCTe.Evento.Clear;
    ACBrCTe1.EventoCTe.LerXML(OpenDialog1.FileName);
    ACBrCTe1.ImprimirEvento;
  end;
 

 

 

Postado

Ítalo, na Unit ACBrCTeDAEventoRL.pas colocando comentário como abaixo funciona sem dar erro.

//      with RLPDFFilter1.DocumentInfo do
//      begin
//        Title := ACBrStr('DACTE - Conhecimento nº ') +
//          FormatFloat('000,000,000', FCTe.Ide.nCT);
//        KeyWords := ACBrStr('Número:') + FormatFloat('000,000,000', FCTe.Ide.nCT) +
//          ACBrStr('; Data de emissão: ') + FormatDateTime('dd/mm/yyyy', FCTe.Ide.dhEmi) +
//          ACBrStr('; Destinatário: ') + FCTe.Dest.xNome +
//          '; CNPJ: ' + FCTe.Dest.CNPJCPF;
//      end;
 

Se carregar o CTe antes do evento, irá imprimir PDF igual a opção de imprimir com preview. 

Verifique por favor.

 

  • Consultores
Postado

Bom dia Sérgio,

No meu entendimento devemos sempre carregar o XML do CT-e e depois do evento e por fim imprimir ou gerar o seu PDF.

Caso contrario teremos somente os dados do evento e desta forma não saberemos qual CT-e o evento esta vinculado. 

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

No caso de evento de inutilização é diferente.  Em parte concordo contigo, mas a impressão com CTe e sem CTe, ambas saem iguais em imprimir PDF e imprimir para  a impressora no DEMO, o que faz estas linhas que comentei não serem necessárias no PDF.  É o que gerou o erro.

Faça o teste.

 

  • Consultores
Postado

Sergio,

Inutilização não é evento.

Você não inutiliza um CT-e e sim um numero ou uma faixa de números.

Cancelamento é um evento pelo simples fato do CT-e existir.

A inutilização não é evento, como dito, você esta informando a SEFAZ que o numero ou uma faixa de números não se referem a nenhum CT-e, pois ocorreu uma falha no sistema e não existe nenhum CT-e com o numero informado ou pertencente a faixa informada.

Temos os seguintes métodos de impressão:

Para o CT-e temos Imprimir e ImprimirPDF;

Para Eventos temos ImprimirEvento e ImprimirEventoPDF;

Para Inutilização temos ImprmirInutilizacao e ImprimirInutilizacaoPDF.

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

Ok, não tive inutilização, por isso não visto.

De qualquer forma, se você fizer o teste com  ImprimirEvento e ImprimirEventoPDF  no demo carregando o CTe e sem carregar verá que as impressões são iguais, só está dando erro no PDF.

Postado

Ítalo, boa tarde, desculpe não ter lido antes e ter respondido.

Fiz somente como FORTES REPORT, pois o FAST Report não está embutido, tenho que enviar os arquivos de report junto.

Tem mais uma questão, com relação ao nome do PDF gerado do evento.  Não  dá para manter a mesma grafia do nome do XML?

Veja o exemplo abaixo:

110111-35160420252460000114570010000000011000000010-1-procEventoCte.xml  nome do Evento

1101113516042025246000011457001000000001100000001001-procEventoCTe.pdf  nome do PDF

 

 

 

Postado

Ítalo, a linha que muda o nome do PDF do evento é esta.

      sFile := TACBrCTe(ACBrCTe).DACTE.PathPDF +
               OnlyNumber(TACBrCTe(ACBrCTe).EventoCTe.Evento.Items.InfEvento.Id) + 
               '-procEventoCTe.pdf';
Tirando a função OnlyNumber, manterá o mesmo nome.

 

 

 

  • Consultores
Postado

Boa tarde Sergio,

O arquivo *-procEventoCTe.xml é salvo automaticamente pelo componente ou é a sua aplicação que salva ele?

Pois a rotina que defini o nome do arquivo esta da seguinte forma:

 if FPConfiguracoesCTe.Arquivos.Salvar then
            begin
              NomeArq := OnlyNumber(FEvento.Evento.Items[ I ].InfEvento.Id) + '-procEventoCTe.xml';

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

Ítalo, eu estou importando XML exportados do emissor gratuito.  Foi ele que gerou estes nomes.

Fiz um teste carregando o CTe e o respectivo evento e o PDF gerado foi assim.

1101113516092025246000011457001000000184100000184501-procEventoCTe.pdf

Tem alguma variável que eu possa usar para recuperar o nome do PDF gerado pela rotina ImprimeEventoPDF.  Acredito que isto resolve o problema.

Obrigado pelo atenção

Sérgio 

 

 

  • Consultores
Postado

Bom dia Sérgio,

Se tratando do arquivo *-procEventoCTe.xml não existe nenhuma recomendação por parte do ENCAT a respeito do nome como ele deve ser formatado.

O que fizemos foi o seguinte:

No caso do arquivo *-cte.xml a recomendação é que se utilize o ID sem o prefixo "CTe", resumindo: <chave do CT-e> + '-cte.xml'

Para o evento adotamos a mesma regra, ou seja, utilizamos o ID sem o prefixo "ID", resumindo: <código do evento> + <chave do CT-e> + <sequencial com 2 digitos> + '-procEventoCTe.xml'

A formatação acima é adotada pelo componente ACBrCTe para todos os tipos de eventos tanto para o arquivo XML quanto para o PDF.

Lembrando que no caso do CT-e temos os eventos: Cancelamento, EPEC (ambos por serem únicos o sequencial sempre será 01) e a carta de correção que não é única, logo o sequencial poderá ser: 01, 02, etc.

Não vejo necessidade de ter uma função que retorno o nome do XML ou PDF, uma vez que sabendo a formatação você consegue montar, ou você pode muito bem guardar no banco de dados o ID do evento sem o prefixo que também resolve o seu 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

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