Files
MBS/PROYECTO/nodir/noprrp007.4gl
T

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