{ ============================================================================== 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_inicial,fecha_final DATE DEFINE 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 ATTRIBUTE(RED) DISPLAY "Panoramico de Cash Flow Real" AT 6,26 ATTRIBUTE(BLACK) LET tipo_papel = 2 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime,letras.*,archivo LET mes_1 = 1 INPUT BY NAME ano,mes_2,tasa ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*,archivo 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 SELECT MIN(a.fecha_inicio) INTO fecha_inicial FROM prdtable a WHERE a.ano = ano a.mes = mes_2 AFTER FIELD tasa IF tasa IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tasa END IF END INPUT LET parametro = "D" CALL elijeimpresion(parametro) RETURNING orden,destino,letras.* 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.fecha_corte <= ? AND ", " a.status_t IS NULL AND ", " b.ano = ? ", "ORDER BY 5,1,2 " DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) PREPARE comando FROM selec DECLARE busco CURSOR FOR comando OPEN busco USING fecha_inicial,ano START REPORT reporte_11 TO archivo DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) 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 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 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 hora CHAR(5) DEFINE nombre1 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 hora = time LET nombre1[1] = " ENERO " LET nombre1[2] = " FEBRERO " LET nombre1[3] = " MARZO " LET nombre1[4] = " ABRIL " LET nombre1[5] = " MAYO " LET nombre1[6] = " JUNIO " LET nombre1[7] = " JULIO " LET nombre1[8] = " AGOSTO " LET nombre1[9] = "SEPTIEMBRE" LET nombre1[10] = " OCTUBRE " LET nombre1[11] = "NOVIEMBRE " LET nombre1[12] = "DICIEMBRE " ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS LET c = 39 FOR i = mes_1 TO mes_2 LET c = c + 10 END FOR LET d = (c-46)/2 PRINT COLUMN 1, letras.negrillas_on,letras.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: De ",nombre1[mes_1]," A ",nombre1[mes_2], " Del ", ano USING "&&&&" PRINT COLUMN 1, "--------------------------------------"; LET c = 39 FOR i = mes_1 TO mes_2 PRINT COLUMN c, "----------"; LET c = c + 10 END FOR PRINT COLUMN c, "-----------" # PRINT COLUMN c," " PRINT COLUMN 1, "Partida"; DECLARE busca_mes CURSOR FOR SELECT a.mes,a.fecha_inicio FROM prdtable a WHERE a.ano = ano LET c = 39 FOR i = mes_1 TO mes_2 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 PRINT COLUMN c, "----------"; LET c = c + 10 END FOR PRINT COLUMN c, "-----------" # PRINT COLUMN c," " PRINT letras.negrillas_off BEFORE GROUP OF x.codigo IF x.codigo = 1 THEN PRINT COLUMN 1,letras.negrillas_on,"INGRESOS",letras.negrillas_off PRINT COLUMN 1,letras.negrillas_on,"========",letras.negrillas_off SKIP 1 LINE END IF IF x.codigo = 5 THEN PRINT COLUMN 1,letras.negrillas_on,"DESEMBOLSOS",letras.negrillas_off PRINT COLUMN 1,letras.negrillas_on,"===========",letras.negrillas_off PRINT COLUMN 1,letras.negrillas_on,"DESEMBOLSOS INTERNACIONALES (", "TASA UTILIZADA RD$",tasa USING "<<<,<<<.<<",")", letras.negrillas_off SKIP 1 LINE END IF IF x.codigo = 14 THEN PRINT COLUMN 1,letras.negrillas_on,"DESEMBOLSOS LOCALES", letras.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 >= mes_1 AND x.mes <= mes_2 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 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 FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_ig1[i] USING "#,###,###","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_ig1[i] END 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 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 FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_di1[i] USING "#,###,###","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_di1[i] END FOR # PRINT COLUMN c," " PRINT COLUMN c, total_procedencia USING "#,###,###","|" END IF IF x.codigo = 25 THEN LET c = 39 FOR i = mes_1 TO mes_2 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 FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_dl1[i] USING "#,###,###","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_dl1[i] END FOR # PRINT COLUMN c," " PRINT COLUMN c, total_procedencia USING "#,###,###","|" LET c = 39 FOR i = mes_1 TO mes_2 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 FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_di1[i]+total_dl1[i] USING "#,###,###","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_di1[i] + total_dl1[i] END FOR # PRINT COLUMN c," " PRINT COLUMN c, total_procedencia USING "#,###,###","|" LET c = 39 FOR i = mes_1 TO mes_2 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 FOR i = 1 TO mes_2 IF i >= mes_1 and I <= mes_2 THEN PRINT COLUMN c, total_ig1[i] + total_di1[i]+ total_dl1[i] USING "-,---,---","|"; LET c = c + 10 LET total_procedencia = total_procedencia + total_ig1[i] + total_di1[i] + total_dl1[i] END IF IF i = 1 THEN LET balan1[i] = balance1 ELSE LET balan1[i]=total_ig1[i-1]+total_di1[i-1]+total_dl1[i-1]+ balan1[i-1] END IF IF balan1[i] IS NULL THEN LET balan1[i] = 0 END IF END FOR PRINT COLUMN c, total_procedencia USING "#,###,###","|" # PRINT COLUMN c," " PRINT COLUMN 5, "BALANCE INICIAL"; LET c = 39 LET total_procedencia = 0 FOR i = mes_1 TO mes_2 PRINT COLUMN c, balan1[i] USING "-,---,---","|"; LET c = c + 10 LET total_procedencia = total_procedencia + balan1[i] END FOR # PRINT COLUMN c, total_procedencia USING "#,###,###","|" # PRINT COLUMN c," " PRINT COLUMN c, balan1[mes_1] USING "-,---,---","|" LET c = 39 FOR i = mes_1 TO mes_2 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 FOR i = mes_1 TO mes_2 PRINT COLUMN c, total_ig1[i] + total_di1[i]+ total_dl1[i]+ balan1[i] USING "-,---,---","|"; LET total_general = total_general + total_ig1[i] + total_di1[i] + total_dl1[i] + balan1[i] END 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 letras.negrillas_off PRINT letras.comp_off,letras.negrillas_off END REPORT