Fazer uma segundo resumo por variação

Discussão em 'Progress 4GL' iniciado por luizclairrodrigues, Julho 25, 2012.

  1. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Boa tarde pessoal!
    no final desse relatório tenho que fazer mostrar dois resumo um de paradas e outro de variações, o de parada já esta mostrando, mas o resumo de variação não mostra e é igual não sei como fazer se, alguém puder me ajudar eu agradeço.
    tem o exemplo abaixo.
    ------------------------------------------------------------------------------*/
    MESSAGE "1"
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    {include/i-prgvrs.i FRMI33 2.04.00.000}

    define temp-table tt-param no-undo
    field destino as integer
    field arquivo as char format "x(35)"
    field usuario as char format "x(12)"
    field data-exec as date
    field hora-exec as integer
    FIELD classifica as integer
    FIELD i-ordem-ini LIKE ord-manut.nr-ord-prod
    FIELD i-ordem-fim LIKE ord-manut.nr-ord-prod
    FIELD dt-periodo-ini AS DATE FORMAT "99/99/9999"
    FIELD dt-periodo-fim AS DATE FORMAT "99/99/9999"
    FIELD c-equipamento-ini LIKE equipto.cd-equipto
    FIELD c-equipamento-fim LIKE equipto.cd-equipto
    FIELD c-equipe-ini AS CHAR FORMAT 'x(08)':U
    FIELD c-equipe-fim AS CHAR FORMAT 'x(08)':U
    FIELD i-prioridade-ini LIKE ord-manut.prioridade
    FIELD i-prioridade-fim LIKE ord-manut.prioridade
    FIELD c-centro-ini LIKE ord-manut.sc-desp
    FIELD c-centro-fim LIKE ord-manut.sc-desp
    FIELD c-tipo-ini LIKE ord-manut.cd-tipo
    FIELD c-tipo-fim LIKE ord-manut.cd-tipo
    FIELD l-naoliberada AS LOGICAL
    FIELD l-liberada AS LOGICAL
    FIELD l-alocada AS LOGICAL
    FIELD l-separada AS LOGICAL
    FIELD l-requisitada AS LOGICAL
    FIELD l-iniciada AS LOGICAL
    FIELD l-finalizada AS LOGICAL
    FIELD l-terminada AS LOGICAL.

    DEFINE TEMP-TABLE tt-variacao
    FIELD descricao LIKE VAR_manut.desc_var_manut
    FIELD codigo LIKE movto-manut.cod-variacao
    FIELD horas LIKE movto-manut.horas.

    DEFINE TEMP-TABLE tt-parada
    FIELD descricao LIKE mao-obra.descricao
    FIELD codigo LIKE paradas-mob.cod-mao-obra
    FIELD horas LIKE paradas-mob.horas.

    DEFINE TEMP-TABLE TT-ORD
    FIELD NR-ORD-PRODU LIKE ORD-MANUT.NR-ORD-PRODU
    FIELD nr-ord-compra LIKE ordem-compra.ordem-servic
    FIELD CD-EQUIPTO LIKE ORD-MANUT.CD-EQUIPTO
    FIELD DESCRICAO LIKE equipto.descricao
    FIELD c-estado-ord AS CHAR
    FIELD TEMPO LIKE ORD-TAREF.TEMPO
    FIELD horas LIKE ord-taref.tempo
    FIELD eficiencia-ord AS DEC
    FIELD tempo-pad AS DEC
    FIELD Parada AS DEC FORMAT "->>,>>9.9999"
    FIELD variacao AS DEC FORMAT "->>,>>9.9999"
    FIELD prioridade-ord LIKE ord-manut.prioridade
    FIELD prev-termino AS DATE FORMAT "99/99/9999"
    FIELD dt-manutencao AS DATE FORMAT "99/99/9999"
    FIELD dias-atraso AS INTEGER FORMAT ">>>>>>>>>>9"
    FIELD situacao-ord as char format "x(12)"
    FIELD num-ordem LIKE ordem-compra.numero-ordem
    FIELD utilizacao-ord AS DEC
    FIELD produtiv-ord AS DEC
    FIELD tot-ordem AS DEC FORMAT "->>,>>9.9999"
    FIELD cod-parad LIKE paradas-mob.cod-mao-obra
    FIELD descricao-parada LIKE mao-obra.descricao
    FIELD cod-variacao LIKE movto-manut.cod-variacao
    FIELD desc-variacao LIKE VAR_manut.DESC_var_MANUT.

    def temp-table tt-raw-digita
    field raw-digita as raw.

    def input parameter raw-param as raw no-undo.
    def input parameter table for tt-raw-digita.

    create tt-param.
    raw-transfer raw-param to tt-param.

    {include\i-rpvar.i}
    {utp\ut-glob.i}

    /*definição VAR*/
    DEF VAR h-acomp AS HANDLE.
    DEF VAR c-est-ord AS CHAR format "x(15)" INIT "Não Liberada,Liberada,Alocada,Separada,Requisitada,Iniciada,Finalizada,Terminada".
    def var c-estado as char format "x(15)" label "Situação".
    DEF VAR i-ord-manut AS INTEGER.
    DEF VAR d-dat-movto AS DATE FORMAT "99/99/9999".
    DEF VAR hr-trab AS DEC NO-UNDO.
    DEF VAR situacao-ordem as char format "x(12)" NO-UNDO.
    DEF VAR tempo-padrao AS DEC NO-UNDO.
    DEF VAR eficiencia AS DEC FORMAT "->>,>>9.99" NO-UNDO.
    DEF VAR utilizacao AS DEC FORMAT "->>,>>9.99" NO-UNDO.
    DEF VAR produtividade AS DEC FORMAT "->>,>>9.99" NO-UNDO.
    DEF VAR tot-horas-ordem AS DEC FORMAT "->>,>>9.99" NO-UNDO.
    DEF VAR de-horas AS DEC FORMAT "->>,>>9.99" NO-UNDO.
    DEF VAR hr-variacao AS DEC FORMAT "->>,>>9.99" NO-UNDO.
    DEF VAR de-horas-parada AS DEC FORMAT "->>,>>9.99" NO-UNDO.
    DEF VAR narrativa-ordem LIKE ordem-compra.narrativa.
    DEF VAR nr-ordem LIKE ordem-compra.numero-ordem.
    DEF VAR cod-parada LIKE paradas-mob.cod-mao-obra.
    DEF VAR quant-horas AS DEC.
    DEF VAR porcent AS DEC.
    DEF VAR porcentagem AS DEC.
    DEF VAR codigo LIKE paradas-mob.cod-mao-obra.
    DEF VAR total-horas-paradas AS DEC.
    DEF VAR desc-parada AS CHAR FORMAT "X(25)".
    DEF VAR cod-var LIKE movto-manut.cod-variacao.
    DEF VAR desc-var LIKE var_manut.desc_var_manut.
    DEF VAR cod-res-var LIKE movto-manut.cod-variacao.
    DEF VAR qtd-var LIKE movto-manut.horas.
    DEF VAR qtd-variacao LIKE movto-manut.horas.
    DEF VAR total-hr-parada AS DEC.
    DEF VAR tot-hr-parada AS DEC.

    find param-global no-lock no-error.

    find mguni.empresa no-lock where
    mguni.empresa.ep-codigo = param-global.empresa-prin no-error.

    assign c-programa = "FRMI31"
    c-versao = "2.04"
    c-revisao = "000"
    c-titulo-relat = "Apontamento Ordens Manutenção"
    c-sistema = "Manutenção Industrial"
    c-empresa = if avail empresa then empresa.nome else "".

    {include\i-rpcab.i}

    run utp/ut-acomp.p persistent set h-acomp.
    run pi-inicializar in h-acomp(input "Gerando Relatório...").

    {include/i-rpout.i}

    view frame f-cabec.
    view frame f-rodape.

    DEF VAR total-horas-parada AS DEC.


    /*IF tt-param.classifica = 1 then do:*/
    /*-- Classifica por Equipamento/Preventivas --------------------------------*/

    IF tt-param.classifica = 1 THEN DO:

    find FIRST param-mi NO-LOCK NO-ERROR.

    /* for each equipto NO-LOCK where
    equipto.cd-equipto >= tt-param.c-equipamento-ini
    and equipto.cd-equipto <= tt-param.c-equipamento-fim: */

    /* RUN pi-acompanhar IN h-acomp(INPUT "Equipamentos: " + STRING(equipto.cd-equipto)).*/

    for each ord-manut NO-LOCK where
    ord-manut.cd-equipto >= tt-param.c-equipamento-ini
    AND ord-manut.cd-equipto <= tt-param.c-equipamento-fim
    AND ord-manut.nr-ord-produ >= param-mi.prim-ord-man-mi
    /*AND (ord-manut.nr-ord-produ = 8073203
    OR ord-manut.nr-ord-produ = 8073204
    OR ord-manut.nr-ord-produ = 8073291)*/
    AND ord-manut.nr-ord-produ >= tt-param.i-ordem-ini
    AND ord-manut.nr-ord-produ <= tt-param.i-ordem-fim
    AND ord-manut.dt-manut >= tt-param.dt-periodo-ini
    AND ord-manut.dt-manut <= tt-param.dt-periodo-fim:

    IF ord-manut.cd-equip-res < tt-param.c-equipe-ini OR
    ord-manut.cd-equip-res > tt-param.c-equipe-fim THEN NEXT.

    IF ord-manut.sc-desp < tt-param.c-centro-ini OR
    ord-manut.sc-desp > tt-param.c-centro-fim THEN NEXT.

    IF ord-manut.cd-tipo < tt-param.c-tipo-ini OR
    ord-manut.cd-tipo > tt-param.c-tipo-fim THEN NEXT.

    IF ord-manut.prioridade < tt-param.i-prioridade-ini OR
    ord-manut.prioridade > tt-param.i-prioridade-fim THEN NEXT.

    RUN pi-acompanhar IN h-acomp(INPUT "Equipamentos: " + STRING(ord-manut.cd-equipto)).

    IF ord-manut.estado = 1 AND
    tt-param.l-naoliberada = NO THEN NEXT.
    IF ord-manut.estado = 2 AND
    tt-param.l-liberada = NO THEN NEXT.
    IF ord-manut.estado = 3 AND
    tt-param.l-alocada = NO THEN NEXT.
    IF ord-manut.estado = 4 AND
    tt-param.l-separada = NO THEN NEXT.
    IF ord-manut.estado = 5 AND
    tt-param.l-requisitada = NO THEN NEXT.
    IF ord-manut.estado = 6 AND
    tt-param.l-iniciada = NO THEN NEXT.
    IF ord-manut.estado = 7 AND
    tt-param.l-finalizada = NO THEN NEXT.
    IF ord-manut.estado = 8 AND
    tt-param.l-terminada = NO THEN NEXT.

    ASSIGN tempo-padrao = 0.
    FOR EACH ord-taref NO-LOCK WHERE
    ord-taref.nr-ord-produ = ord-manut.nr-ord-produ:
    ASSIGN tempo-padrao = tempo-padrao + ord-taref.tempo.
    END.

    assign de-horas = 0.
    for each movto-manut where
    movto-manut.nr-ord-prod = ord-manut.nr-ord-produ
    /* and movto-manut.dt-movto >= tt-param.dt-periodo-ini
    and movto-manut.dt-movto <= tt-param.dt-periodo-fim*/ no-lock:
    ASSIGN de-horas = de-horas + movto-manut.horas
    cod-var = movto-manut.cod-variacao.

    FIND FIRST VAR_manut WHERE VAR_manut.cod_var_manut = movto-manut.cod-variacao NO-LOCK NO-ERROR.
    IF AVAIL VAR_manut THEN

    ASSIGN desc-var = VAR_manut.desc_var_manut.

    IF movto-manut.cod-variacao <> "" THEN DO:

    CREATE tt-variacao.
    ASSIGN tt-variacao.codigo = movto-manut.cod-variacao
    tt-variacao.horas = movto-manut.horas
    tt-variacao.descricao = VAR_manut.desc_var_manut.
    END.
    END.

    assign de-horas-parada = 0.
    for each paradas-mob where
    paradas-mob.nr-ord-prod = ord-manut.nr-ord-produ
    /*and paradas-mob.data >= tt-param.dt-periodo-ini
    and paradas-mob.data <= tt-param.dt-periodo-fim*/ no-lock:
    ASSIGN cod-parada = paradas-mob.cod-mao-obra
    de-horas-parada = de-horas-parada + paradas-mob.horas.



    FIND FIRST mao-obra WHERE mao-obra.cod-mao-obra = paradas-mob.cod-mao-obra NO-LOCK NO-ERROR.
    IF AVAIL mao-obra THEN
    ASSIGN desc-parada = mao-obra.descricao.

    IF paradas-mob.cod-mao-obra <> 0 THEN DO:

    CREATE tt-parada.
    ASSIGN tt-parada.codigo = paradas-mob.cod-mao-obra
    tt-parada.horas = paradas-mob.horas
    tt-parada.descricao = mao-obra.descricao.
    END.
    END.

    ASSIGN tot-horas-ordem = de-horas + de-horas-parada
    eficiencia = (tempo-padrao / de-horas) * 100
    utilizacao = (de-horas / tot-horas-ordem) * 100
    produtividade = (utilizacao * eficiencia) / 100.

    ASSIGN hr-variacao = 0.
    IF de-horas > tempo-padrao THEN DO:
    ASSIGN hr-variacao = de-horas - tempo-padrao.
    END.

    assign c-estado = entry(ord-manut.estado,c-est-ord).

    CREATE TT-ORD.
    ASSIGN TT-ORD.NR-ORD-PRODU = ORD-MANUT.NR-ORD-PRODU
    TT-ORD.CD-EQUIPTO = ord-manut.CD-EQUIPTO
    TT-ORD.DESCRICAO = ord-manut.des-man-corr
    TT-ORD.prioridade-ord = ORD-MANUT.prioridade
    tt-ord.horas = de-horas
    tt-ord.dt-manutencao = ord-manut.dt-manut
    tt-ord.tot-ordem = tot-horas-ordem
    tt-ord.eficiencia-ord = eficiencia
    tt-ord.parada = de-horas-parada
    tt-ord.tempo-pad = tempo-padrao
    tt-ord.utilizacao-ord = utilizacao
    tt-ord.produtiv-ord = produtividade
    tt-ord.c-estado-ord = c-estado
    tt-ord.variacao = hr-variacao
    tt-ord.cod-parad = cod-parada
    tt-ord.descricao-parada = desc-parada
    tt-ord.cod-variacao = cod-var
    tt-ord.desc-variacao = desc-var.

    END.

    FOR EACH TT-ORD NO-LOCK
    BREAK BY tt-ord.dt-manutencao
    BY tt-ord.nr-ord-produ:
    IF tt-ord.horas > 0 OR tt-ord.parada > 0 THEN

    DISP TT-ORD.NR-ORD-PRODU FORMAT ">>>>>>>>9" COLUMN-LABEL "Nr Ord "
    TT-ORD.CD-EQUIPTO COLUMN-LABEL "Equipamento"
    TT-ORD.DESCRICAO COLUMN-LABEL "Descrição"
    TT-ORD.prioridade-ord COLUMN-LABEL "Prioridade"
    tt-ord.c-estado-ord COLUMN-LABEL "Estado "
    tt-ord.dt-manutencao COLUMN-LABEL "Data Manut"
    tt-ord.tot-ordem (TOTAL) COLUMN-LABEL "Tempo-total"
    tt-ord.horas (TOTAL) COLUMN-LABEL "Hr.Trab "
    tt-ord.tempo-pad (TOTAL) COLUMN-LABEL "Tempo-Estimado"
    tt-ord.eficiencia-ord COLUMN-LABEL "% Eficiência "
    tt-ord.variacao (TOTAL) COLUMN-LABEL "Hr/Variacao"
    tt-ord.parada (TOTAL) COLUMN-LABEL "Parada"
    tt-ord.utilizacao-ord COLUMN-LABEL "(%)Utilização "
    tt-ord.produtiv-ord COLUMN-LABEL "(%)Produtividade"
    WITH FRAME f-linha2 STREAM-IO down width 300.

    END.

    FOR EACH TT-parada NO-LOCK
    BREAK BY tt-parada.codigo:

    ASSIGN total-horas-parada = total-horas-parada + tt-parada.horas.

    IF LAST-OF (tt-parada.codigo) THEN DO:

    ASSIGN codigo = tt-parada.codigo
    quant-horas = total-horas-parada.

    ASSIGN total-horas-parada = 0.

    DISP codigo COLUMN-LABEL "Parada "
    tt-parada.descricao COLUMN-LABEL "Descrição"
    quant-horas (TOTAL) COLUMN-LABEL "Horas".

    END.
    END.


    FOR EACH TT-variacao NO-LOCK
    BREAK BY tt-variacao.codigo:

    ASSIGN qtd-variacao = qtd-variacao + tt-variacao.horas.

    IF LAST-OF (tt-variacao.codigo) THEN DO:

    ASSIGN cod-res-var = tt-variacao.codigo
    qtd-var = qtd-variacao.

    ASSIGN qtd-variacao = 0.

    DISP cod-res-var COLUMN-LABEL "Variação "
    tt-variacao.descricao COLUMN-LABEL "Descrição"
    qtd-var (TOTAL) COLUMN-LABEL "Horas".
    END.
    END.
    END.

    run pi-finalizar in h-acomp.
    {include/i-rpclo.i}

Compartilhe esta Página