{ ============================================================================== PROGRAMA : TEPRRP009 SISTEMA : Sistema de Tesoreria Objetivo : Analisis del Cash Flow Real Diario PROGRAMADOR : Tadeo A. Ferreras FECHA : Diciembre 08, 1995 ============================================================================== } GLOBALS "teprgb000.4gl" DEFINE datos_9 RECORD codigo INTEGER, descripcion CHAR(30), tipo CHAR(2), monto DECIMAL(12,4), tipo1 CHAR(1), monto1 DECIMAL(12,4), monto2 DECIMAL(12,4) END RECORD DEFINE fecha_inicial,fecha_corte DATE DEFINE d,i,c,ano,mes_1,mes_2 INTEGER DEFINE tasa DECIMAL(12,4) DEFINE balance,balance1 INTEGER FUNCTION teprrp009() LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM tefmrp009 FROM "tefmrp009" DISPLAY FORM tefmrp009 DISPLAY "teprrp009" AT 4,3 ATTRIBUTE(RED) DISPLAY "Cash Flow Real Diario" AT 6,29 ATTRIBUTE(BLACK) LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime,letras.*,archivo #INPUT BY NAME fecha_corte,tasa INPUT BY NAME ano,mes_1,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_1 IF mes_1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes_1 END IF SELECT a.fecha_inicio,a.fecha_corte INTO fecha_inicial,fecha_corte FROM prdtable a WHERE a.mes = mes_1 AND a.ano = ano { SELECT a.mes INTO mes_1 FROM prdtable a where a.fecha_inicio=fecha_inicial } 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 #LET ano = YEAR(fecha_corte) #LET mes_1 = MONTH(fecha_corte) SELECT a.valor1/1000,a.valor/1000 INTO balance,balance1 FROM tetb00007 a WHERE a.ano = ano #- 1 { LET ano = 2001 LET mes_1 = 3 } display "ano ",mes_1," ",ano IF balance IS NULL THEN LET balance = 0 END IF IF balance1 IS NULL THEN LET balance1 = 0 END IF LET selec = "SELECT UNIQUE a.codigo,a.descripcion,a.tipo,c.valor/1000 ", "FROM tetb00003 a,tetb00004 c ", "WHERE (a.codigo = c.codigo) AND (a.status_t IS NULL) AND ", " (c.ano = ?) AND (c.mes = ?) " DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) PREPARE comando FROM selec DECLARE busco CURSOR FOR comando OPEN busco USING ano,mes_1 START REPORT reporte_9 TO archivo #PRINTER # START REPORT reporte_9 TO PIPE "lp -dlpt1" DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) WHILE status != NOTFOUND FETCH busco INTO datos_9.* 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_9.* LET datos_9.monto1 = 0 LET datos_9.monto2 = 0 CASE WHEN datos_9.codigo = 1 SELECT SUM(a.monto/1000) INTO datos_9.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia IN (1,7)) AND (a.fecha = fecha_corte) SELECT SUM(a.monto/1000) INTO datos_9.monto2 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia IN (1,7)) AND (a.fecha BETWEEN fecha_inicial AND fecha_corte) EXIT CASE WHEN datos_9.codigo = 2 SELECT SUM(a.monto/1000) INTO datos_9.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 2) AND (a.fecha = fecha_corte) SELECT SUM(a.monto/1000) INTO datos_9.monto2 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 2) AND (a.fecha BETWEEN fecha_inicial AND fecha_corte) EXIT CASE WHEN datos_9.codigo = 3 SELECT SUM(a.monto/1000) INTO datos_9.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 3) AND (a.fecha = fecha_corte) SELECT SUM(a.monto/1000) INTO datos_9.monto2 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 3) AND (a.fecha BETWEEN fecha_inicial AND fecha_corte) EXIT CASE WHEN datos_9.codigo = 4 SELECT SUM(a.monto/1000) INTO datos_9.monto1 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 4) AND (a.fecha = fecha_corte) SELECT SUM(a.monto/1000) INTO datos_9.monto2 FROM tetb00001 a WHERE (a.status_t IS NULL) AND (a.procedencia = 4) AND (a.fecha BETWEEN fecha_inicial AND fecha_corte) EXIT CASE WHEN datos_9.codigo = 22 LET datos_9.monto1 = datos_9.monto/30 SELECT SUM(a.valor/1000) INTO datos_9.monto2 FROM tetb00004 a WHERE (a.status_t IS NULL) AND (a.mes = mes_1) AND (a.ano=ano) AND (a.codigo = 22) EXIT CASE OTHERWISE SELECT SUM(a.monto/1000)*-1 INTO datos_9.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_9.codigo AND a.fecha = fecha_corte SELECT SUM(a.monto/1000)*-1 INTO datos_9.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_9.codigo AND a.fecha BETWEEN fecha_inicial AND fecha_corte EXIT CASE END CASE DISPLAY datos_9.monto1 AT 21,40 DISPLAY datos_9.monto2 AT 21,60 IF datos_9.monto IS NULL THEN LET datos_9.monto = 0 END IF IF datos_9.monto1 IS NULL THEN LET datos_9.monto1 = 0 END IF IF datos_9.monto2 IS NULL THEN LET datos_9.monto2 = 0 END IF IF datos_9.tipo = "DI" THEN LET datos_9.monto = datos_9.monto LET datos_9.monto1 = datos_9.monto1 * tasa LET datos_9.monto2 = datos_9.monto2 * tasa END IF IF datos_9.tipo = "IG" THEN LET datos_9.tipo1 = "A" END IF IF datos_9.tipo = "DI" THEN LET datos_9.tipo1 = "B" END IF IF datos_9.tipo = "DL" THEN LET datos_9.tipo1 = "C" END IF OUTPUT TO REPORT reporte_9(datos_9.*) END WHILE FINISH REPORT reporte_9 #RUN imprime CALL fdestino(destino,archivo,imprime) CLEAR SCREEN END FUNCTION REPORT reporte_9(x) DEFINE x RECORD codigo INTEGER, descripcion CHAR(30), tipo CHAR(2), monto DECIMAL(12,4), tipo1 CHAR(1), monto1 DECIMAL(12,4), monto2 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) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.tipo1,x.codigo 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 PRINT COLUMN 1, letras.doce,letras.negrillas_on PRINT COLUMN 1, "teprrp009", COLUMN 27, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 93, "Pag. ",pageno using "###" PRINT COLUMN 27, " Sistema de Tesoreria", COLUMN 93, today using "dd/mm/yyyy" PRINT COLUMN 27, " Cash Flow Real Diario", COLUMN 96, hora PRINT COLUMN 27, " Expresados Em Miles (1000) " SKIP 1 LINE PRINT COLUMN 1, "Desde : ",fecha_inicial USING "dd/mm/yyyy", " Hasta : ", fecha_corte USING "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 45, "Real Acum.", COLUMN 58, "Movimiento", COLUMN 71, "Real Acum.", COLUMN 84, "Estimado" PRINT COLUMN 1, "Partida", COLUMN 45, "Dia Anter.", COLUMN 58, "Dia Actual", COLUMN 71, "Dia Actual", COLUMN 84, "Del Mes" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" PRINT letras.negrillas_off BEFORE GROUP OF x.codigo IF x.codigo = 1 THEN SKIP 1 LINE PRINT COLUMN 1,letras.negrillas_on,"INGRESOS",letras.negrillas_off PRINT COLUMN 1,letras.negrillas_on,"========",letras.negrillas_off END IF IF x.codigo = 5 THEN SKIP 1 LINE 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 SKIP 1 LINE 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; ## AQUI SE INDICA LA IMPRESION DEL DETALLE AFTER GROUP OF x.codigo PRINT COLUMN 45, GROUP SUM(x.monto2) USING "#,###,###","|", COLUMN 58, GROUP SUM(x.monto1) USING "#,###,###","|", COLUMN 71, GROUP SUM(x.monto1+x.monto2) USING "#,###,###","|", COLUMN 84, GROUP SUM(x.monto) USING "#,###,###","|" AFTER GROUP OF x.tipo1 PRINT COLUMN 45, "---------","|", COLUMN 58, "---------","|", COLUMN 71, "---------","|", COLUMN 84, "---------","|" IF x.tipo1 = "A" THEN PRINT COLUMN 5, "TOTAL INGRESOS"; END IF IF x.tipo1 = "B" THEN PRINT COLUMN 5, "TOTAL DESEMBOLSO INT."; END IF IF x.tipo1 = "C" THEN PRINT COLUMN 5, "TOTAL DESEMBOLSO LOCALES"; END IF PRINT COLUMN 45, GROUP SUM(x.monto2) USING "#,###,###","|", COLUMN 58, GROUP SUM(x.monto1) USING "#,###,###","|", COLUMN 71, GROUP SUM(x.monto1+x.monto2) USING "#,###,###","|", COLUMN 84, GROUP SUM(x.monto) USING "#,###,###","|" ON LAST ROW PRINT COLUMN 45, "---------","|", COLUMN 58, "---------","|", COLUMN 71, "---------","|", COLUMN 84, "---------","|" PRINT COLUMN 5, "TOTAL DESEMBOLSO LOCALES E INT.", COLUMN 43, SUM(x.monto2) WHERE x.tipo1 = "B" OR x.tipo1 = "C" USING "<,<<<,<<<","|", COLUMN 56, SUM(x.monto1) WHERE x.tipo1 = "B" OR x.tipo1 = "C" USING "<,<<<,<<<","|", COLUMN 69, SUM(x.monto1+x.monto2) WHERE x.tipo1 = "B" OR x.tipo1 = "C" USING "<,<<<,<<<","|", COLUMN 82, SUM(x.monto) WHERE x.tipo1 = "B" OR x.tipo1 = "C" USING "<,<<<,<<<","|" PRINT COLUMN 45, "---------","|", COLUMN 58, "---------","|", COLUMN 71, "---------","|", COLUMN 84, "---------","|" PRINT COLUMN 5, "FLUJO OPERATIVO", COLUMN 45, SUM(x.monto2) USING "-,---,---","|", COLUMN 58, SUM(x.monto1) USING "-,---,---","|", COLUMN 71, SUM(x.monto1+x.monto2) USING "-,---,---","|", COLUMN 84, SUM(x.monto) USING "-,---,---","|" PRINT COLUMN 5, "BALANCE INICIAL", COLUMN 45, balance1 USING "-,---,---","|", COLUMN 71, SUM(x.monto2) + balance1 USING "-,---,---","|", COLUMN 84, balance USING "-,---,---","|" PRINT COLUMN 45, "---------","|", COLUMN 58, "---------","|", COLUMN 71, "---------","|", COLUMN 84, "---------","|" PRINT COLUMN 5, "BALANCE FINAL", COLUMN 45, SUM(x.monto2)+ balance1 USING "-,---,---","|", COLUMN 58, SUM(x.monto1) USING "-,---,---","|", COLUMN 71, SUM(x.monto1+x.monto2) + balance1 USING "-,---,---","|", COLUMN 84, SUM(x.monto) + balance USING "-,---,---","|" PRINT letras.negrillas_off,letras.normal END REPORT