{ ------------------------------------------------------------------ PROGRAMA : PRPRMT005 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Factor de Conversion de Semi-Elaborado. PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Junio 14, 1993. ------------------------------------------------------------------ } GLOBALS "prprgb000.4gl" FUNCTION prprmt005() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ctfmmt005 FROM "prfmmt006" DISPLAY FORM ctfmmt005 CALL pantalla() DISPLAY "prprmt005" AT 4,3 DISPLAY "Factor de Conversion Semi-Elaborado" AT 6,22 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" LET int_flag = FALSE CLEAR FORM CALL prpcad005() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET INT_FLAG = FALSE CALL prpcmf005() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION prpcad005() #WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro LET int_flag = false INPUT BY NAME prtb06.* AFTER FIELD cod_prod IF prtb06.cod_prod is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_prod END IF SELECT a.* FROM cttb00001 a WHERE a.cod_prod = prtb06.cod_prod IF prtb06.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) DISPLAY BY NAME prtb06.* NEXT FIELD cod_prod END IF IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_prod END IF SELECT UNIQUE a.cod_prod FROM prtb00006 a WHERE a.cod_prod = prtb06.cod_prod IF status != notfound THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_prod END IF SELECT a.descripcion INTO cttb01.descripcion FROM cttb00001 a WHERE a.cod_prod = prtb06.cod_prod DISPLAY BY NAME cttb01.descripcion AFTER FIELD fact_conv IF prtb06.fact_conv IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fact_conv END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF INSERT INTO prtb00006 VALUES (prtb06.cod_prod,prtb06.fact_conv, null,user,current,null,null) LET numero_msg = 1 CALL msg(numero_msg) END FUNCTION FUNCTION prpcmf005() #WHENEVER ERROR CONTINUE LET int_flag = false ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON prtb00006.* FROM prtb00006.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE prtb00006.*,cttb00001.descripcion ", " FROM prtb00006,cttb00001 ", " WHERE prtb00006.status_t is null and ", " prtb00006.cod_prod = cttb00001.cod_prod AND ", criterio clipped," ORDER BY prtb00006.cod_prod " PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO prtb06.*,cttb01.descripcion IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME prtb06.*,cttb01.descripcion MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO prtb06.*,cttb01.descripcion IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME prtb06.*,cttb01.descripcion COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO prtb06.*,cttb01.descripcion IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME prtb06.*,cttb01.descripcion COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO prtb06.*,cttb01.descripcion DISPLAY BY NAME prtb06.*,cttb01.descripcion LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO prtb06.*,cttb01.descripcion DISPLAY BY NAME prtb06.*,cttb01.descripcion LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF prtb06.status_t="E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME prtb06.fact_conv WITHOUT DEFAULTS AFTER FIELD fact_conv IF prtb06.fact_conv IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fact_conv END IF END INPUT #### 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 prtb00006 SET (fact_conv,us_mod,fech_mod) = (prtb06.fact_conv,USER,CURRENT) WHERE @cod_prod = prtb06.cod_prod LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" UPDATE prtb00006 SET status_t ="E" , us_mod = user, fech_mod = current WHERE @cod_prod = prtb06.cod_prod LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" EXIT MENU END MENU END FUNCTION