Files
MBS/PROYECTO/acdir/acprmt006.4gl
T

229 lines
7.3 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : ACPRMT006
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Catalogo de Bienes y Servicios
PROGRAMADOR : TAdeo A. Ferreras.
FECHA REALIZACION : Sept. 27, 1993.
------------------------------------------------------------------
}
GLOBALS "acprgb000.4gl"
DEFINE fecha6 DATE
DEFINE descripcion1,descripcion2,descripcion3,descripcion4,
descripcion5 CHAR(30)
FUNCTION acprmt006()
# WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM acfmmt006 FROM "acfmmt006"
DISPLAY FORM acfmmt006
CALL pantalla()
DISPLAY "acprmt006" AT 4,3
DISPLAY "Maestra de Activos Fijos Con Nuevos Codigos" AT 6,18
MENU "OPCIONES"
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Supr> Cancela Operacion"
LET INT_FLAG = FALSE
CLEAR FORM
CALL acpcmf006()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
CLEAR FORM
END MENU
END FUNCTION
###### Funcion de modificacion
FUNCTION acpcmf006()
WHENEVER ERROR CONTINUE
LET int_flag = false
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON a.codigo,a.descripcion,a.departamento
FROM codigo,descripcion,departamento
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC =
"SELECT UNIQUE a.* FROM actb00005 a ",
"WHERE ",criterio CLIPPED, " ORDER BY a.codigo "
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO activ5.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cuenta_no
SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_depr
SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_gasto
SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a
WHERE a.departamento = activ5.departamento
DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3,
descripcion4
MENU "OPCIONES "
COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO activ5.*,fecha6,estado.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cuenta_no
SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_depr
SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_gasto
SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a
WHERE a.departamento = activ5.departamento
DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3,
descripcion4
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO activ5.*,fecha6,estado.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cuenta_no
SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_depr
SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_gasto
SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a
WHERE a.departamento = activ5.departamento
DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3,
descripcion4
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO activ5.*,fecha6,estado.*
SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cuenta_no
SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_depr
SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_gasto
SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a
WHERE a.departamento = activ5.departamento
DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3,
descripcion4
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO activ5.*,fecha6,estado.*
SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cuenta_no
SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_depr
SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a
WHERE a.cuenta_no = activ5.cta_gasto
SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a
WHERE a.departamento = activ5.departamento
DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3,
descripcion4
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger" "<Esc> Actualiza Registro <Supr> Cancela Operacion"
IF estado.status_t="E" THEN
LET numero_msg= 36
CALL msg(numero_msg)
RETURN
END IF
IF activ5.status_t IS NOT NULL THEN
RETURN
END IF
INPUT BY NAME activ5.codigo_n WITHOUT DEFAULTS
AFTER FIELD codigo_n
IF activ5.codigo_n IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD codigo_n
END IF
SELECT UNIQUE a.codigo_n FROM actb00005 a
WHERE a.codigo_n = activ5.codigo_n AND a.status_t IS NULL AND
a.codigo != activ5.codigo
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD codigo_n
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
###### Proceso de Actualizacion
UPDATE actb00005 SET codigo_n = activ5.codigo_n
WHERE @codigo = activ5.codigo
LET numero_msg = 13
CALL msg(numero_msg)
#### Proceso para eliminar un registro logicamente
COMMAND KEY ("L") "eLiminar"
UPDATE actb00005 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
WHERE @codigo = activ5.codigo
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar" "Retorna al menu anterior"
EXIT MENU
CLEAR FORM
END MENU
END FUNCTION