{ ------------------------------------------------------------------ PROGRAMA : INPRMt030 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla intb00019 PROGRAMADOR : Lic. Oscar Castillo FECHA REALIZACION : Lunes 31 de Julio de 2000 ------------------------------------------------------------------ } GLOBALS "inprgb000.4gl" DEFINE intb030 RECORD LIKE intb00019.*, descrip LIKE intb00007.descripcion, descrip1 LIKE intb00001.descrip_esp, m_nom_sp LIKE cotb00001.nom_sp, medida LIKE intb00001.unidad_med FUNCTION inprmt030() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 LET formulario = formulario CLIPPED, "infmmt030" OPEN FORM infmmt030 FROM formulario DISPLAY FORM infmmt030 CALL pantalla() DISPLAY "inprmt030" AT 4,3 DISPLAY "Informacion Adicional Materia Prima" AT 6,22 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM CALL inpcad030() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" let int_flag = false CALL inpcmf030() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION inpcad030() INITIALIZE intb030.* TO NULL #WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF INPUT BY NAME intb030.cod_n,intb030.cod_grupo,intb030.cod_tipo, intb030.cod_sec,intb030.cod_sp,intb030.cod_sp_sec, intb030.unidad_med,intb030.conversion,intb030.precio,intb030.precio_s ## Verifica que el codigo no exista en el catalogo de unidades. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_sec IF intb030.cod_n IS NOT NULL AND intb030.cod_grupo IS NOT NULL AND intb030.cod_tipo IS NOT NULL AND intb030.cod_sec IS NOT NULL THEN SELECT a.* FROM intb00019 a WHERE a.cod_n = intb030.cod_n AND a.cod_grupo = intb030.cod_grupo AND a.cod_tipo = intb030.cod_tipo AND a.cod_sec = intb030.cod_sec AND a.status_t IS NULL IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) CLEAR FORM NEXT FIELD cod_n END IF SELECT descrip_esp,unidad_med INTO descrip1,medida FROM intb00001 WHERE cod_n = intb030.cod_n and cod_grupo = intb030.cod_grupo and cod_tipo = intb030.cod_tipo and cod_sec = intb030.cod_sec and status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) CLEAR FORM NEXT FIELD cod_n END IF DISPLAY BY NAME descrip1,medida ELSE CLEAR FORM NEXT FIELD cod_n END IF AFTER FIELD cod_sp IF intb030.cod_sp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) INITIALIZE intb030.cod_sp TO NULL NEXT FIELD cod_sp END IF AFTER FIELD cod_sp_sec IF intb030.cod_sp_sec IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) INITIALIZE intb030.cod_sp_sec TO NULL NEXT FIELD cod_sp_sec END IF SELECT nom_sp INTO m_nom_sp FROM cotb00001 WHERE cod_sp = intb030.cod_sp and cod_sp_sec = intb030.cod_sp_sec AND status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sp END IF DISPLAY BY NAME m_nom_sp AFTER FIELD unidad_med IF intb030.unidad_med IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD unidad_med ELSE SELECT a.descripcion INTO descrip FROM intb00007 a WHERE a.codigo_unidad = intb030.unidad_med AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD unidad_med END IF DISPLAY BY NAME descrip END IF AFTER FIELD conversion IF intb030.conversion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD conversion END IF AFTER FIELD precio IF intb030.precio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD precio 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 intb00019 VALUES(intb030.cod_n,intb030.cod_grupo, intb030.cod_tipo,intb030.cod_sec, intb030.cod_sp,intb030.cod_sp_sec, intb030.unidad_med,intb030.conversion, intb030.precio,intb030.precio_s,null,user,current,null,null) EXIT INPUT END INPUT END FUNCTION FUNCTION inpcmf030() ## Aqui se prepara para la captura del criterio de seleccion # WHENEVER ERROR CONTINUE INITIALIZE intb030.* TO NULL CONSTRUCT BY NAME criterio ON i.cod_n,i.cod_grupo, i.cod_tipo,i.cod_sec, i.cod_sp,i.cod_sp_sec, i.unidad_med,i.conversion, i.precio IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE i.* FROM intb00019 i where ", " i.status_t is null and ", criterio clipped, " ORDER BY 1,2,3,4 " PREPARE busca FROM selec CALL integridad() if bandera = 1 THEN CLEAR SCREEN RETURN end if DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO intb030.* 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 CLEAR SCREEN RETURN end if end if INITIALIZE descrip,m_nom_sp,descrip1,medida TO NULL CALL despl() DISPLAY BY NAME descrip,m_nom_sp,descrip1,medida DISPLAY BY NAME intb030.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO intb030.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF INITIALIZE descrip,m_nom_sp,descrip1,medida TO NULL CALL despl() DISPLAY BY NAME descrip,m_nom_sp,descrip1,medida DISPLAY BY NAME intb030.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO intb030.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF INITIALIZE descrip,m_nom_sp,descrip1,medida TO NULL CALL despl() DISPLAY BY NAME descrip,m_nom_sp,descrip1,medida DISPLAY BY NAME intb030.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO intb030.* INITIALIZE descrip,m_nom_sp,descrip1,medida TO NULL CALL despl() DISPLAY BY NAME descrip,m_nom_sp,descrip1,medida DISPLAY BY NAME intb030.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO intb030.* INITIALIZE descrip,m_nom_sp,descrip1,medida TO NULL CALL despl() DISPLAY BY NAME descrip,m_nom_sp,descrip1,medida DISPLAY BY NAME intb030.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF medidas.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF INPUT BY NAME intb030.cod_sp, intb030.cod_sp_sec, intb030.unidad_med, intb030.conversion, intb030.precio,intb030.precio_s WITHOUT DEFAULTS AFTER FIELD cod_sp IF intb030.cod_sp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) INITIALIZE intb030.cod_sp TO NULL NEXT FIELD cod_sp END IF AFTER FIELD cod_sp_sec IF intb030.cod_sp_sec IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) INITIALIZE intb030.cod_sp_sec TO NULL NEXT FIELD cod_sp_sec END IF SELECT nom_sp INTO m_nom_sp FROM cotb00001 WHERE cod_sp = intb030.cod_sp and cod_sp_sec = intb030.cod_sp_sec AND status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sp END IF DISPLAY BY NAME m_nom_sp AFTER FIELD unidad_med IF intb030.unidad_med IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD unidad_med ELSE SELECT a.descripcion INTO descrip FROM intb00007 a WHERE a.codigo_unidad = intb030.unidad_med AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD unidad_med END IF DISPLAY BY NAME descrip END IF AFTER FIELD conversion IF intb030.conversion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD conversion END IF AFTER FIELD precio IF intb030.precio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD precio END IF #### Verifica si el usuario presiono la tecla AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF CALL integridad() if bandera = 1 THEN CLEAR SCREEN RETURN end if UPDATE intb00019 SET cod_sp = intb030.cod_sp, cod_sp_sec = intb030.cod_sp_sec, unidad_med = intb030.unidad_med, conversion = intb030.conversion, precio = intb030.precio, precio_s = intb030.precio_s, us_mod = user, fech_mod = current WHERE cod_n = intb030.cod_n AND cod_grupo = intb030.cod_grupo AND cod_tipo = intb030.cod_tipo AND cod_sec = intb030.cod_sec LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE intb00019 SET status_t = "E" WHERE cod_n = intb030.cod_n AND cod_grupo = intb030.cod_grupo AND cod_tipo = intb030.cod_tipo AND cod_sec = intb030.cod_sec LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION FUNCTION despl() SELECT descrip_esp,unidad_med INTO descrip1,medida FROM intb00001 WHERE cod_n = intb030.cod_n and cod_grupo = intb030.cod_grupo and cod_tipo = intb030.cod_tipo and cod_sec = intb030.cod_sec and status_t IS NULL SELECT nom_sp INTO m_nom_sp FROM cotb00001 WHERE cod_sp = intb030.cod_sp and cod_sp_sec = intb030.cod_sp_sec AND status_t is null SELECT a.descripcion INTO descrip FROM intb00007 a WHERE a.codigo_unidad = intb030.unidad_med AND a.status_t IS NULL END FUNCTION