{ ------------------------------------------------------------------ PROGRAMA : ACPRMT002 OBJETIVO : Mantenimiento a la maestra de cod_mov. PROGRAMADOR : Tadeo A. Ferreras. FECHA REALIZACION : Sept. 27, 1993. ------------------------------------------------------------------ } GLOBALS "acprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" user usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL acprmt002() END MAIN FUNCTION acprmt002() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM acfmmt002 FROM "acfmmt002" DISPLAY FORM acfmmt002 # CALL pantalla() DISPLAY "acprmt002" AT 4,3 DISPLAY "Maestra de Movimientos" AT 6,29 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CLEAR FORM CALL acpcad002() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" CLEAR FORM CALL acpcmf002() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU CLEAR FORM END MENU END FUNCTION FUNCTION acpcad002() WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME categ.* ## Verifica que el cod_mov no exista en el catalogo de categ. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_mov IF categ.cod_mov is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov END IF #### Verifica que el el cod_mov asignado al categ no exista SELECT a.* FROM actb00002 a WHERE a.cod_mov = categ.cod_mov IF status != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_mov END IF AFTER FIELD descrip IF categ.descrip IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip END IF AFTER FIELD tipo_mov IF categ.tipo_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_mov END IF AFTER FIELD uso IF categ.uso IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD uso END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF #### Proceso para insertar la informacion en las tablas necesarias INSERT INTO actb00002 VALUES (categ.*) UPDATE actb00002 set (us_crea,fech_crea) = (usuarios,getdate()) WHERE cod_mov = categ.cod_mov LET numero_msg = 1 CALL msg(numero_msg) END FUNCTION ###### Funcion de modificacion FUNCTION acpcmf002() WHENEVER ERROR CONTINUE ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON a.cod_mov,a.descrip FROM cod_mov,descrip IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE a.* FROM actb00002 a ", "WHERE a.status_t IS NULL AND ", criterio CLIPPED, " ORDER BY a.cod_mov " PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO categ.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME categ.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO categ.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME categ.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO categ.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME categ.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO categ.* DISPLAY BY NAME categ.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO categ.* DISPLAY BY NAME categ.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF estado.status_t="E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME categ.descrip THRU categ.fech_mod WITHOUT DEFAULTS AFTER FIELD descrip IF categ.descrip IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip END IF AFTER FIELD tipo_mov IF categ.tipo_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_mov END IF AFTER FIELD uso IF categ.uso IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD uso END IF ##### Chequea que el numero de cuenta a digitar exista en el catalogo END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF ###### Proceso de Actualizacion UPDATE actb00002 SET (descrip,tipo_mov,uso,us_mod,fech_mod) = (categ.descrip,categ.tipo_mov,categ.uso, usuarios,getdate()) WHERE @cod_mov = categ.cod_mov LET numero_msg = 13 CALL msg(numero_msg) #### Proceso para eliminar un registro logicamente COMMAND KEY ("L") "eLiminar" UPDATE actb00002 SET (status_t,us_mod,fech_mod) = ("E",usuarios,getdate()) WHERE @cod_mov = categ.cod_mov LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" EXIT MENU CLEAR FORM END MENU END FUNCTION