{ ------------------------------------------------------------------------------- PROGRAMA : COPRMT004 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Relacion Formas de Embarque PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Agosto 1997 DIRECTOR PROYECTO : J. ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" FUNCTION coprmt004() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmmt004 FROM "cofmmt004" DISPLAY FORM cofmmt004 CALL pantalla() DISPLAY "coprmt004" AT 4,3 DISPLAY "Formas de Embarque Productos " AT 6,24 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CLEAR FORM CALL copcad004() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" CALL copcmf004() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION copcad004() WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro LABEL vuelve: INPUT BY NAME furgonart.* ## Verifica que el codigo no exista en el catalogo de furgones. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_embarque IF furgonart.cod_embarque = 0 OR furgonart.cod_embarque IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_embarque ELSE SELECT * INTO embarques.* FROM cotb00027 WHERE cod_embarque = furgonart.cod_embarque AND status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 55 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF END IF CALL integridad() IF bandera = 1 THEN RETURN END IF DISPLAY BY NAME embarques.descrip_emb AFTER FIELD cod_furg IF furgonart.cod_furg is not null THEN SELECT * INTO furgones.* FROM cotb00003 WHERE cod_furg = furgonart.cod_furg AND status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 27 CALL msg(numero_msg) NEXT FIELD cod_furg END IF DISPLAY BY NAME furgones.descrip_furg END IF CALL integridad() IF bandera = 1 THEN RETURN END IF AFTER FIELD cod_sec IF ( furgonart.cod_n = 0 AND furgonart.cod_grupo =0 AND furgonart.cod_tipo = 0 AND furgonart.cod_sec = 0 ) THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n ELSE SELECT * INTO articulos.* FROM intb00001 WHERE cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec AND status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 26 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DISPLAY BY NAME articulos.descrip_esp,articulos.unidad_med SELECT * INTO furgonart.* FROM cotb00004 WHERE cod_furg = furgonart.cod_furg AND cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec IF STATUS != NOTFOUND THEN IF furgonart.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF DISPLAY BY NAME furgonart.* LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF BEFORE FIELD cantidad IF furgonart.cod_embarque = 2 THEN EXIT INPUT END IF AFTER FIELD cantidad IF furgonart.cantidad IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad END IF AFTER FIELD fech_mod EXIT INPUT AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF # Valida que el codigo del articulo no sea cero. Si no es cero, adiciona el # registro en la tabla, de lo contrario, presenta mensaje de error y acepta # el codigo de nuevo. IF ( furgonart.cod_n = 0 AND furgonart.cod_grupo =0 AND furgonart.cod_tipo = 0 AND furgonart.cod_sec = 0 ) THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF SELECT * FROM intb00001 WHERE cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec AND status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 26 CALL msg(numero_msg) NEXT FIELD cod_n END IF CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF SELECT * INTO furgonart.* FROM cotb00004 WHERE cod_embarque = furgonart.cod_embarque AND cod_furg = furgonart.cod_furg AND cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec IF STATUS != NOTFOUND THEN IF furgonart.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF DISPLAY BY NAME furgonart.* LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF EXIT INPUT END INPUT INSERT INTO cotb00004 VALUES (furgonart.cod_embarque,furgonart.cod_furg,furgonart.cod_n, furgonart.cod_grupo,furgonart.cod_tipo,furgonart.cod_sec, furgonart.cantidad,null, USER, CURRENT, null, null) CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM LET furgonart.cod_embarque = NULL LET furgonart.cod_furg = NULL INITIALIZE articulos.cod_n,articulos.cod_grupo, articulos.cod_tipo,articulos.cod_sec TO NULL LET furgonart.cantidad = NULL GOTO vuelve END FUNCTION FUNCTION copcmf004() WHENEVER ERROR CONTINUE ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON cotb00004.* FROM cotb00004.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET numero_msg = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE * FROM cotb00004 where ", " status_t is null AND ", criterio clipped, " ORDER BY 1,2,3,4,5,6" 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 furgonart.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF SELECT * INTO embarques.* FROM cotb00027 WHERE cod_embarque = furgonart.cod_embarque AND status_t is null SELECT * INTO furgones.* FROM cotb00003 WHERE cod_furg = furgonart.cod_furg AND status_t is null SELECT * INTO articulos.* FROM intb00001 WHERE cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec AND status_t is null DISPLAY BY NAME furgonart.*,embarques.descrip_emb, furgones.descrip_furg,articulos.descrip_esp, articulos.unidad_med MENU "OPCIONES" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO furgonart.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF INITIALIZE embarques.descrip_emb,furgones.descrip_furg, articulos.descrip_esp,articulos.unidad_med TO NULL SELECT * INTO embarques.* FROM cotb00027 WHERE cod_embarque = furgonart.cod_embarque and status_t is null SELECT * INTO furgones.* FROM cotb00003 WHERE cod_furg = furgonart.cod_furg and status_t is null SELECT * INTO articulos.* FROM intb00001 WHERE cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec and status_t is null DISPLAY BY NAME furgonart.*,embarques.descrip_emb, furgones.descrip_furg,articulos.descrip_esp, articulos.unidad_med COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO furgonart.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF INITIALIZE embarques.descrip_emb,furgones.descrip_furg, articulos.descrip_esp,articulos.unidad_med TO NULL SELECT * INTO embarques.* FROM cotb00027 WHERE cod_embarque = furgonart.cod_embarque and status_t is null SELECT * INTO furgones.* FROM cotb00003 WHERE cod_furg = furgonart.cod_furg and status_t is null SELECT * INTO articulos.* FROM intb00001 WHERE cod_n=furgonart.cod_n AND cod_grupo=furgonart.cod_grupo AND cod_tipo=furgonart.cod_tipo AND cod_sec=furgonart.cod_sec and status_t is null DISPLAY BY NAME furgonart.*,embarques.cod_embarque, furgones.descrip_furg,articulos.descrip_esp, articulos.unidad_med COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO furgonart.* INITIALIZE embarques.descrip_emb,furgones.descrip_furg, articulos.descrip_esp,articulos.unidad_med TO NULL SELECT * INTO embarques.* FROM cotb00027 WHERE cod_embarque = furgonart.cod_embarque and status_t is null SELECT * INTO furgones.* FROM cotb00003 WHERE cod_furg = furgonart.cod_furg and status_t is null SELECT * INTO articulos.* FROM intb00001 WHERE cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec and status_t is null DISPLAY BY NAME furgonart.*,embarques.cod_embarque, furgones.descrip_furg,articulos.descrip_esp, articulos.unidad_med LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO furgonart.* INITIALIZE embarques.descrip_emb,furgones.descrip_furg, articulos.descrip_esp,articulos.unidad_med TO NULL SELECT * INTO embarques.* FROM cotb00027 WHERE cod_embarque = furgonart.cod_embarque and status_t is null SELECT * INTO furgones.* FROM cotb00003 WHERE cod_furg = furgonart.cod_furg and status_t is null SELECT * INTO articulos.* FROM intb00001 WHERE cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec and status_t is null DISPLAY BY NAME furgonart.*,embarques.cod_embarque, furgones.descrip_furg,articulos.descrip_esp, articulos.unidad_med LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" INITIALIZE embarques.descrip_emb,furgones.descrip_furg, articulos.descrip_esp,articulos.unidad_med TO NULL INPUT BY NAME furgonart.cod_embarque,furgonart.cod_furg, furgonart.cantidad, furgonart.us_crea,furgonart.fech_crea, furgonart.us_mod,furgonart.fech_mod WITHOUT DEFAULTS AFTER FIELD cod_embarque IF furgonart.cod_embarque = 0 OR furgonart.cod_embarque IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_embarque ELSE SELECT * INTO embarques.* FROM cotb00027 WHERE cod_embarque = furgonart.cod_embarque AND status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 55 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF END IF CALL integridad() IF bandera = 1 THEN RETURN END IF DISPLAY BY NAME embarques.descrip_emb AFTER FIELD cod_furg { IF furgonart.cod_embarque = 1 THEN IF furgonart.cod_furg IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_furg END IF ELSE} IF furgonart.cod_furg is not null THEN SELECT * INTO furgones.* FROM cotb00003 WHERE cod_furg = furgonart.cod_furg AND status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 27 CALL msg(numero_msg) NEXT FIELD cod_furg END IF DISPLAY BY NAME furgones.descrip_furg END IF #END IF AFTER FIELD cantidad IF furgonart.cantidad IS NULL OR furgonart.cantidad = 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad 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 RETURN END IF INITIALIZE embarques.descrip_emb,furgones.descrip_furg, articulos.descrip_esp,articulos.unidad_med TO NULL IF furgonart.cod_embarque IS NULL OR furgonart.cod_embarque = 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF UPDATE cotb00004 SET cod_embarque = furgonart.cod_embarque, cod_furg = furgonart.cod_furg, cantidad = furgonart.cantidad, us_mod = USER, fech_mod = CURRENT WHERE cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE cotb00004 SET status_t = "E" WHERE cod_n = furgonart.cod_n AND cod_grupo = furgonart.cod_grupo AND cod_tipo = furgonart.cod_tipo AND cod_sec = furgonart.cod_sec AND cod_furg = furgonart.cod_furg AND cod_embarque = furgonart.cod_embarque LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION