243 lines
6.9 KiB
Plaintext
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
|
|
|