Auxílio em relatório

Discussão em 'Progress 4GL' iniciado por eugeniograssmann, Maio 16, 2011.

  1. eugeniograssmann

    eugeniograssmann Sem Pontuação

    Boa tarde

    Estou com um relatório desenvolvido, rodando dentro do EMS 5.06 Datasul/TOTVS.

    Numa das colunas, listo a data de vencimento do um título.
    Já tenho um totalizador por banco e agora quero colocar um somatório pelo mês de vencimento, neste relatório.

    Alguém pode me auxiliar ?
  2. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    poste aqui o codigo do seu relatorio, que fica mais facil para ajuda-lo
  3. eugeniograssmann

    eugeniograssmann Sem Pontuação

    def var c-cod_banco-ini like operac_financ.cod_banco format "x(8)" initial "" no-undo.
    def var c-cod_banco-fim like operac_financ.cod_banco format "x(8)" initial "ZZZZZZZZ" no-undo.
    def var c-cod_empresa-ini like operac_financ.cod_empresa format "x(3)" initial "" no-undo.
    def var c-cod_empresa-fim like operac_financ.cod_empresa format "x(3)" initial "ZZZ" no-undo.
    def var c-cod_operac_financ-ini like operac_financ.cod_operac_financ format "x(10)" initial "" no-undo.
    def var c-cod_operac_financ-fim like operac_financ.cod_operac_financ format "x(10)" initial "ZZZZZZZZZZ" no-undo.
    def var c-cod_produt_financ-ini like operac_financ.cod_produt_financ format "x(8)" initial "" no-undo.
    def var c-cod_produt_financ-fim like operac_financ.cod_produt_financ format "x(8)" initial "ZZZZZZZZ" no-undo.
    def var da-dat_operac_financ-ini like operac_financ.dat_operac_financ format "99/99/9999" initial "01/01/1800" no-undo.
    def var da-dat_operac_financ-fim like operac_financ.dat_operac_financ format "99/99/9999" initial "12/31/9999" no-undo.
    def var da-dat_vencto_operac_financ-ini like operac_financ.dat_vencto_operac_financ format "99/99/9999" initial "01/01/1800" no-undo.
    def var da-dat_vencto_operac_financ-fim like operac_financ.dat_vencto_operac_financ format "99/99/9999" initial "12/31/9999" no-undo.
    def var l-show as log no-undo init false.
    def var c-formato as char format 'x(3)'.
    def var c-cal-des as deci format '->>>,>>>,>>9.99' no-undo.
    def var c-teste as deci format '->>>,>>>,>>9.99' no-undo.
    def var c-teste2 as deci format '->>,>>9.99999' no-undo.

    def var de-val-saldo as deci format '>>>,>>>,>>9.99' no-undo.
    def var de-val-saldo2 as deci format '>>>,>>>,>>9.99' no-undo.
    def var de-val-saldo3 as deci format '>>>,>>>,>>9.99' no-undo.
    def var x-parcela as char format '99' no-undo.

    def var de-val-saldo4 as deci format '>>>,>>>,>>9.99' no-undo.

    def var de-val_operac_financ-1 like operac_financ.val_operac_financ no-undo.
    def var de-val_operac_financ-2 like operac_financ.val_operac_financ no-undo.
    def var de-val_operac_financ-3 like operac_financ.val_operac_financ no-undo.
    def var de-val_operac_financ-4 like operac_financ.val_operac_financ no-undo.
    def var de-val_operac_financ-5 like operac_financ.val_operac_financ no-undo.
    def var de-val_operac_financ-6 like operac_financ.val_operac_financ no-undo.
    def var de-val_operac_indic_cta_c-1 like operac_financ.val_operac_indic_cta_corren no-undo.
    def var de-val_operac_indic_cta_c-2 like operac_financ.val_operac_indic_cta_corren no-undo.
    def var de-val_operac_indic_cta_c-3 like operac_financ.val_operac_indic_cta_corren no-undo.
    def var de-val_operac_indic_cta_c-4 like operac_financ.val_operac_indic_cta_corren no-undo.
    def var de-val_operac_indic_cta_c-5 like operac_financ.val_operac_indic_cta_corren no-undo.
    def var de-val_operac_indic_cta_c-6 like operac_financ.val_operac_indic_cta_corren no-undo.
    def var de-val_sdo_operac_financ-1 like operac_financ.val_sdo_operac_financ no-undo.
    def var de-val_sdo_operac_financ-2 like operac_financ.val_sdo_operac_financ no-undo.
    def var de-val_sdo_operac_financ-3 like operac_financ.val_sdo_operac_financ no-undo.
    def var de-val_sdo_operac_financ-4 like operac_financ.val_sdo_operac_financ no-undo.
    def var de-val_sdo_operac_financ-5 like operac_financ.val_sdo_operac_financ no-undo.
    def var de-val_sdo_operac_financ-6 like operac_financ.val_sdo_operac_financ no-undo.

    def temp-table tt-data no-undo
    field c-id as inte
    field c-cod-banco like operac_financ.cod_banco
    field c-nom-banco like emscad.banco.nom_banco
    field c-cod-empresa like operac_financ.cod_empresa
    field c-operac-financ like operac_financ.cod_operac_financ
    field c-parcela like repas_pend_apl.num_seq_repas_pend
    field c-produt-financ like operac_financ.cod_produt_financ
    field c-dat-operac-financ like operac_financ.dat_operac_financ
    field c-dat-vencto-operac-financ like operac_financ.dat_vencto_operac_financ
    field c-cod-indic-econ-orig-apl like operac_financ.cod_indic_econ_orig_apl
    field c-val-operac-financ like operac_financ.val_operac_financ format '>>>,>>>,>>>,>>9.99'
    field c-val-sdo-operac-financ like operac_financ.val_sdo_operac_financ format '>>>,>>>,>>>,>>9.99'
    field c-taxa as deci format '>9.9999'
    field c-val-operac-indic-cta-corren like operac_financ.val_operac_indic_cta_corren format '>>>,>>>,>>>,>>9.99'
    field c-val-tax-juros-operac-financ like indic_econ_operac_financ.val_tax_juros_operac_financ format '>>>,>>>,>>>,>>9.9999'
    index idx c-operac-financ.

    def temp-table tt-data2 no-undo
    field c-id as inte
    field c-cod-banco like operac_financ.cod_banco
    field c-nom-banco like emscad.banco.nom_banco
    field c-cod-empresa like operac_financ.cod_empresa
    field c-operac-financ like operac_financ.cod_operac_financ
    field c-parcela like repas_pend_apl.num_seq_repas_pend
    field c-produt-financ like operac_financ.cod_produt_financ
    field c-dat-operac-financ like operac_financ.dat_operac_financ
    field c-dat-vencto-operac-financ like operac_financ.dat_vencto_operac_financ
    field c-cod-indic-econ-orig-apl like operac_financ.cod_indic_econ_orig_apl
    field c-val-operac-financ like operac_financ.val_operac_financ format '>>>,>>>,>>>,>>9.99'
    field c-val-sdo-operac-financ like operac_financ.val_sdo_operac_financ format '>>>,>>>,>>>,>>9.99'
    field c-taxa as deci format '>9.9999'
    field c-val-operac-indic-cta-corren like operac_financ.val_operac_indic_cta_corren format '>>>,>>>,>>>,>>9.99'
    field c-val-tax-juros-operac-financ like indic_econ_operac_financ.val_tax_juros_operac_financ format '>>>,>>>,>>>,>>9.9999'
    field c-operacao-fin-ant as char format 'x(10)'
    field c-tot-desajo as deci format '>>>,>>>,>>>,>>9.99'
    index idx c-operac-financ.

    def temp-table tt-data3 no-undo
    field c-operac-financ as char format 'x(10)'
    field c-date-operacao like operac_financ.dat_operac_financ
    index ixd c-operac-financ.

    update da-dat_operac_financ-ini label 'Dt Operacao'
    da-dat_operac_financ-fim no-label
    da-dat_vencto_operac_financ-ini label 'Dt Venct. Oper. Fin'
    da-dat_vencto_operac_financ-fim no-label
    c-cod_banco-ini label 'Cod. Banco'
    c-cod_banco-fim no-label
    c-cod_empresa-ini label 'Cod. Empresa'
    c-cod_empresa-fim no-label
    c-cod_operac_financ-ini label 'Cod. Oper. Fin.'
    c-cod_operac_financ-fim no-label
    c-cod_produt_financ-ini label 'Cod. Prod. Fin.'
    c-cod_produt_financ-fim no-label
    l-show label 'Listar Sald/Zero'
    c-formato label 'Exibir'
    with 2 col width 100 down.


    def var Taxa as decimal label "Tx Cont".

    def temp-table tt-relat no-undo
    field oper-finac like operac_financ.cod_operac_financ
    field sdo-finac1 like repas_pend_apl.val_repas_pend
    field sdo-finac2 like repas_pend_apl.val_repas_pend
    field sdo-finac3 like repas_pend_apl.val_repas_pend
    index idx oper-finac.


    for each operac_financ no-lock,
    each repas_pend_apl no-lock
    where repas_pend_apl.num_id_operac_financ = operac_financ.num_id_operac_financ
    break by operac_financ.cod_operac_financ desc:

    assign de-val-saldo = de-val-saldo + repas_pend_apl.val_repas_pend when ( repas_pend_apl.ind_sit_repas_pend = 'quitada' and repas_pend_apl.ind_tip_repas_pend = 'agenda')
    de-val-saldo2 = de-val-saldo2 + repas_pend_apl.val_repas_pend when ( repas_pend_apl.ind_sit_repas_pend = 'pendente' and repas_pend_apl.ind_tip_repas_pend = 'vinculação')
    de-val-saldo3 = de-val-saldo3 + repas_pend_apl.val_repas_pend when ( repas_pend_apl.ind_sit_repas_pend = 'vinculação' and repas_pend_apl.ind_tip_repas_pend = 'estorno').

    if last-of (operac_financ.cod_operac_financ) then do:
    create tt-relat.
    assign oper-finac = operac_financ.cod_operac_financ
    sdo-finac1 = de-val-saldo
    sdo-finac2 = de-val-saldo2
    sdo-finac3 = de-val-saldo3.
    assign de-val-saldo = 0
    de-val-saldo2 = 0
    de-val-saldo3 = 0.
    end.
    end.

    for each operac_financ no-lock :
    create tt-data3.
    assign tt-data3.c-operac-financ = operac_financ.cod_operac_financ
    tt-data3.c-date-operacao = operac_financ.dat_operac_financ.
    end.

    output to c:\Temp\relatorio.txt.
    case l-show:
    when no then run pi-listar-no.
    when yes then run pi-listar-yes.
    end case.

    procedure pi-listar-no.
    for each operac_financ NO-LOCK
    where operac_financ.cod_banco >= c-cod_banco-ini and
    operac_financ.cod_banco <= c-cod_banco-fim and
    operac_financ.cod_empresa >= c-cod_empresa-ini and
    operac_financ.cod_empresa <= c-cod_empresa-fim and
    operac_financ.cod_operac_financ >= c-cod_operac_financ-ini and
    operac_financ.cod_operac_financ <= c-cod_operac_financ-fim and
    operac_financ.cod_produt_financ >= c-cod_produt_financ-ini and
    operac_financ.cod_produt_financ <= c-cod_produt_financ-fim and
    operac_financ.dat_operac_financ >= da-dat_operac_financ-ini and
    operac_financ.dat_operac_financ <= da-dat_operac_financ-fim and
    operac_financ.dat_vencto_operac_financ >= da-dat_vencto_operac_financ-ini and
    operac_financ.dat_vencto_operac_financ <= da-dat_vencto_operac_financ-fim,
    each emscad.banco no-lock
    where movfin.operac_financ.cod_banco = emscad.banco.cod_banco,
    each indic_econ_operac_financ no-lock
    where indic_econ_operac_financ.num_id_operac_financ = operac_financ.num_id_operac_financ and
    indic_econ_operac_financ.dat_fim_valid = operac_financ.dat_vencto_operac_financ
    break by operac_financ.cod_empresa
    by operac_financ.cod_banco
    by operac_financ.cod_produt_financ
    by operac_financ.dat_operac_financ
    by operac_financ.cod_operac_financ
    by operac_financ.cod_indic_econ_orig_apl:

    assign Taxa = operac_financ.val_operac_indic_cta_corren / operac_financ.val_operac_financ.
    if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ = 'ACC-VINC') and ( operac_financ.val_sdo_operac_financ = 0) then do:
    create tt-data2.
    assign tt-data2.c-id = 1
    tt-data2.c-cod-banco = operac_financ.cod_banco
    tt-data2.c-nom-banco = emscad.banco.nom_banco
    tt-data2.c-cod-empresa = operac_financ.cod_empresa
    tt-data2.c-operac-financ = operac_financ.cod_operac_financ
    tt-data2.c-produt-financ = operac_financ.cod_produt_financ
    tt-data2.c-dat-operac-financ = operac_financ.dat_operac_financ /* Data de quitação*/
    tt-data2.c-dat-vencto-operac-financ = operac_financ.dat_vencto_operac_financ
    tt-data2.c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl
    tt-data2.c-val-operac-financ = operac_financ.val_operac_financ
    tt-data2.c-val-sdo-operac-financ = operac_financ.val_sdo_operac_financ
    tt-data2.c-taxa = Taxa
    tt-data2.c-val-operac-indic-cta-corren = operac_financ.val_operac_indic_cta_corren
    tt-data2.c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ
    tt-data2.c-operacao-fin-ant = substring(operac_financ.des_anot_tab,19,10).
    end.
    if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ = 'ACE') and ( operac_financ.val_sdo_operac_financ = 0) then do:
    create tt-data2.
    assign tt-data2.c-id = 1
    tt-data2.c-cod-banco = operac_financ.cod_banco
    tt-data2.c-nom-banco = emscad.banco.nom_banco
    tt-data2.c-cod-empresa = operac_financ.cod_empresa
    tt-data2.c-operac-financ = operac_financ.cod_operac_financ
    tt-data2.c-operacao-fin-ant = operac_financ.cod_operac_financ /*substring(operac_financ.des_anot_tab,19,10)*/
    tt-data2.c-produt-financ = operac_financ.cod_produt_financ
    tt-data2.c-dat-operac-financ = operac_financ.dat_operac_financ
    tt-data2.c-dat-vencto-operac-financ = operac_financ.dat_vencto_operac_financ
    tt-data2.c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl
    tt-data2.c-val-operac-financ = operac_financ.val_operac_financ
    tt-data2.c-val-sdo-operac-financ = operac_financ.val_sdo_operac_financ
    tt-data2.c-taxa = Taxa
    tt-data2.c-val-operac-indic-cta-corren = operac_financ.val_operac_indic_cta_corren
    tt-data2.c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ.
    /* message tt-data2.c-operac-financ view-as alert-box.*/
    end.
    if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ = 'PRE-CONT') then do:
    for each repas_pend_apl
    where repas_pend_apl.num_id_operac_financ = operac_financ.num_id_operac_financ
    and repas_pend_apl.ind_sit_repas_pend = 'Quitada'
    and repas_pend_apl.ind_tip_repas_pend = 'Agenda' no-lock,
    first tt-relat
    where tt-relat.oper-finac = operac_financ.cod_operac_financ
    break by operac_financ.cod_operac_financ
    by repas_pend_apl.num_seq_repas_pend:
    assign de-val-saldo4 = repas_pend_apl.val_repas_pend.
    create tt-data2.
    assign tt-data2.c-id = 1
    tt-data2.c-cod-banco = operac_financ.cod_banco
    tt-data2.c-nom-banco = emscad.banco.nom_banco
    tt-data2.c-cod-empresa = operac_financ.cod_empresa
    tt-data2.c-operac-financ = operac_financ.cod_operac_financ
    tt-data2.c-operacao-fin-ant = operac_financ.cod_operac_financ /*substring(operac_financ.des_anot_tab,19,10)*/
    tt-data2.c-parcela = repas_pend_apl.num_seq_repas_pend
    tt-data2.c-produt-financ = operac_financ.cod_produt_financ
    tt-data2.c-dat-operac-financ = repas_pend_apl.dat_repas_pend
    tt-data2.c-dat-vencto-operac-financ = repas_pend_apl.dat_repas_pend
    tt-data2.c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl
    tt-data2.c-val-operac-financ = repas_pend_apl.val_repas_pend
    tt-data2.c-taxa = Taxa
    tt-data2.c-val-operac-indic-cta-corren = (repas_pend_apl.val_repas_pend * Taxa )
    tt-data2.c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ.
    /*message tt-data2.c-operac-financ view-as alert-box.*/

    if first-of (operac_financ.cod_operac_financ) then assign tt-data2.c-val-sdo-operac-financ = 0 /*( repas_pend_apl.val_repas_pend - (tt-relat.sdo-finac2 - tt-relat.sdo-finac1 + tt-relat.sdo-finac3 ) )*/. else assign tt-data2.c-val-sdo-operac-financ = 0.

    end.
    end.
    end.
    case c-formato:
    when "1" then do:
    for each tt-data2 no-lock,
    each tt-data3
    where tt-data3.c-operac-financ = tt-data2.c-operacao-fin-ant
    break by tt-data2.c-id
    by tt-data2.c-cod-banco
    by tt-data2.c-produt-financ
    by tt-data2.c-operac-financ
    by tt-data2.c-parcela:
    assign de-val_operac_financ-5 = de-val_operac_financ-5 + tt-data2.c-val-operac-financ
    de-val_operac_indic_cta_c-5 = de-val_operac_indic_cta_c-5 + tt-data2.c-val-operac-indic-cta-corren
    c-cal-des = ( ( ( ( tt-data2.c-val-tax-juros-operac-financ / 100 ) / 360) * tt-data2.c-val-operac-financ ) * ( tt-data2.c-dat-operac-financ - tt-data3.c-date-operacao ) )
    de-val_sdo_operac_financ-5 = de-val_sdo_operac_financ-5 + c-cal-des.
    /* message tt-data2.c-val-operac-financ ' e ' c-cal-des view-as alert-box. */

    if (tt-data2.c-parcela = 0) then assign x-parcela = ''.
    else x-parcela = string (tt-data2.c-parcela).

    disp tt-data2.c-cod-banco column-label 'Banco' format 'x(5)'
    tt-data2.c-nom-banco column-label 'Nome Banco' format 'x(30)'
    tt-data2.c-cod-empresa column-label 'Emp' format 'x(3)'
    tt-data2.c-operacao-fin-ant column-label 'Op. Fin.ant'
    tt-data2.c-operac-financ column-label 'Op. Financ' format 'x(10)'.
    if tt-data2.c-parcela = 0 then disp ' ' @ tt-data2.c-parcela column-label 'P' . else disp tt-data2.c-parcela format '99' column-label 'P'.
    disp tt-data2.c-produt-financ column-label 'Prod Financ' format 'x(8)'
    tt-data3.c-date-operacao column-label 'Dt Oper.' format '99/99/99'
    tt-data2.c-dat-operac-financ column-label 'Dt Liq.' format '99/99/99'
    tt-data2.c-dat-vencto-operac-financ column-label 'Dt Venct' format '99/99/99'
    tt-data2.c-cod-indic-econ-orig-apl column-label 'Moeda' format 'x(8)'
    tt-data2.c-val-operac-financ column-label 'Vlr Operacao' format '>>>,>>>,>>9.99'
    tt-data2.c-taxa column-label 'Tx Cont.' format '>9.9999'
    tt-data2.c-val-operac-indic-cta-corren column-label 'Valor Moeda C/C' format '>>>,>>>,>>>,>>9.99'
    tt-data2.c-val-tax-juros-operac-financ column-label 'Taxa Juros' format '>>>9.9999'
    c-cal-des column-label 'Deságio' format '>>>,>>>,>>9.99'
    with width 210 stream-io.
    assign c-cal-des = 0
    c-teste = 0
    c-teste2 = 0.
    if last-of (tt-data2.c-produt-financ) then do:
    put '--------------' to 129
    '------------------' to 157
    '--------------' to 183 skip
    de-val_operac_financ-5 format '>>>>,>>>,>>9.99' to 129
    de-val_operac_indic_cta_c-5 format '>>>>>,>>>,>>9.99' to 157
    de-val_sdo_operac_financ-5 format '>>>>,>>>,>>9.99' to 183 skip(2).

    assign de-val_operac_financ-6 = de-val_operac_financ-6 + de-val_operac_financ-5
    de-val_sdo_operac_financ-6 = de-val_sdo_operac_financ-6 + de-val_sdo_operac_financ-5
    de-val_operac_indic_cta_c-6 = de-val_operac_indic_cta_c-6 + de-val_operac_indic_cta_c-5
    de-val_operac_financ-4 = de-val_operac_financ-4 + de-val_operac_financ-5
    de-val_sdo_operac_financ-4 = de-val_sdo_operac_financ-4 + de-val_sdo_operac_financ-5
    de-val_operac_indic_cta_c-4 = de-val_operac_indic_cta_c-4 + de-val_operac_indic_cta_c-5
    de-val_operac_financ-5 = 0
    de-val_sdo_operac_financ-5 = 0
    de-val_operac_indic_cta_c-5 = 0.
    end.
    if last-of(tt-data2.c-cod-banco) then do:
    put de-val_operac_financ-4 format '>>>>,>>>,>>9.99' to 129
    de-val_operac_indic_cta_c-4 format '>>>>>,>>>,>>9.99' to 157
    de-val_sdo_operac_financ-4 format '>>>>,>>>,>>9.99' to 183 skip(2).

    assign de-val_operac_financ-4 = 0
    de-val_sdo_operac_financ-4 = 0
    de-val_operac_indic_cta_c-4 = 0.
    end.
    if last-of(tt-data2.c-id) then do:
    put de-val_operac_financ-6 format '>>>>,>>>,>>9.99' to 129
    de-val_operac_indic_cta_c-6 format '>>>>>,>>>,>>9.99' to 157
    de-val_sdo_operac_financ-6 format '>>>>,>>>,>>9.99' to 183 skip(2).

    assign de-val_operac_financ-6 = 0
    de-val_sdo_operac_financ-6 = 0
    de-val_operac_indic_cta_c-6 = 0.
    end.
    end.
    end.
    when "2" then do:
    for each tt-data2 no-lock,
    each tt-data3
    where tt-data3.c-operac-financ = tt-data2.c-operacao-fin-ant
    break by tt-data2.c-id
    by tt-data2.c-dat-vencto-operac-financ
    by tt-data2.c-operac-financ
    by tt-data2.c-parcela
    by tt-data2.c-cod-banco:
    assign de-val_operac_financ-5 = de-val_operac_financ-5 + tt-data2.c-val-operac-financ
    de-val_sdo_operac_financ-5 = de-val_sdo_operac_financ-5 + tt-data2.c-val-sdo-operac-financ
    de-val_operac_indic_cta_c-5 = de-val_operac_indic_cta_c-5 + tt-data2.c-val-operac-indic-cta-corren
    c-cal-des = ( ( ( tt-data2.c-val-operac-financ * ( tt-data2.c-taxa / 100 ) ) / 360) * ( tt-data2.c-dat-operac-financ - tt-data3.c-date-operacao ) ).

    if (tt-data2.c-parcela = 0) then assign x-parcela = ''.
    else x-parcela = string (tt-data2.c-parcela).

    disp tt-data2.c-cod-banco column-label 'Banco' format 'x(5)'
    tt-data2.c-nom-banco column-label 'Nome Banco' format 'x(30)'
    tt-data2.c-cod-empresa column-label 'Emp' format 'x(3)'
    tt-data2.c-operacao-fin-ant column-label 'Op. Fin.ant'
    tt-data2.c-operac-financ column-label 'Op. Financ' format 'x(10)'.
    if tt-data2.c-parcela = 0 then disp ' ' @ tt-data2.c-parcela column-label 'P' . else disp tt-data2.c-parcela format '99' column-label 'P'.
    disp tt-data2.c-produt-financ column-label 'Prod Financ' format 'x(8)'
    tt-data3.c-date-operacao column-label 'Dt Oper.' format '99/99/99'
    tt-data2.c-dat-operac-financ column-label 'Dt Liq.' format '99/99/99'
    tt-data2.c-dat-vencto-operac-financ column-label 'Dt Venct' format '99/99/99'
    tt-data2.c-cod-indic-econ-orig-apl column-label 'Moeda' format 'x(8)'
    tt-data2.c-val-operac-financ column-label 'Vlr Operacao' format '>>>,>>>,>>9.99'
    tt-data2.c-val-sdo-operac-financ column-label 'Saldo Operacao' format '>>>,>>>,>>9.99'
    tt-data2.c-taxa column-label 'Tx Cont.' format '>9.9999'
    tt-data2.c-val-operac-indic-cta-corren column-label 'Valor Moeda C/C' format '>>>,>>>,>>>,>>9.99'
    tt-data2.c-val-tax-juros-operac-financ column-label 'Taxa Juros' format '>>>9.9999'
    c-cal-des column-label 'Desajo' format '>>>,>>>,>>9.99'
    with width 210 stream-io.
    assign c-cal-des = 0.
    if last-of (tt-data2.c-dat-vencto-operac-financ) then do:
    put '--------------' to 109
    '--------------' to 124
    '------------------' to 152 skip
    de-val_operac_financ-5 format '>>>>,>>>,>>9.99' to 109
    de-val_sdo_operac_financ-5 format '>>>>,>>>,>>9.99' to 124
    de-val_operac_indic_cta_c-5 format '>>>>>,>>>,>>9.99' to 152 skip(2).

    assign de-val_operac_financ-6 = de-val_operac_financ-6 + de-val_operac_financ-5
    de-val_sdo_operac_financ-6 = de-val_sdo_operac_financ-6 + de-val_sdo_operac_financ-5
    de-val_operac_indic_cta_c-6 = de-val_operac_indic_cta_c-6 + de-val_operac_indic_cta_c-5
    de-val_operac_financ-5 = 0
    de-val_sdo_operac_financ-5 = 0
    de-val_operac_indic_cta_c-5 = 0.
    end.
    if last-of(tt-data2.c-id) then do:
    put de-val_operac_financ-6 format '>>>>,>>>,>>9.99' to 109
    de-val_sdo_operac_financ-6 format '>>>>,>>>,>>9.99' to 124
    de-val_operac_indic_cta_c-6 format '>>>>>,>>>,>>9.99' to 152 skip(2).

    assign de-val_operac_financ-6 = 0
    de-val_sdo_operac_financ-6 = 0
    de-val_operac_indic_cta_c-6 = 0.
    end.
    end.
    end.
    end case.

    end procedure.

    procedure pi-listar-yes.
    for each operac_financ NO-LOCK
    where operac_financ.cod_banco >= c-cod_banco-ini and
    operac_financ.cod_banco <= c-cod_banco-fim and
    operac_financ.cod_empresa >= c-cod_empresa-ini and
    operac_financ.cod_empresa <= c-cod_empresa-fim and
    operac_financ.cod_operac_financ >= c-cod_operac_financ-ini and
    operac_financ.cod_operac_financ <= c-cod_operac_financ-fim and
    operac_financ.cod_produt_financ >= c-cod_produt_financ-ini and
    operac_financ.cod_produt_financ <= c-cod_produt_financ-fim and
    operac_financ.dat_operac_financ >= da-dat_operac_financ-ini and
    operac_financ.dat_operac_financ <= da-dat_operac_financ-fim and
    operac_financ.dat_vencto_operac_financ >= da-dat_vencto_operac_financ-ini and
    operac_financ.dat_vencto_operac_financ <= da-dat_vencto_operac_financ-fim and
    operac_financ.val_sdo_operac_financ > 0 ,

    EACH emscad.banco NO-LOCK
    WHERE movfin.operac_financ.cod_banco = emscad.banco.cod_banco,

    each indic_econ_operac_financ no-lock
    where indic_econ_operac_financ.num_id_operac_financ = operac_financ.num_id_operac_financ and
    indic_econ_operac_financ.dat_fim_valid = operac_financ.dat_vencto_operac_financ
    break by operac_financ.cod_empresa
    by operac_financ.cod_banco
    by operac_financ.cod_produt_financ
    by operac_financ.dat_operac_financ
    by operac_financ.cod_operac_financ
    by operac_financ.cod_indic_econ_orig_apl:

    assign Taxa = operac_financ.val_operac_indic_cta_corren / operac_financ.val_operac_financ.

    if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ <> 'PRE-CONT') then do:
    create tt-data.
    assign c-id = 1
    c-cod-banco = operac_financ.cod_banco
    c-nom-banco = emscad.banco.nom_banco
    c-cod-empresa = operac_financ.cod_empresa
    c-operac-financ = operac_financ.cod_operac_financ
    c-produt-financ = operac_financ.cod_produt_financ
    c-dat-operac-financ = operac_financ.dat_operac_financ
    c-dat-vencto-operac-financ = operac_financ.dat_vencto_operac_financ
    c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl
    c-val-operac-financ = operac_financ.val_operac_financ
    c-val-sdo-operac-financ = operac_financ.val_sdo_operac_financ
    c-taxa = Taxa
    c-val-operac-indic-cta-corren = operac_financ.val_operac_indic_cta_corren
    c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ.
    end.
    if first-of (operac_financ.cod_operac_financ) and (operac_financ.cod_produt_financ = 'PRE-CONT') then do:
    for each repas_pend_apl
    where repas_pend_apl.num_id_operac_financ = operac_financ.num_id_operac_financ
    and repas_pend_apl.ind_sit_repas_pend = 'Pendente'
    and repas_pend_apl.ind_tip_repas_pend = 'Agenda' no-lock,
    first tt-relat
    where tt-relat.oper-finac = operac_financ.cod_operac_financ
    break by operac_financ.cod_operac_financ
    by repas_pend_apl.num_seq_repas_pend:
    assign de-val-saldo4 = repas_pend_apl.val_repas_pend.
    create tt-data.
    assign c-id = 1
    c-cod-banco = operac_financ.cod_banco
    c-nom-banco = emscad.banco.nom_banco
    c-cod-empresa = operac_financ.cod_empresa
    c-operac-financ = operac_financ.cod_operac_financ
    c-parcela = repas_pend_apl.num_seq_repas_pend
    c-produt-financ = operac_financ.cod_produt_financ
    c-dat-operac-financ = operac_financ.dat_operac_financ
    c-dat-vencto-operac-financ = repas_pend_apl.dat_repas_pend
    c-cod-indic-econ-orig-apl = operac_financ.cod_indic_econ_orig_apl
    c-val-operac-financ = repas_pend_apl.val_repas_pend
    c-taxa = Taxa
    c-val-operac-indic-cta-corren = (repas_pend_apl.val_repas_pend * Taxa )
    c-val-tax-juros-operac-financ = indic_econ_operac_financ.val_tax_juros_operac_financ.

    if first-of ( operac_financ.cod_operac_financ ) then assign c-val-sdo-operac-financ = ( repas_pend_apl.val_repas_pend - (tt-relat.sdo-finac2 - tt-relat.sdo-finac1 + tt-relat.sdo-finac3 ) ). else assign c-val-sdo-operac-financ = de-val-saldo4.

    end.
    end.
    end.
    case c-formato:
    when "1" then do:
    for each tt-data no-lock
    break by c-id
    by c-cod-banco
    by c-produt-financ
    by c-operac-financ
    by c-parcela:
    assign de-val_operac_financ-5 = de-val_operac_financ-5 + c-val-operac-financ
    de-val_sdo_operac_financ-5 = de-val_sdo_operac_financ-5 + c-val-sdo-operac-financ
    de-val_operac_indic_cta_c-5 = de-val_operac_indic_cta_c-5 + c-val-operac-indic-cta-corren.

    if (tt-data.c-parcela = 0) then assign x-parcela = ''.
    else x-parcela = string (tt-data.c-parcela).

    disp c-cod-banco column-label 'Banco' format 'x(5)'
    c-nom-banco column-label 'Nome Banco' format 'x(30)'
    c-cod-empresa column-label 'Emp' format 'x(3)'
    c-operac-financ column-label 'Op. Financ' format 'x(10)'.
    if c-parcela = 0 then disp ' ' @ c-parcela column-label 'P' . else disp c-parcela format '99' column-label 'P'.
    disp c-produt-financ column-label 'Prod Financ' format 'x(8)'
    c-dat-operac-financ column-label 'Dt Operac' format '99/99/99'
    c-dat-vencto-operac-financ column-label 'Dt Venct' format '99/99/99'
    c-cod-indic-econ-orig-apl column-label 'Moeda' format 'x(8)'
    c-val-operac-financ column-label 'Vlr Operacao' format '>>>,>>>,>>9.99'
    c-val-sdo-operac-financ column-label 'Saldo Operacao' format '>>>,>>>,>>9.99'
    c-taxa column-label 'Tx Cont.' format '>9.9999'
    c-val-operac-indic-cta-corren column-label 'Valor Moeda C/C' format '>>>,>>>,>>>,>>9.99'
    c-val-tax-juros-operac-financ column-label 'Taxa Juros' format '>>>9.9999'
    with width 172 stream-io.
    if last-of (c-produt-financ) then do:
    put '--------------' to 109
    '--------------' to 124
    '------------------' to 152 skip
    de-val_operac_financ-5 format '>>>>,>>>,>>9.99' to 109
    de-val_sdo_operac_financ-5 format '>>>>,>>>,>>9.99' to 124
    de-val_operac_indic_cta_c-5 format '>>>>>,>>>,>>9.99' to 152 skip(2).

    assign de-val_operac_financ-6 = de-val_operac_financ-6 + de-val_operac_financ-5
    de-val_sdo_operac_financ-6 = de-val_sdo_operac_financ-6 + de-val_sdo_operac_financ-5
    de-val_operac_indic_cta_c-6 = de-val_operac_indic_cta_c-6 + de-val_operac_indic_cta_c-5
    de-val_operac_financ-4 = de-val_operac_financ-4 + de-val_operac_financ-5
    de-val_sdo_operac_financ-4 = de-val_sdo_operac_financ-4 + de-val_sdo_operac_financ-5
    de-val_operac_indic_cta_c-4 = de-val_operac_indic_cta_c-4 + de-val_operac_indic_cta_c-5
    de-val_operac_financ-5 = 0
    de-val_sdo_operac_financ-5 = 0
    de-val_operac_indic_cta_c-5 = 0.
    end.
    if last-of(c-cod-banco) then do:
    put de-val_operac_financ-4 format '>>>>,>>>,>>9.99' to 109
    de-val_sdo_operac_financ-4 format '>>>>,>>>,>>9.99' to 124
    de-val_operac_indic_cta_c-4 format '>>>>>,>>>,>>9.99' to 152 skip(2).

    assign de-val_operac_financ-4 = 0
    de-val_sdo_operac_financ-4 = 0
    de-val_operac_indic_cta_c-4 = 0.
    end.
    if last-of(c-id) then do:
    put de-val_operac_financ-6 format '>>>>,>>>,>>9.99' to 109
    de-val_sdo_operac_financ-6 format '>>>>,>>>,>>9.99' to 124
    de-val_operac_indic_cta_c-6 format '>>>>>,>>>,>>9.99' to 152 skip(2).

    assign de-val_operac_financ-6 = 0
    de-val_sdo_operac_financ-6 = 0
    de-val_operac_indic_cta_c-6 = 0.
    end.
    end.
    end.
    when "2" then do:
    for each tt-data no-lock
    break by c-id
    by c-dat-vencto-operac-financ
    by c-operac-financ
    by c-parcela
    by c-cod-banco:
    assign de-val_operac_financ-5 = de-val_operac_financ-5 + c-val-operac-financ
    de-val_sdo_operac_financ-5 = de-val_sdo_operac_financ-5 + c-val-sdo-operac-financ
    de-val_operac_indic_cta_c-5 = de-val_operac_indic_cta_c-5 + c-val-operac-indic-cta-corren.

    if (tt-data.c-parcela = 0) then assign x-parcela = ''.
    else x-parcela = string (tt-data.c-parcela).

    disp c-cod-banco column-label 'Banco' format 'x(5)'
    c-nom-banco column-label 'Nome Banco' format 'x(30)'
    c-cod-empresa column-label 'Emp' format 'x(3)'
    c-operac-financ column-label 'Op. Financ' format 'x(10)'.
    if c-parcela = 0 then disp ' ' @ c-parcela column-label 'P' . else disp c-parcela format '99' column-label 'P'.
    disp c-produt-financ column-label 'Prod Financ' format 'x(8)'
    c-dat-operac-financ column-label 'Dt Operac' format '99/99/99'
    c-dat-vencto-operac-financ column-label 'Dt Venct' format '99/99/99'
    c-cod-indic-econ-orig-apl column-label 'Moeda' format 'x(8)'
    c-val-operac-financ column-label 'Vlr Operacao' format '>>>,>>>,>>9.99'
    c-val-sdo-operac-financ column-label 'Saldo Operacao' format '>>>,>>>,>>9.99'
    c-taxa column-label 'Tx Cont.' format '>9.9999'
    c-val-operac-indic-cta-corren column-label 'Valor Moeda C/C' format '>>>,>>>,>>>,>>9.99'
    c-val-tax-juros-operac-financ column-label 'Taxa Juros' format '>>>9.9999'
    with width 172 stream-io.
    if last-of (c-dat-vencto-operac-financ) then do:
    put '--------------' to 109
    '--------------' to 124
    '------------------' to 152 skip
    de-val_operac_financ-5 format '>>>>,>>>,>>9.99' to 109
    de-val_sdo_operac_financ-5 format '>>>>,>>>,>>9.99' to 124
    de-val_operac_indic_cta_c-5 format '>>>>>,>>>,>>9.99' to 152 skip(2).

    assign de-val_operac_financ-6 = de-val_operac_financ-6 + de-val_operac_financ-5
    de-val_sdo_operac_financ-6 = de-val_sdo_operac_financ-6 + de-val_sdo_operac_financ-5
    de-val_operac_indic_cta_c-6 = de-val_operac_indic_cta_c-6 + de-val_operac_indic_cta_c-5
    de-val_operac_financ-5 = 0
    de-val_sdo_operac_financ-5 = 0
    de-val_operac_indic_cta_c-5 = 0.
    end.
    if last-of(c-id) then do:
    put de-val_operac_financ-6 format '>>>>,>>>,>>9.99' to 109
    de-val_sdo_operac_financ-6 format '>>>>,>>>,>>9.99' to 124
    de-val_operac_indic_cta_c-6 format '>>>>>,>>>,>>9.99' to 152 skip(2).

    assign de-val_operac_financ-6 = 0
    de-val_sdo_operac_financ-6 = 0
    de-val_operac_indic_cta_c-6 = 0.
    end.
    end.
    end.
    end case.
    end procedure.
    output close.
  4. eugeniograssmann

    eugeniograssmann Sem Pontuação

    Atualmente listamos os totais por banco + produto financeiro


    Preciso
    - inverter a ordem para banco + produto financeiro + vencimento
    - colocar um totalizador por mês de vencimento, bem como, uma coluna que lista o mês do vencimento.
  5. Rodrigo Rossetto

    Rodrigo Rossetto Membro Participativo

    Cara, ao postar códigos use o botão CODE!

    Segue um exemplo:

    Código:
    FOR EACH tit_acr WHERE tit_acr.log_sdo_tit_acr
        BREAK BY tit_acr.cod_portador BY YEAR(tit_acr.dat_vencto_tit_acr) BY MONTH(tit_acr.dat_vencto_tit_acr) 
        WITH STREAM-IO SCROLLABLE:  
                                                                                                                
        ACCUMULATE tit_acr.val_sdo_tit_acr (TOTAL BY tit_acr.cod_portador).
        ACCUMULATE tit_acr.val_sdo_tit_acr (TOTAL BY MONTH(tit_acr.dat_vencto_tit_acr)).
    
        IF LAST-OF(MONTH(tit_acr.dat_vencto_tit_acr)) THEN
        DO:
            DISP tit_acr.cod_portador 
                 YEAR(tit_acr.dat_vencto_tit_acr)  COLUMN-LABEL 'Ano'
                 MONTH(tit_acr.dat_vencto_tit_acr) COLUMN-LABEL 'Mês'
                (ACCUM TOTAL BY tit_acr.cod_portador tit_acr.val_sdo_tit_acr) @ tit_acr.val_sdo_tit_acr.
        END.
    
        IF LAST-OF(tit_acr.cod_portador) THEN
        DO:
            UNDERLINE tit_acr.val_sdo_tit_acr.
            DISP (ACCUM TOTAL BY tit_acr.cod_portador tit_acr.val_sdo_tit_acr) @ tit_acr.val_sdo_tit_acr.
    
            DOWN 1.
    
        END.
       
    END.
    
  6. eugeniograssmann

    eugeniograssmann Sem Pontuação

    Pelo que entendi, devo agregar seu exemplo ao meu fonte, alterando os campos.

    Mas devo incluir como for each em separado ?

    Me desculpe se a pergunta for muito "tosca".

    Estou iniciando nesta parte e peguei um fonte pronto.

Compartilhe esta Página