Files
MBS/PROYECTO/nodir/noprmt020.4gl
T

226 lines
5.6 KiB
Plaintext

{
-----------------------------------------------------------------------
PROGRAMA : NOPRMT020
OBJETIVO : Maestra Porcentual de Accidente de Trabajo.
PROGRAMADOR : Tadeo A. Ferreras F.
FECHA : Marzo 22, 1995.
------------------------------------------------------------------------
}
GLOBALS
"noprgb000.4gl"
### Variable para almacenar los datos a insertar
DEFINE notb18 RECORD LIKE notb00018.*
## Variable para manejar el nombre del empleado
DEFINE nomb1,apell1 CHAR(15)
FUNCTION noprmt020()
CLEAR SCREEN
CALL pantalla()
OPTIONS
FORM LINE 9,
PROMPT LINE 12,
ERROR LINE 24,
COMMENT LINE 23
DISPLAY "noprmt020" AT 4,2
DISPLAY "Maestra Porcentual de Accidente de Trabajo" AT 6,19
LET formulario = formulario CLIPPED,"nofmmt021"
OPEN FORM nofmmt021 FROM "nofmmt021"
DISPLAY FORM nofmmt021
# Seccion de captura de informacion general de la generacion de
# la nomina
LET int_flag = false
MENU "OPCIONES"
COMMAND "Adicionar" "Presiones ESC para adicionar, CTRL-C para cancelar"
CALL noprad020()
CLEAR FORM
COMMAND "Consulta-Modificar"
"Presiones ESC para Actualizar, CTRL-C para cancelar"
CLEAR FORM
CALL noprmd020()
COMMAND "Salir"
EXIT MENU
END MENU
END FUNCTION
#### Funcion para captura los datos de adiccion
FUNCTION noprad020()
INPUT BY NAME notb18.*
AFTER FIELD num_emp
IF notb18.num_emp IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
## Verifica que el registro no exista
SELECT a.* FROM notb00018 a WHERE a.num_emp = notb18.num_emp
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
### Busca el nombre del empleado
SELECT a.nom1_emp,a.apell1_emp INTO nomb1,apell1 FROM adtb00003 a
WHERE a.num_emp = notb18.num_emp AND (a.status_t = "I" OR
a.status_t IS NULL)
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED
DISPLAY BY NAME nombre
AFTER FIELD Porc_accidente
IF notb18.Porc_accidente IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD porc_accidente
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
INSERT INTO notb00018 VALUES (notb18.num_emp,notb18.porc_accidente,
NULL,USER,CURRENT,NULL,NULL)
END FUNCTION
FUNCTION noprmd020()
CONSTRUCT criterio ON a.num_emp,a.porc_accidente FROM num_emp,porc_accidente
LET selec1 =
"SELECT a.*,b.nom1_emp,b.apell1_emp FROM notb00018 a,adtb00003 b ",
"WHERE a.num_emp = b.num_emp AND a.status_t IS NULL AND ",
" (b.status_t IS NULL OR b.status_t = 'I') AND ",criterio CLIPPED,
" ORDER BY a.num_emp "
PREPARE comando FROM selec1
DECLARE busca SCROLL CURSOR FOR comando
OPEN busca
FETCH FIRST busca INTO notb18.*,nomb1,apell1
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED
DISPLAY BY NAME notb18.*,nombre
MENU "OPCIONES"
COMMAND "Siguiente"
FETCH NEXT busca INTO notb18.*,nomb1,apell1
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED
DISPLAY BY NAME notb18.*,nombre
COMMAND "Anterior"
FETCH PREVIOUS busca INTO notb18.*,nomb1,apell1
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED
DISPLAY BY NAME notb18.*,nombre
COMMAND "Primero"
FETCH FIRST busca INTO notb18.*,nomb1,apell1
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED
DISPLAY BY NAME notb18.*,nombre
COMMAND "Ultimo"
FETCH LAST busca INTO notb18.*,nomb1,apell1
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED
DISPLAY BY NAME notb18.*,nombre
COMMAND "Escoger"
### Captura de informacion a actualizar
INPUT BY NAME notb18.porc_accidente THRU notb18.fech_mod WITHOUT DEFAULTS
AFTER FIELD Porc_accidente
IF notb18.Porc_accidente IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD porc_accidente
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
UPDATE notb00018 SET porc_accidente = notb18.porc_accidente,
us_mod = user,
fech_mod = CURRENT
WHERE @num_emp = notb18.num_emp
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY("L") "eLiminar"
### Elimina un registro en forma logica
UPDATE notb00018 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
WHERE @num_emp = notb18.num_emp AND @status_t IS NULL
COMMAND "Retornar"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION