718 lines
21 KiB
Plaintext
718 lines
21 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : NOPRMT002
|
|
OBJETIVO : Capturar, Modificar, Eliminar registros de la
|
|
Tabla de Movimientos Fijos del Empleado
|
|
PROGRAMADOR : Ing. Betania Guerrero Perez
|
|
FECHA REALIZACION : Agosto 20, 1993
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "noprgb000.4gl"
|
|
DEFINE opcion STRING
|
|
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 noprmt002()
|
|
END MAIN
|
|
|
|
FUNCTION noprmt002()
|
|
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 9,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
LET formulario = formulario CLIPPED,"nofmmt002"
|
|
OPEN FORM nofmmt002 FROM "nofmmt002"
|
|
DISPLAY FORM nofmmt002
|
|
#CALL pantalla()
|
|
DISPLAY "noprmt002" AT 4,3
|
|
DISPLAY "Movimientos Fijos del Empleado" AT 6,25
|
|
|
|
MENU
|
|
ON ACTION nuevo
|
|
|
|
LET int_flag = false
|
|
CLEAR FORM
|
|
CALL nopcad002()
|
|
ON ACTION buscar
|
|
|
|
LET int_flag = false
|
|
CALL nopcmf002()
|
|
ON ACTION Salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION nopcad002()
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
LABEL vuelve:
|
|
INPUT BY NAME fijo.num_emp
|
|
|
|
## VENTANA PARA BUSCAR LOS EMPLEADOS
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD (num_emp)
|
|
CALL busca_empleado()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 159
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
LET descrip1 = nombre
|
|
LET fijo.num_emp = despl_emp[curr].num_emp
|
|
LET fijo.departamento = despl_emp[curr].departamento
|
|
LET fijo.nivel_emp = despl_emp[curr].nivel_emp
|
|
LET fijo.cod_puesto = despl_emp[curr].cod_puesto
|
|
DISPLAY BY NAME fijo.num_emp,fijo.departamento,fijo.nivel_emp,
|
|
fijo.cod_puesto,descrip1
|
|
EXIT INPUT
|
|
END CASE
|
|
|
|
## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO.
|
|
### CHEQUEA QUE EL EMPLEADO EXISTA EN LA TABLA DE EMPLEADOS.
|
|
AFTER FIELD num_emp
|
|
IF fijo.num_emp IS NOT NULL THEN
|
|
SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp,
|
|
apell1_emp,apell2_emp INTO fijo.departamento,
|
|
fijo.nivel_emp,fijo.cod_puesto,nombre1,nombre2,
|
|
apellido1,apellido2 FROM adtb00003
|
|
WHERE num_emp = fijo.num_emp and (status_t is null or
|
|
status_t = "I")
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",
|
|
apellido1 clipped," ",apellido2 clipped
|
|
DISPLAY BY NAME fijo.departamento,fijo.nivel_emp,fijo.cod_puesto,
|
|
descrip1
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
INPUT ARRAY arr_fijo FROM consart.*
|
|
|
|
## VENTANA QUE BUSCA LOS MOVIMIENTOS
|
|
ON KEY (CONTROL-W)
|
|
LET curr1 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CASE
|
|
WHEN INFIELD (cod_mov)
|
|
CALL busca_movimientos()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 34
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
SELECT descrip_mov INTO mov_nomi.descrip_mov
|
|
FROM notb00002
|
|
WHERE cod_mov = arr_fijo[curr1].cod_mov and status_t is null
|
|
|
|
LET arr_fijo[curr1].descrip_mov = mov_nomi.descrip_mov
|
|
DISPLAY arr_fijo[curr1].descrip_mov to consart[scr_l].descrip_mov
|
|
LET control = "N"
|
|
CALL repite()
|
|
IF control = "S" THEN
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
END CASE
|
|
|
|
AFTER FIELD cod_mov
|
|
LET curr1 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
IF arr_fijo[curr1].cod_mov IS NOT NULL THEN
|
|
LET control = "N"
|
|
CALL repite()
|
|
IF control = "S" THEN
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
SELECT descrip_mov INTO mov_nomi.descrip_mov
|
|
FROM notb00002
|
|
WHERE cod_mov = arr_fijo[curr1].cod_mov and status_t is null
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 34
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
LET arr_fijo[curr1].descrip_mov = mov_nomi.descrip_mov
|
|
DISPLAY arr_fijo[curr1].descrip_mov to consart[scr_l].descrip_mov
|
|
|
|
SELECT unique cod_mov FROM notb00003
|
|
WHERE num_emp = fijo.num_emp and cod_mov = arr_fijo[curr1].cod_mov
|
|
|
|
IF status != notfound THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
SELECT unique cod_mov FROM notb00007
|
|
WHERE num_emp = fijo.num_emp and cod_mov = arr_fijo[curr1].cod_mov
|
|
|
|
IF status != notfound THEN
|
|
DELETE FROM notb00007 WHERE cod_mov = arr_fijo[curr1].cod_mov
|
|
and num_emp = fijo.num_emp
|
|
END IF
|
|
END IF
|
|
AFTER FIELD VALOR
|
|
IF arr_fijo[curr1].cod_mov IS NOT NULL THEN
|
|
IF arr_fijo[curr1].valor IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD valor
|
|
END IF
|
|
END IF
|
|
END INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
## SI NO EXISTE NINGUN PROBLEMA EN LA ENTRADA DE INFORMACION SE PROCEDE
|
|
## A INSERTAR EL REGISTRO
|
|
FOR idx = 1 to arr_fijo.getLength()
|
|
IF arr_fijo[idx].cod_mov is not null THEN
|
|
IF arr_fijo[idx].valor IS NOT NULL THEN
|
|
|
|
INSERT INTO notb00003
|
|
VALUES(fijo.num_emp,fijo.departamento,fijo.nivel_emp,
|
|
fijo.cod_puesto,arr_fijo[idx].cod_mov,arr_fijo[idx].cantidad,
|
|
arr_fijo[idx].valor,null,usuarios,GETDATE(),null,NULL)
|
|
|
|
|
|
INSERT INTO notb00003_log
|
|
(
|
|
num_emp
|
|
,departamento
|
|
,nivel_emp
|
|
,cod_puesto
|
|
,cod_mov
|
|
,cantidad
|
|
,valor
|
|
,us_crea
|
|
,fech_crea
|
|
,operacion
|
|
,fecha_operacion)
|
|
VALUES
|
|
(
|
|
fijo.num_emp,fijo.departamento
|
|
,fijo.nivel_emp
|
|
,fijo.cod_puesto
|
|
,arr_fijo[idx].cod_mov,arr_fijo[idx].cantidad,
|
|
arr_fijo[idx].valor,usuarios,GETDATE(),"ADICIONANDO",getdate())
|
|
|
|
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
|
|
IF status < 0 THEN
|
|
CALL integridad()
|
|
CLEAR FORM
|
|
END IF
|
|
GOTO vuelve
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION nopcmf002()
|
|
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA
|
|
## MODIFICACION DE REGISTROS.
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
CONSTRUCT criterio ON num_emp,departamento
|
|
FROM notb00003.num_emp,notb00003.departamento
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET SELEC = " SELECT UNIQUE num_emp,departamento,nivel_emp,cod_puesto ",
|
|
" FROM notb00003 where ",
|
|
" status_t is null and ",
|
|
criterio clipped,
|
|
" ORDER BY 1,2,3,4"
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO fijo.num_emp,fijo.departamento,
|
|
fijo.nivel_emp,fijo.cod_puesto
|
|
|
|
IF status >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
CALL selecciona()
|
|
|
|
MENU "OPCION"
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos INTO fijo.num_emp,fijo.departamento,
|
|
fijo.nivel_emp,fijo.cod_puesto
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
CALL selecciona()
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO fijo.num_emp,fijo.departamento,
|
|
fijo.nivel_emp,fijo.cod_puesto
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
CALL selecciona()
|
|
|
|
COMMAND "Primero"
|
|
"Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO fijo.num_emp,fijo.departamento,
|
|
fijo.nivel_emp,fijo.cod_puesto
|
|
CALL selecciona()
|
|
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Ultimo"
|
|
"Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO fijo.num_emp,fijo.departamento,
|
|
fijo.nivel_emp,fijo.cod_puesto
|
|
CALL selecciona()
|
|
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Escoger"
|
|
"<Esc> Actualiza Registro <CTRL-C> Cancela Operacion"
|
|
IF fijo.status_t = "E" THEN
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
## AQUI SE MODIFICAN LOS MOVIMIENTOS
|
|
CALL arr_fijo.clear()
|
|
|
|
## SELECCIONA LOS CAMPOS DEL ARREGLO
|
|
DECLARE buscando CURSOR FOR
|
|
SELECT UNIQUE a.cod_mov,b.descrip_mov,a.cantidad,a.valor
|
|
FROM notb00003 a,notb00002 b
|
|
WHERE a.cod_mov = b.cod_mov and
|
|
a.num_emp = fijo.num_emp and
|
|
a.status_t is null
|
|
ORDER BY 1
|
|
LET idx = 1
|
|
|
|
FOREACH buscando INTO arr_fijo[idx].*
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx - 1)
|
|
|
|
INPUT ARRAY arr_fijo WITHOUT DEFAULTS FROM consart.*
|
|
|
|
## VENTANA QUE BUSCA LOS MOVIMIENTOS
|
|
ON KEY (CONTROL-W)
|
|
LET curr1 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CASE
|
|
WHEN INFIELD (cod_mov)
|
|
CALL busca_movimientos()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 34
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
SELECT descrip_mov
|
|
INTO mov_nomi.descrip_mov
|
|
FROM notb00002
|
|
WHERE cod_mov = arr_fijo[curr1].cod_mov and
|
|
status_t is null
|
|
|
|
LET arr_fijo[curr1].descrip_mov = mov_nomi.descrip_mov
|
|
DISPLAY arr_fijo[curr1].cod_mov to consart[scr_l].cod_mov
|
|
DISPLAY arr_fijo[curr1].descrip_mov to consart[scr_l].descrip_mov
|
|
LET control = "N"
|
|
CALL repite()
|
|
IF control = "S" THEN
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
END CASE
|
|
|
|
AFTER FIELD VALOR
|
|
IF arr_fijo[curr1].cod_mov IS NOT NULL THEN
|
|
IF arr_fijo[curr1].valor IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD valor
|
|
END IF
|
|
END IF
|
|
AFTER FIELD cod_mov
|
|
LET curr1 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
IF arr_fijo[curr1].cod_mov IS NOT NULL THEN
|
|
LET control = "N"
|
|
CALL repite()
|
|
IF control = "S" THEN
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
SELECT descrip_mov
|
|
INTO mov_nomi.descrip_mov
|
|
FROM notb00002
|
|
WHERE cod_mov = arr_fijo[curr1].cod_mov and
|
|
status_t is null
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 34
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
LET arr_fijo[curr1].descrip_mov = mov_nomi.descrip_mov
|
|
DISPLAY arr_fijo[curr1].descrip_mov to consart[scr_l].descrip_mov
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF status < 0 THEN
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
## AQUI SE REALIZA LA ACTUALIZACION DEL REGISTRO
|
|
BEGIN WORK
|
|
|
|
INSERT INTO notb00003_log
|
|
(
|
|
num_emp
|
|
,departamento
|
|
,nivel_emp
|
|
,cod_puesto
|
|
,cod_mov
|
|
,cantidad
|
|
,valor
|
|
,us_crea
|
|
,fech_crea
|
|
,operacion
|
|
,fecha_operacion)
|
|
SELECT a.num_emp
|
|
,a.departamento
|
|
,a.nivel_emp
|
|
,a.cod_puesto
|
|
,a.cod_mov
|
|
,a.cantidad
|
|
,a.valor
|
|
,a.us_crea
|
|
,a.fech_crea
|
|
,'MODIFICANDO'
|
|
,getdate()
|
|
FROM notb00003 a WHERE a.num_emp = fijo.num_emp
|
|
|
|
DELETE FROM notb00003
|
|
WHERE num_emp = fijo.num_emp
|
|
|
|
|
|
FOR idx = 1 to arr_fijo.getLength()
|
|
IF arr_fijo[idx].cod_mov is not null THEN
|
|
IF arr_fijo[idx].valor IS NOT NULL THEN
|
|
|
|
INSERT INTO notb00003
|
|
(num_emp
|
|
,departamento
|
|
,nivel_emp
|
|
,cod_puesto
|
|
,cod_mov
|
|
,cantidad
|
|
,valor
|
|
,us_mod
|
|
,fech_mod)
|
|
VALUES
|
|
(fijo.num_emp,fijo.departamento,
|
|
fijo.nivel_emp,fijo.cod_puesto,arr_fijo[idx].cod_mov,
|
|
arr_fijo[idx].cantidad,arr_fijo[idx].valor,
|
|
usuarios,GETDATE())
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR",SQLCA.sqlerrm,"exclamation")
|
|
CONTINUE MENU
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
COMMIT WORK
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
|
|
IF status < 0 THEN
|
|
CALL integridad()
|
|
END IF
|
|
|
|
COMMAND KEY ("L") "eLiminar"
|
|
LET opcion = fgl_winquestion("ADVERTENCIA","ESTA SEGURO DE DESACTIVAR ESTE REGISTRO?","NO","YES|NO","QUESTION",0)
|
|
IF opcion = "YES" THEN
|
|
UPDATE notb00003 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_emp = fijo.num_emp
|
|
|
|
INSERT INTO notb00003_log
|
|
(
|
|
num_emp
|
|
,departamento
|
|
,nivel_emp
|
|
,cod_puesto
|
|
,cod_mov
|
|
,cantidad
|
|
,valor
|
|
,us_crea
|
|
,fech_crea
|
|
,operacion
|
|
,fecha_operacion)
|
|
SELECT a.num_emp
|
|
,a.departamento
|
|
,a.nivel_emp
|
|
,a.cod_puesto
|
|
,a.cod_mov
|
|
,a.cantidad
|
|
,a.valor
|
|
,a.us_crea
|
|
,a.fech_crea
|
|
,'ELIMINADO'
|
|
,getdate()
|
|
FROM notb00003 a WHERE a.num_emp = fijo.num_emp
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
COMMAND "Retornar"
|
|
"Retorna al menu anterior"
|
|
CLEAR FORM
|
|
|
|
FOR idx = 1 to 3
|
|
LET arr_fijo[idx].cod_mov = NULL
|
|
LET arr_fijo[idx].descrip_mov = NULL
|
|
LET arr_fijo[idx].cantidad = NULL
|
|
LET arr_fijo[idx].valor = NULL
|
|
|
|
DISPLAY arr_fijo[idx].cod_mov to consart[idx].cod_mov
|
|
DISPLAY arr_fijo[idx].descrip_mov to consart[idx].descrip_mov
|
|
DISPLAY arr_fijo[idx].cantidad to consart[idx].cantidad
|
|
DISPLAY arr_fijo[idx].valor to consart[idx].valor
|
|
END FOR
|
|
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
## VENTANA PARA DESPLEGAR LOS MOVIMIENTOS
|
|
|
|
FUNCTION busca_movimientos()
|
|
OPEN WINDOW busqueda AT 5,5 WITH FORM "nofmwd001"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
|
|
CONSTRUCT criterio ON notb00002.descrip_mov FROM notb00002.descrip_mov
|
|
|
|
LET selec3 = "SELECT cod_mov,descrip_mov,cantidad,valor ",
|
|
"FROM notb00002 ",
|
|
" WHERE ",
|
|
" status_t is null AND ",
|
|
criterio clipped,
|
|
"ORDER BY 1 "
|
|
|
|
PREPARE busca3 FROM selec3
|
|
DECLARE local CURSOR FOR busca3
|
|
|
|
LET idx = 1
|
|
FOREACH local INTO buscar_movi[idx].*
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET despl_movi[idx].cod_mov = buscar_movi[idx].cod_mov
|
|
LET despl_movi[idx].descrip_mov = buscar_movi[idx].descrip_mov clipped
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY despl_movi TO s_movimiento.*
|
|
LET curr = arr_curr()
|
|
LET arr_fijo[curr1].cod_mov = despl_movi[curr].cod_mov
|
|
LET mov_nomi.descrip_mov = despl_movi[curr].descrip_mov
|
|
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
## VENTANA DE LOS EMPLEADOS DE LA EMPRESA
|
|
|
|
FUNCTION busca_empleado()
|
|
OPEN WINDOW busqueda1 AT 7,10 WITH FORM "adfmwd004"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
|
|
CONSTRUCT criterio ON adtb00003.nom1_emp,adtb00003.nom2_emp,
|
|
adtb00003.apell1_emp,adtb00003.apell2_emp
|
|
FROM nom1_emp,apell1_emp
|
|
|
|
LET selec1 = "SELECT num_emp,departamento,nivel_emp,cod_puesto, ",
|
|
"nom1_emp,apell1_emp FROM adtb00003 ",
|
|
" WHERE ",
|
|
" (status_t is null or status_t = 'I') AND ",
|
|
criterio clipped,
|
|
"ORDER BY 1,2,3,4"
|
|
|
|
PREPARE busca1 FROM selec1
|
|
DECLARE local1 CURSOR FOR busca1
|
|
|
|
LET idx = 1
|
|
FOREACH local1 INTO buscar_emp[idx].*
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET despl_emp[idx].num_emp = buscar_emp[idx].num_emp
|
|
LET despl_emp[idx].departamento = buscar_emp[idx].departamento
|
|
LET despl_emp[idx].nivel_emp = buscar_emp[idx].nivel_emp
|
|
LET despl_emp[idx].cod_puesto = buscar_emp[idx].cod_puesto
|
|
LET despl_emp[idx].nom1_emp = buscar_emp[idx].nom1_emp clipped
|
|
LET despl_emp[idx].nom2_emp = buscar_emp[idx].nom2_emp clipped
|
|
LET despl_emp[idx].apell1_emp = buscar_emp[idx].apell1_emp clipped
|
|
LET despl_emp[idx].apell2_emp = buscar_emp[idx].apell2_emp clipped
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY despl_emp TO s_empleado.*
|
|
LET curr = arr_curr()
|
|
LET nombre =
|
|
despl_emp[curr].nom1_emp clipped," ",despl_emp[curr].nom2_emp clipped," ",
|
|
despl_emp[curr].apell1_emp clipped," ",despl_emp[curr].apell2_emp clipped
|
|
|
|
CLOSE WINDOW busqueda1
|
|
END FUNCTION
|
|
|
|
## VERIFICA QUE NO SE REPITAN LOS MOVIMIENTOS
|
|
FUNCTION repite()
|
|
DEFINE movi_ant RECORD
|
|
cod_mov SMALLINT
|
|
END RECORD
|
|
|
|
LET movi_ant.cod_mov = arr_fijo[curr1].cod_mov
|
|
|
|
FOR idx = 1 to arr_count()
|
|
IF idx != curr1 THEN
|
|
IF arr_fijo[idx].cod_mov IS NOT NULL THEN
|
|
IF arr_fijo[idx].cod_mov = movi_ant.cod_mov THEN
|
|
LET numero_msg = 135
|
|
CALL msg(numero_msg)
|
|
LET control = "S"
|
|
ELSE
|
|
IF control != "S" THEN
|
|
LET control = "N"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|
|
|
|
## SELECCIONA Y DESPLIEGA LOS DATOS DEL REGISTRO ESCOGIDO
|
|
FUNCTION selecciona()
|
|
|
|
SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp
|
|
INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00003
|
|
WHERE num_emp = fijo.num_emp
|
|
|
|
IF status = notfound THEN
|
|
|
|
LET descrip1 = "EMPLEADO NO EXISTE"
|
|
ELSE
|
|
LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",
|
|
apellido1 clipped," ",apellido2 clipped
|
|
END IF
|
|
|
|
DISPLAY BY NAME fijo.num_emp,fijo.departamento,fijo.nivel_emp,
|
|
fijo.cod_puesto,descrip1
|
|
|
|
END FUNCTION
|