{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP009 OBJETIVO : LISTAR LOS MOVIMIENTOS DE COOPERATIVA PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Septiembre 03, 1993 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE salir CHAR(1) DEFINE acumula RECORD cod_mov LIKE notb00008.cod_mov, num_emp LIKE notb00008.num_emp, valor DECIMAL(12,2) END RECORD DEFINE cooper RECORD num_emp LIKE notb00008.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, valor LIKE notb00008.valor, num_nomi LIKE notb00008.num_nomi, fecha_al LIKE notb00010.fecha_al, tipo_emp LIKE notb00008.tipo_emp, cod_mov LIKE notb00008.cod_mov, descrip_mov LIKE notb00002.descrip_mov, balance DECIMAL(10,2) END RECORD MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor # LET usuarios = 'jsoto' # LET clave = 'lmmjvsd2009' CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL noprrp009() END MAIN FUNCTION noprrp009() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp009 FROM "nofmrp009" DISPLAY FORM nofmrp009 ## INDICA EL TIPO DE PAPEL NECESARIO PARA EL REPORTE. 1 - PAPEL 9 1/2 X 11 ## 2 - PAPEL 14 7/8 X 11 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE INPUT BY NAME cooper.num_nomi,cooper.tipo_emp AFTER INPUT IF cooper.num_nomi is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_nomi END IF IF cooper.tipo_emp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF LET selec = "SELECT CONVERT(CHAR(10),fecha_al,103) FROM notb00010 ", " WHERE num_nomi = ",cooper.num_nomi USING "<<<<","and tipo_emp = '",cooper.tipo_emp,"'" PREPARE busca_fecha FROM selec EXECUTE busca_fecha INTO cooper.fecha_al EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT criterio ON a.cod_mov FROM cod_mov IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,imprime ## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE LET SELEC = "SELECT UNIQUE a.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ", " b.nom1_emp,b.apell1_emp,a.valor*-1,a.num_nomi,CONVERT(CHAR(10),d.fecha_al,103), ", " a.tipo_emp,a.cod_mov,c.descrip_mov ", " FROM adtb00003 b,notb00008 a,notb00002 c,notb00010 d ", " WHERE a.num_emp = b.num_emp AND a.tipo_emp = b.nomina AND ", " a.cod_mov = c.cod_mov AND a.num_nomi = d.num_nomi AND ", " a.num_nomi = ? and a.tipo_emp = ? and a.tipo_emp=d.tipo_emp AND ", " a.clase_mov <>'F' AND ", " a.status_t is null AND ", criterio clipped," ORDER BY 11,1,2,3,4" DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ## SE PREPARA LA INFORMACION SELECCIONADA PREPARE comando FROM selec DECLARE accion CURSOR FOR comando OPEN accion USING cooper.num_nomi,cooper.tipo_emp DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET opt = fgl_winquestion("REPORTE","DESEA REPORTE POR PANTALLA?","YES","NO|YES","QUESTION",0) IF opt = "YES" THEN START REPORT list_cooper TO SCREEN ELSE START REPORT list_cooper TO archivo END IF ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE WHILE status != notfound FETCH accion INTO cooper.* IF status = notfound THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET cooper.balance = 0 OUTPUT TO REPORT list_cooper(cooper.*) END WHILE FINISH REPORT list_cooper CLEAR SCREEN IF opt = "NO" THEN RUN imprime END IF END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT list_cooper(x) DEFINE x RECORD num_emp LIKE notb00008.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, valor LIKE notb00008.valor, num_nomi LIKE notb00008.num_nomi, fecha_al LIKE notb00010.fecha_al, tipo_emp LIKE notb00008.tipo_emp, cod_mov LIKE notb00008.cod_mov, descrip_mov LIKE notb00002.descrip_mov, balance DECIMAL(10,2) END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE valor1,total,total1,balance DECIMAL(10,2) DEFINE l smallint DEFINE varia CHAR(30) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.cod_mov,x.num_nomi,x.num_emp FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time LET varia = x.descrip_mov ## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA- LET l = (82 - LENGTH(p_companias.nombre CLIPPED))/2 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, comp_off,normal,negrillas_on PRINT COLUMN 1, "noprrp009", COLUMN l, p_companias.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" PRINT COLUMN 29, "Movimientos de Empleados", COLUMN 75, today using "dd/mm/yy" LET l = (82 - LENGTH(varia CLIPPED))/2 PRINT COLUMN l, varia CLIPPED, COLUMN 78, hora SKIP 1 LINE ## SE IMPRIME EL NUMERO DE NOMINA Y LA FECHA PRINT COLUMN 1, "Nomina No.:", COLUMN 15, cooper.num_nomi using "<<<<", COLUMN 21, "Al:", COLUMN 25, cooper.fecha_al using "dd/mm/yy", COLUMN 35, negrillas_off ## SE SELECCIONA EL TIPO DE NOMINA A IMPRIMIR IF cooper.tipo_emp = "Q" THEN LET descr = "QUINCENAL" ELSE IF cooper.tipo_emp = "V" THEN LET descr = "VENDEDOR" ELSE LET descr = "SEMANAL" END IF END IF PRINT COLUMN 1, negrillas_on, COLUMN 2, descr, COLUMN 15, negrillas_off PRINT COLUMN 2, "---------------------------------------------------", "------------------------------" PRINT COLUMN 2, "Codigo No.", COLUMN 19, "Nombre", COLUMN 59, "Valor", COLUMN 72, "Balance" PRINT COLUMN 2, "----------------------------------------------------", "-----------------------------" ## SE INDICA EL SALTO DE PAGINA CUANDO SE IMPRIMEN TODOS LOS MOVIMIENTOS BEFORE GROUP OF x.cod_mov SKIP TO TOP OF PAGE LET total1 = 0 LET total = 0 BEFORE GROUP OF x.num_emp LET balance = 0 LET valor1 = 0 ## AQUI SE CALCULAN LOS TOTALES GENERALES IF total1 IS NULL THEN LET total1 = 0 END IF LET total1 = total1 + x.valor IF total IS NULL THEN LET total = 0 END IF SELECT SUM(a.valor)*-1 INTO balance FROM notb00008 a WHERE a.cod_mov = x.cod_mov AND a.num_emp = x.num_emp AND a.status_T IS NULL AND a.fecha <= cooper.fecha_al LET total = total + balance ## AQUI COMIENZA LA IMPRESION DEL DETALLE PRINT COLUMN 2, x.num_emp using "&&&&","-", COLUMN 7, x.departamento using "&&&&","-", COLUMN 11, x.nivel_emp using "&&","-", COLUMN 15, x.cod_puesto using "&&", COLUMN 23, x.nom1_emp clipped," ",x.apell1_emp clipped, COLUMN 55, x.valor using "#,###,###.##", COLUMN 70, balance using "#,###,###.##" ## AQUI SE IMPRIMEN LOS TOTALES GENERALES AFTER GROUP OF x.cod_mov SKIP 2 LINES PRINT COLUMN 1, negrillas_on, COLUMN 2, "TOTAL GENERAL", COLUMN 18, negrillas_off, COLUMN 52, total1 using "###,###,###.##", COLUMN 70, total using "###,###,###.##" END REPORT