Files
MBS/PROYECTO/tedirbk/teprrp011.4gl
T

655 lines
22 KiB
Plaintext

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