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

255 lines
7.2 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : ACPRMT002
OBJETIVO : Mantenimiento a la maestra de cod_mov.
PROGRAMADOR : Tadeo A. Ferreras.
FECHA REALIZACION : Sept. 27, 1993.
------------------------------------------------------------------
}
GLOBALS "acprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" user usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL acprmt002()
END MAIN
FUNCTION acprmt002()
# WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM acfmmt002 FROM "acfmmt002"
DISPLAY FORM acfmmt002
# CALL pantalla()
DISPLAY "acprmt002" AT 4,3
DISPLAY "Maestra de Movimientos" AT 6,29
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Supr> Cancela Operacion"
CLEAR FORM
CALL acpcad002()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Supr> Cancela Operacion"
CLEAR FORM
CALL acpcmf002()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
CLEAR FORM
END MENU
END FUNCTION
FUNCTION acpcad002()
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME categ.*
## Verifica que el cod_mov no exista en el catalogo de categ. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_mov
IF categ.cod_mov is null then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
#### Verifica que el el cod_mov asignado al categ no exista
SELECT a.* FROM actb00002 a
WHERE a.cod_mov = categ.cod_mov
IF status != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
AFTER FIELD descrip
IF categ.descrip IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip
END IF
AFTER FIELD tipo_mov
IF categ.tipo_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_mov
END IF
AFTER FIELD uso
IF categ.uso IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD uso
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
#### Proceso para insertar la informacion en las tablas necesarias
INSERT INTO actb00002 VALUES (categ.*)
UPDATE actb00002 set (us_crea,fech_crea) = (usuarios,getdate())
WHERE cod_mov = categ.cod_mov
LET numero_msg = 1
CALL msg(numero_msg)
END FUNCTION
###### Funcion de modificacion
FUNCTION acpcmf002()
WHENEVER ERROR CONTINUE
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON a.cod_mov,a.descrip
FROM cod_mov,descrip
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 actb00002 a ",
"WHERE a.status_t IS NULL AND ",
criterio CLIPPED, " ORDER BY a.cod_mov "
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO categ.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY BY NAME categ.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO categ.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME categ.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO categ.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME categ.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO categ.*
DISPLAY BY NAME categ.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO categ.*
DISPLAY BY NAME categ.*
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
INPUT BY NAME categ.descrip THRU categ.fech_mod
WITHOUT DEFAULTS
AFTER FIELD descrip
IF categ.descrip IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip
END IF
AFTER FIELD tipo_mov
IF categ.tipo_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_mov
END IF
AFTER FIELD uso
IF categ.uso IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD uso
END IF
##### Chequea que el numero de cuenta a digitar exista en el catalogo
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 actb00002 SET (descrip,tipo_mov,uso,us_mod,fech_mod) =
(categ.descrip,categ.tipo_mov,categ.uso,
usuarios,getdate())
WHERE @cod_mov = categ.cod_mov
LET numero_msg = 13
CALL msg(numero_msg)
#### Proceso para eliminar un registro logicamente
COMMAND KEY ("L") "eLiminar"
UPDATE actb00002 SET (status_t,us_mod,fech_mod) =
("E",usuarios,getdate())
WHERE @cod_mov = categ.cod_mov
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
EXIT MENU
CLEAR FORM
END MENU
END FUNCTION