255 lines
7.2 KiB
Plaintext
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
|