{ ============================================================================== PROGRAMA : TEPRRP011 SISTEMA : Sistema de Tesoreria Objetivo : Panoramico de Cash Flow Real PROGRAMADOR : Tadeo A. Ferreras FECHA : Diciembre 08, 1995 ============================================================================== } GLOBALS "teprgb000.4gl" DEFINE datos_11 RECORD codigo INTEGER, descripcion CHAR(30), tipo CHAR(2), mes INTEGER, fecha1 DATE, fecha2 DATE, monto DECIMAL(12,4), monto1 DECIMAL(12,4) END RECORD DEFINE fecha_ent,fecha_inicial,fecha_final DATE DEFINE mes1,mes2,d,i,c,ano,mes_1,mes_2 INTEGER DEFINE tasa DECIMAL(12,4) DEFINE balance,balance1 INTEGER DEFINE total_ig1 ARRAY[12] OF DECIMAL(12,4) DEFINE total_di1 ARRAY[12] OF DECIMAL(12,4) DEFINE total_dl1 ARRAY[12] OF DECIMAL(12,4) DEFINE balan1 ARRAY[12] OF DECIMAL(12,4) FUNCTION teprrp011() LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM tefmrp011 FROM "tefmrp011" DISPLAY FORM tefmrp011 DISPLAY "teprrp011" AT 4,3 DISPLAY "Panoramico de Cash Flow Real" AT 6,26 LET tipo_papel = 2 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime,letras.*,archivo LET mes_1 = 1 INPUT BY NAME ano,tasa AFTER FIELD ano IF ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF { AFTER FIELD mes_2 IF mes_2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes_2 END IF IF mes_1 > mes_2 THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD mes_1 END IF IF mes_2 - mes_1 > 11 THEN LET numero_msg = 75 CALL msg(numero_msg) NEXT FIELD mes_2 END IF } AFTER FIELD tasa IF tasa IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tasa END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF SELECT a.valor/1000 INTO balance1 FROM tetb00007 a WHERE a.ano = ano - 1 IF balance IS NULL THEN LET balance = 0 END IF IF balance1 IS NULL THEN LET balance1 = 0 END IF FOR idx = 1 TO 12 LET total_ig1[idx] = 0 LET total_di1[idx] = 0 LET total_dl1[idx] = 0 END FOR LET selec = "SELECT UNIQUE a.codigo,a.descripcion,a.tipo,b.mes,", " b.fecha_inicio, b.fecha_corte,'0' ", "FROM tetb00003 a,prdtable b ", "WHERE ", " b.ano = b.ano AND ", #" b.mes <= ? AND ", " a.status_t IS NULL AND ", " b.ano = ? ", "ORDER BY 1,2,5 " DISPLAY "<<>>" AT 19,14 ATTRIBUTE(blue) PREPARE comando FROM selec DECLARE busco CURSOR FOR comando OPEN busco USING ano #mes_2,ano START REPORT reporte_11 TO archivo #"oscar" #START REPORT reporte_11 TO "salida" DISPLAY "<<>>" AT 19,14 ATTRIBUTE(blue) WHILE status != NOTFOUND FETCH busco INTO datos_11.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET datos_11.monto1 = 0 CASE WHEN datos_11.codigo = 1 SELECT SUM(a.monto/1000) INTO datos_11.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia IN (1,7)) AND (a.fecha BETWEEN datos_11.fecha1 AND datos_11.fecha2) EXIT CASE WHEN datos_11.codigo = 2 SELECT SUM(a.monto/1000) INTO datos_11.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 2) AND (a.fecha BETWEEN datos_11.fecha1 AND datos_11.fecha2) EXIT CASE WHEN datos_11.codigo = 3 SELECT SUM(a.monto/1000) INTO datos_11.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 3) AND (a.fecha BETWEEN datos_11.fecha1 AND datos_11.fecha2) EXIT CASE WHEN datos_11.codigo = 4 SELECT SUM(a.monto/1000) INTO datos_11.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 4) AND (a.fecha BETWEEN datos_11.fecha1 AND datos_11.fecha2) EXIT CASE WHEN datos_11.codigo = 22 LET datos_11.monto1 = (datos_11.monto * -1) / 1000 EXIT CASE OTHERWISE SELECT SUM(a.monto/1000)*-1 INTO datos_11.monto1 FROM cgtb00005 a,tetb00006 b WHERE a.cheque_no = b.cheque_no AND a.status_t = "C" AND a.cuenta_no = b.banco AND b.codigo = datos_11.codigo AND a.fecha BETWEEN datos_11.fecha1 AND datos_11.fecha2 EXIT CASE END CASE SELECT MAX(a.fecha) INTO fecha_ent FROM tetb00001 a SELECT a.mes INTO mes_2 #datos_11.mes FROM prdtable a WHERE a.fecha_inicio <= fecha_ent AND a.fecha_corte >= fecha_ent DISPLAY datos_11.codigo USING "&&" AT 21,30 DISPLAY datos_11.mes USING "&&" AT 21,34 DISPLAY datos_11.monto1 AT 21,40 IF datos_11.monto IS NULL THEN LET datos_11.monto = 0 END IF IF datos_11.monto1 IS NULL THEN LET datos_11.monto1 = 0 END IF IF datos_11.tipo = "DI" THEN LET datos_11.monto = datos_11.monto * tasa LET datos_11.monto1 = datos_11.monto1 * tasa END IF OUTPUT TO REPORT reporte_11(datos_11.*) END WHILE FINISH REPORT reporte_11 RUN imprime #CALL fdestino(destino,archivo,imprime) CLEAR SCREEN END FUNCTION REPORT reporte_11(x) DEFINE x RECORD codigo INTEGER, descripcion CHAR(30), tipo CHAR(2), mes INTEGER, fecha1 DATE, fecha2 DATE, monto DECIMAL(12,4), monto1 DECIMAL(12,4) END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE numero_ch CHAR(9), descripcion CHAR(30), detalle1,detalle2 CHAR(40) DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3) DEFINE normal CHAR(3) DEFINE hora CHAR(5) DEFINE nombre1 ARRAY[12] OF CHAR(10) DEFINE nombre2 ARRAY[12] OF CHAR(10) DEFINE total_partida, total_procedencia, total_general DECIMAL(12,4) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 LET comp_on = ASCII 31 LET comp_off = ASCII 29 LET doce = ASCII 30 LET normal = ASCII 029 { LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET normal = ASCII 27, ASCII 80 } LET hora = time LET nombre1[1] = " OCTUBRE " LET nombre1[2] = "NOVIEMBRE " LET nombre1[3] = "DICIEMBRE " LET nombre1[4] = " ENERO " LET nombre1[5] = " FEBRERO " LET nombre1[6] = " MARZO " LET nombre1[7] = " ABRIL " LET nombre1[8] = " MAYO " LET nombre1[9] = " JUNIO " LET nombre1[10] = " JULIO " LET nombre1[11] = " AGOSTO " LET nombre1[12] = "SEPTIEMBRE" LET nombre2[1] = " ENERO " LET nombre2[2] = " FEBRERO " LET nombre2[3] = " MARZO " LET nombre2[4] = " ABRIL " LET nombre2[5] = " MAYO " LET nombre2[6] = " JUNIO " LET nombre2[7] = " JULIO " LET nombre2[8] = " AGOSTO " LET nombre2[9] = "SEPTIEMBRE" LET nombre2[10] = " OCTUBRE " LET nombre2[11] = "NOVIEMBRE " LET nombre2[12] = "DICIEMBRE " ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS LET c = 39 #FOR i = mes_1 TO mes_2 FOR i = 1 TO 12 LET c = c + 10 END FOR LET d = (c-46)/2 PRINT COLUMN 1, negrillas_on,comp_on PRINT COLUMN 1, "teprrp011", COLUMN d, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN c-7, "Pag. ",pageno using "###" PRINT COLUMN d, " Sistema de Tesoreria", COLUMN c-7, today using "dd/mm/yyyy" PRINT COLUMN d, " Panoramico de Cash Flow Real", COLUMN c-4, hora PRINT COLUMN d, " Expresados Em Miles (1000) " SKIP 1 LINE PRINT COLUMN 1, "FECHA : Desde ",nombre1[mes_1], " Del ", ano - 1 USING "&&&&", " Hasta ",nombre2[mes_2], " Del ", ano USING "&&&&" PRINT COLUMN 1, "--------------------------------------"; LET c = 39 #FOR i = mes_1 TO mes_2 FOR i = 1 TO 12 PRINT COLUMN c, "----------"; LET c = c + 10 END FOR PRINT COLUMN c, "-----------" # PRINT COLUMN c," " PRINT COLUMN 1, "Partida"; LET c = 39 #FOR i = mes_1 TO mes_2 FOR i = 1 TO 12 PRINT COLUMN c, nombre1[i]; LET c = c + 10 END FOR PRINT COLUMN c, " TOTALES " # PRINT COLUMN c," " PRINT COLUMN 1, "--------------------------------------"; LET c = 39 #FOR i = mes_1 TO mes_2 FOR i = 1 TO 12 PRINT COLUMN c, "----------"; LET c = c + 10 END FOR PRINT COLUMN c, "-----------" # PRINT COLUMN c," " PRINT negrillas_off BEFORE GROUP OF x.codigo IF x.codigo = 1 THEN PRINT COLUMN 1,negrillas_on,"INGRESOS",negrillas_off PRINT COLUMN 1,negrillas_on,"========",negrillas_off SKIP 1 LINE END IF IF x.codigo = 5 THEN PRINT COLUMN 1,negrillas_on,"DESEMBOLSOS",negrillas_off PRINT COLUMN 1,negrillas_on,"===========",negrillas_off PRINT COLUMN 1,negrillas_on,"DESEMBOLSOS INTERNACIONALES (", "TASA UTILIZADA RD$",tasa USING "<<<,<<<.<<",")", negrillas_off SKIP 1 LINE END IF IF x.codigo = 14 THEN PRINT COLUMN 1,negrillas_on,"DESEMBOLSOS LOCALES", negrillas_off SKIP 1 LINE END IF PRINT COLUMN 1, x.codigo USING "###"," ",x.descripcion CLIPPED; LET c = 39 ## AQUI SE INDICA LA IMPRESION DEL DETALLE ON EVERY ROW IF total_partida is NULL THEN LET total_partida = 0 END IF IF total_procedencia is NULL THEN LET total_procedencia = 0 END IF IF total_general is NULL THEN LET total_general = 0 END IF LET idx = x.mes IF x.mes >= 1 AND x.mes <= 12 THEN PRINT COLUMN c, x.monto1 USING "#,###,###","|"; LET c = c + 10 END IF IF x.tipo = "IG" THEN LET total_ig1[idx] = total_ig1[idx] + x.monto1 END IF IF x.tipo = "DI" THEN LET total_di1[idx] = total_di1[idx] + x.monto1 END IF IF x.tipo = "DL" THEN LET total_dl1[idx] = total_dl1[idx] + x.monto1 END IF LET total_partida = total_partida + x.monto1 AFTER GROUP OF x.tipo PRINT COLUMN c, total_partida USING "#,###,###","|" # LET total_procedencia = total_procedencia + total_partida LET total_partida = 0 AFTER GROUP OF x.codigo # PRINT " " IF x.codigo = 4 THEN LET c = 39 #FOR i = mes_1 TO mes_2 FOR i = 1 TO 12 PRINT COLUMN c, "---------","|"; LET c = c + 10 END FOR PRINT COLUMN c, "---------","|" # PRINT COLUMN c," " PRINT COLUMN 5, "TOTAL INGRESOS"; LET c = 39 LET total_procedencia = 0 DECLARE busca CURSOR FOR SELECT a.mes,a.fecha_inicio,a.fecha_corte FROM prdtable a WHERE a.ano = ano ORDER BY 2 FOREACH busca INTO mes1 #FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_ig1[mes1] USING "#,###,###","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_ig1[mes1] END FOREACH #FOR # PRINT COLUMN c," " PRINT COLUMN c, total_procedencia USING "#,###,###","|" END IF IF x.codigo = 13 THEN LET c = 39 #FOR i = mes_1 TO mes_2 FOR i = 1 TO 12 PRINT COLUMN c, "---------","|"; LET c = c + 10 END FOR PRINT COLUMN c, "---------","|" # PRINT COLUMN c," " PRINT COLUMN 5, "TOTAL DESEMBOLSOS INTERN."; LET c = 39 LET total_procedencia = 0 DECLARE busca1 CURSOR FOR SELECT a.mes,a.fecha_inicio,a.fecha_corte FROM prdtable a WHERE a.ano = ano ORDER BY 2 FOREACH busca1 INTO mes1 #FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_di1[mes1] USING "#,###,###","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_di1[mes1] END FOREACH #FOR # PRINT COLUMN c," " PRINT COLUMN c, total_procedencia USING "#,###,###","|" END IF IF x.codigo = 25 THEN LET c = 39 FOR i = 1 TO 12 PRINT COLUMN c, "---------","|"; LET c = c + 10 END FOR # PRINT COLUMN c," " PRINT COLUMN c, "---------","|" PRINT COLUMN 5, "TOTAL DESEMBOLSOS LOCALES"; LET c = 39 LET total_procedencia = 0 DECLARE busca2 CURSOR FOR SELECT a.mes,a.fecha_inicio,a.fecha_corte FROM prdtable a WHERE a.ano = ano ORDER BY 2 FOREACH busca2 INTO mes1 #FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_dl1[mes1] USING "#,###,###","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_dl1[mes1] END FOREACH #FOR # PRINT COLUMN c," " PRINT COLUMN c, total_procedencia USING "#,###,###","|" LET c = 39 FOR i = 1 TO 12 PRINT COLUMN c, "---------","|"; LET c = c + 10 END FOR # PRINT COLUMN c," " PRINT COLUMN c, "---------","|" PRINT COLUMN 5, "TOTAL DESEMBOLSOS "; LET c = 39 LET total_procedencia = 0 DECLARE busca3 CURSOR FOR SELECT a.mes,a.fecha_inicio,a.fecha_corte FROM prdtable a WHERE a.ano = ano ORDER BY 2 FOREACH busca3 INTO mes1 #FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_di1[mes1]+total_dl1[mes1] USING "#,###,###","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_di1[mes1] + total_dl1[mes1] END FOREACH #FOR # PRINT COLUMN c," " PRINT COLUMN c, total_procedencia USING "#,###,###","|" LET c = 39 FOR i = 1 TO 12 PRINT COLUMN c, "---------","|"; LET c = c + 10 END FOR # PRINT COLUMN c," " PRINT COLUMN c, "---------","|" PRINT COLUMN 5, "FLUJO OPERATIVO"; LET c = 39 LET total_procedencia = 0 DECLARE busca4 CURSOR FOR SELECT a.mes,a.fecha_inicio,a.fecha_corte FROM prdtable a WHERE a.ano = ano ORDER BY 2 FOREACH busca4 INTO mes1 #FOR i = 1 TO mes_2 #IF i >= mes_1 and I <= mes_2 THEN PRINT COLUMN c, total_ig1[mes1] + total_di1[mes1]+ total_dl1[mes1] USING "-,---,---","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_ig1[mes1] + total_di1[mes1] + total_dl1[mes1] #END IF IF mes1 = 1 THEN LET mes2 = 12 LET balan1[mes1]=total_ig1[mes2]+total_di1[mes2]+total_dl1[mes2]+ balan1[mes2] ELSE IF mes1 = 10 THEN LET balan1[mes1] = balance1 ELSE LET balan1[mes1]=total_ig1[mes1-1]+total_di1[mes1-1]+total_dl1[mes1-1]+ balan1[mes1-1] END IF END IF IF balan1[mes1] IS NULL THEN LET balan1[mes1] = 0 END IF END FOREACH #FOR PRINT COLUMN c, total_procedencia USING "#,###,###","|" # PRINT COLUMN c," " PRINT COLUMN 5, "BALANCE INICIAL"; LET c = 39 LET total_procedencia = 0 DECLARE busca5 CURSOR FOR SELECT a.mes,a.fecha_inicio,a.fecha_corte FROM prdtable a WHERE a.ano = ano ORDER BY 2 FOREACH busca5 INTO mes1 #FOR i = 1 TO 12 PRINT COLUMN c, balan1[mes1] USING "-,---,---","|"; LET c = c + 10 LET total_procedencia = total_procedencia + balan1[mes1] END FOREACH #FOR # PRINT COLUMN c, total_procedencia USING "#,###,###","|" # PRINT COLUMN c," " LET mes_1 = 10 PRINT COLUMN c, balan1[mes_1] USING "-,---,---","|" LET c = 39 FOR i = 1 TO 12 PRINT COLUMN c, "---------","|"; LET c = c + 10 END FOR # PRINT COLUMN c," " PRINT COLUMN c, "---------","|" PRINT COLUMN 5, "BALANCE FINAL"; LET c = 39 LET total_general = 0 DECLARE busca6 CURSOR FOR SELECT a.mes,a.fecha_inicio,a.fecha_corte FROM prdtable a WHERE a.ano = ano ORDER BY 2 FOREACH busca6 INTO mes1 #FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_ig1[mes1] + total_di1[mes1]+ total_dl1[mes1]+ balan1[mes1] USING "-,---,---","|"; LET total_general = total_general + total_ig1[mes1] + total_di1[mes1] + total_dl1[mes1] + balan1[mes1] END FOREACH #FOR # PRINT COLUMN c," " # PRINT COLUMN c, total_general USING "-,---,---","|" PRINT COLUMN c, total_ig1[mes_2] + total_di1[mes_2] + total_dl1[mes_2] + balan1[mes_2] USING "-,---,---","|" END IF ON LAST ROW LET c = 39 PRINT negrillas_off PRINT comp_off,negrillas_off END REPORT