Files
MBS/PROYECTOS/irdir/irprmt014.4gl
T

243 lines
6.9 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IRPRMT014
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Maestra Movimientos Por Usuario
PROGRAMADOR : Tadeo A. Ferreras F.
FECHA REALIZACION : mayo 06, 1996
------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE p_irtb18 RECORD LIKE irtb00018.*
DEFINE usu_ant CHAR(9)
DEFINE descrip CHAR(30)
DEFINE numero INTEGER
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL irprmt014()
END MAIN
FUNCTION irprmt014()
CLEAR SCREEN
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM irfmmt014 FROM "irfmmt014"
DISPLAY FORM irfmmt014
CALL pantalla()
DISPLAY "irprmt014" AT 4,3
DISPLAY "Maestra de Movimientos Por Usuario" at 6,23
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
CLEAR FORM
LET INT_FLAG = FALSE
CALL irpcad014()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
LET INT_FLAG = FALSE
CALL irpcmf014()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION irpcad014()
## Captura los datos que va a contener el registro
INPUT BY NAME p_irtb18.*
## Verifica que el codigo no exista en el catalogo de p_irtb18. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_mov
IF p_irtb18.cod_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT i.descrip_mov INTO descrip FROM irtb00005 i
WHERE i.cod_mov = p_irtb18.cod_mov
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
DISPLAY BY NAME descrip
AFTER FIELD usuario
IF p_irtb18.usuario IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD usuario
END IF
SELECT UNIQUE i.* FROM irtb00018 i
WHERE i.cod_mov = p_irtb18.cod_mov AND
i.usuario = p_irtb18.usuario
IF status != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_mov
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 irtb00018 VALUES (p_irtb18.*)
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
END FUNCTION
FUNCTION irpcmf014()
CLEAR FORM
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON a.cod_mov,a.usuario
FROM cod_mov,usuario
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = "SELECT UNIQUE a.rowid,a.*,b.descrip_mov ",
"FROM irtb00018 a, irtb00005 b ",
"WHERE a.cod_mov = b.cod_mov AND ",criterio CLIPPED,
"ORDER BY a.cod_mov,a.usuario "
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO numero,p_irtb18.*,descrip
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY BY NAME p_irtb18.*,descrip
MENU "OPCIONES "
COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO numero,p_irtb18.*,descrip
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME p_irtb18.*,descrip
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO numero,p_irtb18.*,descrip
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME p_irtb18.*,descrip
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO numero,p_irtb18.*,descrip
DISPLAY BY NAME p_irtb18.*,descrip
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO numero,p_irtb18.*,descrip
DISPLAY BY NAME p_irtb18.*,descrip
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger" "<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
LET usu_ant = p_irtb18.usuario
INPUT BY NAME p_irtb18.* WITHOUT DEFAULTS
## Verifica que el codigo no exista en el catalogo de p_irtb18. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_mov
IF p_irtb18.cod_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT i.descrip_mov INTO descrip FROM irtb00005 i
WHERE i.cod_mov = p_irtb18.cod_mov
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
DISPLAY BY NAME descrip
AFTER FIELD usuario
IF p_irtb18.usuario IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD usuario
END IF
SELECT UNIQUE i.* FROM irtb00018 i
WHERE i.cod_mov = p_irtb18.cod_mov AND
i.usuario = p_irtb18.usuario AND
i.usuario != usu_ant
IF status != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE irtb00018 SET (cod_mov,usuario)=(p_irtb18.cod_mov,p_irtb18.usuario)
WHERE rowid = numero
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY ("L") "eLiminar"
DELETE FROM irtb00018 WHERE rowid = numero
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar" "Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION