{ ------------------------------------------------------------------ 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" DEFINE arrmovimientos DYNAMIC ARRAY OF RECORD codmov1 INT, descripmov1 VARCHAR(100), tipomov1 VARCHAR(50), clasificacion VARCHAR(50), afectatss1,modificanovedad1,afectavacacion1 VARCHAR(3) END RECORD 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 DIALOG ATTRIBUTE(UNBUFFERED) DISPLAY ARRAY arrmovimientos TO smovimientos.* BEFORE DISPLAY -- CALL DIALOG.setActionActive( "Ok", FALSE ) -- CALL DIALOG.setActionActive( "insert", FALSE ) -- CALL DIALOG.setActionActive( "delete", FALSE ) CALL buscamovimientos() ON ACTION nuevo ATTRIBUTE(TEXT="Nuevo Movimiento",IMAGE="new") CALL nopcad001() ON ACTION modificar ATTRIBUTE(TEXT="Modificar",IMAGE="fa-cloud-upload") LET mov_nomi.cod_mov = arrmovimientos[arr_curr()].codmov1 CALL buscaData() CALL nopcmf001() CALL buscamovimientos() ON ACTION salir ATTRIBUTE(TEXT="Salir", IMAGE="quit") RETURN END DISPLAY END DIALOG END FUNCTION FUNCTION nopcad001() #WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro DIALOG ATTRIBUTE(UNBUFFERED) 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. BEFORE INPUT CALL buscaMaximo() 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} ON ACTION guardar ATTRIBUTE(TEXT='Salvar', IMAGE='save') IF mov_nomi.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov ELSE CALL buscaMaximo() IF mov_nomi.descrip_mov IS NULL THEN CALL msg(16) NEXT FIELD descrip_mov END IF IF mov_nomi.tipo_mov IS NULL THEN CALL msg(16) NEXT FIELD tipo_mov END IF IF mov_nomi.cta_aux IS NULL THEN CALL msg(16) NEXT FIELD cta_aux END IF IF mov_nomi.clase_mov IS NULL THEN CALL msg(16) NEXT FIELD clase_mov END IF IF mov_nomi.cod_mov IS NULL THEN CALL msg(16) NEXT FIELD cod_mov END IF 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 ON ACTION CANCEL RETURN END INPUT END DIALOG 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 FUNCTION buscamovimientos() DECLARE buscaInformacion CURSOR FOR SELECT a.cod_mov,a.descrip_mov,a.tipo_mov,a.clase_mov,a.afecta_tss,a.modifica,a.vacaciones FROM notb00002 a WHERE a.status_t IS NULL ORDER BY a.cod_mov LET idx =1 FOREACH buscaInformacion INTO arrmovimientos[idx].* LET idx = idx + 1 END FOREACH END FUNCTION FUNCTION buscaMaximo() SELECT isnull(MAX(cod_mov),0) INTO mov_nomi.cod_mov FROM notb00002 LET mov_nomi.cod_mov =mov_nomi.cod_mov + 1 DISPLAY BY NAME mov_nomi.cod_mov END FUNCTION FUNCTION buscaData() SELECT a.descrip_mov, a.primer_enc, a.segundo_enc, a.tercer_enc, a.ch_encabeza, a.tipo_mov, a.clase_mov, a.afecta_tss, a.cantidad_cia, a.cantidad_emp, a.cta_control, a.cta_aux, a.us_crea, a.fech_crea, a.us_mod, a.fech_mod,a.modifica, a.vacaciones INTO 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 FROM notb00002 a WHERE a.cod_mov = mov_nomi.cod_mov END FUNCTION