{ ------------------------------------------------------------------------------- PROGRAMA : COPRMT019 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Maestra de Moneda de Cambio PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Agosto 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(4) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave CALL coprmt019() END MAIN FUNCTION coprmt019() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmmt019 FROM "cofmmt019" DISPLAY FORM cofmmt019 DISPLAY "coprmt019" AT 4,3 DISPLAY "Maestra de Monedas" AT 6,31 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CLEAR FORM LET int_flag = false CALL copcad019() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET int_flag = false CALL copcmf019() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION copcad019() ## Captura los datos que va a contener el registro INPUT BY NAME monedas.* ## Verifica que el pago exista en el catalogo de pago. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_mon IF monedas.cod_mon IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mon ELSE SELECT * INTO monedas.* FROM cotb00031 WHERE cod_mon = monedas.cod_mon IF STATUS != NOTFOUND THEN IF monedas.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_mon END IF DISPLAY BY NAME monedas.* LET numero_msg = 12 CALL msg(numero_msg) LET monedas.descrip_mon = NULL NEXT FIELD cod_mon ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF INITIALIZE monedas.descrip_mon TO NULL DISPLAY BY NAME monedas.descrip_mon,monedas.simbolo END IF END IF AFTER FIELD descrip_mon IF monedas.descrip_mon IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_mon END IF AFTER FIELD simbolo IF monedas.simbolo IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD simbolo END IF AFTER FIELD tasa_cambio IF monedas.tasa_cambio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tasa_cambio 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 cotb00031 VALUES (monedas.cod_mon,monedas.descrip_mon, monedas.simbolo,monedas.tasa_cambio, null,USUARIOS,GETDATE(),null,null) CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM END FUNCTION FUNCTION copcmf019() #WHENEVER ERROR CONTINUE ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON cotb00031.* FROM cotb00031.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE * FROM cotb00031 ", "WHERE status_t is null and ", criterio clipped, "ORDER BY cod_mon" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF FETCH FIRST datos INTO monedas.* IF STATUS = NOTFOUND THEN LET numero_msg = 36 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME monedas.* MENU "OPCIONES" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO monedas.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME monedas.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO monedas.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME monedas.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO monedas.* DISPLAY BY NAME monedas.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO monedas.* DISPLAY BY NAME monedas.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF monedas.status_t != "E" THEN LET numero_msg = 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME monedas.descrip_mon,monedas.simbolo, monedas.tasa_cambio,monedas.us_crea, monedas.fech_crea,monedas.us_mod, monedas.fech_mod WITHOUT DEFAULTS AFTER FIELD descrip_mon IF monedas.descrip_mon IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_mon END IF AFTER FIELD simbolo IF monedas.simbolo IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD simbolo END IF AFTER FIELD tasa_cambio IF monedas.tasa_cambio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tasa_cambio END IF AFTER 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 cotb00031 SET descrip_mon = monedas.descrip_mon, simbolo = monedas.simbolo, tasa_cambio = monedas.tasa_cambio, us_mod = USUARIOS, fech_mod = GETDATE() WHERE cod_mon = monedas.cod_mon LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE cotb00031 SET status_t = "E", us_mod = usuarios, fech_mod = getdate() WHERE cod_mon = monedas.cod_mon LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION