{ ============================================================================== PROGRAMA : TEPRRP010 SISTEMA : Sistema de Tesoreria Objetivo : Analisis del Cash Flow Real Comparativo PROGRAMADOR : Tadeo A. Ferreras FECHA : Diciembre 08, 1995 ============================================================================== } GLOBALS "teprgb000.4gl" DEFINE datos_10 RECORD codigo INTEGER, descripcion CHAR(30), tipo CHAR(2), ano INTEGER, mes INTEGER, fecha1 DATE, fecha2 DATE, monto1 DECIMAL(12,4), monto2 DECIMAL(12,4), monto3 DECIMAL(12,4), tipo1 CHAR(1) END RECORD DEFINE fecha_inicial,fecha_final DATE DEFINE d,i,c,ano,ano2,mes,mes_2 INTEGER DEFINE tasa DECIMAL(12,4) DEFINE balance,balance1,balance2 INTEGER DEFINE total_ig ARRAY[12] OF DECIMAL(12,4) DEFINE total_ig1 ARRAY[12] OF DECIMAL(12,4) DEFINE total_di ARRAY[12] OF DECIMAL(12,4) DEFINE total_di1 ARRAY[12] OF DECIMAL(12,4) DEFINE total_dl ARRAY[12] OF DECIMAL(12,4) DEFINE total_dl1 ARRAY[12] OF DECIMAL(12,4) DEFINE balan ARRAY[12] OF DECIMAL(12,4) DEFINE balan1 ARRAY[12] OF DECIMAL(12,4) FUNCTION teprrp010() LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM tefmrp010 FROM "tefmrp010" DISPLAY FORM tefmrp010 DISPLAY "teprrp010" AT 4,3 ATTRIBUTE(RED) DISPLAY "Cash Flow Real Comparativo (Periodo de 3 Anos)" AT 6,17 ATTRIBUTE(BLACK) LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime,letras.*,archivo INPUT BY NAME ano,mes,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 LET ano2 = ano - 2 AFTER FIELD mes IF mes IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes 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 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 balance2 FROM tetb00007 a WHERE a.ano = ano - 3 SELECT a.valor/1000 INTO balance1 FROM tetb00007 a WHERE a.ano = ano - 2 SELECT a.valor/1000 INTO balance 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 IF balance2 IS NULL THEN LET balance2 = 0 END IF FOR idx = 1 TO 12 LET total_ig[idx] = 0 LET total_ig1[idx] = 0 LET total_di[idx] = 0 LET total_di1[idx] = 0 LET total_dl[idx] = 0 LET total_dl1[idx] = 0 END FOR LET selec = "SELECT UNIQUE a.codigo,a.descripcion,a.tipo,b.ano,b.mes, ", " b.fecha_inicio,b.fecha_corte ", "FROM tetb00003 a,prdtable b ", "WHERE (a.status_t IS NULL) AND (b.ano BETWEEN ? AND ?) AND ", " (b.mes = ?) " DISPLAY "<<>>" AT 19,14 ATTRIBUTE(BLUE) PREPARE comando FROM selec DECLARE busco CURSOR FOR comando OPEN busco USING ano2,ano,mes START REPORT reporte_10 TO archivo DISPLAY "<<>>" AT 19,14 ATTRIBUTE(BLUE) WHILE status != NOTFOUND FETCH busco INTO datos_10.* 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 DISPLAY datos_10.tipo AT 21,30 IF datos_10.tipo = "IG" THEN LET datos_10.tipo1 = "A" END IF IF datos_10.tipo = "DI" THEN LET datos_10.tipo1 = "B" END IF IF datos_10.tipo = "DL" THEN LET datos_10.tipo1 = "C" END IF LET datos_10.monto1 = 0 IF datos_10.ano = ano THEN CASE WHEN datos_10.codigo = 1 SELECT SUM(a.monto/1000) INTO datos_10.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia IN (1,7)) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 2 SELECT SUM(a.monto/1000) INTO datos_10.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 2) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 3 SELECT SUM(a.monto/1000) INTO datos_10.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 3) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 4 SELECT SUM(a.monto/1000) INTO datos_10.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 4) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 22 SELECT SUM(a.valor/1000) INTO datos_10.monto1 FROM tetb00004 a WHERE (a.status_t IS NULL) AND (a.codigo=datos_10.codigo) AND (a.ano = datos_10.ano AND a.mes = datos_10.mes) EXIT CASE OTHERWISE SELECT SUM(a.monto/1000) INTO datos_10.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_10.codigo AND a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2 EXIT CASE END CASE ELSE SELECT SUM(a.valor_real/1000) INTO datos_10.monto1 FROM tetb00005 a WHERE (a.status_t IS NULL) AND (a.codigo = datos_10.codigo) AND (a.ano = datos_10.ano AND a.mes = datos_10.mes) END IF IF datos_10.ano = ano - 1 THEN CASE WHEN datos_10.codigo = 1 SELECT SUM(a.monto/1000) INTO datos_10.monto2 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia IN (1,7)) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 2 SELECT SUM(a.monto/1000) INTO datos_10.monto2 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 2) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 3 SELECT SUM(a.monto/1000) INTO datos_10.monto2 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 3) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 4 SELECT SUM(a.monto/1000) INTO datos_10.monto2 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 4) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 22 SELECT SUM(a.valor/1000) INTO datos_10.monto2 FROM tetb00004 a WHERE (a.status_t IS NULL) AND (a.codigo=datos_10.codigo) AND (a.ano = datos_10.ano AND a.mes = datos_10.mes) EXIT CASE OTHERWISE SELECT SUM(a.monto/1000) INTO datos_10.monto2 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_10.codigo AND a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2 EXIT CASE END CASE ELSE SELECT SUM(a.valor_real/1000) INTO datos_10.monto2 FROM tetb00005 a WHERE (a.status_t IS NULL) AND (a.codigo = datos_10.codigo) AND (a.ano = datos_10.ano AND a.mes = datos_10.mes) END IF IF datos_10.ano = ano - 2 THEN CASE WHEN datos_10.codigo = 1 SELECT SUM(a.monto/1000) INTO datos_10.monto3 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia IN (1,7)) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 2 SELECT SUM(a.monto/1000) INTO datos_10.monto3 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 2) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 3 SELECT SUM(a.monto/1000) INTO datos_10.monto3 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 3) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 4 SELECT SUM(a.monto/1000) INTO datos_10.monto3 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 4) AND (a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2) EXIT CASE WHEN datos_10.codigo = 22 SELECT SUM(a.valor/1000) INTO datos_10.monto3 FROM tetb00004 a WHERE (a.status_t IS NULL) AND (a.codigo=datos_10.codigo) AND (a.ano = datos_10.ano AND a.mes = datos_10.mes) EXIT CASE OTHERWISE SELECT SUM(a.monto/1000) INTO datos_10.monto3 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_10.codigo AND a.fecha BETWEEN datos_10.fecha1 AND datos_10.fecha2 EXIT CASE END CASE ELSE SELECT SUM(a.valor_real/1000) INTO datos_10.monto3 FROM tetb00005 a WHERE (a.status_t IS NULL) AND (a.codigo = datos_10.codigo) AND (a.ano = datos_10.ano AND a.mes = datos_10.mes) END IF DISPLAY datos_10.monto1 AT 21,35 IF datos_10.monto1 IS NULL THEN LET datos_10.monto1 = 0 END IF IF datos_10.monto2 IS NULL THEN LET datos_10.monto2 = 0 END IF IF datos_10.monto3 IS NULL THEN LET datos_10.monto3 = 0 END IF IF datos_10.tipo = "DI" THEN LET datos_10.monto1 = datos_10.monto1 * tasa END IF IF datos_10.tipo = "DI" THEN LET datos_10.monto2 = datos_10.monto2 * tasa END IF IF datos_10.tipo = "DI" THEN LET datos_10.monto3 = datos_10.monto3 * tasa END IF OUTPUT TO REPORT reporte_10(datos_10.*) END WHILE FINISH REPORT reporte_10 #RUN imprime CALL fdestino(destino,archivo,imprime) CLEAR SCREEN END FUNCTION REPORT reporte_10(x) DEFINE x RECORD codigo INTEGER, descripcion CHAR(30), tipo CHAR(2), ano INTEGER, mes INTEGER, fecha1 DATE, fecha2 DATE, monto1 DECIMAL(12,4), monto2 DECIMAL(12,4), monto3 DECIMAL(12,4), tipo1 CHAR(1) 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) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.tipo1,x.codigo,x.ano,x.mes 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 d = (c-46)/2 PRINT COLUMN 1, letras.negrillas_on PRINT COLUMN 1, "teprrp010", COLUMN 17, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 73, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Tesoreria", COLUMN 73, today using "dd/mm/yyyy" PRINT COLUMN 17, " Cash Flow Real Comparativo", COLUMN 76, hora PRINT COLUMN 17, "Periodo de 3 Anos Y Expresados Em Miles (1000) " SKIP 1 LINE PRINT COLUMN 1, "Periodo: Mes de ", nombre1[mes] CLIPPED, " Del Ano ",ano - 2 USING "&&&&", " Al ", ano USING "&&&&" PRINT COLUMN 1, "--------------------------------------------------", "------------------------------" PRINT COLUMN 1, "Partida", COLUMN 40, "Ano ", ano - 2 USING "&&&&", COLUMN 55, "Ano ", ano - 1 USING "&&&&", COLUMN 70, "Ano ", ano USING "&&&&" PRINT COLUMN 1, "--------------------------------------------------", "------------------------------" BEFORE GROUP OF x.tipo1 IF x.tipo1 = "A" THEN LET descripcion = "TOTAL INGRESO" END IF IF x.tipo1 = "B" THEN LET descripcion = "TOTAL DESEMBOLSO INT." END IF IF x.tipo1 = "C" THEN LET descripcion = "TOTAL DESEMBOLSO LOCAL" END IF 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 AFTER GROUP OF x.codigo PRINT COLUMN 35, GROUP SUM(x.monto3) #WHERE x.ano = ano - 2 AND x.mes = mes USING "#,###,###.####","|", COLUMN 50, GROUP SUM(x.monto2) #WHERE x.ano = ano - 1 AND x.mes = mes USING "#,###,###.####","|", COLUMN 65, GROUP SUM(x.monto1) #WHERE x.ano = ano AND x.mes = mes USING "#,###,###.####","|" AFTER GROUP OF x.tipo1 PRINT COLUMN 40, "---------","|", COLUMN 55, "---------","|", COLUMN 70, "---------","|" PRINT COLUMN 1, descripcion, COLUMN 35, GROUP SUM(x.monto3) #WHERE x.ano = ano - 2 AND x.mes = mes USING "#,###,###.####","|", COLUMN 50, GROUP SUM(x.monto2) #WHERE x.ano = ano - 1 AND x.mes = mes USING "#,###,###.####","|", COLUMN 65, GROUP SUM(x.monto1) #WHERE x.ano = ano AND x.mes = mes USING "#,###,###.####","|" ON LAST ROW PRINT COLUMN 40, "---------","|", COLUMN 55, "---------","|", COLUMN 70, "---------","|" IF x.tipo1 != "A" THEN PRINT COLUMN 1, "TOTAL DESEMB. LOC. E INT.", COLUMN 35, SUM(x.monto3)# WHERE x.ano = ano - 2 AND x.mes = mes USING "#,###,###.####","|", COLUMN 50, SUM(x.monto2) #WHERE x.ano = ano - 1 AND x.mes = mes USING "#,###,###.####","|", COLUMN 65, SUM(x.monto1) #WHERE x.ano = ano AND x.mes = mes USING "#,###,###.####","|" END IF PRINT COLUMN 40, "---------","|", COLUMN 55, "---------","|", COLUMN 70, "---------","|" PRINT COLUMN 1, "FLUJO OPERATIVO", COLUMN 35, (SUM(x.monto3)) #WHERE x.ano=ano - 2 AND x.mes=mes) USING "-,---,---.----","|", COLUMN 50, (SUM(x.monto2)) #WHERE x.ano=ano - 1 AND x.mes=mes) USING "-,---,---.----","|", COLUMN 65, (SUM(x.monto1)) #WHERE x.ano=ano AND x.mes = mes) USING "-,---,---.----","|" PRINT COLUMN 1, "BALANCE INICIAL", COLUMN 35, (SUM(x.monto3)) #WHERE x.ano=ano - 2 AND x.mes