{ ------------------------------------------------------------------ PROGRAMA : TEPRMT006 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Historico Real Partidas del Cash Flow PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Diciembre 07, 1995. ------------------------------------------------------------------ } GLOBALS "teprgb000.4gl" FUNCTION teprmt006() CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, MESSAGE LINE 24, COMMENT LINE 21 OPEN FORM tefmmt006 FROM "tefmmt006" DISPLAY FORM tefmmt006 CALL pantalla() # CALL ayuda() DISPLAY "teprmt006" AT 4,3 ATTRIBUTE(RED) DISPLAY "Historico Real de Partidas Del Cash-Flow" at 6,20 ATTRIBUTE(BLACK) MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" LET INT_FLAG = FALSE CLEAR FORM CALL tepcad006() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET int_flag = FALSE CALL tepcmf006() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION tepcad006() # WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME p_tetb05.codigo,p_tetb05.ano AFTER FIELD codigo IF p_tetb05.codigo is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD codigo END IF SELECT UNIQUE descripcion INTO p_tetb03.descripcion FROM tetb00003 WHERE @codigo = p_tetb05.codigo IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD codigo END IF DISPLAY BY NAME p_tetb03.descripcion AFTER FIELD ano IF p_tetb05.ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF SELECT UNIQUE a.ano FROM tetb00005 a WHERE a.codigo = p_tetb05.codigo AND a.ano = p_tetb05.ano IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD codigo END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET numero_msg = FALSE RETURN END IF FOR idx = 1 TO 12 LET arr_tetb05[idx].mes = idx SELECT UNIQUE a.descrip INTO arr_tetb05[idx].descrip FROM mestable a WHERE a.mes = arr_tetb05[idx].mes LET arr_tetb05[idx].valor = 0 END FOR CALL SET_COUNT(idx) INPUT ARRAY arr_tetb05 WITHOUT DEFAULTS FROM scr_tetb05.* BEFORE ROW LET curr = ARR_CURR() LET fila = SCR_LINE() AFTER FIELD mes IF arr_tetb05[curr].mes IS NOT NULL THEN SELECT UNIQUE a.descrip INTO arr_tetb05[curr].descrip FROM mestable a WHERE a.mes = arr_tetb05[curr].mes IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD mes END IF DISPLAY arr_tetb05[curr].descrip TO scr_tetb05[fila].descrip END IF AFTER FIELD valor IF arr_tetb05[curr].valor IS NOT NULL THEN IF arr_tetb05[curr].valor IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD valor END IF END IF END INPUT IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) LET INT_FLAG = FALSE RETURN END IF FOR idx = 1 TO ARR_COUNT() IF arr_tetb05[idx].valor IS NULL THEN LET arr_tetb05[idx].valor = 0 END IF INSERT INTO tetb00005 VALUES (p_tetb05.codigo,p_tetb05.ano, idx,arr_tetb05[idx].valor, NULL,USER,CURRENT,NULL,NULL) END FOR LET numero_msg = 1 CALL msg(numero_msg) END FUNCTION FUNCTION tepcmf006() LET int_flag = FALSE ## Aqui se prepara para la captura del criterio de seleccion MESSAGE "" CLEAR FORM CONSTRUCT criterio ON a.codigo,a.ano FROM codigo,ano IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE a.codigo,a.ano,b.descripcion ", "FROM tetb00005 a,tetb00003 b ", "WHERE (a.codigo = b.codigo) AND a.status_t IS NULL AND ", criterio clipped," ORDER BY a.codigo,a.ano " PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO p_tetb05.codigo,p_tetb05.ano, p_tetb03.descripcion IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion DISPLAY BY NAME p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion DISPLAY BY NAME p_tetb05.codigo,p_tetb05.ano,p_tetb03.descripcion LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET numero_msg = FALSE RETURN END IF DECLARE buscar CURSOR FOR SELECT UNIQUE a.mes,b.descrip,a.valor_real FROM tetb00005 a, mestable b WHERE (a.mes = b.mes) AND (a.codigo = p_tetb05.codigo) AND (a.ano = p_tetb05.ano) AND (a.status_t IS NULL) ORDER BY 1 LET idx = 1 FOREACH buscar INTO arr_tetb05[idx].* LET idx = idx + 1 END FOREACH CALL SET_COUNT(idx-1) INPUT ARRAY arr_tetb05 WITHOUT DEFAULTS FROM scr_tetb05.* BEFORE ROW LET curr = ARR_CURR() LET fila = SCR_LINE() AFTER FIELD mes IF arr_tetb05[curr].mes IS NOT NULL THEN SELECT UNIQUE a.descrip INTO arr_tetb05[curr].descrip FROM mestable a WHERE a.mes = arr_tetb05[curr].mes IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD mes END IF DISPLAY arr_tetb05[curr].descrip TO scr_tetb05[fila].descrip END IF AFTER FIELD valor IF arr_tetb05[curr].valor IS NOT NULL THEN IF arr_tetb05[curr].valor IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD valor END IF END IF END INPUT IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) LET INT_FLAG = FALSE RETURN END IF DELETE FROM tetb00005 WHERE @codigo = p_tetb05.codigo AND @ano = p_tetb05.ano FOR idx = 1 TO 12 IF arr_tetb05[idx].valor IS NULL THEN LET arr_tetb05[idx].valor = 0 END IF INSERT INTO tetb00005 VALUES (p_tetb05.codigo,p_tetb05.ano, idx,arr_tetb05[idx].valor, NULL,USER,CURRENT,NULL,NULL) END FOR LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" "Elimina registro que esta en la pantalla" UPDATE tetb00005 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT) WHERE @codigo = p_tetb05.codigo AND @ano=p_tetb05.ano LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION