Files

412 lines
16 KiB
Plaintext

{
==============================================================================
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 "<<<Buscando Informacion... Espere por Favor>>>" 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 "<<<Reporte Generandose... Espere por Favor>>>" 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