{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP032 OBJETIVO : CALCULA LA REGALIA PASCUAL PROYECTADA A DICIEMBRE PROGRAMADOR : Juan Soto FECHA REALIZACION : Agosto 5, 1996. ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE salir CHAR(1), fecha_regalia CHAR(12), p_mes,dias SMALLINT, p_tipo_emp CHAR(1), porc_dias DECIMAL(8,2) FUNCTION noprrp032() # WHENEVER ERROR CONTINUE 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, sueldo LIKE adtb00003.sueldo_ac, fecha_entrada LIKE adtb00003.fech_efec, regalia DECIMAL(12,2) END RECORD OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp032 FROM "nofmrp032" DISPLAY FORM nofmrp032 CALL pantalla() DISPLAY "noprrp032" AT 4,3 DISPLAY "Movimientos de Empleados" AT 6,28 ## 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 p_tipo_emp AFTER INPUT IF p_tipo_emp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_tipo_emp END IF EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT BY NAME criterio ON b.departamento 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 SELEC = "SELECT UNIQUE b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ", " b.nom1_emp,b.apell1_emp,b.sueldo_ac,b.fech_efec ", " FROM adtb00003 b ", " WHERE nomina = ? and ", " (b.status_t is null or b.status_t = 'I') and ", criterio clipped, " ORDER BY 1" 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 p_tipo_emp DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT pro_regalia 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 cooper.regalia = cooper.sueldo # Calculo para los empleados que su regalia es proporcional LET fecha_regalia = "31/12/",year(today) using "####" LET fecha_regalia = fecha_regalia CLIPPED IF year(today) = year(cooper.fecha_entrada) THEN LET p_mes = month(cooper.fecha_entrada) SELECT dias_prod INTO dias FROM mestable WHERE mes = p_mes LET porc_dias = (dias - day(cooper.fecha_entrada)) / dias LET p_mes = 12 - month(cooper.fecha_entrada) LET porc_dias = porc_dias + p_mes LET cooper.regalia = (cooper.sueldo / 12) * porc_dias END IF OUTPUT TO REPORT pro_regalia(cooper.*) END WHILE FINISH REPORT pro_regalia CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT pro_regalia(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, sueldo LIKE adtb00003.sueldo_ac, fecha_entrada LIKE adtb00003.fech_efec, regalia DECIMAL(12,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) DEFINE nombre_d CHAR(30) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.departamento 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 doce PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, "noprrp032", COLUMN 22, p_companias.nombre CLIPPED, COLUMN 74, "Pag. ",pageno using "###" PRINT COLUMN 22, " Sistema de Nomina" PRINT COLUMN 25, "Proyeccion Regalia Para El Ano Actual", COLUMN 74, today using "dd/mm/yy" PRINT COLUMN 77, hora ## SE SELECCIONA EL TIPO DE NOMINA A IMPRIMIR IF p_tipo_emp = "Q" THEN LET descr = "QUINCENAL" ELSE IF p_tipo_emp = "V" THEN LET descr = "VENDEDOR" ELSE LET descr = "SEMANAL" END IF END IF PRINT COLUMN 1, negrillas_on, COLUMN 5, descr, COLUMN 15, negrillas_off PRINT COLUMN 2, "---------------------------------------------------", "-----------------------------" PRINT COLUMN 41, "Fecha De", COLUMN 67, "Regalia" PRINT COLUMN 2, "Ficha No.", COLUMN 15, "Nombre", COLUMN 41, "Entrada", COLUMN 55, "Sueldo", COLUMN 67, "Al ",fecha_regalia PRINT COLUMN 2, "---------------------------------------------------", "-----------------------------" BEFORE GROUP OF x.departamento IF x.departamento IS NOT NULL THEN SELECT nom_dpto INTO nombre_d FROM adtb00001 WHERE departamento = x.departamento IF STATUS = NOTFOUND THEN LET STATUS = 0 LET nombre_d = " NO TIENE DEPARTAMENTO " END IF PRINT COLUMN 1, negrillas_on PRINT COLUMN 2, "DEPTO.: ", x.departamento USING "&&&&", " ", nombre_d CLIPPED PRINT COLUMN 1, negrillas_off END IF ON EVERY ROW PRINT COLUMN 2, x.num_emp using "&&&&", COLUMN 15, x.nom1_emp clipped," ",x.apell1_emp clipped, COLUMN 41, x.fecha_entrada using "dd/mm/yy", COLUMN 53, x.sueldo using "##,###.##", COLUMN 71, x.regalia using "##,###.##" AFTER GROUP OF x.departamento SKIP 1 LINE ON LAST ROW PRINT COLUMN 2, "----------------------------------------------------", "-----------------------------------------" PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, "TOTAL REGALIA =====>", COLUMN 66, SUM(x.regalia) USING "###,###,###.##" PRINT COLUMN 15, negrillas_off,normal END REPORT