Olá pessoal Beleza! Como eu faço para separar um lançamento que foi lançado manual no evento (tt-dados.idi_emprest = 2 then assign c-desc-tipo = "Desconto".) que não faz parte desse evento ele só é lançado junto, como eu faço para separar e somar separado do evento 2? Exemplo dos eventos abaixo. Obrigado. 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".
Isso! nesse evento aqui ( if tt-dados.idi_emprest = 2 then assign c-desc-tipo = "Desconto".) foi lançado o evento normal dele né e ainda um outro valor feito manual que não faz parte desse evento, só foi lançado junto ok eu quero somar separado blz como faço? att.
Esse é o relatório que eu estou alterando blz. {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. 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 ult_desc_adto AS DEC. /* DEF VAR ult_desc AS DEC. */ 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_desc_manual = 0. ASSIGN TOTAL_saldo_anterior = 0. ASSIGN v_adto = 0. ASSIGN v_desc = 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 v_adto = TT-DADOS.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 v_desc = 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. 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 v_adto = TT-DADOS.SALDO_FINAL v_desc = TT-DADOS.SALDO_FINAL TOTAL_desc_manual = TT-DADOS.SALDO_FINAL. END. END. END. 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_desc_manual = 0. ASSIGN TOTAL_saldo_anterior = 0. ASSIGN v_adto = 0. ASSIGN v_desc = 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 v_adto = TT-DADOS.SALDO_FINAL + ult_desc_adto. 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 v_desc = TT-DADOS.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_adiantamento_mes - TOTAL_desconto_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 + tt-dados.vl_emprest + TOTAL_adiantamento_mes - TOTAL_desconto_mes. if LAST-OF(tt-dados.cdn_funcionario) then do: ASSIGN TOTAL_desconto_mes = TOTAL_desconto_mes + v_desc. END. END. if LAST-OF(tt-dados.cdn_funcionario) then do: ASSIGN TOTAL_adiantamento_mes = TOTAL_adiantamento_mes + v_adto + ult_desc_adto. ASSIGN TOTAL_desc_manual = 0. 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. 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. end. if last-of(tt-dados.cdn_funcionario) then do: put skip(3). 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 :" AT 90 TOTAL_desconto_mes AT 115 SKIP. PUT "DESC MAN :" AT 90 TOTAL_desc_manual AT 115 SKIP. PUT "TOTAL ADTO :" 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 :" AT 30 TOTAL_desconto_mes AT 48 SKIP. PUT "DESC MAN :" AT 30 TOTAL_desc_manual AT 48 SKIP. PUT "TOTAL ADTO :" 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 :" AT 30 TOTAL_desconto_mes AT 48 SKIP. PUT "DESC MAN :" AT 30 TOTAL_desc_manual AT 48 SKIP. PUT "TOTAL ADTO :" 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.