{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP025 OBJETIVO : REPORTE DE INGRESOS DE LA NOMINA PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Noviembre 03, 1993 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE ano,idx_k,idx_z,p,m INTEGER DEFINE fecha1,fecha2 DATE DEFINE totales ARRAY[50] OF DECIMAL(12,2) DEFINE tot_gral ARRAY[50] OF DECIMAL(12,2) DEFINE nomina,primera,sigue CHAR(1) DEFINE nombre_mes2 CHAR(12) DEFINE registro_25 RECORD num_emp LIKE notb00018.num_emp, porc_accidente LIKE notb00018.porc_accidente, departamento LIKE adtb00003.departamento, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, valor DECIMAL(12,2) END RECORD FUNCTION noprrp025() OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp025 FROM "nofmrp025" DISPLAY FORM nofmrp025 CALL pantalla() DISPLAY "noprrp025" AT 4,3 DISPLAY "% Accidente de Trabajo en Base Al Devengado en Rango De Fecha" AT 6,12 ## 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 = 2 CALL msgrp000(tipo_papel) LET primera = "S" ## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE INPUT BY NAME ano,fecha1,fecha2,nomina AFTER FIELD ano IF ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF IF ano > YEAR(TODAY) THEN LET numero_msg = 59 CALL msg(numero_msg) NEXT FIELD ano END IF AFTER FIELD fecha1 IF fecha1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha1 END IF IF fecha1 > TODAY THEN LET numero_msg = 189 CALL msg(numero_msg) NEXT FIELD fecha1 END IF IF YEAR(fecha1) <> ano THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fecha2 END IF IF YEAR(fecha2) <> ano THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fecha2 END IF AFTER FIELD nomina IF nomina IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nomina END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF # Busqueda de los encabezados CONSTRUCT criterio ON a.num_emp,b.departamento FROM num_emp,departamento IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF # Busqueda de los encabezados LET selec1 = "SELECT COUNT(*) FROM notb00018 a,adtb00003 b ", "WHERE a.num_emp = b.num_emp AND a.status_t IS NULL AND (b.status_t IS NULL ", " OR b.status_t = 'I') AND ",criterio CLIPPED," AND b.nomina = ? " PREPARE comando1 FROM selec1 DECLARE busca1 CURSOR FOR comando1 OPEN busca1 USING nomina FETCH busca1 INTO regi LET p_param = "S" LET selec = "SELECT UNIQUE a.num_emp,a.porc_accidente,b.departamento,b.nom1_emp, ", " b.apell1_emp ", "FROM notb00018 a,adtb00003 b ", "WHERE a.num_emp = b.num_emp AND a.status_t IS NULL AND (b.status_t IS NULL ", " OR b.status_t = 'I') AND ",criterio CLIPPED," AND b.nomina = ? ", " ORDER BY 3,1 " DISPLAY "Buscando Informacion ... Espere Por Favor " AT 17,14 PREPARE comando FROM selec DECLARE busca CURSOR FOR comando OPEN busca USING nomina START REPORT reporte_25 TO "C:\\archivo" DISPLAY "Reporte Generandose ... Espere Por Favor " AT 17,14 WHILE STATUS != NOTFOUND FETCH busca INTO registro_25.* 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 registro_25.valor = 0 IF ano = YEAR(TODAY) THEN SELECT SUM(a.valor) INTO registro_25.valor FROM notb00008 a WHERE a.num_emp = registro_25.num_emp AND (a.status_t IS NULL OR a.status_t = "I") AND a.clase_mov IN ("I","E","P") AND a.fecha BETWEEN fecha1 AND fecha2 ELSE SELECT SUM(a.valor) INTO registro_25.valor FROM notb00016 a WHERE a.num_emp = registro_25.num_emp AND (a.status_t IS NULL OR a.status_t = "I") AND a.clase_mov IN ("I","E","P") AND a.fecha BETWEEN fecha1 AND fecha2 END IF IF registro_25.valor IS NULL THEN LET registro_25.valor = 0 END IF CALL termometro(regi,p_param) LET p_param = "N" OUTPUT TO REPORT reporte_25(registro_25.*) END WHILE FINISH REPORT reporte_25 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte_25(x) DEFINE x RECORD num_emp LIKE notb00018.num_emp, porc_accidente LIKE notb00018.porc_accidente, departamento LIKE adtb00003.departamento, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, valor DECIMAL(12,2) END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE nombre_depto CHAR(20) 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 segunda,tipo CHAR(1) DEFINE p_codigo,no_emp,k,h,n,ficha,no_nomina,l SMALLINT DEFINE nombre,nombre2,varia CHAR(11) DEFINE t_sal_hora,t_horas,sal_hora,horas DECIMAL(7,2) DEFINE t_salario1,salario,salario1 DECIMAL(8,2) DEFINE t_desc1,t_desc,neto,monto_desc,t_ganado,t_ganado_h,valor1, t_t_horas,t_t_valor_h,t_valor_h DECIMAL(10,2) DEFINE t_t_valor,t_t_neto,t_neto,t_t_Desc,t_t_ganado 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 27, 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, negrillas_on PRINT COLUMN 1, "noprrp025", COLUMN 17, p_companias.nombre CLIPPED, COLUMN 72, "Pag. ",pageno using "###" PRINT COLUMN 17, " SISTEMA DE NOMINA ", COLUMN 72, today using "dd/mm/yy" PRINT COLUMN 17, " % Accidente de Trabajo en Base al Devengado ", COLUMN 75, hora IF nomina = "Q" THEN PRINT COLUMN 17, " Quincenal " ELSE PRINT COLUMN 17, " Semanal " END IF PRINT COLUMN 1, "Periodo: ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" PRINT COLUMN 1,"--------------------------------------------------", "------------------------------" PRINT COLUMN 1,"Empleado", COLUMN 37,"Acumulado", COLUMN 51,"% Accidente", COLUMN 65,"Monto %" PRINT COLUMN 1,"--------------------------------------------------", "------------------------------" ON EVERY ROW PRINT COLUMN 1, x.num_emp USING "####"," ", x.nom1_emp CLIPPED," ",x.apell1_emp CLIPPED, COLUMN 37, x.valor USING "###,###.##", COLUMN 51, x.porc_accidente USING "###,###.##", COLUMN 65, x.valor * (x.porc_accidente/100) USING "###,###.##" ON LAST ROW PRINT COLUMN 1,"--------------------------------------------------", "------------------------------" PRINT COLUMN 1, "TOTAL ---> ", COLUMN 33, SUM(x.valor) USING "###,###,###.##", COLUMN 61, SUM(x.valor*(x.porc_accidente/100)) USING "###,###,###.##" PRINT COLUMN 1,"--------------------------------------------------", "------------------------------" END REPORT