Envio de E-mail através de regras
A regra abaixo busca os funcionários que farão aniversário no dia seguinte a sua execução e envia um e-mail para os chefes desses funcionários:
/* Aniversários */
/* Variáveis default para o E-Mail */
definir alfa vRmtEmaDef;
definir alfa vDstEmaDef;
definir alfa vCcpEmaDef;
definir alfa vAssEmaDef;
definir alfa vTxtEmaDef;
definir alfa vAnxEmaDef;
/* Variáveis com valores da R034FUN */
definir alfa vTipSex;
definir alfa vNomFun;
definir numero vNumEmp;
definir numero vTipCol;
definir numero vNumCad;
definir numero vDatBas;
/* Variáveis para identificar o chefe */
definir alfa vEmaCom;
definir alfa vEmaPar;
definir numero vEmpChe;
definir numero vTipChe;
definir numero vCadche;
/* Variáveis para converter a data */
/*Oracle*/
definir alfa vDiaAtual;
definir alfa vMesAtual;
definir numero vNumDiaAtual;
definir numero vNumMesAtual;
/* Cursor que vai procurar os aniversariantes */
Definir cursor CAniv;
/* Carrega variáveis default com os dados da tabela */
vRmtEmaDef = RmtEma;
vDstEmaDef = DstEma;
vCcpEmaDef = CcpEma;
vAssEmaDef = AssEma;
vTxtEmaDef = TxtEma;
vAnxEmaDef = AnxEma;
/* Converte data do sistema em duas strings dd-mm */
RetornaDiaData(DatSis,vNumDiaAtual);
RetornaMesData(DatSis,vNumMesAtual);
/*Oracle*/
se (vNumDiaAtual < 10)
vDiaAtual = "0" + Formatar(vNumDiaAtual, "%1.0f");
senao
vDiaAtual = Formatar(vNumDiaAtual, "%2.0f");
se (vNumMesAtual < 10)
vMesAtual = "0" + Formatar(vNumMesAtual, "%1.0f");
senao
vMesAtual = Formatar(vNumMesAtual, "2.0f");
/* Carrega cursor */
/*Oracle*/
CAniv.SQL "SELECT NUMEMP,TIPCOL,NUMCAD,NOMFUN,TIPSEX,DATNAS FROM R034FUN \
WHERE TO_CHAR(DATNAS-1,'DD') = :vDiaAtual AND
TO_CHAR(DATNAS-1,'MM')
= :vMesAtual";
/*Anywhere*/
CAniv.SQL "SELECT NUMEMP,TIPCOL,NUMCAD,NOMFUN,TIPSEX,DATNAS FROM R034FUN \
WHERE Day(DATNAS) = :vNumDiaAtual AND Month(DATNAS)
= :vNumMesAtual";
CAniv.AbrirCursor();
Enquanto( CAniv.Achou )
inicio
/* Carrega E-Mail com as variáveis default */
RmtEma = vRmtEmaDef; /* Remetente */
DstEma = vDstEmaDef; /* Destinatário */
CcpEma = vCcpEmaDef; /* Com Cópia Para */
AssEma = vAssEmaDef; /* Assunto */
TxtEma = vTxtEmaDef; /* Texto */
AnxEma = vAnxEmaDef; /* Anexos */
/* Preenche variáveis com valores do Cursor */
vNumEmp = CAniv.NUMEMP;
vTipCol = CAniv.TIPCOL;
vNumCad = CAniv.NUMCAD;
vNomFun = CAniv.NomFun;
vDatBas = DatSis;
vTipSex = CAniv.TipSex;
/* Procura E-Mail do chefe do funcionário (Destinatário)*/
BusCadChefe( vNumEmp,vTipCol,vNumCad,vDatBas,1,"S",
vEmpChe,vTipChe,vCadche);
BusEmailFunc( vNumEmp,vTipChe,vCadChe,vEmaPar,vEmaCom);
Se (vEmaCom <> "")
DstEma=vEmacom;
Senao
Se (vEmaPar <> "")
DstEma=vEmaPar;
Senao
inicio
TxtEma = "Não foi possível enviar este E-Mail para o superior ";
se (vTipSex="F")
TxtEma = TxtEma + "da funcionária " + vNomFun + ": ";
senao
TxtEma = TxtEma + "do funcionário " + vNomFun + ": ";
fim;
/* Preenche mensagem do E-Mail (Texto) */
se (vTipSex="F")
TxtEma = TxtEma + "A funcionária " + vNomFun;
senao
TxtEma = TxtEma + "O funcionário " + vNomFun;
TxtEma = TxtEma + " estará de aniversário amanhã!";
/* Envia o E-Mail, pega o próximo registro e volta para o
início do loop */
EnviaEMail( RmtEma,DstEma,CcpEma,AssEma,TxtEma,AnxEma);
CAniv.Proximo();
fim;
CAniv.FecharCursor();
/* Fim da Regra de Enviar E-Mails de Aniversários */
English
Español
English
Español


