Somar total

Discussão em 'Interfaces' iniciado por luizclairrodrigues, Outubro 19, 2011.

  1. luizclairrodrigues

    luizclairrodrigues Membro Participativo

    Oi pessoal!
    Não estou conseguindo fazer a soma total pra mostrar nesses campos se alguém puder me ajudar eu agradeço,
    aí segue o código para intender melhor.
    Obrigado.

    TOTAL DESC MÊS: 000,00
    TOTAL ADTO MÊS: 000,00


    -----------------------------------------------------------------------------------------

    {include/i-prgvrs.i frpl057RP 2.04.00.000}
    {utp/ut-glob.i}
    {include/i-rpvar.i}

    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 desc-classifica as char format "x(40)"
    field modelo-rtf as char format "x(35)"
    field l-habilitaRtf as log
    field cdn_empresa_ini like emprest_func.cdn_empresa
    field cdn_empresa_fim like emprest_func.cdn_empresa
    field cdn_estab_ini like emprest_func.cdn_estab
    field cdn_estab_fim like emprest_func.cdn_estab
    field cdn_funcionario_ini like emprest_func.cdn_funcionario
    field cdn_funcionario_fim like emprest_func.cdn_funcionario
    field dt_ult_atual_ini like emprest_func.dt_ult_atual
    field dt_ult_atual_fim like emprest_func.dt_ult_atual
    field idi_tip_relat as int
    field log_imprimir as log.

    define temp-table tt-dados no-undo
    field cdn_empresa like emprest_func.cdn_empresa
    field cdn_estab like emprest_func.cdn_estab
    field cdn_funcionario like emprest_func.cdn_funcionario
    field dt_ult_atual like emprest_func.dt_ult_atual
    field hr_ult_atual like emprest_func.hr_ult_atual
    field vl_emprest AS DEC FORMAT "zzz,zzz,zz9.99-" /* like emprest_func.vl_emprest */
    field idi_emprest like emprest_func.idi_emprest
    field des_historico like emprest_func.des_historico
    FIELD COD_USUARIO LIKE emprest_func.cod_usuario
    field qtd_parcela like emprest_func.qtd_parcela
    field dt_prim_parcela like emprest_func.dt_prim_parcela
    field saldo_final AS DEC FORMAT "zzz,zzz,zz9.99-"
    field saldo_inicial AS DEC FORMAT "zzz,zzz,zz9.99-"
    FIELD mes-ref LIKE movto_calcul_func.num_mes_refer_fp
    FIELD dt-fechamento LIKE movto_calcul_func.dat_term_parc_calcula
    FIELD TOTAL_desconto_mes AS DEC FORMAT ">>>,>>9.99"
    FIELD TOTAL_adiantamento_mes AS DEC FORMAT ">>>,>>9.99"
    FIELD TOTAL_saldo_anterior AS DEC FORMAT ">>>,>>9.99"
    FIELD TOTAL_desc_manual AS DEC FORMAT ">>>,>>9.99".



    def var v_destino as char no-undo.
    def var v_idi_tip_relat as char format "x(10)" no-undo.
    def var v_des_selec as char no-undo.
    def var v_des_param as char no-undo.
    def var v_des_log as char no-undo.
    def var v_data as char no-undo.
    def var v_des_usuar as char no-undo.
    def var v_titulo as char no-undo.
    def var v_dt_ult_atual as char format "x(5)" no-undo.
    def var v_des_tip_relat as char format "x(15)" no-undo.
    def var c-desc-tipo as char format "x(12)" no-undo.
    DEF VAR i-cont AS INTEGER NO-UNDO.

    def var h-acomp as handle no-undo.
    def var v_adto like emprest_func.vl_emprest no-undo.
    def var v_desc like emprest_func.vl_emprest no-undo.
    def var v_saldo like emprest_func.vl_emprest no-undo.
    def var v_saldo_final like emprest_func.vl_emprest no-undo.
    def var v_saldo_inicial like emprest_func.vl_emprest no-undo.
    def var l-entrou as log init no no-undo.
    DEF VAR TOTAL_geral AS DEC FORMAT ">>>,>>9.99" NO-UNDO.
    DEF VAR saldo_anterior AS DEC FORMAT ">>>,>>9.99" NO-UNDO.
    DEF VAR TOTAL_desconto_mes AS DEC FORMAT ">>>,>>9.99" NO-UNDO.
    DEF VAR TOTAL_adiantamento_mes AS DEC FORMAT ">>>,>>9.99" NO-UNDO.
    DEF VAR TOTAL_saldo_anterior AS DEC FORMAT ">>>,>>9.99" NO-UNDO.
    DEF VAR TOTAL_desc_manual AS DEC FORMAT ">>>,>>9.99" NO-UNDO.

    run utp/ut-acomp.p persistent set h-acomp.

    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.

    /**************************** Definição de Forms *******************************/
    form
    v_titulo no-label colon 45 format "x(50)"
    skip (03)
    v_des_selec no-label colon 30
    skip (01)
    tt-param.cdn_empresa_ini colon 50
    " |< >|"
    tt-param.cdn_empresa_fim no-label
    skip
    tt-param.cdn_estab_ini colon 50
    " |< >|"
    tt-param.cdn_estab_fim no-label
    skip
    tt-param.cdn_funcionario_ini colon 50
    " |< >|"
    tt-param.cdn_funcionario_fim no-label
    skip
    v_dt_ult_atual no-label colon 44
    tt-param.dt_ult_atual_ini no-label colon 50
    "|< >|"
    tt-param.dt_ult_atual_fim no-label
    skip(02)
    v_des_param no-label colon 30 format "x(30)"
    skip (02)
    v_des_tip_relat no-label colon 34
    v_idi_tip_relat no-label colon 50
    skip (01)
    v_destino no-label colon 41
    " - "
    tt-param.arquivo no-label format "x(30)"
    skip
    tt-param.usuario colon 50
    skip (02)
    with stream-io side-labels no-attr-space no-box width 132 frame f-param.

    form
    tt-dados.cdn_empresa label "Emp" at 5
    tt-dados.cdn_estab label "Est"
    tt-dados.cdn_funcionario label "Func"
    funcionario.nom_pessoa_fisic no-label
    skip(1)
    with stream-io side-labels no-attr-space no-box width 132 frame f-func.

    /*************************** Definição de Literais *****************************/

    {utp/ut-liter.i Parâmetros_de_Impressão }
    assign v_titulo = return-value.
    {utp/ut-liter.i Seleção }
    assign v_des_selec = return-value.
    {utp/ut-liter.i "Data:" }
    assign v_dt_ult_atual = return-value.
    {utp/ut-liter.i "Parâmetros" }
    assign v_des_param = return-value.
    {utp/ut-liter.i "Tipo_Relatório:" }
    assign v_des_tip_relat = return-value.
    {utp/ut-liter.i Destino: }
    assign v_destino = return-value.

    /***************************** Início do Programa ******************************/
    {utp/ut-liter.i Administração_de_Treinamento MAT C}
    assign c-sistema = return-value.

    find empresa no-lock where empresa.ep-codigo = v_cdn_empres_usuar no-error.
    {utp/ut-liter.i Resumo_de_Empréstimos *}

    assign c-titulo-relat = return-value
    c-programa = "frpl057"
    c-versao = "01"
    c-revisao = "001"
    c-empresa = empresa.razao-social.

    run utp/ut-trfrrp.p (input frame f-param:handle).
    {include/i-rpcab.i}
    {include/i-rpout.i}
    view frame f-cabec.

    run pi-inicializar in h-acomp (input return-value).

    /* processamento saldo inicial e informacoes de movimentacoes periodo anterior ao selecionado */

    for each emprest_func no-lock where
    emprest_func.cdn_empresa >= tt-param.cdn_empresa_ini and
    emprest_func.cdn_empresa <= tt-param.cdn_empresa_fim and
    emprest_func.cdn_estab >= tt-param.cdn_estab_ini and
    emprest_func.cdn_estab <= tt-param.cdn_estab_fim and
    emprest_func.cdn_funcionario >= tt-param.cdn_funcionario_ini and
    emprest_func.cdn_funcionario <= tt-param.cdn_funcionario_fim:

    FIND FIRST tt-dados WHERE
    tt-dados.cdn_empresa = emprest_func.cdn_empresa AND
    tt-dados.cdn_estab = emprest_func.cdn_estab AND
    tt-dados.cdn_funcionario = emprest_func.cdn_funcionario NO-LOCK NO-ERROR.
    IF NOT AVAIL tt-dados THEN DO:
    create tt-dados.
    assign tt-dados.cdn_empresa = emprest_func.cdn_empresa
    tt-dados.cdn_estab = emprest_func.cdn_estab
    tt-dados.cdn_funcionario = emprest_func.cdn_funcionario
    tt-dados.dt_ult_atual = tt-param.dt_ult_atual_ini
    tt-dados.des_historico = "Saldo Anterior"
    tt-dados.idi_emprest = 3.
    END.
    END.

    FOR EACH tt-dados :

    ASSIGN v_saldo_final = 0.
    ASSIGN TOTAL_desconto_mes = 0.
    ASSIGN TOTAL_desc_manual = 0.
    ASSIGN TOTAL_saldo_anterior = 0.
    ASSIGN TOTAL_adiantamento_mes = 0.

    for each emprest_func no-lock where
    emprest_func.cdn_empresa = tt-dados.cdn_empresa and
    emprest_func.cdn_estab = tt-dados.cdn_estab and
    emprest_func.cdn_funcionario = tt-dados.cdn_funcionario AND
    emprest_func.dt_ult_atual < tt-param.dt_ult_atual_ini:

    IF emprest_func.idi_emprest = 1 THEN DO: /* ADTO */
    ASSIGN TT-DADOS.SALDO_FINAL = V_SALDO_FINAL + emprest_func.VL_EMPREST
    tt-dados.vl_emprest = tt-dados.saldo_final
    V_SALDO_FINAL = TT-DADOS.SALDO_FINAL
    TOTAL_adiantamento_mes = tt-dados.vl_emprest + V_SALDO_FINAL.
    END.
    ELSE IF emprest_func.idi_emprest = 2 THEN DO: /* DESCONTO */
    ASSIGN TT-DADOS.SALDO_FINAL = V_SALDO_FINAL - emprest_func.VL_EMPREST
    tt-dados.vl_emprest = tt-dados.saldo_final
    V_SALDO_FINAL = TT-DADOS.SALDO_FINAL
    TOTAL_desconto_mes = tt-dados.vl_emprest + TT-DADOS.SALDO_FINAL.
    END.
    ELSE IF emprest_func.idi_emprest = 3 THEN DO: /* SALDO */
    ASSIGN TT-DADOS.SALDO_FINAL = V_SALDO_FINAL + emprest_func.vl_emprest
    tt-dados.vl_emprest = tt-dados.saldo_final
    V_SALDO_FINAL = TT-DADOS.SALDO_FINAL
    TOTAL_saldo_anterior = TOTAL_geral + TOTAL_desconto_mes - TOTAL_adiantamento_mes.

    END.
    END.

    run pi-acompanhar in h-acomp (INPUT STRING(tt-dados.cdn_funcionario)).

    FOR EACH movto_calcul_func WHERE
    movto_calcul_func.cdn_empresa = tt-dados.cdn_empresa and
    movto_calcul_func.cdn_estab = tt-dados.cdn_estab and
    movto_calcul_func.cdn_funcionario = tt-dados.cdn_funcionario and
    movto_calcul_func.dat_term_parc_calcula < tt-param.dt_ult_atual_ini NO-LOCK: /*dat_ult_atualiz*/

    IF movto_calcul_func.dat_term_parc_calcula < 08/19/2007 THEN NEXT.

    DO i-cont = 1 TO 30 :
    IF ( movto_calcul_func.cdn_event_fp[i-cont] = "405" OR /* adto diversos */
    movto_calcul_func.cdn_event_fp[i-cont] = "471" OR /* assistencia medica */
    movto_calcul_func.cdn_event_fp[i-cont] = "474" ) THEN DO: /* assistencia odontologica */

    IF movto_calcul_func.val_calcul_efp[i-cont] <> 0 THEN DO:

    ASSIGN TT-DADOS.SALDO_FINAL = V_SALDO_FINAL - movto_calcul_func.val_calcul_efp[i-cont]
    tt-dados.vl_emprest = tt-dados.saldo_final
    V_SALDO_FINAL = TT-DADOS.SALDO_FINAL
    TOTAL_desconto_mes = tt-dados.saldo_final + V_SALDO_FINAL .

    END.

    END.
    END.

    END.

    END.

    /* busca do saldo inicial */
    /* for each emprest_func no-lock where */
    /* emprest_func.cdn_empresa >= tt-param.cdn_empresa_ini and */
    /* emprest_func.cdn_empresa <= tt-param.cdn_empresa_fim and */
    /* emprest_func.cdn_estab >= tt-param.cdn_estab_ini and */
    /* emprest_func.cdn_estab <= tt-param.cdn_estab_fim and */
    /* emprest_func.cdn_funcionario >= tt-param.cdn_funcionario_ini and */
    /* emprest_func.cdn_funcionario <= tt-param.cdn_funcionario_fim AND */
    /* emprest_func.dt_ult_atual < tt-param.dt_ult_atual_ini AND */
    /* emprest_func.idi_emprest = 3 /* saldo */ */
    /* break by emprest_func.cdn_funcionario */
    /* by emprest_func.dt_ult_atual */
    /* by emprest_func.hr_ult_atual */
    /* by emprest_func.idi_emprest: */
    /* */
    /* run pi-acompanhar in h-acomp (INPUT STRING(emprest_func.cdn_funcionario) + " " + STRING(emprest_func.dt_ult_atual)). */
    /* */
    /* IF emprest_func.idi_emprest = 3 THEN DO: /* saldo */ */
    /* create tt-dados. */
    /* assign tt-dados.cdn_empresa = emprest_func.cdn_empresa */
    /* tt-dados.cdn_estab = emprest_func.cdn_estab */
    /* tt-dados.cdn_funcionario = emprest_func.cdn_funcionario */
    /* TT-DADOS.COD_USUARIO = EMPREST_FUNC.COD_USUARIO */
    /* tt-dados.dt_ult_atual = emprest_func.dt_ult_atual */
    /* tt-dados.hr_ult_atual = emprest_func.hr_ult_atual */
    /* tt-dados.idi_emprest = emprest_func.idi_emprest */
    /* tt-dados.vl_emprest = emprest_func.vl_emprest */
    /* tt-dados.saldo_final = emprest_func.vl_emprest. */
    /* END. */
    /* end. */

    for each emprest_func no-lock where
    emprest_func.cdn_empresa >= tt-param.cdn_empresa_ini and
    emprest_func.cdn_empresa <= tt-param.cdn_empresa_fim and
    emprest_func.cdn_estab >= tt-param.cdn_estab_ini and
    emprest_func.cdn_estab <= tt-param.cdn_estab_fim and
    emprest_func.cdn_funcionario >= tt-param.cdn_funcionario_ini and
    emprest_func.cdn_funcionario <= tt-param.cdn_funcionario_fim AND
    emprest_func.dt_ult_atual >= tt-param.dt_ult_atual_ini AND
    emprest_func.dt_ult_atual <= tt-param.dt_ult_atual_fim
    break by emprest_func.cdn_funcionario
    by emprest_func.dt_ult_atual
    by emprest_func.hr_ult_atual
    by emprest_func.idi_emprest:

    run pi-acompanhar in h-acomp (INPUT STRING(emprest_func.cdn_funcionario) + " " + STRING(emprest_func.dt_ult_atual)).

    create tt-dados.
    assign tt-dados.cdn_empresa = emprest_func.cdn_empresa
    tt-dados.cdn_estab = emprest_func.cdn_estab
    tt-dados.cdn_funcionario = emprest_func.cdn_funcionario
    tt-dados.dt_ult_atual = emprest_func.dt_ult_atual
    tt-dados.hr_ult_atual = emprest_func.hr_ult_atual
    tt-dados.idi_emprest = emprest_func.idi_emprest
    tt-dados.vl_emprest = emprest_func.vl_emprest
    tt-dados.des_historico = emprest_func.des_historico
    TT-DADOS.COD_USUARIO = EMPREST_FUNC.COD_USUARIO
    tt-dados.qtd_parcela = emprest_func.qtd_parcela
    tt-dados.dt_prim_parcela = emprest_func.dt_prim_parcela
    tt-dados.saldo_final = 0
    tt-dados.saldo_inicial = 0.

    if last-of(emprest_func.cdn_funcionario) then
    assign v_adto = 0
    v_saldo = 0
    v_desc = 0.

    end.

    /* pesquisa eventos 405, 471 e 474 tabela de funcionarios rh */
    FOR EACH movto_calcul_func WHERE
    movto_calcul_func.cdn_empresa >= tt-param.cdn_empresa_ini and
    movto_calcul_func.cdn_empresa <= tt-param.cdn_empresa_fim and
    movto_calcul_func.cdn_estab >= tt-param.cdn_estab_ini and
    movto_calcul_func.cdn_estab <= tt-param.cdn_estab_fim and
    movto_calcul_func.cdn_funcionario >= tt-param.cdn_funcionario_ini and
    movto_calcul_func.cdn_funcionario <= tt-param.cdn_funcionario_fim AND
    movto_calcul_func.dat_term_parc_calcula >= tt-param.dt_ult_atual_ini AND /* movto_calcul_func.dat_ult_atualiz*/
    movto_calcul_func.dat_term_parc_calcula <= tt-param.dt_ult_atual_fim NO-LOCK: /* movto_calcul_func.dat_ult_atualiz*/

    IF movto_calcul_func.dat_term_parc_calcula < 08/19/2007 THEN NEXT.

    run pi-acompanhar in h-acomp (INPUT STRING(movto_calcul_func.cdn_funcionario) + " " + STRING(movto_calcul_func.dat_term_parc_calcula) ).

    DO i-cont = 1 TO 30:
    IF ( movto_calcul_func.cdn_event_fp[i-cont] = "405" OR /* adto diversos */
    movto_calcul_func.cdn_event_fp[i-cont] = "471" OR /* assistencia medica */
    movto_calcul_func.cdn_event_fp[i-cont] = "474") THEN DO: /* assistencia odontologica */

    IF movto_calcul_func.val_calcul_efp[i-cont] <> 0 THEN DO:

    create tt-dados.
    assign tt-dados.cdn_empresa = movto_calcul_func.cdn_empresa
    tt-dados.cdn_estab = movto_calcul_func.cdn_estab
    tt-dados.cdn_funcionario = movto_calcul_func.cdn_funcionario
    tt-dados.dt_ult_atual = movto_calcul_func.dat_term_parc_calcula /*movto_calcul_func.dat_ult_atualiz*/
    tt-dados.hr_ult_atual = movto_calcul_func.hra_ult_atualiz
    tt-dados.idi_emprest = 2
    tt-dados.vl_emprest = movto_calcul_func.val_calcul_efp[i-cont]
    tt-dados.qtd_parcela = movto_calcul_func.qti_parc_habilit_calc_fp
    tt-dados.dt_prim_parcela = movto_calcul_func.dat_inic_parc_calcula_fp
    tt-dados.saldo_final = 0
    tt-dados.saldo_inicial = 0
    tt-dados.mes-ref = movto_calcul_func.num_mes_refer_fp
    tt-dados.dt-fechamento = movto_calcul_func.dat_term_parc_calcula.


    IF movto_calcul_func.cdn_event_fp[i-cont] = "405" THEN
    ASSIGN tt-dados.des_historico = STRING(movto_calcul_func.cdn_event_fp[i-cont]) + " - Adiantamento Diversos".
    ELSE IF movto_calcul_func.cdn_event_fp[i-cont] = "471" THEN
    ASSIGN tt-dados.des_historico = STRING(movto_calcul_func.cdn_event_fp[i-cont]) + " - Assistência Médica".
    ELSE IF movto_calcul_func.cdn_event_fp[i-cont] = "474" THEN
    ASSIGN tt-dados.des_historico = STRING(movto_calcul_func.cdn_event_fp[i-cont]) + " - Assistência Odontológica".

    END.
    END.
    END.
    END.

    /* atualizacao do saldo FINAL dos funcionarios */
    FOR each tt-dados EXCLUSIVE-LOCK
    break by tt-dados.cdn_funcionario
    by tt-dados.dt_ult_atual
    by tt-dados.hr_ult_atual
    by tt-dados.idi_emprest:

    IF FIRST-OF(TT-DADOS.CDN_FUNCIONARIO) THEN DO:
    ASSIGN V_SALDO_FINAL = 0.
    ASSIGN TOTAL_desconto_mes = 0.
    ASSIGN TOTAL_desc_manual = 0.
    ASSIGN TOTAL_adiantamento_mes = 0.
    ASSIGN TOTAL_saldo_anterior = 0.
    END.

    IF tt-dados.idi_emprest = 1 THEN DO: /* ADTO */
    ASSIGN TT-DADOS.SALDO_FINAL = V_SALDO_FINAL + TT-DADOS.VL_EMPREST
    V_SALDO_FINAL = TT-DADOS.SALDO_FINAL
    TOTAL_adiantamento_mes = TOTAL_adiantamento_mes + V_SALDO_FINAL.
    END.
    ELSE IF tt-dados.idi_emprest = 2 THEN DO: /* DESCONTO */
    ASSIGN TT-DADOS.SALDO_FINAL = V_SALDO_FINAL - TT-DADOS.VL_EMPREST
    V_SALDO_FINAL = TT-DADOS.SALDO_FINAL
    TOTAL_desconto_mes = TOTAL_desconto_mes + V_SALDO_FINAL.
    END.
    ELSE IF tt-dados.idi_emprest = 3 THEN DO: /* SALDO */
    ASSIGN TT-DADOS.SALDO_FINAL = V_SALDO_FINAL + tt-dados.vl_emprest
    V_SALDO_FINAL = TT-DADOS.SALDO_FINAL
    TOTAL_saldo_anterior = TOTAL_geral + TOTAL_desconto_mes - TOTAL_adiantamento_mes.

    END.

    if LAST-OF(tt-dados.cdn_funcionario) then do:
    ASSIGN TOTAL_geral = TOTAL_geral + V_SALDO_FINAL.

    if LAST-OF(tt-dados.cdn_funcionario) then do:
    ASSIGN TOTAL_saldo_anterior = TOTAL_geral + TOTAL_desconto_mes - TOTAL_adiantamento_mes.

    if LAST-OF(tt-dados.cdn_funcionario) then do:
    ASSIGN TOTAL_desconto_mes = tt-dados.vl_emprest + TT-DADOS.SALDO_FINAL.
    END.
    if LAST-OF(tt-dados.cdn_funcionario) then do:
    ASSIGN TOTAL_adiantamento_mes = tt-dados.vl_emprest + TT-DADOS.SALDO_FINAL.
    END.
    END.
    END.
    END.
    FOR each tt-dados no-lock
    break by tt-dados.cdn_funcionario
    by tt-dados.dt_ult_atual
    by tt-dados.hr_ult_atual
    by tt-dados.idi_emprest:

    find first funcionario no-lock where
    funcionario.cdn_empresa = tt-dados.cdn_empresa and
    funcionario.cdn_estab = tt-dados.cdn_estab and
    funcionario.cdn_funcionario = tt-dados.cdn_funcionario no-error.

    /* tipo empréstimo */
    if tt-dados.idi_emprest = 1 then assign c-desc-tipo = "Adiantamento".
    else if tt-dados.idi_emprest = 2 then assign c-desc-tipo = "Desconto".
    else if tt-dados.idi_emprest = 3 then assign c-desc-tipo = "Saldo".

    /* tipo relatório */
    if tt-param.idi_tip_relat = 1 then
    assign v_idi_tip_relat = "Resumido".
    else assign v_idi_tip_relat = "Detalhado".

    if first-of(tt-dados.cdn_funcionario) then do:
    disp tt-dados.cdn_empresa
    tt-dados.cdn_estab
    tt-dados.cdn_funcionario
    funcionario.nom_pessoa_fisic
    with frame f-func.
    end.

    if tt-param.idi_tip_relat = 1 then do: /* Bloco Resumido */

    if LAST-OF(tt-dados.cdn_funcionario) then do:

    put " Data Tipo Valor Saldo " skip.
    put " ---------- ------------ --------------- ---------------- " skip.
    end.

    put tt-dados.dt_ult_atual at 2 space(2)
    c-desc-tipo space(2)
    tt-dados.vl_emprest space(2)
    tt-dados.saldo_final SKIP.




    /* if tt-dados.dt_ult_atual >= tt-param.dt_ult_atual_ini and */
    /* tt-dados.dt_ult_atual <= tt-param.dt_ult_atual_fim then do: */
    /* */
    /* put tt-dados.dt_ult_atual at 2 space(2) */
    /* c-desc-tipo space(2) */
    /* tt-dados.vl_emprest space(2) */
    /* tt-dados.saldo_final skip. */
    /* */
    /* assign l-entrou = yes. */
    /* end. */
    /* else do: */
    /* */
    /* if last-of(tt-dados.cdn_funcionario) then do: */
    /* if tt-dados.dt_ult_atual < tt-param.dt_ult_atual_ini and */
    /* v_saldo_inicial <> 0 then do: */
    /* put tt-dados.saldo_inicial at 44. */
    /* */
    /* assign l-entrou = yes. */
    /* end. */
    /* else do: */
    /* if not can-find(first emprest_func where */
    /* emprest_func.cdn_empresa = tt-dados.cdn_empresa and */
    /* emprest_func.cdn_estab = tt-dados.cdn_estab and */
    /* emprest_func.cdn_funcionario = tt-dados.cdn_funcionario and */
    /* emprest_func.dt_ult_atual <= tt-param.dt_ult_atual_fim) then do: */
    /* put "0,00" at 54. */
    /* assign l-entrou = yes. */
    /* end. */
    /* else do: */
    /* if l-entrou = no then */
    /* put tt-dados.saldo_inicial at 44. */
    /* end. */
    /* end. */
    /* end. */
    /* end.
    */

    end.

    ELSE if tt-param.idi_tip_relat = 2 then do: /* Bloco Detalhado */

    if first-of(tt-dados.cdn_funcionario) then do:
    put " Data Histórico Usuário Pl Data 1a.P Tipo Valor Saldo " skip.
    put " ---------- ---------------------------------------- ------------ --- ---------- ------------ --------------- --------------- " skip.
    end.

    put tt-dados.dt_ult_atual at 2 space(1)
    tt-dados.des_historico format "x(40)" space(1)
    TT-DADOS.cod_usuario FORMAT "X(12)" SPACE(1)
    tt-dados.qtd_parcela space(1)
    tt-dados.dt_prim_parcela space(1)
    c-desc-tipo space(1)
    tt-dados.vl_emprest space(1)
    tt-dados.saldo_final SKIP.


    /* assign l-entrou = yes. */


    /* if tt-dados.dt_ult_atual >= tt-param.dt_ult_atual_ini and */
    /* tt-dados.dt_ult_atual <= tt-param.dt_ult_atual_fim then do: */
    /* */
    /* put tt-dados.dt_ult_atual at 2 space(1) */
    /* tt-dados.des_historico format "x(40)" space(1) */
    /* tt-dados.qtd_parcela space(1) */
    /* tt-dados.dt_prim_parcela space(1) */
    /* c-desc-tipo space(1) */
    /* tt-dados.vl_emprest space(1) */
    /* tt-dados.saldo_final skip. */
    /* assign l-entrou = yes. */
    /* end. */
    /* else do: */
    /* */
    /* if last-of(tt-dados.cdn_funcionario) then do: */
    /* if tt-dados.dt_ult_atual < tt-param.dt_ult_atual_ini and */
    /* v_saldo_inicial <> 0 then do: */
    /* put tt-dados.saldo_inicial at 97. */
    /* assign l-entrou = yes. */
    /* end. */
    /* else do: */
    /* if not can-find(first emprest_func where */
    /* emprest_func.cdn_empresa = tt-dados.cdn_empresa and */
    /* emprest_func.cdn_estab = tt-dados.cdn_estab and */
    /* emprest_func.cdn_funcionario = tt-dados.cdn_funcionario and */
    /* emprest_func.dt_ult_atual <= tt-param.dt_ult_atual_fim) then do: */
    /* put "0,00" at 107. */
    /* assign l-entrou = yes. */
    /* end. */
    /* else do: */
    /* if l-entrou = no then */
    /* put tt-dados.saldo_inicial at 97. */
    /* end. */
    /* end. */
    /* end. */
    /* end. */

    end.

    if last-of(tt-dados.cdn_funcionario) then do:
    put skip(3).
    /* assign l-entrou = no. */
    end.
    end.

    if tt-param.idi_tip_relat = 2 then DO:

    PUT "-----------------------------------------------------------------------------------------------------------------------------" SKIP.
    PUT "SALDO ANTERIOR:" AT 2 space(1)TOTAL_saldo_anterior AT 0 SKIP.
    PUT "TOTAL DESC MÊS:" AT 90 TOTAL_desconto_mes AT 115 SKIP.
    PUT "TOTAL DESC MANUAL:" AT 90 TOTAL_desc_manual AT 115 SKIP.
    PUT "TOTAL ADTO MÊS:" AT 90 TOTAL_adiantamento_mes AT 115 SKIP.
    PUT "TOTAL GERAL:" AT 90 TOTAL_geral AT 115 SKIP.
    END.
    if tt-param.idi_tip_relat = 1 then DO:
    PUT "-----------------------------------------------------------" SKIP.
    PUT "SALDO ANTERIOR:" AT 2 space(1)TOTAL_saldo_anterior AT 0 SKIP.
    PUT "TOTAL DESC MÊS:" AT 30 TOTAL_desconto_mes AT 48 SKIP.
    PUT "TOTAL DESC MANUAL:" AT 30 TOTAL_desc_manual AT 48 SKIP.
    PUT "TOTAL ADTO MÊS:" AT 30 TOTAL_adiantamento_mes AT 48 SKIP.
    PUT "TOTAL GERAL:" AT 30 TOTAL_geral AT 48 SKIP.

    END.

    if tt-param.idi_tip_relat = 3 then DO:
    PUT "-----------------------------------------------------------" SKIP.
    PUT "SALDO ANTERIOR:" AT 2 space(1)TOTAL_saldo_anterior AT 0 SKIP.
    PUT "TOTAL DESC MÊS:" AT 30 TOTAL_desconto_mes AT 48 SKIP.
    PUT "TOTAL DESC MANUAL:" AT 30 TOTAL_desc_manual AT 48 SKIP.
    PUT "TOTAL ADTO MÊS:" AT 20 TOTAL_adiantamento_mes AT 48 SKIP.
    PUT "TOTAL GERAL:" AT 30 TOTAL_geral AT 48 SKIP.

    END.

    if tt-param.log_imprimir then do:

    page.
    disp
    v_titulo
    v_des_selec
    v_dt_ult_atual
    tt-param.cdn_empresa_ini
    tt-param.cdn_empresa_fim
    tt-param.cdn_estab_ini
    tt-param.cdn_estab_fim
    tt-param.cdn_funcionario_ini
    tt-param.cdn_funcionario_fim
    tt-param.dt_ult_atual_ini
    tt-param.dt_ult_atual_fim
    v_des_param
    v_des_tip_relat
    v_idi_tip_relat
    v_destino
    tt-param.arquivo
    tt-param.usuario
    with frame f-param.
    end.

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

    bhfs Sem Pontuação

    Amigo, os dois campos que você disse, existem na tabela tt-dados, mas também existem como variáveis.
    Você deve estar confundindo ambos na hora de fazer o somatório.

    Percebi também que você não o acumula, ou seja, a variável TOTAL_desconto_mes por exemplo, nunca recebe ela mesma e mais algum valor, para ir aumentando de valor, entendeu?

    Outra coisa para você avaliar é a questão de zerar estas variáveis dentro do FOR EACH... acredito que você tenha que fazê-lo antes de iniciar o FOR EACH...

    Não tive tempo para olhar direito... seu código veio cheio de comentários e não tem nada identado...

    Veja se consegue resolver com o que lhe falei e qualquer coisa poste novamente.

    Att,

    Bruno
  3. luizclairrodrigues

    luizclairrodrigues Membro Participativo

Compartilhe esta Página