[RESOLVIDO] Duvida sobre HCM

Discussão em 'EMS , HCM e Totvs 11' iniciado por flybhz, Julho 30, 2010.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. flybhz

    flybhz Sem Pontuação

    Entao rapaziada,
    existe alguma possibilidade de configurar o HCM210 para enviar emails, ou seja, qndo ouver um desligamento de um funcionario automaticamente gerar um email e enviar para este cadastro.

    se tiver como alguem poderia me dizer como fazer..
    obrigadoo
  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Até a versão do HCM-209 sei que não tinha nada, dai eu desenvolvi uma rotina na trigger de Write da tabela de funcionário que verificava se o campo de data de desligamento fosse alterado era notificado um grupo de pessoas que estavam cadastrados em uma tabela específica.
    Utilizando as próprias API's da DAtasul.


    T+
  3. Lucimaralye

    Lucimaralye Sem Pontuação

    Olá,

    Nunca vi esta funcionalidade no HCM 2.10. Ele até tem um cadastro de grupo de e-mail no módulo de Folha de pagamento, porém não encontrei nenhum lugar onde você possa relacionar uma rotina a este grupo de e-mail.

    Acredito que a melhor forma seria fazer a customização mesmo, conforme o exemplo citado anteriormente.

    Att,

    Lucimara.
  4. kakaos

    kakaos Membro Participativo

    ola Cleiton,
    sera que voce poderia postar esta sua rotina para entender melhor como poderia aplicar esta solucao...
    obrigado.
  5. fernandofarah

    fernandofarah Membro Participativo

    opa, não existe não, até a api que é usada pela EMS nao funciona, tendo esse problema criei um programa para isso:

    Código:
    DEF TEMP-TABLE ttEmail
    field vDestino    as char
    field vCopia      as char
    field vRemetente  as CHAR
    FIELD vAssunto      AS CHAR
    FIELD vServidor     AS CHAR
    FIELD vPorta        AS CHAR
    FIELD vFormato      AS CHAR
    FIELD vArqAnexo     AS CHAR
    FIELD vFormatoMSG   AS CHAR
    FIELD vMensagem     AS CHAR
    FIELD cArquivoEmail AS CHAR.
    
    DEF VAR vMensagem AS CHAR.
        
    IF OPSYS <> "UNIX" THEN 
        RUN piEnviaMsgBlat.  /***** Windows *****/ 
    ELSE 
        RUN piEnviaMsgUnix.  /***** Unix    *****/ 
    
    
    /********** Procedure para Execução de Envio de E-Mail pelo servidor BLAT - Windows **********/ 
    PROCEDURE piEnviaMsgBlat: 
    
    
        DEF VAR vComando           AS CHARACTER        NO-UNDO. 
        DEF VAR iCont              AS INTEGER          NO-UNDO. 
        DEF VAR cArquivoEmail      AS CHARACTER        NO-UNDO      FORMAT "x(60)". 
        DEF VAR cArquivoLog        AS CHARACTER        NO-UNDO      FORMAT "x(60)". 
        DEF VAR cArquivoBat        AS CHARACTER        NO-UNDO      FORMAT "x(60)". 
    
        CREATE ttEmail.
        ASSIGN ttEmail.vDestino    = "fernando.farah@ricaalimentos.com.br"
               ttEmail.vCopia      = ""
               ttEmail.vRemetente  = "rica@ricaalimentos.com.br"
               ttEmail.vAssunto    = "TESTE"
               ttEmail.vServidor   = "189.44.75.226"
               ttEmail.vPorta      = "25"
               ttEmail.vFormato    = ""
               ttEmail.vArqAnexo   = ""
               ttEmail.vFormatoMSG = "TEXTO"
               ttEmail.vMensagem   = "TESTE"
               ttEmail.vArqAnexo   = "c:\temp\saida.txt".
    
        ASSIGN ttEmail.vDestino   = REPLACE(ttEmail.vDestino  ,CHR(10),",")        
               ttEmail.vCopia     = REPLACE(ttEmail.vCopia    ,CHR(10),",") 
               ttEmail.vRemetente = REPLACE(ttEmail.vRemetente,CHR(10),",") 
               ttEmail.vDestino   = REPLACE(ttEmail.vDestino  ,";",",")        
               ttEmail.vCopia     = REPLACE(ttEmail.vCopia    ,";",",")        
               ttEmail.vMensagem  = "TESTANDO ENVIO DE E-MAIL"
    
               cArquivoBat        = SESSION:TEMP-DIRECTORY + "\enviar_email.bat" 
               cArquivoBat        = REPLACE(cArquivoBat,"\\","/") 
               cArquivoBat        = REPLACE(cArquivoBat,"//","/") 
               cArquivoBat        = REPLACE(cArquivoBat,"\/","/") 
               cArquivoBat        = REPLACE(cArquivoBat,"/\","/") 
               cArquivoBat        = REPLACE(cArquivoBat,"\","/") 
                
               cArquivoEmail      = SESSION:TEMP-DIRECTORY + "\enviar_email.txt" 
               cArquivoEmail      = REPLACE(cArquivoEmail,"\\","/") 
               cArquivoEmail      = REPLACE(cArquivoEmail,"//","/") 
               cArquivoEmail      = REPLACE(cArquivoEmail,"\/","/") 
               cArquivoEmail      = REPLACE(cArquivoEmail,"/\","/") 
               cArquivoEmail      = REPLACE(cArquivoEmail,"\","/") 
    
               cArquivoLog        = SESSION:TEMP-DIRECTORY + "\enviar_email.log" 
               cArquivoLog        = REPLACE(cArquivoLog,"\\","/") 
               cArquivoLog        = REPLACE(cArquivoLog,"//","/") 
               cArquivoLog        = REPLACE(cArquivoLog,"\/","/") 
               cArquivoLog        = REPLACE(cArquivoLog,"/\","/") 
               cArquivoLog        = REPLACE(cArquivoLog,"\","/"). 
    
        OUTPUT TO VALUE(cArquivoEmail) CONVERT TARGET "iso8859-1". 
            PUT UNFORMATTED ttEmail.vMensagem SKIP. 
        OUTPUT CLOSE. 
    
        FILE-INFO:FILE-NAME = SEARCH("J:\datasul\ems2\interfac\mail\blat.exe")  /**** Informe o caminho do arquivo BLAT.EXE ****/. 
    
        ASSIGN vComando = "@" + "~"" + FILE-INFO:FULL-PATHNAME + "~"" + 
                          " " + 
                          "~"" + cArquivoEmail + "~"" + 
                          " -s" + 
                          ' "' + 
                          ttEmail.vAssunto + 
                          '"' + 
                          " -f " + 
                          ttEmail.vRemetente + 
                          " -t " + 
                          '"' + ttEmail.vDestino + '"' + 
                          " -server " + 
                          "~"" + ttEmail.vServidor + "~"" +
                          " -port " + 
                          STRING(ttEmail.vPorta) + 
                          " -mime" + 
                          " -q" + 
                          " -noh" + 
                          " -noh2" + 
                          " -u fernando.farah" +  /*** Servidor SMTP exige autenticação, informe o usuário/senha aqui ***/
                          " -pw ff2008*" +
                          " -debug -log " + 
                          cArquivoLog + 
                          " -timestamp".
    
        IF ttEmail.vCopia <> "" THEN 
            ASSIGN vComando = vComando + " -c " + ttEmail.vCopia. 
        
        IF ttEmail.vFormato <> "TEXTO"  AND  
           ttEmail.vFormato <> ""       THEN DO: 
    
            IF ttEmail.vFormato = "ENRICHED" THEN 
                ASSIGN vComando = vComando + " -enriched ". 
            
            IF ttEmail.vFormato = "HTML" THEN 
                ASSIGN vComando = vComando + " -html ". 
        END. 
    
        IF ttEmail.vArqAnexo <> "" THEN DO: 
    
            DO iCont = 1 TO NUM-ENTRIES(ttEmail.vArqAnexo): 
    
                ASSIGN vComando = vComando + " -attach ~"" + ENTRY(iCont,ttEmail.vArqAnexo) + "~"".
            END. 
        END. 
    
        OUTPUT TO VALUE(cArquivoBat) CONVERT TARGET "IBM850" . 
    
            PUT UNFORMATTED "@chcp 850"  SKIP. 
            PUT UNFORMATTED vComando. 
    
        OUTPUT CLOSE. 
    
        DOS SILENT VALUE("~"" + cArquivoBat + "~""). 
    
        OS-DELETE VALUE(cArquivoBat).
        OS-DELETE VALUE(cArquivoEmail).
    
        RETURN "OK". 
    END PROCEDURE. 
    
    /*/********** Procedure para Execução de Envio de E-Mail pelo servidor UNIX **********/ 
    PROCEDURE piEnviaMsgUnix: 
    
        DEF VAR cNovoDir            AS CHARACTER        NO-UNDO. 
        DEF VAR cArquivo1           AS CHARACTER        NO-UNDO. 
        DEF VAR cArquivo2           AS CHARACTER        NO-UNDO. 
        DEF VAR iCont               AS INTEGER          NO-UNDO. 
        DEF VAR cArquivoEmail       AS CHARACTER        NO-UNDO. 
    
        ASSIGN ttEmail.vDestino   = REPLACE(ttEmail.vDestino  ,CHR(10),",")        
               ttEmail.vCopia     = REPLACE(ttEmail.vCopia    ,CHR(10),",") 
               ttEmail.vRemetente = REPLACE(ttEmail.vRemetente,CHR(10),",") 
               ttEmail.vDestino   = REPLACE(ttEmail.vDestino  ,";",",")
               ttEmail.vCopia     = REPLACE(ttEmail.vCopia    ,";",",").
    
        IF SEARCH(SESSION:TEMP-DIRECTORY + "dead.letter") <> ? THEN 
            OS-DELETE SESSION:temp-directory "dead.letter". 
    
        ASSIGN cNovoDir = SESSION:TEMP-DIRECTORY + "tmpmail". 
    
        FILE-INFO:FILE-NAME = cNovoDir. 
    
        IF FILE-INFO:PATHNAME = ? THEN DO: 
    
            UNIX SILENT mkdir VALUE(cNovoDir). 
    
            IF OS-ERROR <> 0 THEN 
                RETURN "NOK". 
    
        END. 
    
        REPEAT: 
    
            ASSIGN cArquivo1 = cNovoDir + "/envio" + STRING(TIME) + ".tmp". 
    
            IF SEARCH(cArquivo1) = ? THEN DO: 
    
                OUTPUT TO VALUE(cArquivo1) CONVERT TARGET "iso8859-1". 
                LEAVE. 
    
            END. 
    
        END. 
    
        PUT UNFORMATTED "From: "    ttEmail.vRemetente SKIP. 
        PUT UNFORMATTED "Subject: " ttEmail.vAssunto   SKIP. 
        PUT UNFORMATTED "To: "      ttEmail.vDestino   SKIP. 
    
        IF ttEmail.vFormatoMSG   = "HTML" AND 
           ttEmail.vArqAnexo = ""     THEN 
            PUT UNFORMATTED "Content-Type: text/html" SKIP. 
    
        PUT  UNFORMATTED ttEmail.vMensagem  SKIP. 
    
        IF ttEmail.vArqAnexo = "" THEN 
            PUT UNFORMATTED "." SKIP. 
    
        OUTPUT CLOSE. 
    
        REPEAT: 
    
            ASSIGN cArquivo2 = cNovoDir + "/execmail" + STRING(TIME). 
    
            IF SEARCH(cArquivo2) = ? THEN DO: 
    
                OUTPUT TO VALUE(cArquivo2). 
                LEAVE. 
    
            END. 
    
        END. 
    
        IF ttEmail.vArqAnexo <> "" THEN DO: 
    
            DO iCont = 1 TO NUM-ENTRIES(ttEmail.vArqAnexo): 
    
                ASSIGN FILE-INFO:FILE-NAME = ENTRY(iCont,ttEmail.vArqAnexo). 
    
                PUT UNFORMATTED "uuencode " FILE-INFO:FULL-PATHNAME  " " 
                    ENTRY(NUM-ENTRIES(FILE-INFO:FULL-PATHNAME,"/"),FILE-INFO:FULL-PATHNAME ,"/")  
                    ">>" cArquivo1 SKIP. 
    
            END. 
    
        END. 
    
        ASSIGN  cArquivoEmail = "sendmail -v "      + 
                                ttEmail.vServidor   +
                                ":"                 + 
                                ttEmail.vDestino    + 
                                " <"                + 
                                cArquivo1           + 
                                ">/dev/null". 
    
        PUT UNFORMATTED 
            cArquivoEmail 
            SKIP. 
    
        OUTPUT CLOSE. 
    
        OUTPUT TO /dev/null. 
        
        OS-COMMAND SILENT chmod 777 VALUE(cArquivo2). 
        OS-COMMAND SILENT VALUE(cArquivo2). 
    
        IF SEARCH(cArquivo1) <> ?  AND 
           SEARCH(cArquivo1) <> "" THEN 
            OS-COMMAND SILENT rm VALUE(cArquivo1). 
    
        IF SEARCH(cArquivo2) <> ?  AND 
           SEARCH(cArquivo2) <> "" THEN 
            OS-COMMAND SILENT rm VALUE(cArquivo2). 
    
        OUTPUT CLOSE. 
    
        IF SEARCH(SESSION:TEMP-DIRECTORY + "dead.letter") <> ? THEN DO: 
            RETURN "NOK". 
        END. 
    
    END PROCEDURE. 
    */
    bye
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página