Files
MBS/PROYECTO/codir/coprmt017.4gl
T

259 lines
7.7 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : COPRMT017
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Formas de Embarque.
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : AGOSTO 1997
------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
FUNCTION coprmt017()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM cofmmt017 FROM "cofmmt017"
DISPLAY FORM cofmmt017
CALL pantalla()
DISPLAY "coprmt017" AT 4,3
DISPLAY "Formas de Embarque" AT 6,31
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Delete> Cancela Operacion"
CLEAR FORM
CALL copcad017()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
CALL copcmf017()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION copcad017()
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME embarques.*
## Verifica que el codigo no exista en el catalogo de formas de embarques.
## Si existe, entonces despliega los datos del registro existente.
AFTER FIELD cod_embarque
IF embarques.cod_embarque = 0 OR
embarques.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 = embarques.cod_embarque
IF STATUS != NOTFOUND THEN
IF embarques.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD cod_embarque
END IF
DISPLAY BY NAME embarques.*
LET numero_msg = 12
CALL msg(numero_msg)
LET embarques.descrip_emb = NULL
NEXT FIELD cod_embarque
END IF
END IF
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
AFTER FIELD descrip_emb
IF embarques.descrip_emb IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_emb
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF embarques.descrip_emb IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_emb
ELSE
INSERT INTO cotb00027 VALUES (embarques.cod_embarque,
embarques.descrip_emb, 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 embarques.cod_embarque = NULL
LET embarques.descrip_emb = NULL
NEXT FIELD cod_embarque
END IF
AFTER FIELD fech_mod
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION copcmf017()
WHENEVER ERROR CONTINUE
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON cotb00027.* FROM cotb00027.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM cotb00027 where ",
" status_t is null AND ",
criterio clipped,
" ORDER BY 1"
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 embarques.*
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
DISPLAY BY NAME embarques.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO embarques.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME embarques.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO embarques.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME embarques.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO embarques.*
DISPLAY BY NAME embarques.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO embarques.*
DISPLAY BY NAME embarques.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
IF embarques.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME embarques.descrip_emb,
embarques.us_crea,
embarques.fech_crea,
embarques.us_mod,
embarques.fech_mod WITHOUT DEFAULTS
AFTER FIELD descrip_emb
IF embarques.descrip_emb IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_emb
END IF
AFTER INPUT
#### Verifica si el usuario presiono la tecla <Delete>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE cotb00027 SET descrip_emb = embarques.descrip_emb,
us_mod = USER,
fech_mod = CURRENT
WHERE cod_embarque = embarques.cod_embarque
CALL integridad()
IF bandera = 1 THEN
RETURN
END IF
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE cotb00027 SET status_t = "E"
WHERE cod_embarque = embarques.cod_embarque
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION