{ ------------------------------------------------------------------------------- PROGRAMA : NOPRCS001 OBJETIVO : Consulta Totales por novedades PROGRAMADOR : Ing. Juan Soto FECHA REALIZACION : Diciembre 16, 1993. ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE c_neto DECIMAL(12,2) DEFINE arr_novel 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 primero 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 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 noprcs001() END MAIN FUNCTION noprcs001() #WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM nofmcs001 FROM "nofmcs001" DISPLAY FORM nofmcs001 # CALL PANTALLA() DISPLAY " Continua Consulta" AT 2,3 DISPLAY " Cancela Operacion" AT 2,50 DISPLAY "noprcs001" AT 4,3 DISPLAY "Movimientos Totalizados Por Nomina" AT 6,23 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF INPUT BY NAME primero.num_nomi,primero.tipo_emp AFTER FIELD num_nomi IF primero.num_nomi is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_nomi END IF AFTER FIELD tipo_emp IF primero.tipo_emp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_nomi END IF AFTER INPUT 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 CALL arreglo() END FUNCTION FUNCTION arreglo() # Busca el c_neto de la nomina SELECT sum(valor) INTO c_neto FROM notb00008 WHERE num_nomi = primero.num_nomi and tipo_emp = primero.tipo_emp # Busca los movimientos DECLARE accion1 CURSOR FOR SELECT a.cod_mov,b.descrip_mov,sum(a.cantidad),sum(a.valor) FROM notb00008 a,notb00002 b WHERE a.num_nomi = primero.num_nomi and a.tipo_emp = primero.tipo_emp and a.cod_mov = b.cod_mov GROUP BY a.cod_mov,b.descrip_mov ORDER BY a.cod_mov LET idx_n = 1 FOREACH accion1 INTO arr_novel[idx_n].* 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 DISPLAY BY NAME idx_n ATTRIBUTE (BOLD) DISPLAY BY NAME c_neto ATTRIBUTE (BOLD) CALL set_count (idx_n - 1) DISPLAY ARRAY arr_novel 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