{ ------------------------------------------------------------------------------- PROGRAMA : NOPRCS006 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 balance_inicial DECIMAL(15,2) DEFINE arr_nuevo DYNAMIC ARRAY OF RECORD num_nomi LIKE notb00008.num_nomi, fecha LIKE notb00008.fecha, cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor, balance DECIMAL(15,2) END RECORD DEFINE ingresos RECORD cod_mov LIKE notb00008.cod_mov, 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, descrip_mov LIKE notb00002.descrip_mov END RECORD DEFINE idx_n SMALLINT MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave # LET usuarios = 'jsoto' # LET clave = 'lmmjvsd2009' CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL noprcs006() END MAIN FUNCTION noprcs006() #WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM nofmcs006 FROM "nofmcs006" DISPLAY FORM nofmcs006 # CALL PANTALLA() DISPLAY " Continua Consulta" AT 2,3 DISPLAY " Cancela Operacion" AT 2,50 DISPLAY "noprcs006" AT 4,3 DISPLAY "Balances Por empleados y Movimientos" AT 6,22 LABEL vuelve: CLEAR FORM CONSTRUCT criterio ON b.num_emp,b.tipo_emp,b.cod_mov FROM num_emp,tipo_emp,cod_mov 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.cod_mov,b.tipo_emp,b.num_emp,b.departamento, ", "b.nivel_emp,b.cod_puesto,a.nom1_emp,a.apell1_emp,", "c.descrip_mov ", " FROM adtb00003 a,notb00008 b,notb00002 c ", " WHERE ", "a.num_emp = b.num_emp and ", "a.nomina = b.tipo_emp and ", "b.cod_mov = c.cod_mov and ", criterio clipped," AND b.status_t IS NULL ", " 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.cod_mov,ingresos.tipo_emp,descr,ingresos.num_emp, ingresos.departamento,ingresos.nivel_emp, ingresos.cod_puesto,descrip1,ingresos.descrip_mov 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.cod_mov,ingresos.tipo_emp,descr, ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp, ingresos.cod_puesto,descrip1,ingresos.descrip_mov 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.cod_mov,ingresos.tipo_emp,descr, ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp, ingresos.cod_puesto,descrip1,ingresos.descrip_mov 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.cod_mov,ingresos.tipo_emp,descr, ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp, ingresos.cod_puesto,descrip1,ingresos.descrip_mov 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.cod_mov,ingresos.tipo_emp,descr, ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp, ingresos.cod_puesto,descrip1,ingresos.descrip_mov 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 balancear() COMMAND "Retornar" EXIT MENU END MENU GOTO vuelve END FUNCTION FUNCTION balancear() LET balance_inicial = 0 #SELECT SUM(a.valor) INTO balance_inicial FROM notb00008 a #WHERE a.num_emp = ingresos.num_emp and # a.cod_mov = ingresos.cod_mov AND # # a.fecha <='12/31/2016' and # a.status_t IS NULL DECLARE accion1 CURSOR FOR SELECT a.num_nomi,a.fecha,a.cantidad,a.valor,'1' FROM notb00008 a WHERE a.num_emp = ingresos.num_emp and a.cod_mov = ingresos.cod_mov AND # a.fecha > '12/31/2016' and a.status_t is null {UNION SELECT a.num_nomi,a.fecha,a.cantidad,a.valor,rowid FROM notb00016 a WHERE a.num_emp = ingresos.num_emp and a.cod_mov = ingresos.cod_mov and a.status_t is null} #APURATE ORDER BY a.fecha CALL arr_nuevo.clear() LET idx_n = 1 FOREACH accion1 INTO arr_nuevo[idx_n].* IF idx_n = 1 THEN LET balance_inicial = arr_nuevo[1].valor END IF IF idx_n > 1 THEN LET balance_inicial = arr_nuevo[idx_n].valor + balance_inicial END IF LET arr_nuevo[idx_n].balance = balance_inicial 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.cod_mov,ingresos.tipo_emp,descr, ingresos.num_emp,ingresos.departamento,ingresos.nivel_emp, ingresos.cod_puesto,descrip1,ingresos.descrip_mov DISPLAY ARRAY arr_nuevo TO consart.* ON ACTION imprimir ATTRIBUTE(TEXT="Imprimir",IMAGE="printer2") CALL impresion() AFTER DISPLAY ## Verifica si el usuario cancelo la operacion IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE EXIT DISPLAY END IF EXIT DISPLAY END DISPLAY END FUNCTION FUNCTION impresion() CALL seleccionarsalida() RETURNING r_output LET r_filename = 'noprcs006.4rp' IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file # LET r_output='SVG' LET preview=1 CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT data TO XML HANDLER HANDLER FOR idx = 1 TO arr_nuevo.getLength() OUTPUT TO REPORT data(ingresos.*,arr_nuevo[idx].*) END FOR FINISH REPORT data END IF END FUNCTION REPORT data(x,y) DEFINE x RECORD cod_mov LIKE notb00008.cod_mov, 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, descrip_mov LIKE notb00002.descrip_mov END RECORD DEFINE y RECORD num_nomi LIKE notb00008.num_nomi, fecha LIKE notb00008.fecha, cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor, balance DECIMAL(15,2) END RECORD, strhora,strfecha STRING ORDER BY y.fecha FORMAT ON EVERY ROW LET strhora = TODAY LET strfecha = y.fecha USING "yyyy-mm-dd" PRINTX x.num_emp,x.nom1_emp, x.apell1_emp,x.cod_mov,x.descrip_mov, y.*,p_companias.nombre,strhora, strfecha END REPORT