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

284 lines
8.4 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRCS002
OBJETIVO : Consulta los movimientos de los empleados, por empleado,
y todos los empleados
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Septiembre 01, 1993
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE arr_nuevo ARRAY[100] OF RECORD
cod_mov LIKE notb00008.cod_mov,
descrip_mov LIKE notb00002.descrip_mov,
cantidad LIKE notb00008.cantidad,
valor LIKE notb00008.valor
END RECORD
DEFINE ingresos RECORD
num_nomi LIKE notb00008.num_nomi,
tipo_emp LIKE notb00008.tipo_emp,
num_emp LIKE notb00008.num_emp,
departamento LIKE notb00008.departamento,
nivel_emp LIKE notb00008.nivel_emp,
cod_puesto LIKE notb00008.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp
END RECORD,
monto DECIMAL(12,2)
DEFINE idx_n SMALLINT
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 noprcs002()
END MAIN
FUNCTION noprcs002()
#WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM nofmcs002 FROM "nofmcs002"
DISPLAY FORM nofmcs002
LABEL vuelve:
CLEAR FORM
CONSTRUCT criterio ON b.num_nomi,b.tipo_emp,a.num_emp,a.departamento
FROM num_nomi,tipo_emp,num_emp,departamento
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
LET SELEC = "SELECT UNIQUE b.num_nomi,b.tipo_emp,b.num_emp,b.departamento, ",
"b.nivel_emp,b.cod_puesto,a.nom1_emp,a.apell1_emp ",
" FROM adtb00003 a,notb00008 b ",
" WHERE ",
"a.num_emp = b.num_emp and ",
"a.nomina = b.tipo_emp and ",
criterio clipped,
" ORDER BY 1,2,3,4 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 21,2
ATTRIBUTE (YELLOW)
PREPARE busca FROM selec
DECLARE accion SCROLL CURSOR FOR busca
OPEN accion
DISPLAY " " AT 21,2
LET idx = 1
FETCH FIRST accion INTO ingresos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
GOTO vuelve
END IF
IF ingresos.tipo_emp = "Q" THEN
LET descr = "QUINCENAL"
ELSE
IF ingresos.tipo_emp = "V" THEN
LET descr = "VENDEDOR"
ELSE
LET descr = "SEMANAL"
END IF
END IF
LET descrip1 = ingresos.nom1_emp clipped," ",ingresos.apell1_emp clipped
DISPLAY BY NAME ingresos.num_nomi,ingresos.tipo_emp,descr,ingresos.num_emp,
ingresos.departamento,ingresos.nivel_emp,
ingresos.cod_puesto,descrip1
MENU "OPCION"
COMMAND "Siguiente"
"Presenta en pantalla el registro Siguiente encontrado"
LET idx = 1
FETCH NEXT accion INTO ingresos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
IF ingresos.tipo_emp = "Q" THEN
LET descr = "QUINCENAL"
ELSE
IF ingresos.tipo_emp = "V" THEN
LET descr = "VENDEDOR"
ELSE
LET descr = "SEMANAL"
END IF
END IF
LET descrip1 = ingresos.nom1_emp clipped," ",ingresos.apell1_emp clipped
DISPLAY BY NAME ingresos.num_nomi,ingresos.tipo_emp,descr,
ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp,
ingresos.cod_puesto,descrip1
COMMAND "Anterior"
"Presenta en pantalla el registro Anterior encontrado"
LET idx = 1
FETCH PREVIOUS accion INTO ingresos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
IF ingresos.tipo_emp = "Q" THEN
LET descr = "QUINCENAL"
ELSE
IF ingresos.tipo_emp = "V" THEN
LET descr = "VENDEDOR"
ELSE
LET descr = "SEMANAL"
END IF
END IF
LET descrip1 = ingresos.nom1_emp clipped," ",ingresos.apell1_emp clipped
DISPLAY BY NAME ingresos.num_nomi,ingresos.tipo_emp,descr,
ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp,
ingresos.cod_puesto,descrip1
COMMAND "Primero"
"Presenta en pantalla el Primer registro encontrado"
LET idx = 1
FETCH FIRST accion INTO ingresos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
IF ingresos.tipo_emp = "Q" THEN
LET descr = "QUINCENAL"
ELSE
IF ingresos.tipo_emp = "V" THEN
LET descr = "VENDEDOR"
ELSE
LET descr = "SEMANAL"
END IF
END IF
LET descrip1 = ingresos.nom1_emp clipped," ",ingresos.apell1_emp clipped
DISPLAY BY NAME ingresos.num_nomi,ingresos.tipo_emp,descr,
ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp,
ingresos.cod_puesto,descrip1
COMMAND "Ultimo"
"Presenta en pantalla el Ultimo registro encontrado"
LET idx = 1
FETCH LAST accion INTO ingresos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
IF ingresos.tipo_emp = "Q" THEN
LET descr = "QUINCENAL"
ELSE
IF ingresos.tipo_emp = "V" THEN
LET descr = "VENDEDOR"
ELSE
LET descr = "SEMANAL"
END IF
END IF
LET descrip1 = ingresos.nom1_emp clipped," ",ingresos.apell1_emp clipped
DISPLAY BY NAME ingresos.num_nomi,ingresos.tipo_emp,descr,
ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp,
ingresos.cod_puesto,descrip1
COMMAND "Ver"
"Para ver los ingresos de este empleado"
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 21,2 ATTRIBUTE (BOLD)
DISPLAY " " AT 21,2
CALL arreglar()
COMMAND "Retornar"
EXIT MENU
END MENU
GOTO vuelve
END FUNCTION
FUNCTION arreglar()
DECLARE accion1 CURSOR FOR
SELECT a.cod_mov,b.descrip_mov,a.cantidad,a.valor
FROM notb00008 a,notb00002 b
WHERE (a.num_emp = ingresos.num_emp and
a.cod_mov = b.cod_mov) and
(a.num_nomi = ingresos.num_nomi and
a.tipo_emp = ingresos.tipo_emp)
ORDER BY 1
LET idx_n = 1
FOREACH accion1 INTO arr_nuevo[idx_n].*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
SLEEP 2
EXIT FOREACH
END IF
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET idx_n = idx_n + 1
END FOREACH
DISPLAY " " AT 21,2
IF idx_n = 1 THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL set_count (idx_n - 1)
DISPLAY BY NAME ingresos.num_nomi,ingresos.tipo_emp,descr,
ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp,
ingresos.cod_puesto,descrip1
SELECT SUM(valor) INTO monto FROM notb00008
WHERE (num_nomi = ingresos.num_nomi and
tipo_emp = ingresos.tipo_emp) and
num_emp = ingresos.num_emp
DISPLAY BY NAME monto ATTRIBUTE(BOLD)
DISPLAY ARRAY arr_nuevo TO consart.*
## Verifica si el usuario cancelo la operacion
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
CLEAR FORM
END FUNCTION