Files
MBS/PROYECTO/addir/adprmt022.old.txt
T

333 lines
10 KiB
Plaintext

{
----------------------------------------------------------------------------
PROGRAMA : ADPRMT022
OBJETIVO : Modificar y Eliminar registros de la
Tabla de Maestra de Empleados
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Noviembre 19, 1993
----------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
DEFINE tipo_sexo CHAR(9)
DEFINE p_sexo CHAR(1)
FUNCTION adprmt022()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 24,
COMMENT LINE 23
OPEN FORM adfmmt022 FROM "adfmmt022"
DISPLAY FORM adfmmt022
CALL pantalla()
DISPLAY "adprmt022" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Maestra de Empleados" AT 6,33 ATTRIBUTE(BLACK)
MENU "OPCIONES"
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
let int_flag = false
CALL adpcmf022()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION adpcmf022()
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA CONSULTA Y
## MODIFICACION DE REGISTROS
DEFINE ant RECORD
num_emp SMALLINT,
departamento SMALLINT,
nivel_emp SMALLINT,
cod_puesto SMALLINT
END RECORD
# WHENEVER ERROR CONTINUE
CONSTRUCT criterio ON a.num_emp,a.departamento FROM num_emp,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 adtb00003 a ",
"WHERE (a.status_t is null OR a.status_t NOT IN('T','E')) AND ",
criterio clipped," ORDER BY a.num_emp "
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO emplea.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL selecta1()
MENU "OPCION"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO emplea.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
LET tipo_sexo = " "
CALL selecta1()
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO emplea.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
LET tipo_sexo = " "
CALL selecta1()
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO emplea.*
CALL selecta1()
LET tipo_sexo = " "
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO emplea.*
CALL selecta1()
LET tipo_sexo = " "
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger" "<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
## SE SELECCIONAN LOS CAMPOS QUE PUEDEN SER MODIFICABLES
INPUT BY NAME emplea.departamento,emplea.nivel_emp,emplea.cod_puesto,
emplea.calle,emplea.casa_num,emplea.barrio,
emplea.urbanizacion,emplea.cedula,emplea.serie,
emplea.telefono,emplea.fech_nac,emplea.cod_nac,
emplea.estado_civil,emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,emplea.cod_seg1,
emplea.cod_seg2,emplea.cod_seg3,p_sexo WITHOUT DEFAULTS
## VERIFICA QUE LOS CAMPOS MODIFICABLES NO ESTEN EN BLANCO
AFTER FIELD departamento
IF emplea.departamento IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
WHERE departamento = emplea.departamento
DISPLAY BY NAME depto.nom_dpto
AFTER FIELD cod_puesto
IF emplea.cod_puesto IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_puesto
END IF
SELECT @nom_puesto INTO puesto.nom_puesto FROM adtb00004
WHERE @cod_puesto = emplea.cod_puesto
DISPLAY BY NAME puesto.nom_puesto
AFTER FIELD nivel_emp
IF emplea.nivel_emp IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nivel_emp
END IF
AFTER FIELD estado_civil
IF emplea.estado_civil IS NOT NULL THEN
IF emplea.estado_civil = "S" THEN
LET descr = "SOLTERO"
END IF
IF emplea.estado_civil = "C" THEN
LET descr = "CASADO"
END IF
ELSE
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD estado_civil
END IF
DISPLAY BY NAME descr
AFTER FIELD sueldo_ac
IF emplea.sueldo_ac IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sueldo_ac
END IF
AFTER FIELD fech_nac
IF emplea.fech_nac IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_nac
END IF
IF YEAR(emplea.fech_nac) >= YEAR(today) THEN
ERROR "FECHA INCORRECTA"
NEXT FIELD fech_nac
END IF
AFTER FIELD nomina
IF emplea.nomina IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nomina
END IF
IF emplea.nomina = "Q" THEN
LET descrip = "QUINCENAL"
END IF
IF emplea.nomina = "S" THEN
LET descrip = "SEMANAL"
END IF
IF emplea.nomina = "V" THEN
LET descrip = "VENDEDOR"
END IF
DISPLAY BY NAME descrip
AFTER FIELD p_sexo
IF p_sexo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_sexo
END IF
IF p_sexo = "M" THEN
LET tipo_sexo = "MASCULINO"
ELSE
IF p_sexo = "F" THEN
LET tipo_sexo = "FEMENINO"
END IF
END IF
DISPLAY BY NAME tipo_sexo
#### 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
END INPUT
## AQUI SE ACTUALIZA EL REGISTRO
UPDATE adtb00003 SET (departamento,cod_puesto,nivel_emp,nom1_emp,nom2_emp,
apell1_emp,apell2_emp,calle,casa_num,barrio,
urbanizacion,telefono,cedula,serie,cod_nac,estado_civil,
tipo_sangre,sueldo_ac,nomina,paga_seg, us_mod,fech_mod)=
(emplea.departamento,emplea.cod_puesto,emplea.nivel_emp,
emplea.nom1_emp,emplea.nom2_emp,emplea.apell1_emp,
emplea.apell2_emp,emplea.calle,emplea.casa_num,
emplea.barrio,emplea.urbanizacion,emplea.telefono,
emplea.cedula,emplea.serie,emplea.cod_nac,
emplea.estado_civil,emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,USER,CURRENT)
WHERE @num_emp = emplea.num_emp
UPDATE adtb00021 SET sexo = p_sexo WHERE num_emp = emplea.num_emp AND
cod_par = 0 AND sec_par = 0
LET numero_msg = 13
CALL msg(numero_msg)
IF status < 0 THEN
CALL integridad()
END IF
## AQUI SE ELIMINAN LOS REGISTROS
COMMAND KEY ("L") "eLiminar"
UPDATE adtb00003 SET status_t = "E"
WHERE num_emp = emplea.num_emp
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar" "Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION selecta1()
SELECT a.sexo INTO p_sexo FROM adtb00021 a
WHERE a.num_emp = emplea.num_emp AND a.cod_par = 0 AND a.sec_par = 0
LET descrip1 = emplea.nom1_emp CLIPPED," ",emplea.nom2_emp CLIPPED," ",
emplea.apell1_emp CLIPPED," ",emplea.apell2_emp CLIPPED
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
WHERE departamento = emplea.departamento
SELECT @nom_puesto INTO puesto.nom_puesto FROM adtb00004
WHERE @cod_puesto = emplea.cod_puesto
IF emplea.estado_civil = "S" THEN
LET descr = "SOLTERO"
END IF
IF emplea.estado_civil = "C" THEN
LET descr = "CASADO"
END IF
IF p_sexo = "M" THEN
LET tipo_sexo = "MASCULINO"
END IF
IF p_sexo = "F" THEN
LET tipo_sexo = "FEMENINO"
END IF
IF emplea.nomina = "Q" THEN
LET descrip = "QUINCENAL"
END IF
IF emplea.nomina = "S" THEN
LET descrip = "SEMANAL"
END IF
SELECT nom_nac INTO nacion.nom_nac FROM adtb00007
WHERE cod_nac = emplea.cod_nac
DISPLAY BY NAME emplea.num_emp,emplea.departamento,emplea.nivel_emp,
emplea.cod_puesto,descrip1,emplea.calle,emplea.casa_num,
emplea.barrio,emplea.urbanizacion,emplea.cedula,
emplea.serie,emplea.fech_nac,emplea.cod_nac,
emplea.licencia,emplea.telefono,emplea.estado_civil,
emplea.tipo_sangre,emplea.sueldo_ac,emplea.nomina,
emplea.fech_efec,descr,descrip,nacion.nom_nac,
depto.nom_dpto,puesto.nom_puesto,p_sexo,tipo_sexo,
emplea.paga_seg,emplea.cod_seg1,emplea.cod_seg2,
emplea.cod_seg3
END FUNCTION