{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP027 OBJETIVO : Analisis Polizas de Accidente de Trabajo PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Octubre 18, 1995. ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE p_ano,p_mes INTEGER, salir CHAR(1), fecha1 DATE, ano1 CHAR(4) FUNCTION noprrp027() ## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE DEFINE datos_rep27 RECORD num_emp INTEGER, departamento INTEGER, nom1_emp CHAR(15), nom2_emp CHAR(15), apell1_emp CHAR(15), apell2_emp CHAR(15), tipo_emp CHAR(1), valor1 DECIMAL(12,2), porc_trab DECIMAL(12,2), valor2 DECIMAL(12,2) END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp027 FROM "nofmrp027" DISPLAY FORM nofmrp027 CALL pantalla() DISPLAY "noprrp027" AT 4,3 DISPLAY "Analisis Polizas Accidentes de Trabajo" AT 6,21 ## INDICA EL PAPEL NECESARIO PARA IMPRIMIR EL REPORTE. 1 - PAPEL 9 1/2 X 11 ## 2 - PAPEL 14 7/8 X 11 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME p_ano,p_mes AFTER FIELD p_ano IF p_ano IS NULL OR p_ano > YEAR(TODAY) THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano END IF AFTER FIELD p_mes IF p_mes IS NULL OR p_mes > 12 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes END IF SELECT MAX(a.fecha_al) INTO fecha1 FROM notb00010 a WHERE a.ano = p_ano AND a.mes = p_mes AND (a.status_t IS NULL OR a.status_t = "P") IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD p_mes END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF ### Se crea el criterio de busqueda CONSTRUCT criterio ON a.nomina FROM nomina IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF ## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE LET ano1 = p_ano USING "&&&&" LET selec = "SELECT a.num_emp,a.departamento,a.nom1_emp,a.nom2_emp,a.apell1_emp, ", " a.apell2_emp,a.nomina ", "FROM adtb00003 a ", "WHERE (a.status_t IS NULL OR a.status_t = 'I') AND ", criterio CLIPPED DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM selec DECLARE busca1 CURSOR FOR comando #OPEN busca1 USING fecha1,ano1 OPEN busca1 START REPORT reporte_027 TO "C:\\archivo" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) ## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE DISPLAY "Fecha: ",fecha1 AT 22,14 LET idx = 1 LET salir = "N" WHILE salir != "S" FETCH busca1 INTO datos_rep27.* IF STATUS = NOTFOUND THEN LET salir = "S" LET idx = 1 EXIT WHILE END IF LET idx = idx + 1 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET datos_rep27.valor1 = 0 LET datos_rep27.porc_trab = 0 LET datos_rep27.valor2 = 0 IF YEAR(TODAY) != p_ano THEN SELECT SUM(a.valor) INTO datos_rep27.valor1 FROM notb00016 a WHERE (a.status_t IS NULL) AND (a.num_emp = datos_rep27.num_emp) AND (a.clase_mov IN ('I','E')) AND (a.fecha <= fecha1 AND YEAR(a.fecha) = p_ano) AND (a.valor IS NOT NULL AND a.valor > 0) ELSE SELECT SUM(a.valor) INTO datos_rep27.valor1 FROM notb00008 a WHERE (a.status_t IS NULL) AND (a.num_emp = datos_rep27.num_emp) AND (a.clase_mov IN ('I','E')) AND (a.fecha <= fecha1 AND YEAR(a.fecha) = p_ano) AND (a.valor IS NOT NULL AND a.valor > 0) END IF SELECT a.porc_accidente INTO datos_rep27.porc_trab FROM notb00018 a WHERE a.num_emp = datos_rep27.num_emp IF STATUS = NOTFOUND THEN LET STATUS = 0 LET salir = "N" END IF IF datos_rep27.porc_trab IS NULL THEN LET datos_rep27.porc_trab = 0 END IF IF datos_rep27.valor1 IS NULL THEN LET datos_rep27.valor1 = 0 END IF LET datos_rep27.valor1 = (datos_rep27.valor1 / p_mes) * 12 LET datos_rep27.valor2 = datos_rep27.valor1 * (datos_rep27.porc_trab/100) IF datos_rep27.valor1 > 0 THEN DISPLAY "DATOS: ",datos_rep27.num_emp USING "&&&&","-", datos_rep27.valor1 USING "##,###,###.##" AT 20,14 OUTPUT TO REPORT reporte_027(datos_rep27.*) END IF END WHILE FINISH REPORT reporte_027 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT reporte_027(x) DEFINE x RECORD num_emp INTEGER, departamento INTEGER, nom1_emp CHAR(15), nom2_emp CHAR(15), apell1_emp CHAR(15), apell2_emp CHAR(15), tipo_emp CHAR(1), valor1 DECIMAL(12,2), porc_trab DECIMAL(12,2), valor2 DECIMAL(12,2) END RECORD, doble_on,doble_off,negrillas_on,negrillas_off,comp_on, comp_off,doce,normal CHAR(2), hora CHAR(5), tipo_nom CHAR(12) ## DEFINICION DE LOS MARGENES DE IMPRESION OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 4 ORDER BY x.tipo_emp,x.porc_trab DESC,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 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, comp_on,negrillas_on PRINT COLUMN 1, "noprrp027", COLUMN 33, p_companias.nombre CLIPPED, COLUMN 106, "Pag. ",pageno using "###" PRINT COLUMN 33, " Sistema de Nomina", COLUMN 106, today using "dd/mm/yy" PRINT COLUMN 33, " Analisis Polizas Accidente de Trabajo", COLUMN 109, hora PRINT COLUMN 1, "FECHA DE CORTE: ",fecha1 USING "dd/mm/yy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-------------" PRINT COLUMN 83, "Devengado", COLUMN 107, "Total" PRINT COLUMN 1, "Empleado", COLUMN 70, "Depto.", COLUMN 83, "Proyectado", COLUMN 94, "% Poliza", COLUMN 107, "A Pagar" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-------------" PRINT COLUMN 1, negrillas_off BEFORE GROUP OF x.tipo_emp IF x.tipo_emp= "Q" THEN LET tipo_nom = " QUINCENALES" ELSE LET tipo_nom = "SEMANALES" END IF PRINT COLUMN 1, negrillas_on,tipo_nom CLIPPED,negrillas_off ON EVERY ROW PRINT COLUMN 1, x.num_emp USING "&&&&"," ",x.nom1_emp CLIPPED," ", x.nom2_emp CLIPPED," ",x.apell1_emp CLIPPED," ", x.apell2_emp CLIPPED, COLUMN 70, x.departamento USING "&&&&", COLUMN 80, x.valor1 USING "##,###,###.##", COLUMN 94, x.porc_trab USING "###.##", COLUMN 101, x.valor2 USING "##,###,###.##" AFTER GROUP OF x.porc_trab ### Impresion de total devengado y total pagado por Prociento PRINT COLUMN 1, negrillas_on PRINT COLUMN 5, "Total Por Porciento", COLUMN 80, GROUP SUM(x.valor1) USING "##,###,###.##", COLUMN 101, GROUP SUM(x.valor2) USING "##,###,###.##" PRINT COLUMN 1, negrillas_off AFTER GROUP OF x.tipo_emp ### Impresion de total devengado y total pagado por tipo de nomina PRINT COLUMN 1, negrillas_on PRINT COLUMN 5, "Total Por Tipo de Nomina", COLUMN 80, GROUP SUM(x.valor1) USING "##,###,###.##", COLUMN 101, GROUP SUM(x.valor2) USING "##,###,###.##" PRINT COLUMN 1, negrillas_off ON LAST ROW ### Impresion de total devengado y total pagado en general PRINT COLUMN 1, negrillas_on PRINT COLUMN 5, "Total General", COLUMN 80, SUM(x.valor1) USING "##,###,###.##", COLUMN 101, SUM(x.valor2) USING "##,###,###.##" PRINT COLUMN 1, negrillas_off,normal END REPORT