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.