/*Define vari veis de acumuladores*/ {utp\ut-glob.i} {utp/utapi019.i2} Define Variable excelAppl As Com-handle No-undo. Define Variable c-padrao As Character No-undo. Define Variable c-arq-salva As Character No-undo. Define Variable i-auxiliar As Integer No-undo. DEFINE VARIABLE c-range AS CHAR NO-UNDO. DEFINE VARIABLE d-prod AS DATE NO-UNDO. DEFINE VARIABLE c-contatos AS CHAR NO-UNDO. DEFINE BUFFER bf_usuar_grp_usuar FOR usuar_grp_usuar. DEFINE TEMP-TABLE tt-resumo-prd NO-UNDO FIELD cod-estabel AS CHARACTER FORMAT "x(05)" FIELD it-codigo AS CHARACTER FORMAT "x(16)" FIELD cod-depos AS CHARACTER FORMAT "x(03)" FIELD lote AS CHARACTER FORMAT "x(16)" FIELD qtd AS DECIMAL FORMAT ">>>,>>9.9999" FIELD palet-prod AS INTEGER FIELD qtd-report AS DECIMAL FORMAT ">>>,>>9.9999" FIELD palet-rep AS INTEGER FIELD nr-ord-prod AS INTEGER FIELD dt-trans AS DATE. DEFINE TEMP-TABLE tt-email NO-UNDO FIELD cod_usuario AS CHAR FORMAT "x(12)" FIELD e-mail AS CHAR FORMAT "x(100)". FOR EACH pallet-lata NO-LOCK WHERE pallet-lata.dt-trans = TODAY - 1 AND pallet-lata.dt-exclusao = ? AND pallet-lata.cod-estabel = "202" BY pallet-lata.cod-estabel BY pallet-lata.nr-ord-prod. IF NOT CAN-FIND(FIRST tt-resumo-prd NO-LOCK WHERE tt-resumo-prd.cod-estabel = pallet-lata.cod-estabel AND tt-resumo-prd.it-codigo = pallet-lata.it-codigo AND tt-resumo-prd.cod-depos = pallet-lata.cod-depos AND tt-resumo-prd.nr-ord-prod = pallet-lata.nr-ord-prod AND tt-resumo-prd.lote = pallet-lata.lote AND tt-resumo-prd.dt-trans = pallet-lata.dt-trans) THEN DO: CREATE tt-resumo-prd. ASSIGN tt-resumo-prd.cod-estabel = pallet-lata.cod-estabel tt-resumo-prd.it-codigo = pallet-lata.it-codigo tt-resumo-prd.cod-depos = pallet-lata.cod-depos tt-resumo-prd.nr-ord-prod = pallet-lata.nr-ord-prod tt-resumo-prd.dt-trans = pallet-lata.dt-trans tt-resumo-prd.qtd = pallet-lata.quantidade tt-resumo-prd.lote = pallet-lata.lote d-prod = pallet-lata.dt-trans. END. ELSE DO: FIND FIRST tt-resumo-prd WHERE tt-resumo-prd.cod-estabel = pallet-lata.cod-estabel AND tt-resumo-prd.it-codigo = pallet-lata.it-codigo AND tt-resumo-prd.cod-depos = pallet-lata.cod-depos AND tt-resumo-prd.nr-ord-prod = pallet-lata.nr-ord-prod AND tt-resumo-prd.dt-trans = pallet-lata.dt-trans AND tt-resumo-prd.lote = pallet-lata.lote NO-ERROR. ASSIGN tt-resumo-prd.qtd = tt-resumo-prd.qtd + pallet-lata.quantidade. END. END. FOR EACH movto-estoq USE-INDEX reporte NO-LOCK WHERE movto-estoq.cod-estabel = "202" AND movto-estoq.dt-trans = TODAY - 1 AND movto-estoq.nr-ord-prod > 0 AND movto-estoq.op-seq = 1 AND (movto-estoq.esp-docto = 1 OR movto-estoq.esp-docto = 8), FIRST ITEM NO-LOCK WHERE ITEM.it-codigo = movto-estoq.it-codigo AND (ITEM.ge-codigo = 1 OR ITEM.ge-codigo = 2), FIRST ord-prod OF movto-estoq NO-LOCK. IF NOT CAN-FIND(FIRST tt-resumo-prd NO-LOCK WHERE tt-resumo-prd.cod-estabel = movto-estoq.cod-estabel AND tt-resumo-prd.it-codigo = movto-estoq.it-codigo AND tt-resumo-prd.cod-depos = movto-estoq.cod-depos AND tt-resumo-prd.nr-ord-prod = movto-estoq.nr-ord-prod AND tt-resumo-prd.lote = movto-estoq.lote AND tt-resumo-prd.dt-trans = movto-estoq.dt-trans) THEN DO: CREATE tt-resumo-prd. ASSIGN tt-resumo-prd.cod-estabel = movto-estoq.cod-estabel tt-resumo-prd.it-codigo = movto-estoq.it-codigo tt-resumo-prd.cod-depos = movto-estoq.cod-depos tt-resumo-prd.nr-ord-prod = movto-estoq.nr-ord-prod tt-resumo-prd.dt-trans = movto-estoq.dt-trans tt-resumo-prd.lote = movto-estoq.lote tt-resumo-prd.qtd-report = IF movto-estoq.esp-docto = 1 THEN movto-estoq.quantidade ELSE movto-estoq.quantidade * -1. END. ELSE DO: FIND FIRST tt-resumo-prd WHERE tt-resumo-prd.cod-estabel = movto-estoq.cod-estabel AND tt-resumo-prd.it-codigo = movto-estoq.it-codigo AND tt-resumo-prd.cod-depos = movto-estoq.cod-depos AND tt-resumo-prd.nr-ord-prod = movto-estoq.nr-ord-prod AND tt-resumo-prd.lote = movto-estoq.lote AND tt-resumo-prd.dt-trans = movto-estoq.dt-trans NO-ERROR. IF movto-estoq.esp-docto = 1 THEN ASSIGN tt-resumo-prd.qtd-report = tt-resumo-prd.qtd-report + movto-estoq.quantidade. ELSE ASSIGN tt-resumo-prd.qtd-report = tt-resumo-prd.qtd-report - movto-estoq.quantidade. END. END. /* FOR EACH tt-resumo-prd NO-LOCK, EACH movto-estoq NO-LOCK WHERE movto-estoq.cod-estabel = tt-resumo-prd.cod-estabel AND movto-estoq.nr-ord-prod = tt-resumo-prd.nr-ord-prod AND movto-estoq.it-codigo = tt-resumo-prd.it-codigo AND movto-estoq.lote = tt-resumo-prd.lote AND movto-estoq.dt-trans = tt-resumo-prd.dt-trans AND movto-estoq.cod-depos = tt-resumo-prd.cod-depos AND (movto-estoq.esp-docto = 1 OR movto-estoq.esp-docto = 8). IF movto-estoq.esp-docto = 1 THEN ASSIGN tt-resumo-prd.qtd-report = tt-resumo-prd.qtd-report + movto-estoq.quantidade. ELSE ASSIGN tt-resumo-prd.qtd-report = tt-resumo-prd.qtd-report - movto-estoq.quantidade. END. */ FOR EACH tt-resumo-prd NO-LOCK, FIRST ordem-benef NO-LOCK WHERE ordem-benef.nr-ord-prod = tt-resumo-prd.nr-ord-prod. ASSIGN tt-resumo-prd.palet-prod = tt-resumo-prd.qtd / ordem-benef.quant-pallet tt-resumo-prd.palet-rep = tt-resumo-prd.qtd-rep / ordem-benef.quant-pallet. END. If Search("modelo\etqProdRep.xlt") <> ? Then Assign c-padrao = Search("modelo\etqProdRep.xlt"). Else Assign c-padrao = Search("c:\temp\etqProdRep.xlt"). Create "Excel.Application" excelAppl. excelappl:workbooks:Add(c-padrao). excelappl:worksheets:Item(1):Select. excelappl:Visible = No. Assign c-arq-salva = "c:\temp\" + "RESUMO DIÁRIO PRODUÇÃO " + ".xlsx". IF SEARCH (c-arq-salva) <> ? THEN OS-DELETE VALUE (c-arq-salva). ASSIGN i-auxiliar = 4. ASSIGN excelappl:range("A2"):VALUE = "CANPACK - Data " + STRING(d-prod,"99/99/9999"). FOR EACH tt-resumo-prd NO-LOCK, FIRST ITEM NO-LOCK WHERE ITEM.it-codigo = tt-resumo-prd.it-codigo. ASSIGN c-range = "A" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.cod-estabel c-range = "B" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.nr-ord-prod c-range = "C" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.it-codigo c-range = "D" + STRING(i-auxiliar) excelappl:range(c-range) = ITEM.desc-item c-range = "E" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.cod-depos c-range = "F" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.lote c-range = "G" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.qtd c-range = "H" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.palet-prod c-range = "I" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.qtd-rep c-range = "J" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.palet-rep c-range = "K" + STRING(i-auxiliar) excelappl:range(c-range):VALUE = tt-resumo-prd.palet-prod - tt-resumo-prd.palet-rep. IF tt-resumo-prd.palet-prod > tt-resumo-prd.palet-rep THEN ASSIGN excelappl:range(c-range):interior:colorindex = 06. ELSE IF tt-resumo-prd.palet-prod < tt-resumo-prd.palet-rep THEN ASSIGN excelappl:range(c-range):interior:colorindex = 03. ELSE ASSIGN excelappl:range(c-range):interior:colorindex = 00. ASSIGN i-auxiliar = i-auxiliar + 1. END. excelapplisplayAlerts = NO. excelappl:workbooks:Item(1):SaveAs(c-arq-salva,,,,,,). excelappl:Visible = NO. excelAppl:quit(). Release Object excelappl. RUN pi-usuarios. RUN pi-mail. PROCEDURE pi-usuarios. FOR EACH bf_usuar_grp_usuar NO-LOCK WHERE bf_usuar_grp_usuar.cod_grp_usuar = "202". FOR FIRST usuar_grp_usuar NO-LOCK WHERE usuar_grp_usuar.cod_usuario = bf_usuar_grp_usuar.cod_usuario AND (usuar_grp_usuar.cod_grp_usuar = "SPR" OR usuar_grp_usuar.cod_grp_usuar = "SUP" OR usuar_grp_usuar.cod_grp_usuar = "FAT" OR usuar_grp_usuar.cod_grp_usuar = "SEX" OR usuar_grp_usuar.cod_grp_usuar = "MPL" OR usuar_grp_usuar.cod_grp_usuar = "GCQ" OR usuar_grp_usuar.cod_grp_usuar = "SCQ" OR usuar_grp_usuar.cod_grp_usuar = "GPL" OR usuar_grp_usuar.cod_grp_usuar = "APP" OR usuar_grp_usuar.cod_grp_usuar = "ECP" OR usuar_grp_usuar.cod_grp_usuar = "GCM" OR usuar_grp_usuar.cod_grp_usuar = "API" OR usuar_grp_usuar.cod_grp_usuar = "EPR"), FIRST usuar_mestre OF usuar_grp_usuar WHERE usuar_mestre.cod_e_mail_local <> "" NO-LOCK BREAK BY usuar_grp_usuar.cod_grp_usuar. IF ENTRY(2,usuar_mestre.cod_e_mail_local,"@") = ".com.br" THEN NEXT. IF NOT CAN-FIND(FIRST tt-email WHERE tt-email.cod_usuario = usuar_mestre.cod_usuario) THEN DO: CREATE tt-email. ASSIGN tt-email.cod_usuario = usuar_mestre.cod_usuario tt-email.e-mail = usuar_mestre.cod_e_mail_local. END. END. END. FOR EACH tt-email NO-LOCK. assign c-contatos = c-contatos + tt-email.e-mail + ",". END. END PROCEDURE. PROCEDURE pi-mail. EMPTY TEMP-TABLE tt-erros. RUN utp/utapi019.p PERSISTENT SET h-utapi019. CREATE tt-envio2. ASSIGN tt-envio2.versao-integracao = 1 tt-envio2.servidor = ip_servidor_e-mail tt-envio2.porta = porta_servidor_e-mail tt-envio2.destino = c-contatos tt-envio2.remetente = "remetente@remetente.com.br" tt-envio2.assunto = "Resumo produção diário" tt-envio2.arq-anexo = c-arq-salva tt-envio2.formato = "HTML". CREATE tt-mensagem. ASSIGN tt-mensagem.seq-mensagem = 1 tt-mensagem.mensagem = "" /*"<h1><center>Prezados validar e-mail </n> </pre> <h1><center>Este e-mail foi enviado de FORMA automatica favor validar </n> </pre> <h1><center> Automação </n> </pre> "*/. CREATE tt-mensagem. ASSIGN tt-mensagem.seq-mensagem = 2 tt-mensagem.mensagem = "<b> Prezados(as),<br/><br/> Segue anexo arquivo produção diária.<br/><br/> Este e-mail foi enviado de forma automática (favor não responder).<br/><br/> Atenciosamente, <br/><br/> Depto. TI <br/><br/> CANPACK GROUP. </b>". /* CREATE tt-paramEmail. ASSIGN tt-paramEmail.caminhoEmail = 1. */ CREATE tt-paramEmail2. ASSIGN tt-paramEmail2.caminhoEmail = 1. OUTPUT to value(SESSION:TEMP-DIRECTORY + "envemail.txt"). /* RUN pi-execute3 IN h-utapi019 (INPUT table tt-envio2, INPUT table tt-mensagem, INPUT TABLE tt-paramEmail, OUTPUT table tt-erros). */ 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). OUTPUT close. IF RETURN-VALUE = "NOK" THEN DO: FOR EACH tt-erros: DISP tt-erros WITH 1 COLUMN WIDTH 300. END. END. DELETE PROCEDURE h-utapi019. END PROCEDURE.