{ ============================================================================ 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