Ir para conteúdo
  • Cadastre-se

Adelson

Membros
  • Total de ítens

    3
  • Registro em

  • Última visita

Tudo que Adelson postou

  1. Boa tarde, Estou com o mesmo problema aqui SP Erro inesperado: Erro ao ler informações do banco de dados
  2. obirgado pela informação ! Como carrego todos CTE-s no componente depois utilizo um a um através de um FOR..., fazendo o uso do DEBUG percebi que a procedure TACBrCTeDACTEFR.ImprimirDACTEPDF da unit ACBrCTeDACTEFR conforme abaixo: procedure TACBrCTeDACTEFR.ImprimirEVENTOPDF(CTE: TCTe); const TITULO_PDF = 'Conhecimento de Transporte Eletrônico - Evento'; var I: Integer; NomeArq: String; begin if PrepareReportEvento then begin dmDacte.frxPDFExport.Author := Sistema; dmDacte.frxPDFExport.Creator := Sistema; dmDacte.frxPDFExport.Producer := Sistema; dmDacte.frxPDFExport.Title := TITULO_PDF; dmDacte.frxPDFExport.Subject := TITULO_PDF; dmDacte.frxPDFExport.Keywords := TITULO_PDF; dmDacte.frxPDFExport.ShowDialog := False; for I := 0 to TACBrCTe(ACBrCTe).Conhecimentos.Count - 1 do begin NomeArq := StringReplace(TACBrCTe(ACBrCTe).EventoCTe.Evento.Items[0].InfEvento.id, 'ID', '', [rfIgnoreCase]); dmDacte.frxPDFExport.FileName := IncludeTrailingPathDelimiter(PathPDF) + NomeArq {dmDacte.CTe.procCTe.chCTe} + '-procEventoCTe.pdf'; dmDacte.frxReport.Export(dmDacte.frxPDFExport); end; end; end; Executa um FOR com todos os conhecimentos toda vez que é chamada, para resolver o problema por aqui, tive que comentar as linha dos FOR como abaixo: procedure TACBrCTeDACTEFR.ImprimirEVENTOPDF(CTE: TCTe); const TITULO_PDF = 'Conhecimento de Transporte Eletrônico - Evento'; var // I: Integer; NomeArq: String; begin if PrepareReportEvento then begin dmDacte.frxPDFExport.Author := Sistema; dmDacte.frxPDFExport.Creator := Sistema; dmDacte.frxPDFExport.Producer := Sistema; dmDacte.frxPDFExport.Title := TITULO_PDF; dmDacte.frxPDFExport.Subject := TITULO_PDF; dmDacte.frxPDFExport.Keywords := TITULO_PDF; dmDacte.frxPDFExport.ShowDialog := False; // for I := 0 to TACBrCTe(ACBrCTe).Conhecimentos.Count - 1 do // begin NomeArq := StringReplace(TACBrCTe(ACBrCTe).EventoCTe.Evento.Items[0].InfEvento.id, 'ID', '', [rfIgnoreCase]); dmDacte.frxPDFExport.FileName := IncludeTrailingPathDelimiter(PathPDF) + NomeArq {dmDacte.CTe.procCTe.chCTe} + '-procEventoCTe.pdf'; dmDacte.frxReport.Export(dmDacte.frxPDFExport); // end; end; end; utilizo o fastreport como podem notar, a pergunta é isto pode ser alterado na distribuição do componente ou existe uma outra maneira para se contornar este problema no meu caso.
  3. Bom dia, Após enviar o CT-e e receber as informações tenho uma rotina que envia os email aos respectivos envolvidos, porém, se existe mais de um CT-e a exportação do PDF vai se repetindo a cada CT-e, exemplo: 3 CT-e : Exporta o numero 1 na primeira vez Exporta os numero 1,2 na segunda vez Exporta os numero 1,2,3 na terceira vez Segue parte rotina if EnviarEmail and EnviarSefaz then begin memoStatus.Lines.Add(''); memoStatus.Lines.Add('Enviando Conhecimento(s) por e-mail'); memoStatus.Lines.Add(''); for I := 0 to (CTeSYS4.WebServices.Retorno.CteRetorno.ProtCTe. Count - 1) do begin EnderecoEmail := sEmailsCTe; sDataHora := DateTimeToStr (CTeSYS4.WebServices.Retorno.CteRetorno.ProtCTe.Items.DhRecbto); sProtocolo := CTeSYS4.WebServices.Retorno.CteRetorno.ProtCTe. Items.nProt; sStat := IntToStr(CTeSYS4.WebServices.Retorno.CteRetorno.ProtCTe.Items .cStat); sMotivo := CTeSYS4.WebServices.Retorno.CteRetorno.ProtCTe.Items .xMotivo; sChave := CTeSYS4.WebServices.Retorno.CteRetorno.ProtCTe. Items.chCTe; sConhecimento := Copy(sChave, 26, 3) + '.' + Copy(sChave, 29, 3) + '.' + Copy(sChave, 32, 3); sCTRCMax := SiglaFilial + 'E' + Zero(StrToInt(SoNumero(sConhecimento)), 6, True, '0'); if EnderecoEmail <> '' then begin sCC.Clear; mmEmailMsg.Clear; mmEmailMsg.Lines.Add ('Comunicamos por este e-mail, a emissão do Conhecimento Eletrônico (Chave : ' + sChave + ') e autorização de uso sob o protocolo : ' + CTeSYS4.Conhecimentos.Items.CTe.procCTe.nProt); mmEmailMsg.Lines.Add(' '); mmEmailMsg.Lines.Add(' CTe Numero :' + sConhecimento); mmEmailMsg.Lines.Add(' '); mmEmailMsg.Lines.Add ('Enviamos em anexo o arquivo XML do respectivo CT-e.'); mmEmailMsg.Lines.Add(' '); mmEmailMsg.Lines.Add('Atenciosamente,'); mmEmailMsg.Lines.Add(' '); mmEmailMsg.Lines.Add(NomeFilial); mmEmailMsg.Lines.Add('System4 - CTe'); if trim(EmailCopiaFilial) <> '' then sCC.Add(trim(EmailCopiaFilial)); if trim(EmailContabilidade) <> '' then sCC.Add(trim(EmailContabilidade)); Ok := False; Falha := False; memoStatus.Lines.Add('CT-e : ' + sConhecimento); memoStatus.Lines.Add('Chave : ' + sChave); memoStatus.Lines.Add('Destinatário : ' + EnderecoEmail); for I2 := 0 to sCC.Count - 1 do begin memoStatus.Lines.Add('Cópia para : ' + sCC[i2]); end; // Se houver mais de uma host utilize o contador // iHost := 1 ate os que tiver repeat memoStatus.Lines.Add(''); try CTeSYS4.Conhecimentos.Items.EnviarEmail(edtSmtpHost.Text, edtSmtpPort.Text, edtSmtpUser.Text, edtSmtpPass.Text, edtSmtpUser.Text, EnderecoEmail, edtEmailAssunto.Text + ' Nº : ' + sConhecimento, mmEmailMsg.Lines, chkEmailSSL.Checked, True // Enviar PDF junto , sCC // Lista com emails que serão enviado cópias - TStrings , nil // Lista de anexos - TStrings , chkPedeConfirmacao.Checked, False, NomeFilial, False); // Pede confirmação de leitura do email Ok := True; memoStatus.Lines.Add('Enviado pelo Host [' + HostSmtpFilial + '] '); memoStatus.Lines.Add(''); except Ok := False; Falha := True; end; until Ok or Falha; memoStatus.Lines.Add(''); if Falha then MessageDlg('E-mail não enviado por motivo de Falha.', mtError, [mbOk], 0); end else begin // MessageDlg('Tomador do Serviço não possui, e-mail Cadastrado CTe : ' + sConhecimento, mtInformation, [mbOk], 0); Ok := False; end; if Ok then MessageDlg('E-mail enviado com Sucesso.', mtInformation, [mbOk], 0) else MessageDlg('Nem Todos E-mails foram enviado com Sucesso.', mtInformation, [mbOk], 0); sCC.Free; sEmailsCTe.Free; end;
×
×
  • 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...