Files
MBS/PROYECTO/addir/adprmt027.4gl
T

334 lines
9.5 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : ADPRMT027
OBJETIVO : Capturar, Modificar registros de la
Tabla de vACACIONES
PROGRAMADOR : Lic. oscar castillo
FECHA REALIZACION : 30 de Nov. de 1999
------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
DEFINE vaca RECORD
ano SMALLINT,
num_emp SMALLINT,
cod_puesto SMALLINT,
nom1_emp CHAR(20),
nom2_emp CHAR(20),
apell1_emp CHAR(20),
apell2_emp CHAR(20),
cedula CHAR(11),
serie CHAR(4),
nomina CHAR(1),
fecha_ing DATE,
nom_puesto CHAR(25),
fech_vac DATE
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
let usuarios = "kpolanco"
let clave = "RevolutionX3"
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL adprmt027()
END MAIN
FUNCTION adprmt027()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM adfmmt027 FROM "adfmmt027"
DISPLAY FORM adfmmt027
DISPLAY "adprmt027" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Maestra de Empleados" AT 6,33 ATTRIBUTE(BLACK)
MENU
ON ACTION nuevo
let int_flag = false
INITIALIZE emplea.* TO NULL
CALL adpcad027()
ON ACTION buscar
let int_flag = false
CALL adpcmf027()
ON ACTION Salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION adpcad027()
# # WHENEVER ERROR CONTINUE
## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO
INPUT BY NAME vaca.ano,vaca.num_emp,
vaca.cod_puesto,
vaca.fech_vac,
vaca.fecha_ing
AFTER FIELD cod_puesto
IF vaca.cod_puesto IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_puesto
END IF
SELECT @nom_puesto INTO vaca.nom_puesto FROM adtb00004
WHERE @cod_puesto = vaca.cod_puesto
DISPLAY BY NAME vaca.nom_puesto
AFTER FIELD num_emp
IF vaca.num_emp IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
SELECT a.num_emp
FROM vacaciones a
WHERE a.num_emp = vaca.num_emp AND a.ano = vaca.ano
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
SELECT a.nom1_emp,a.cod_puesto,a.nom2_emp,a.apell1_emp,a.apell2_emp,
a.cedula,a.serie,a.nomina
INTO vaca.nom1_emp,vaca.cod_puesto,vaca.nom2_emp,vaca.apell1_emp,vaca.apell2_emp,
vaca.cedula,vaca.serie,vaca.nomina
FROM adtb00003 a
WHERE a.num_emp = vaca.num_emp
AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
DISPLAY BY NAME vaca.nom1_emp,vaca.nom2_emp,
vaca.apell1_emp,vaca.apell2_emp,
vaca.cedula,vaca.serie,
vaca.nomina
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## SI NO HAY NINGUN PROBLEMA SE PROCEDE A INSERTAR EL REGISTRO
IF vaca.num_emp IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
ELSE
INSERT INTO vacaciones VALUES (vaca.ano,vaca.num_emp,vaca.cod_puesto,
vaca.nom1_emp,vaca.nom2_emp,
vaca.apell1_emp,vaca.apell2_emp,
vaca.cedula,vaca.serie,
vaca.nomina,vaca.fecha_ing,
vaca.nom_puesto,vaca.fech_vac,null)
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
END IF
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION adpcmf027()
DEFINE elimina CHAR(3)
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA
## MODIFICACION DE REGISTROS
## WHENEVER ERROR CONTINUE
CONSTRUCT BY NAME criterio ON a.ano,a.num_emp,a.cod_puesto,
a.nom1_emp,a.nom2_emp,
a.apell1_emp,a.apell2_emp,
a.cedula,a.serie,
a.nomina,a.fecha_ing,a.fech_vac
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT a.ano,a.num_emp,a.cod_puesto,a.nom1_emp,a.nom2_emp, ",
" a.apell1_emp,a.apell2_emp, ",
" a.cedula,a.serie,a.nomina,CONVERT(CHAR(10),a.fecha_ing,103), ",
" a.nom_puesto,CONVERT(CHAR(10),a.fech_vac,103) ",
" FROM vacaciones a ",
" WHERE ",
criterio clipped,
" ORDER BY a.num_emp"
PREPARE busca FROM selec
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
DECLARE dato SCROLL CURSOR FOR busca
OPEN dato
FETCH FIRST dato INTO vaca.*
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
ELSE
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
END IF
DISPLAY BY NAME vaca.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT dato INTO vaca.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME vaca.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS dato INTO vaca.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME vaca.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST dato INTO vaca.*
DISPLAY BY NAME vaca.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST dato INTO vaca.*
DISPLAY BY NAME vaca.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND KEY("L") "eLiminar"
LET elimina = fgl_winquestion("ELIMINAR","ESTA SEGURO DE ELIMINAR EL REGISTRO?","NO","YES|NO","QUESTION",0)
IF elimina = "YES" THEN
DELETE FROM vacaciones WHERE ano = vaca.ano AND num_emp = vaca.num_emp
CALL fgl_winmessage("WARNING","REGISTRO ELIMINADO","STOP")
END IF
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
IF depto.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
## SE SELECCIONAN LOS CAMPOS QUE SON MODIFICABLES
INPUT BY NAME vaca.cod_puesto,
vaca.fech_vac,vaca.fecha_ing WITHOUT DEFAULTS
AFTER FIELD cod_puesto
IF vaca.cod_puesto IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_puesto
END IF
SELECT @nom_puesto INTO vaca.nom_puesto FROM adtb00004
WHERE @cod_puesto = vaca.cod_puesto
DISPLAY BY NAME vaca.nom_puesto
#### Verifica si el usuario presiono la tecla <Ctrl-C>
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
## AQUI SE ACTUALIZA EL REGISTRO
UPDATE vacaciones SET cod_puesto = vaca.cod_puesto,
nom_puesto = vaca.nom_puesto,
fecha_ing = vaca.fecha_ing,
fech_vac = vaca.fech_vac
WHERE vacaciones.num_emp = vaca.num_emp AND
vacaciones.ano = vaca.ano
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
{
## AQUI SE ELIMINAN LOS REGISTROS
COMMAND KEY ("L") "eLiminar"
UPDATE adtb00001 SET status_t = "E"
WHERE departamento = depto.departamento
LET numero_msg = 39
CALL msg(numero_msg)
}
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION