395 lines
14 KiB
Plaintext
395 lines
14 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
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
|
|
|