{ ------------------------------------------------------------------------------- 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