Files
MBS/PROYECTO/cgdir/cgprcs003.4gl
T

208 lines
6.4 KiB
Plaintext

{
============================================================================
PROGRAMAS : CGPRCS003
OBJETIVO : VISUALIZAR LOS CHEQUES QUE HAN SIDO ENTREGADOS EN UN RANGO DE
FECHA
PROGRAMADOR : JUAN F. SOTO
FECHA : DICIEMBRE 08, 1995.
=============================================================================
}
GLOBALS
"cgprgb000.4gl"
DEFINE rango RECORD
fecha1 LIKE cgtb00032.fecha_ent,
fecha2 LIKE cgtb00032.fecha_ent
END RECORD,
p_beneficiario LIKE cgtb00005.portador,
select1 CHAR(150),
nombre_b1,nombre_b CHAR(30),
maestra RECORD LIKE cgtb00031.*,
no_existe CHAR(1),
p_monto DECIMAL(12,2)
DEFINE arr_ent ARRAY[300] OF RECORD
banco LIKE cgtb00032.banco,
nombre_bco LIKE cgtb00001.descripcion,
cheque_no LIKE cgtb00005.cheque_no,
fecha LIKE cgtb00032.fecha,
fecha_ent LIKE cgtb00032.fecha_ent,
monto LIKE cgtb00005.monto
END RECORD
FUNCTION cgprcs003()
OPTIONS
FORM LINE 8,
ERROR LINE 24
OPEN FORM cgfmcs003 FROM "cgfmcs003"
DISPLAY FORM cgfmcs003
DISPLAY "Cheques Entregados " AT 6,30
DISPLAY "cgprcs003" AT 4,3
LET int_flag = FALSE
WHILE int_flag != TRUE
INPUT BY NAME rango.*
AFTER FIELD fecha1
IF rango.fecha1 is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
LET rango.fecha2 = today
DISPLAY BY NAME rango.fecha2
AFTER FIELD fecha2
IF rango.fecha2 is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF rango.fecha2 < rango.fecha1 THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
CONSTRUCT BY NAME criterio ON a.cod_cro
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
EXIT WHILE
END IF
LET selec1 =
"SELECT a.cod_cro,a.beneficiario ",
"FROM cgtb00031 a,cgtb00032 b, OUTER cgtb00033 c ",
"WHERE a.cod_cro=b.cod_cro and a.cod_cro=c.cod_cro and ",
criterio clipped," ORDER BY a.cod_cro"
PREPARE comando4 FROM selec1
DECLARE busca4 SCROLL CURSOR FOR comando4
OPEN busca4
FETCH FIRST busca4 INTO maestra.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
CONTINUE WHILE
END IF
DISPLAY BY NAME maestra.beneficiario,maestra.cod_cro
MENU "OPCION"
COMMAND "Siguiente"
FETCH NEXT busca4 INTO maestra.*
IF status = notfound THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME maestra.beneficiario,maestra.cod_cro
COMMAND "Anterior"
FETCH PREVIOUS busca4 INTO maestra.*
IF status = notfound THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME maestra.beneficiario,maestra.cod_cro
COMMAND "Primero"
FETCH FIRST busca4 INTO maestra.*
IF status = notfound THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME maestra.beneficiario,maestra.cod_cro
COMMAND "Ultimo"
FETCH LAST busca4 INTO maestra.*
IF status = notfound THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME maestra.beneficiario,maestra.cod_cro
COMMAND "Ver"
DECLARE busca CURSOR FOR
SELECT a.* FROM cgtb00032 a
WHERE a.fecha_ent between rango.fecha1 and rango.fecha2 and
a.cod_cro = maestra.cod_cro and a.status_t is null
LET idx = 1
FOREACH busca INTO entrega.*
SELECT a.portador,a.monto INTO p_beneficiario,p_monto FROM cgtb00005 a
WHERE a.cheque_no = entrega.cheque_no and a.cuenta_no = entrega.banco
IF status = notfound THEN
LET p_beneficiario = null
LET status = 0
END IF
SELECT descripcion INTO nombre_b FROM cgtb00001
WHERE cuenta_no = entrega.banco
IF status = notfound THEN
LET nombre_b = "BANCO NO EXISTE"
END IF
LET arr_ent[idx].banco = entrega.banco
LET arr_ent[idx].nombre_bco = nombre_b
LET arr_ent[idx].cheque_no = entrega.cheque_no
LET arr_ent[idx].fecha = entrega.fecha
LET arr_ent[idx].fecha_ent = entrega.fecha_ent
LET arr_ent[idx].monto = p_monto
LET idx = idx + 1
END FOREACH
DECLARE busca1 CURSOR FOR
SELECT a.* FROM cgtb00033 a
WHERE a.fecha_ent between rango.fecha1 and rango.fecha2 and
a.cod_cro = maestra.cod_cro and a.status_t is null
FOREACH busca1 INTO entrega1.*
SELECT descripcion INTO nombre_b FROM cgtb00001
WHERE cuenta_no = entrega.banco
IF status = notfound THEN
LET nombre_b = "BANCO NO EXISTE"
END IF
LET arr_ent[idx].banco = entrega.banco
LET arr_ent[idx].nombre_bco = nombre_b
LET arr_ent[idx].cheque_no = entrega1.cheque_no
LET arr_ent[idx].fecha = entrega1.fecha
LET arr_ent[idx].fecha_ent = entrega1.fecha_ent
LET arr_ent[idx].monto = entrega1.monto
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT OPTION "Siguiente"
END IF
IF idx > 1 THEN
CALL set_count(idx - 1)
DISPLAY ARRAY arr_ent TO scr_ent.*
CLEAR FORM
DISPLAY BY NAME maestra.beneficiario,maestra.cod_cro,
rango.fecha1,rango.fecha2
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
EXIT WHILE
END IF
END IF
COMMAND "Retornar"
CLEAR FORM
EXIT MENU
END MENU
END WHILE
END FUNCTION