{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP021 OBJETIVO : LISTAR LOS MOVIMIENTOS DE COOPERATIVA PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Septiembre 03, 1993 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" FUNCTION noprrp021() ## 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, cod_mov LIKE notb00008.cod_mov, balance DECIMAL(10,2), valor LIKE notb00008.valor, num_nomi LIKE notb00008.num_nomi, tipo_emp LIKE notb00008.tipo_emp, fecha_al LIKE notb00010.fecha_al END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp021 FROM "nofmrp021" DISPLAY FORM nofmrp021 CALL pantalla() DISPLAY "noprrp021" AT 4,3 DISPLAY "Descuentos de Cooperativa" AT 6,27 ## 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 SELECT fecha_al INTO cooper.fecha_al FROM notb00010 WHERE num_nomi = cooper.num_nomi and tipo_emp = cooper.tipo_emp EXIT INPUT END INPUT { 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 LET selec1 = "SELECT a.cod_mov,a.num_emp,a.valor FROM notb00008 a,adtb00003 b ", "WHERE a.cod_mov in (11,12,13,14,19,25,27) and a.num_nomi = ? AND ", " a.tipo_emp = ? AND a.num_emp = b.num_emp AND ", " (b.status_t IS NULL OR b.status_t NOT IN ('D','T','E')) ", "ORDER BY 2,1" DISPLAY "Buscando Acumulados ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando1 FROM selec1 DECLARE busca SCROLL CURSOR FOR comando1 OPEN busca USING cooper.num_nomi,cooper.tipo_emp DISPLAY "Buscando Informacion... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ## 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.cod_mov,sum(a.valor) ", "FROM adtb00003 b,notb00008 a,notb00002 c ", "WHERE a.num_emp = b.num_emp AND a.cod_mov = c.cod_mov AND ", " b.nomina=? and a.fecha<=? and a.cod_mov in(11,12,19,13,14,25,27) ", " and ( b.status_t is null or b.status_t NOT IN('T','D','E')) ", "GROUP BY 1,2,3,4,5,6,7 ORDER BY 1,7 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ## SE PREPARA LA INFORMACION SELECCIONADA PREPARE comando FROM selec CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF ## SE DECLARA EL CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA DECLARE accion CURSOR FOR comando OPEN accion USING cooper.tipo_emp,cooper.fecha_al DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT imp_coop TO "C:\\archivo" ## 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 salir = "N" LET idx = 1 WHILE salir != "S" FETCH ABSOLUTE idx busca INTO acumula.* IF status = notfound THEN LET idx = 1 LET status = 0 EXIT WHILE END IF LET idx = idx + 1 LET cooper.valor = 0 IF acumula.num_emp = cooper.num_emp and acumula.cod_mov = cooper.cod_mov THEN LET cooper.valor = acumula.valor LET idx = 1 EXIT WHILE END IF END WHILE OUTPUT TO REPORT imp_coop(cooper.*) END WHILE FINISH REPORT imp_coop CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT imp_coop(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, cod_mov LIKE notb00008.cod_mov, balance DECIMAL(10,2), valor LIKE notb00008.valor, num_nomi LIKE notb00008.num_nomi, tipo_emp LIKE notb00008.tipo_emp, fecha_al LIKE notb00010.fecha_al 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 no_emp,l smallint DEFINE varia CHAR(30) DEFINE t_ahorro,t_prest,t_plaza,t_plan,t_farmacia,t_avance,t_diverso, b_ahorro,b_prest,b_plaza,b_plan,b_farmacia,b_avance,b_diverso DECIMAL(12,2) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 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 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, normal, COLUMN 2, "noprrp021", COLUMN 14, negrillas_on, COLUMN 15, doble_on, COLUMN 16, comp_on, COLUMN 37, p_companias.nombre CLIPPED, COLUMN 65, negrillas_off, COLUMN 66, doble_off, COLUMN 67, comp_off, COLUMN 97, "Pag. ",pageno using "###" PRINT COLUMN 97, today using "dd/mm/yy" PRINT COLUMN 97, hora SKIP 1 LINE ## SE IMPRIME EL NUMERO DE NOMINA Y LA FECHA PRINT COLUMN 1, negrillas_on, COLUMN 2, "Nomina No.:", COLUMN 15, x.num_nomi using "<<<<", COLUMN 21, "Al:", COLUMN 25, x.fecha_al using "dd/mm/yy", COLUMN 35, negrillas_off ## SE SELECCIONA EL TIPO DE NOMINA A IMPRIMIR IF x.tipo_emp = "Q" THEN LET descr = "QUINCENAL" ELSE IF x.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 comp_on PRINT COLUMN 55, "(11)", COLUMN 75, "(12)", COLUMN 95, "(13)", COLUMN 115, "(14)", COLUMN 135, "(19)", COLUMN 159, "(25)", COLUMN 180, "(27)" PRINT COLUMN 2, "---------------------------------------------------", "----------------------------------------------------" , "----------------------------------------------------", "----------------------------------------------------" PRINT COLUMN 51, "|AHORRO COOP. |", COLUMN 72, "|PREST. COOP. |", COLUMN 93, "|PLAZA LAMA |", COLUMN 112, "|PLAN VACACIONAL |", COLUMN 133, "|FARMACIA |", COLUMN 154, "|AVANCE SALARIO |", COLUMN 175, "|PREST. DIVER. |" PRINT COLUMN 2, "---------------------------------------------------", "----------------------------------------------------" , "----------------------------------------------------", "----------------------------------------------------" PRINT COLUMN 2, "Codigo No.", COLUMN 19, "Nombre", COLUMN 51, "|Cuota|", COLUMN 61, "Balance|", COLUMN 72, "|Cuota", COLUMN 82, "Balance|", COLUMN 93, "|Cuota", COLUMN 102,"Balance|", COLUMN 112,"|Cuota", COLUMN 122,"Balance|", COLUMN 133,"|Cuota", COLUMN 143, "Balance|", COLUMN 154, "|Cuota", COLUMN 164, "Balance|", COLUMN 175, "|Cuota", COLUMN 187, "Balance|" PRINT COLUMN 2, "----------------------------------------------------", "----------------------------------------------------" , "----------------------------------------------------", "----------------------------------------------------" ## SE INDICA EL SALTO DE PAGINA CUANDO SE IMPRIMEN TODOS LOS MOVIMIENTOS BEFORE GROUP OF x.num_emp IF t_ahorro is null THEN LET t_ahorro = 0 END IF IF t_prest is null THEN LET t_prest = 0 END IF IF t_plaza is null THEN LET t_plaza = 0 END IF IF t_plan is null THEN LET t_plan = 0 END IF IF t_farmacia is null THEN LET t_farmacia = 0 END IF IF t_avance is null THEN LET t_avance = 0 END IF IF t_diverso is null THEN LET t_diverso = 0 END IF IF b_ahorro is null THEN LET b_ahorro = 0 END IF IF b_prest is null THEN LET b_prest = 0 END IF IF b_plaza is null THEN LET b_plaza = 0 END IF IF b_plan is null THEN LET b_plan = 0 END IF IF b_farmacia is null THEN LET b_farmacia = 0 END IF IF b_avance is null THEN LET b_avance = 0 END IF IF b_diverso is null THEN LET b_diverso = 0 END IF ## AQUI COMIENZA LA IMPRESION DEL DETALLE PRINT COLUMN 2, x.num_emp using "&&&&", COLUMN 15, x.nom1_emp clipped," ",x.apell1_emp clipped; ON EVERY ROW CASE WHEN x.cod_mov = 11 PRINT COLUMN 49, x.valor using "#,###.##", COLUMN 59, x.balance using "##,###.##"; LET t_ahorro = t_ahorro + x.valor LET b_ahorro = b_ahorro + x.balance EXIT CASE WHEN x.cod_mov = 12 PRINT COLUMN 70, x.valor using "#,###.##", COLUMN 81, x.balance using "(((,(((.##)"; LET t_prest = t_prest + x.valor LET b_prest = b_prest + x.balance EXIT CASE WHEN x.cod_mov = 13 PRINT COLUMN 91, x.valor using "#,###.##", COLUMN 100, x.balance using "(((,(((.##)"; LET t_plaza = t_plaza + x.valor LET b_plaza = b_plaza + x.balance EXIT CASE WHEN x.cod_mov = 14 PRINT COLUMN 111, x.valor using "#,###.##", COLUMN 120, x.balance using "##,###.##"; LET t_plan = t_plan + x.valor LET b_plan = b_plan + x.balance WHEN x.cod_mov = 19 PRINT COLUMN 131 ,x.valor using "#,###.##", COLUMN 141, x.balance using "((((,(((.##)"; LET t_farmacia = t_farmacia + x.valor LET b_farmacia = b_farmacia + x.balance EXIT CASE WHEN x.cod_mov = 25 PRINT COLUMN 152,x.valor using "#,###.##", COLUMN 162,x.balance using "((((,(((.##)"; LET t_avance = t_avance + x.valor LET b_avance = b_avance + x.balance EXIT CASE WHEN x.cod_mov = 27 PRINT COLUMN 173, x.valor using "#,###.##", COLUMN 185, x.balance using "((((,(((.##)"; LET t_diverso = t_diverso + x.valor LET b_diverso = b_diverso + x.balance EXIT CASE END CASE AFTER GROUP OF x.num_emp PRINT PRINT COLUMN 2, "---------------------------------------------------", "----------------------------------------------------" , "----------------------------------------------------", "----------------------------------------------------" IF no_emp is null THEN LET no_emp = 0 END IF LET no_emp = no_emp + 1 ON LAST ROW PRINT COLUMN 2, "---------------------------------------------------", "----------------------------------------------------" , "----------------------------------------------------", "----------------------------------------------------" PRINT COLUMN 1, "Total General", COLUMN 48, t_ahorro using "##,###.##", COLUMN 58, b_ahorro using "###,###.##", COLUMN 69, t_prest using "##,###.##", COLUMN 80, b_prest using "###,###.##", COLUMN 90, t_plaza using "##,###.##", COLUMN 99, b_plaza using "###,###.##", COLUMN 110, t_plan using "##,###.##", COLUMN 119, b_plan using "###,###.##", COLUMN 130 ,t_farmacia using "##,###.##", COLUMN 140 ,b_farmacia using "###,###.##", COLUMN 151,t_avance using "##,###.##", COLUMN 161,b_avance using "###,###.##", COLUMN 172, t_diverso using "##,###.##", COLUMN 184, b_diverso using "##,###,###.##" LET t_ahorro = 0 LET b_ahorro = 0 LET t_prest = 0 LET b_prest = 0 LET t_plaza = 0 LET b_plaza = 0 LET t_plan = 0 LET b_plan = 0 LET t_farmacia = 0 LET b_farmacia = 0 LET t_avance = 0 LET b_avance = 0 LET t_diverso = 0 LET b_diverso = 0 PRINT COLUMN 1, "Total Empleados", no_emp using "###" LET no_emp = 0 END REPORT