{ ------------------------------------------------------------------ PROGRAMA : COPRMT024 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Catalogo Bienes y Servicios Categorizados Por Naturaleza Del Bien y/o Servicio. PROGRAMADOR : Juan F. Soto FECHA REALIZACION : AGOSTO 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------ } GLOBALS "coprgb000.4gl" DEFINE p_articulos RECORD LIKE cotb00021.* FUNCTION coprmt024() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmmt024 FROM "cofmmt024" DISPLAY FORM cofmmt024 CALL pantalla() DISPLAY "coprmt024" AT 4,3 DISPLAY "Mantenimiento Catalogo Bienes y Servicios Categorizados" AT 6,10 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" LET int_flag = FALSE CLEAR FORM CALL copcad024() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET INT_FLAG = FALSE CALL copcmf024() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION copcad024() WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro LET int_flag = false INPUT BY NAME p_articulos.* ## Verifica que el codigo no exista en el catalogo de p_articulos. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_n IF p_articulos.cod_n is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF AFTER FIELD cod_tipo IF p_articulos.cod_tipo is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_tipo END IF AFTER FIELD cod_grupo IF p_articulos.cod_grupo is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_grupo END IF AFTER FIELD cod_sec IF (p_articulos.cod_n is null AND p_articulos.cod_grupo is null AND p_articulos.cod_tipo is null AND p_articulos.cod_sec is null) THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n ELSE SELECT * INTO p_articulos.* FROM cotb00021 WHERE cod_n = p_articulos.cod_n AND cod_grupo = p_articulos.cod_grupo AND cod_tipo = p_articulos.cod_tipo AND cod_sec = p_articulos.cod_sec IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) CALL busca_desc() DISPLAY BY NAME p_articulos.* NEXT FIELD cod_n END IF CALL busca_desc() IF numero_msg = 3 THEN LET numero_msg = 0 NEXT FIELD cod_n END IF END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF INSERT INTO cotb00021 VALUES (p_articulos.*) UPDATE cotb00021 SET us_crea = user, fech_crea = current WHERE cod_n = p_articulos.cod_n AND cod_grupo = p_articulos.cod_grupo AND cod_tipo = p_articulos.cod_tipo AND cod_sec = p_articulos.cod_sec LET numero_msg = 1 CALL msg(numero_msg) NEXT FIELD cod_n AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION copcmf024() WHENEVER ERROR CONTINUE LET int_flag = false ## Aqui se prepara para la captura del criterio de seleccion CLEAR FORM CONSTRUCT criterio ON cotb00021.* FROM cotb00021.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE * FROM cotb00021 WHERE status_t is null and ", criterio clipped," ORDER BY 1,2,3,4" 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_articulos.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF CALL busca_desc() DISPLAY BY NAME p_articulos.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO p_articulos.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF CALL busca_desc() DISPLAY BY NAME p_articulos.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO p_articulos.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF CALL busca_desc() DISPLAY BY NAME p_articulos.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO p_articulos.* CALL busca_desc() DISPLAY BY NAME p_articulos.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO p_articulos.* CALL busca_desc() DISPLAY BY NAME p_articulos.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" INPUT BY NAME p_articulos.categoria WITHOUT DEFAULTS #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF UPDATE cotb00021 SET categoria = p_articulos.categoria, us_mod = user, fech_mod = current WHERE cod_n = p_articulos.cod_n AND cod_grupo = p_articulos.cod_grupo AND cod_tipo = p_articulos.cod_tipo AND cod_sec = p_articulos.cod_sec LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" UPDATE intb00001 SET status_t ="E" , us_mod = user, fech_mod = current where cod_n = p_articulos.cod_n and cod_grupo = p_articulos.cod_grupo AND cod_tipo = p_articulos.cod_tipo AND cod_sec = p_articulos.cod_sec LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" EXIT MENU END MENU END FUNCTION FUNCTION busca_desc() SELECT a.descrip_esp,unidad_med INTO articulos.descrip_esp,articulos.unidad_med FROM intb00001 a WHERE a.cod_n = p_articulos.cod_n AND a.cod_grupo = p_articulos.cod_grupo AND a.cod_tipo = p_articulos.cod_tipo AND a.cod_sec = p_articulos.cod_sec IF STATUS = NOTFOUND THEN LET articulos.descrip_esp = "ARTICULO NO EXISTE" LET articulos.unidad_med = "XXX" LET numero_msg = 3 CALL msg(numero_msg) END IF DISPLAY BY NAME articulos.descrip_esp,articulos.unidad_med END FUNCTION