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

260 lines
8.5 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : COPRMT024
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Catalogo Bienes y Servicios Categorizados Por
Naturaleza Del Bien y/o Servicio.
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : AGOSTO 1997
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
DEFINE p_articulos RECORD LIKE cotb00021.*
FUNCTION coprmt024()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM cofmmt024 FROM "cofmmt024"
DISPLAY FORM cofmmt024
CALL pantalla()
DISPLAY "coprmt024" AT 4,3
DISPLAY "Mantenimiento Catalogo Bienes y Servicios Categorizados" AT 6,10
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Delete> Cancela Operacion"
LET int_flag = FALSE
CLEAR FORM
CALL copcad024()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
LET INT_FLAG = FALSE
CALL copcmf024()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION copcad024()
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
LET int_flag = false
INPUT BY NAME p_articulos.*
## Verifica que el codigo no exista en el catalogo de p_articulos. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_n
IF p_articulos.cod_n is null then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
AFTER FIELD cod_tipo
IF p_articulos.cod_tipo is null then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_tipo
END IF
AFTER FIELD cod_grupo
IF p_articulos.cod_grupo is null then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_grupo
END IF
AFTER FIELD cod_sec
IF (p_articulos.cod_n is null AND p_articulos.cod_grupo is null AND
p_articulos.cod_tipo is null AND p_articulos.cod_sec is null) THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
ELSE
SELECT * INTO p_articulos.* FROM cotb00021
WHERE cod_n = p_articulos.cod_n AND
cod_grupo = p_articulos.cod_grupo AND
cod_tipo = p_articulos.cod_tipo AND
cod_sec = p_articulos.cod_sec
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
CALL busca_desc()
DISPLAY BY NAME p_articulos.*
NEXT FIELD cod_n
END IF
CALL busca_desc()
IF numero_msg = 3 THEN
LET numero_msg = 0
NEXT FIELD cod_n
END IF
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
INSERT INTO cotb00021 VALUES (p_articulos.*)
UPDATE cotb00021 SET us_crea = user,
fech_crea = current
WHERE cod_n = p_articulos.cod_n AND
cod_grupo = p_articulos.cod_grupo AND
cod_tipo = p_articulos.cod_tipo AND
cod_sec = p_articulos.cod_sec
LET numero_msg = 1
CALL msg(numero_msg)
NEXT FIELD cod_n
AFTER FIELD fech_mod
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION copcmf024()
WHENEVER ERROR CONTINUE
LET int_flag = false
## Aqui se prepara para la captura del criterio de seleccion
CLEAR FORM
CONSTRUCT criterio ON cotb00021.* FROM cotb00021.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM cotb00021 WHERE status_t is null and ",
criterio clipped," ORDER BY 1,2,3,4"
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO p_articulos.*
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
CALL busca_desc()
DISPLAY BY NAME p_articulos.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO p_articulos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL busca_desc()
DISPLAY BY NAME p_articulos.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO p_articulos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL busca_desc()
DISPLAY BY NAME p_articulos.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO p_articulos.*
CALL busca_desc()
DISPLAY BY NAME p_articulos.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO p_articulos.*
CALL busca_desc()
DISPLAY BY NAME p_articulos.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
INPUT BY NAME p_articulos.categoria WITHOUT DEFAULTS
#### Verifica si el usuario presiono la tecla <Supr>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE cotb00021 SET categoria = p_articulos.categoria,
us_mod = user,
fech_mod = current
WHERE cod_n = p_articulos.cod_n AND
cod_grupo = p_articulos.cod_grupo AND
cod_tipo = p_articulos.cod_tipo AND
cod_sec = p_articulos.cod_sec
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY ("L") "eLiminar"
UPDATE intb00001 SET status_t ="E" ,
us_mod = user,
fech_mod = current
where cod_n = p_articulos.cod_n and
cod_grupo = p_articulos.cod_grupo AND
cod_tipo = p_articulos.cod_tipo AND
cod_sec = p_articulos.cod_sec
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar" "Retorna al menu anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_desc()
SELECT a.descrip_esp,unidad_med
INTO articulos.descrip_esp,articulos.unidad_med
FROM intb00001 a
WHERE a.cod_n = p_articulos.cod_n AND
a.cod_grupo = p_articulos.cod_grupo AND
a.cod_tipo = p_articulos.cod_tipo AND
a.cod_sec = p_articulos.cod_sec
IF STATUS = NOTFOUND THEN
LET articulos.descrip_esp = "ARTICULO NO EXISTE"
LET articulos.unidad_med = "XXX"
LET numero_msg = 3
CALL msg(numero_msg)
END IF
DISPLAY BY NAME articulos.descrip_esp,articulos.unidad_med
END FUNCTION