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;