{ ------------------------------------------------------------------ PROGRAMA : NOPRMT001 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Maestra de Codigos de Movimientos PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Agosto 19, 1993 ------------------------------------------------------------------ } GLOBALS "noprgb000.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 noprmt001() END MAIN FUNCTION noprmt001() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM nofmmt001 FROM "nofmmt001" DISPLAY FORM nofmmt001 #CALL pantalla() #DISPLAY "noprmt001" AT 4,3 #DISPLAY "Maestra de Movimientos" AT 6,29 MENU ON ACTION nuevo let int_flag = false CLEAR FORM CALL nopcad001() ON ACTION buscar let int_flag = false CALL nopcmf001() ON ACTION Salir EXIT MENU END MENU END FUNCTION FUNCTION nopcad001() #WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME mov_nomi.* ## Verifica que el codigo no exista en el catalogo de movimientos. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_mov IF mov_nomi.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov ELSE SELECT * INTO mov_nomi.* FROM notb00002 WHERE cod_mov = mov_nomi.cod_mov IF status >= 0 THEN IF status != NOTFOUND THEN IF mov_nomi.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_mov END IF DISPLAY BY NAME mov_nomi.* LET numero_msg = 12 CALL msg(numero_msg) CLEAR FORM INITIALIZE mov_nomi.* TO NULL NEXT FIELD cod_mov END IF ELSE CALL integridad() IF bandera = 1 THEN CLEAR SCREEN RETURN END IF END IF END IF AFTER FIELD descrip_mov IF mov_nomi.descrip_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_mov END IF AFTER FIELD primer_enc IF mov_nomi.primer_enc IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD primer_enc END IF AFTER FIELD clase_mov IF mov_nomi.clase_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD clase_mov END IF BEFORE FIELD cantidad_emp IF mov_nomi.tipo_mov = "V" THEN LET mov_nomi.cantidad_emp = 0 END IF { AFTER FIELD cta_control IF mov_nomi.clase_mov = "D" THEN IF mov_nomi.cta_control IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cta_control 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 IF mov_nomi.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov ELSE INSERT INTO notb00002 VALUES (mov_nomi.cod_mov,mov_nomi.descrip_mov, mov_nomi.primer_enc,mov_nomi.segundo_enc, mov_nomi.tercer_enc,mov_nomi.ch_encabeza, mov_nomi.tipo_mov, mov_nomi.clase_mov,mov_nomi.afecta_tss,mov_nomi.cantidad_cia, mov_nomi.cantidad_emp,mov_nomi.cta_control, mov_nomi.cta_aux,null,SUSER_SNAME(),GETDATE(), null,null,mov_nomi.modifica,mov_nomi.vacaciones) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM INITIALIZE mov_nomi.* TO NULL NEXT FIELD cod_mov END IF AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION nopcmf001() ## Aqui se prepara para la captura del criterio de seleccion #WHENEVER ERROR CONTINUE CONSTRUCT BY NAME criterio ON notb00002.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE * FROM notb00002 where ", " status_t is null and ", criterio clipped, " ORDER BY cod_mov " 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 mov_nomi.* 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 DISPLAY BY NAME mov_nomi.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO mov_nomi.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME mov_nomi.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO mov_nomi.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME mov_nomi.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO mov_nomi.* DISPLAY BY NAME mov_nomi.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO mov_nomi.* DISPLAY BY NAME mov_nomi.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF mov_nomi.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF INPUT BY NAME mov_nomi.descrip_mov, mov_nomi.primer_enc, mov_nomi.segundo_enc, mov_nomi.tercer_enc, mov_nomi.ch_encabeza, mov_nomi.tipo_mov, mov_nomi.clase_mov, mov_nomi.afecta_tss, mov_nomi.cantidad_cia, mov_nomi.cantidad_emp, mov_nomi.cta_control, mov_nomi.cta_aux, mov_nomi.us_crea, mov_nomi.fech_crea, mov_nomi.us_mod, mov_nomi.fech_mod,mov_nomi.modifica, mov_nomi.vacaciones WITHOUT DEFAULTS AFTER FIELD descrip_mov IF mov_nomi.descrip_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_mov END IF AFTER FIELD primer_enc IF mov_nomi.primer_enc IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD primer_enc END IF AFTER FIELD clase_mov IF mov_nomi.clase_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD clase_mov END IF AFTER FIELD cta_control IF mov_nomi.clase_mov = "D" THEN IF mov_nomi.cta_control IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cta_control END IF 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 notb00002 SET descrip_mov = mov_nomi.descrip_mov, primer_enc = mov_nomi.primer_enc, segundo_enc = mov_nomi.segundo_enc, tercer_enc = mov_nomi.tercer_enc, ch_encabeza = mov_nomi.ch_encabeza, tipo_mov = mov_nomi.tipo_mov, clase_mov = mov_nomi.clase_mov, cantidad_cia = mov_nomi.cantidad_cia, afecta_tss = mov_nomi.afecta_tss, cantidad_emp = mov_nomi.cantidad_emp, cta_control = mov_nomi.cta_control, cta_aux = mov_nomi.cta_aux, us_mod = usuarios, fech_mod = GETDATE(), modifica = mov_nomi.modifica, vacaciones = mov_nomi.vacaciones WHERE cod_mov = mov_nomi.cod_mov LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" LET opt = fgl_winquestion("ELIMINAR","DESEA ELIMINAR ESTE REGISTRO?","NO","YES|NO","QUESTION",0) IF opt = "YES" THEN UPDATE notb00002 SET status_t = "E", us_mod = usuarios, fech_mod = getdate() WHERE cod_mov = mov_nomi.cod_mov LET numero_msg = 39 CALL msg(numero_msg) END IF COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION