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 */