Enviar email

Discussão em 'EMS , HCM e Totvs 11' iniciado por Carlos Alberto Giusti, Fevereiro 13, 2025.

  1. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    esse código é utilizado para enviar email:

    {include/i_dbvers.i}
    {utp/utapi019.i2}
    {utp/ut-glob.i}
    {cdp/cdcfgdis.i}
    {cdp/cdcfgmat.i}


    DEFINE INPUT PARAMETER p-nota AS RECID.


    DEFINE TEMP-TABLE tt-dados
    FIELD it-codigo LIKE movto-estoq.it-codigo COLUMN-LABEL "Cod Item"
    FIELD desc-item LIKE ITEM.desc-item column-label "Desc Item"
    FIELD Un LIKE ITEM.un column-label "Un"
    FIELD cod-obsoleto LIKE ITEM.cod-obsoleto column-label "Cod Obsoleto"
    FIELD dt-trans LIKE movto-estoq.dt-trans column-label "Data Trans"
    FIELD cod-estabel LIKE movto-estoq.cod-estabel column-label "Est"
    FIELD cod-depos LIKE movto-estoq.cod-depos column-label "Dep"
    FIELD cod-localiz LIKE movto-estoq.cod-localiz column-label "Localização"
    FIELD tipo-trans LIKE movto-estoq.tipo-trans column-label "Tipo"
    FIELD esp-docto LIKE movto-estoq.esp-docto column-label "Esp"
    FIELD quantidade LIKE movto-estoq.quantidade column-label "Quantidade"
    FIELD valor-mat-m LIKE movto-estoq.valor-mat-m column-label "Valor MAT"
    FIELD valor-mob-m LIKE movto-estoq.valor-mob-m column-label "Valor MOB"
    FIELD valor-ggf-m LIKE movto-estoq.valor-ggf-m column-label "Valor GGF"
    FIELD lote LIKE movto-estoq.lote column-label "Lote"
    FIELD referencia LIKE movto-estoq.referencia column-label "Referência"
    FIELD serie-docto LIKE movto-estoq.serie-docto column-label "Série"
    FIELD nro-docto LIKE movto-estoq.nro-docto column-label "Documento"
    FIELD ct-codigo LIKE movto-estoq.ct-codigo column-label "Conta Contábil"
    FIELD cod-unid-negoc LIKE movto-estoq.cod-unid-negoc column-label "UNeg"
    INDEX i-1 AS PRIMARY UNIQUE nro-docto it-codigo lote .

    DEFINE VARIABLE c-destino AS CHAR.
    DEFINE VARIABLE i-mov AS LOGICAL.

    /*-- localizar NF --*/
    FIND FIRST nota-fiscal WHERE RECID(nota-fiscal) = p-nota NO-LOCK NO-ERROR.
    FIND FIRST mgcad.empresa NO-LOCK NO-ERROR.
    FIND FIRST emitente OF nota-fiscal NO-LOCK NO-ERROR.

    c-destino = SESSION:TEMP-DIRECTORY + "esft001rp-" + nota-fiscal.nr-nota-fis + ".txt".
    i-mov = FALSE.

    IF nota-fiscal.cod-emitente <> 100 AND
    nota-fiscal.cod-emitente <> 109 AND
    nota-fiscal.cod-emitente <> 120 AND
    nota-fiscal.cod-emitente <> 128 AND
    nota-fiscal.cod-emitente <> 129 AND
    nota-fiscal.cod-emitente <> 130 AND
    nota-fiscal.cod-emitente <> 146 AND
    nota-fiscal.cod-emitente <> 211 AND
    nota-fiscal.cod-emitente <> 461 AND
    nota-fiscal.cod-emitente <> 695 AND
    nota-fiscal.cod-emitente <> 834 AND
    nota-fiscal.cod-emitente <> 1072 AND
    nota-fiscal.cod-emitente <> 1284 AND
    nota-fiscal.cod-emitente <> 1273 AND
    nota-fiscal.cod-emitente <> 1469 AND
    nota-fiscal.cod-emitente <> 1717 AND
    nota-fiscal.cod-emitente <> 1838 AND
    nota-fiscal.cod-emitente <> 2129 AND
    nota-fiscal.cod-emitente <> 2148 AND
    nota-fiscal.cod-emitente <> 2197 AND
    nota-fiscal.cod-emitente <> 2206 AND
    nota-fiscal.cod-emitente <> 2322 AND
    nota-fiscal.cod-emitente <> 2236 AND
    nota-fiscal.cod-emitente <> 2627 AND
    nota-fiscal.cod-emitente <> 2401 AND
    nota-fiscal.cod-emitente <> 2522 AND
    nota-fiscal.cod-emitente <> 2426 AND
    nota-fiscal.cod-emitente <> 2803 AND
    nota-fiscal.cod-emitente <> 3121 THEN NEXT.




    /*-- movimentos --*/
    FOR EACH movto-estoq NO-LOCK WHERE
    movto-estoq.serie-docto = nota-fiscal.serie
    AND movto-estoq.nro-docto = nota-fiscal.nr-nota-fis
    USE-INDEX documento:

    IF movto-estoq.tipo-trans <> 2 THEN NEXT.

    IF movto-estoq.esp-docto <> 22 THEN NEXT.

    FIND FIRST tt-dados WHERE
    tt-dados.nro-docto = movto-estoq.nro-docto
    AND tt-dados.it-codigo = movto-estoq.it-codigo
    AND tt-dados.lote = movto-estoq.lote NO-ERROR.

    IF NOT AVAIL tt-dados THEN
    DO:
    FIND FIRST ITEM OF movto-estoq NO-LOCK NO-ERROR.
    IF AVAIL ITEM THEN
    DO:
    CREATE tt-dados.
    BUFFER-COPY ITEM TO tt-dados.
    BUFFER-COPY movto-estoq TO tt-dados.
    ASSIGN i-mov = TRUE.
    END.
    END.
    ELSE
    ASSIGN tt-dados.quantidade = tt-dados.quantidade + movto-estoq.quantidade.
    END.

    IF i-mov THEN
    DO:

    OUTPUT TO VALUE (c-destino) NO-CONVERT.

    PUT
    "-----------------------------------------------------------------------------------------------------------------------------------------------------" SKIP
    empresa.razao-social FORMAT 'x(59)'
    "Conhecimento de NFE e Certificados Emitidos"
    SPACE(41)
    "Página: 1" SKIP
    "------------------------------------------------------------------------------------------------------------------------------- "
    STRING(TODAY,"99/99/9999") FORMAT "x(10)" " - " STRING(TIME,"hh:mm:ss") SKIP(2).

    /*
    Demonstração S/A. Relatório Movimentos de Estoques Página: 1
    -------------------------------------------------------------------------------------------------------------- 23/02/2010 - 23:59:58
    */

    PUT
    emitente.cod-emitente ' - ' emitente.nome-abre SKIP
    "Cod Item Desc Item Data Trans Dep Tip Quantidade Lote Documento " SKIP
    "---------------- ------------------------------------------------------------ ---------- --- --- ----------------- ---------- ---------------- " SKIP.

    FOR EACH tt-dados NO-LOCK:
    PUT tt-dados.it-codigo space(2)
    tt-dados.desc-item space(2)
    tt-dados.dt-trans space(2)
    tt-dados.cod-depos space(2)
    "NFS" space(2)
    tt-dados.quantidade space(2)
    tt-dados.lote space(2)
    tt-dados.nro-docto space(2)
    SKIP.

    END.

    PUT SKIP(2)
    "----------------------------------------------------------------------------------------------------------------DATASUL - - ESFT001RP - V:2.00.00.000".

    OUTPUT CLOSE.

    CLIPBOARD:VALUE = c-destino.

    /* find first param-global no-lock no-error.*/

    /* Procura o usu rio que est logado para enviar o e-mail */
    find first usuar_mestre where
    usuar_mestre.cod_usuario = c-seg-usuario no-lock no-error.

    find first param_email no-lock no-error.

    /* API de envio de e-mail */
    run utp/utapi019.p persistent set h-utapi019.

    //message search(c-destino) skip c-destino view-as alert-box.

    create tt-envio2.
    assign tt-envio2.versao-integracao = 1
    //tt-envio2.destino = "alexandre.fernandes@scherdel.com.br;cq@scherdel.com.br;cqm@scherdel.com.br;cqe@scherdel.com.br;cqf@scherdel.com.br;bruno.moreira@scherdel.com.br"
    tt-envio2.destino = "willian.almeida@scherdel.com.br;cq@scherdel.com.br;cqm@scherdel.com.br;cqe@scherdel.com.br;cqf@scherdel.com.br;bruno.moreira@scherdel.com.br"


    tt-envio2.assunto = "Scherdel - Conhecimento de Certificados Emitidos"
    tt-envio2.remetente = "nfesdb@scherdel.com.br"
    tt-envio2.arq-anexo = c-destino.


    IF nota-fiscal.cod-emitente = 100 THEN
    tt-envio2.destino = tt-envio2.destino + ';dsp@fnst.com;sf028709@fnst.com;eyg@fnst.com'.

    create tt-mensagem.
    assign tt-mensagem.mensagem = "Prezado Cliente," +
    CHR(10) + CHR(10) +
    "Segue conhecimento de NFE emitida automaticamente com informações dos lotes produzidos para identificação e separação dos certificados de qualidade enviados pela Scherdel do Brasil" +
    CHR(10) + CHR(10) + "At." + CHR(10) + "Scherdel do Brasil".

    create tt-paramEmail2.
    assign tt-paramEmail2.caminhoEmail = 1.

    run pi-execute4 in h-utapi019 (input table tt-envio2,
    input table tt-mensagem,
    input table tt-paramEmail2,
    input table ttAttachment,
    output table tt-erros).

    IF RETURN-VALUE = "NOK" THEN DO:
    FOR EACH tt-erros:
    message tt-erros.desc-erro view-as alert-box.
    END.
    END.


    delete procedure h-utapi019.
    assign h-utapi019 = ?.

    /* Elimina a tabela tempor ria para o envio do e-mail */
    delete tt-envio2.
    END.


    Está dando o erro abaixo e não envia o email:

    identificador de temp-table tt-paramEmail2 nao confere com a temp-table destino tt-paramEmail2. (5363)


    Alguém consegue me ajudar.
    Não consegui encontrar onde está esse parâmetro: tt-paramEmail2
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Significa que a estrutura da sua temp-table não é a mesma dentro da API utp/utapi019.p
  3. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    segnifica que a include {utp/utapi019.i2} está diferente da utp/utapi019.p? Se sim você poderia me enviar as corretas?
    Mas no programa não tem a temp-table. Acho que vem da {utp/utapi019.i2} e esta deve estar versão errada.
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Não consigo te mandar agora, mas, já que tu tem o fonte do programa, pq tu não recompila ele com a mesma include que tu usa?
  5. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    Já fiz isso e não funcionou
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    tem certeza que seu propath tá certo?

    Tanto da compilação como na execução

Compartilhe esta Página