{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP007 OBJETIVO : Resumen Horas Extras. PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Agosto 25, 1995 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE ano,ano1,mes1,mes2 SMALLINT, p_fecha_al DATE, p_fecha_al1 DATE FUNCTION noprrp007() ## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE DEFINE list_hor3 RECORD tipo_nom CHAR(1), cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor END RECORD DEFINE list_hor2 RECORD tipo_nom CHAR(1), cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor END RECORD DEFINE list_hor1 RECORD tipo_nom CHAR(1), cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor END RECORD DEFINE list_hor RECORD tipo_emp CHAR(1), ano INTEGER, mes SMALLINT, cantidad DECIMAL(12,2), valor DECIMAL(12,2) END RECORD DEFINE desc1_mes CHAR(15) DEFINE salir,salir1,salir2,salir3 CHAR(1) DEFINE idx1,idx2,idx3 INTEGER DEFINE selec2,selec3 CHAR(1000) #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp007 FROM "nofmrp007" DISPLAY FORM nofmrp007 CALL pantalla() DISPLAY "noprrp007" AT 4,3 DISPLAY "Horas Extraordinarias" AT 6,29 ## 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) ## ENTRADA DE LOS VALORES PARA BUSQUEDA DE INFORMACION POR MES Y ANO INPUT BY NAME ano,mes1 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 = 160 CALL msg(numero_msg) NEXT FIELD ano END IF LET ano1 = ano - 1 AFTER FIELD mes1 IF mes1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes1 END IF SELECT UNIQUE a.descrip INTO desc1_mes FROM mestable a WHERE a.mes = mes1 LET mes2 = 1 IF ano = YEAR(today) AND mes1 > MONTH(TODAY) THEN LET numero_msg = 160 CALL msg(numero_msg) NEXT FIELD mes1 END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CREATE TEMP TABLE notb00116 ( tipo_emp CHAR(1), ano SMALLINT, mes SMALLINT, cantidad DECIMAL(10,2), valor DECIMAL(10,2) ); CREATE INDEX temporal ON notb00116(tipo_emp,ano,mes) DISPLAY "Creando Tablas Termporales... Espere" AT 19,14 INSERT INTO notb00116 SELECT a.tipo_emp,YEAR(a.fecha),b.mes,SUM(a.cantidad),SUM(a.valor) FROM notb00008 a, notb00010 b WHERE a.status_t IS NULL AND b.ano = ano AND (a.num_nomi = b.num_nomi and a.tipo_emp = b.tipo_emp and a.cod_mov in (2,3) and a.departamento = a.departamento and a.num_emp=a.num_emp) and b.mes <= mes GROUP BY 1,2,3 INSERT INTO notb00116 SELECT a.tipo_emp,YEAR(a.fecha),b.mes,SUM(a.cantidad),SUM(a.valor) FROM notb00016 a, notb00010 b WHERE a.status_t IS NULL AND b.ano = ano-1 AND (a.num_nomi = b.num_nomi and a.tipo_emp = b.tipo_emp and a.cod_mov in (2,3) and a.departamento = a.departamento and a.num_emp=a.num_emp and a.fecha between b.fecha_del AND b.fecha_al) and b.mes <= mes GROUP BY 1,2,3 DECLARE buscate CURSOR FOR SELECT a.tipo_emp,a.ano,a.mes,a.cantidad,a.valor FROM notb00116 a WHERE a.ano <= ano AND a.mes <= mes1 DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 START REPORT reporte_7 TO "C:\\archivo" DISPLAY "Reporte Generandose ... Espere Por Favor" AT 19,14 FOREACH buscate INTO list_hor.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE EXIT FOREACH END IF IF list_hor.cantidad IS NULL THEN LET list_hor.cantidad = 0 END IF IF list_hor.valor IS NULL THEN LET list_hor.valor = 0 END IF DISPLAY list_hor.tipo_emp AT 20,20 DISPLAY list_hor.ano USING "####" AT 20,22 DISPLAY list_hor.mes USING "##" AT 20,27 DISPLAY list_hor.cantidad USING "#,###,###.##" AT 20,30 DISPLAY list_hor.valor USING "###,###,###.##" AT 20,43 OUTPUT TO REPORT reporte_7(list_hor.*,desc1_mes) END FOREACH FINISH REPORT reporte_7 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_7(x,descrip_mes) DEFINE x RECORD tipo_emp CHAR(1), ano INTEGER, mes SMALLINT, cantidad DECIMAL(12,2), valor DECIMAL(12,2) END RECORD DEFINE ano2,ano3 SMALLINT DEFINE descrip_mes CHAR(20) ## 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 l SMALLINT DEFINE varia CHAR(12) DEFINE h_semanal,h_semanal1,h_quincenal,h_quincenal1,total_h, total_h1, v_semanal,v_semanal1,v_quincenal,v_quincenal1,monto_p,monto_p1, a_h_semanal,a_h_semanal1,a_h_quincenal1,a_h_quincenal,total_horas, total_horas1,total_valor,total_valor1,total_q,total_q1,total_m, total_m1 DECIMAL(12,2) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 4 ORDER BY x.tipo_emp,x.ano,x.mes 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 ## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA- LET l = (135 - LENGTH(varia))/2 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT negrillas_on PRINT COLUMN 2, "noprrp007", COLUMN 14, p_companias.nombre CLIPPED, COLUMN 70, "Pag. ",pageno using "###" PRINT COLUMN 14, " Sistema de Nomina", COLUMN 70, today using "dd/mm/yy" PRINT COLUMN 14, " Horas Extraordinarias", COLUMN 73, hora PRINT COLUMN 14, " Fecha: ",descrip_mes clipped," ", ano USING "####" PRINT negrillas_off ON EVERY ROW IF x.valor IS NULL THEN LET x.valor = 0 END IF ON LAST ROW LET h_semanal = SUM(x.cantidad) WHERE x.tipo_emp = "S" AND x.ano = ano AND x.mes = mes1 LET h_semanal1 = SUM(x.cantidad) WHERE x.tipo_emp = "S" AND x.ano = ano1 AND x.mes = mes1 LET h_quincenal = SUM(x.cantidad) WHERE x.tipo_emp = "Q" AND x.ano = ano AND x.mes = mes1 LET h_quincenal1 = SUM(x.cantidad) WHERE x.tipo_emp = "Q" AND x.ano = ano1 AND x.mes = mes1 LET total_h = SUM(x.cantidad) WHERE x.ano = ano AND x.mes =mes1 LET total_h1 = SUM(x.cantidad) WHERE x.ano = ano1 AND x.mes = mes1 LET v_semanal = SUM(x.valor) WHERE x.tipo_emp = "S" AND x.ano = ano AND x.mes = mes1 LET v_semanal1 = SUM(x.valor) WHERE x.tipo_emp = "S" AND x.ano = ano1 AND x.mes = mes1 LET v_quincenal=SUM(x.valor) WHERE x.tipo_emp = "Q" AND x.ano = ano AND x.mes = mes1 LET v_quincenal1 = SUM(x.valor) WHERE x.tipo_emp = "Q" AND x.ano = ano1 AND x.mes = mes1 LET monto_p = SUM(x.valor) WHERE x.ano = ano AND x.mes = mes1 LET monto_p1 = SUM(x.valor) WHERE x.ano = ano1 AND x.mes = mes1 LET a_h_semanal=SUM(x.cantidad) WHERE x.tipo_emp = "S" AND x.ano =ano LET a_h_semanal1 = SUM(x.cantidad) WHERE x.tipo_emp = "S" AND x.ano = ano1 LET a_h_quincenal = SUM(x.cantidad) WHERE x.tipo_emp = "Q" AND x.ano = ano LET a_h_quincenal1 = SUM(x.cantidad) WHERE x.tipo_emp = "Q" AND x.ano = ano1 LET total_horas = SUM(x.cantidad) WHERE x.ano=ano LET total_horas1 = SUM(x.cantidad) WHERE x.ano=ano1 LET total_valor=SUM(x.valor) WHERE x.tipo_emp = "S" AND x.ano = ano LET total_valor1 = SUM(x.valor) WHERE x.tipo_emp = "S" AND x.ano = ano1 LET total_q =SUM(x.valor) WHERE x.tipo_emp = "Q" AND x.ano = ano LET total_q1 =SUM(x.valor) WHERE x.tipo_emp = "Q" AND x.ano = ano1 LET total_m =SUM(x.valor) WHERE x.ano = ano LET total_m1 =SUM(x.valor) WHERE x.ano = ano1 PRINT COLUMN 1, negrillas_on PRINT COLUMN 46,ano USING "####", COLUMN 65,ano1 USING "####" , COLUMN 72, "% COMP." PRINT COLUMN 46,"____", COLUMN 65,"____", COLUMN 72,"_______" PRINT negrillas_off PRINT COLUMN 7,"Semanal", COLUMN 36, h_semanal USING "###,###,###.##", COLUMN 56, h_semanal1 USING "###,###,###.##", COLUMN 74, ((h_semanal / h_semanal1)-1) * 100 USING "%<<&.##" SKIP 1 LINE PRINT COLUMN 7,"Quincenal", COLUMN 36, h_quincenal USING "###,###,###.##", COLUMN 56, h_quincenal1 USING "###,###,###.##", COLUMN 74, ((h_quincenal/ h_quincenal1)-1) * 100 USING "%<<&.##" PRINT negrillas_on PRINT COLUMN 7,"Total Horas", COLUMN 36, total_h USING "###,###,###.##", COLUMN 56, total_h1 USING "###,###,###.##", COLUMN 74, ((total_h / total_h1)-1) * 100 USING "%<<&.##" SKIP 2 LINE PRINT COLUMN 2,"Monto Pagado",negrillas_off SKIP 1 LINE PRINT COLUMN 7,"Semanal", COLUMN 36, v_semanal USING "###,###,###.##", COLUMN 56, v_semanal1 USING "###,###,###.##", COLUMN 74, ((v_semanal/ v_semanal1)-1) * 100 USING "%<<&.##" SKIP 1 LINE PRINT COLUMN 7,"Quincenal", COLUMN 36, v_quincenal USING "###,###,###.##", COLUMN 56, v_quincenal1 USING "###,###,###.##", COLUMN 74, ((v_quincenal/ v_quincenal1)-1) * 100 USING "%<<&.##" PRINT negrillas_on PRINT COLUMN 7,"Total Monto Pagado", COLUMN 36,monto_p USING "###,###,###.##", COLUMN 56,monto_p1 USING "###,###,###.##", COLUMN 74, ((monto_p / monto_p1)-1) * 100 USING "%<<&.##" PRINT negrillas_off PRINT "------------------------------------------------------------------------------","--" PRINT COLUMN 34,negrillas_on,doble_on,"ACUMULADO", doble_off,negrillas_off PRINT "------------------------------------------------------------------------------","--" SKIP 1 LINE PRINT COLUMN 7,"Semanal", COLUMN 36, a_h_semanal USING "###,###,###.##", COLUMN 56, a_h_semanal1 USING "###,###,###.##", COLUMN 74,((a_h_semanal / a_h_semanal1)-1) * 100 USING "%<<<.##" SKIP 1 LINE PRINT COLUMN 7,"Quincenal", COLUMN 36, a_h_quincenal USING "###,###,###.##", COLUMN 56, a_h_quincenal1 USING "###,###,###.##", COLUMN 74, ((a_h_quincenal / a_h_quincenal1)-1) * 100 USING "%<<<.##" PRINT COLUMN 1, negrillas_on SKIP 1 LINE PRINT COLUMN 7,"Total Horas", COLUMN 36,total_horas USING "###,###,###.##", COLUMN 56,total_horas1 USING "###,###,###.##", COLUMN 74,((total_horas / total_horas1)-1) *100 USING "%<<<.##" PRINT COLUMN 1, negrillas_off SKIP 1 LINE PRINT COLUMN 2,negrillas_on,"Monto Pagado",negrillas_off skip 1 line PRINT COLUMN 7,"Semanal", COLUMN 36, total_valor USING "###,###,###.##", COLUMN 56, total_valor1 USING "###,###,###.##", COLUMN 74, ((total_valor / total_valor1)-1) * 100 USING "%<<<.##" SKIP 1 LINE PRINT COLUMN 7,"Quincenal", COLUMN 36, total_q USING "###,###,###.##", COLUMN 56, total_q1 USING "###,###,###.##", COLUMN 74, ((total_q / total_q1)-1) * 100 USING "%<<<.##" PRINT negrillas_on PRINT COLUMN 7,"Total Monto Pagado", COLUMN 36,total_m USING "###,###,###.##", COLUMN 56,total_m1 USING "###,###,###.##", COLUMN 74, ((total_m / total_m1)-1) * 100 USING "%<<<.##" PRINT negrillas_off END REPORT