534 lines
18 KiB
Plaintext
534 lines
18 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_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 "<<<Buscando Informacion... Espere por Favor>>>" 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 "<<<Reporte Generandose... Espere por Favor>>>" 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
|