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

294 lines
9.1 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP011
OBJETIVO : LISTAR LAS HORAS EXTRAS DE LOS EMPLEADOS
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Septiembre 07, 1993
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE fecha_inicial,fecha_final DATE
DEFINE tipo CHAR(1)
DEFINE h_35,h_100,v_35,v_100 DECIMAL(12,2)
FUNCTION noprrp011()
DEFINE fecha1,fecha2 DATE
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE extras RECORD
num_emp LIKE adtb00003.num_emp,
departamento LIKE adtb00003.departamento,
nivel LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp CHAR(10),
apell1_emp CHAR(10),
cod_mov LIKE notb00008.cod_mov,
cantidad LIKE notb00008.cantidad,
valor LIKE notb00008.valor
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp011 FROM "nofmrp011"
DISPLAY FORM nofmrp011
CALL pantalla()
DISPLAY "noprrp011" AT 4,3
DISPLAY "Horas Extras Empleados" AT 6,32
## 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 fecha_inicial,fecha_final,tipo
AFTER FIELD fecha_inicial
IF fecha_inicial IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
END IF
AFTER FIELD fecha_final
IF fecha_final IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
IF fecha_inicial > fecha_final THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD tipo
END IF
AFTER FIELD tipo
IF tipo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo
END IF
END INPUT
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
DECLARE buscar CURSOR FOR
SELECT a.num_emp,b.departamento,b.nivel_emp,b.cod_puesto,b.nom1_emp,
b.apell1_emp,a.cod_mov,SUM(a.cantidad),SUM(a.valor)
FROM adtb00003 b,notb00008 a
WHERE a.num_emp = b.num_emp AND a.tipo_emp = tipo AND a.cod_mov IN (2,3)
AND a.fecha BETWEEN fecha_inicial AND fecha_final AND a.status_t IS NULL
GROUP BY 1,2,3,4,5,6,7
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
## SE PREPARA LA INFORMACION SELECCIONADA
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT list_extras TO "C:\\archivo"
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
FOREACH buscar INTO extras.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT list_extras(extras.*,fecha1,fecha2)
END FOREACH
FINISH REPORT list_extras
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT list_extras(x,fech1,fech2)
DEFINE x RECORD
num_emp LIKE notb00008.num_emp,
departamento LIKE adtb00003.departamento,
nivel LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp CHAR(10),
apell1_emp CHAR(10),
cod_mov LIKE notb00008.cod_mov,
cantidad LIKE notb00008.cantidad,
valor LIKE notb00008.valor
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 l smallint
DEFINE varia CHAR(11)
DEFINE fech1,fech2 DATE
DEFINE descu,descuento,porciento1,porciento2,acumulado DECIMAL(5,2)
DEFINE acumulado1,total,total1,total2,total3,total4 DECIMAL(12,2)
DEFINE descuento1,porcentaje1,porcentaje2,acumula,acumula1 DECIMAL(5,2),
nombre_dp CHAR(20)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
ORDER BY x.departamento,x.num_emp,x.cod_mov
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
IF tipo = "Q" THEN
LET varia = "Horas Extras Empleados Quincenales"
END IF
IF tipo = "S" THEN
LET varia = "Horas Extras Empleados Semanales"
END IF
## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA-
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
LET l = (90 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, doce,negrillas_on
PRINT COLUMN 2, "noprrp011",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 83, "Pag. ",pageno using "###"
PRINT COLUMN 22, " Sistema de Nomina",
COLUMN 83, today using "dd/mm/yy"
LET l = (90 - LENGTH(varia CLIPPED))/2
PRINT COLUMN l, varia,
COLUMN 86, hora
SKIP 1 LINE
PRINT COLUMN 1, "Del ", fecha_inicial USING "dd/mm/yy",
" Al ", fecha_final USING "dd/mm/yy"
PRINT COLUMN 2, "---------------------------------------------",
"---------------------------------------------"
PRINT COLUMN 1, "Codigo No.",
COLUMN 19, "Nombre",
COLUMN 42, "Horas 100%",
COLUMN 55, "Valor ",
COLUMN 62, "Hora 35%",
COLUMN 75, "Valor ",
COLUMN 84, "Total "
PRINT COLUMN 2, "---------------------------------------------",
"---------------------------------------------"
PRINT COLUMN 1,negrillas_off
## AQUI COMIENZA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.departamento
SELECT a.nom_dpto INTO nombre_dp
FROM adtb00001 a
WHERE a.departamento = x.departamento
PRINT COLUMN 1,doble_on,negrillas_on,nombre_dp,negrillas_off
SKIP 1 LINE
BEFORE GROUP OF x.num_emp
LET total = 0
PRINT COLUMN 1, x.num_emp USING "&&&&","-",
x.departamento USING "&&&&","-",x.nivel USING"&&",
"-",x.cod_puesto USING "&&"," ",x.nom1_emp CLIPPED,
" ",x.apell1_emp CLIPPED;
ON EVERY ROW
LET total = total + x.valor
IF h_35 IS NULL THEN
LET h_35 = 0
END IF
IF h_100 IS NULL THEN
LET h_100 = 0
END IF
IF v_35 IS NULL THEN
LET v_35 = 0
END IF
IF v_100 IS NULL THEN
LET v_100 = 0
END IF
IF x.cod_mov = 2 THEN
LET h_35 = h_35 + x.cantidad
LET v_35 = v_35 + x.valor
PRINT COLUMN 42, x.cantidad USING "##,###.##",
COLUMN 52, x.valor USING "##,###.##";
ELSE
LET h_100 = h_100 + x.cantidad
LET v_100 = v_100 + x.valor
PRINT COLUMN 62, x.cantidad USING "##,###.##",
COLUMN 72, x.valor USING "##,###.##";
END IF
AFTER GROUP OF x.num_emp
PRINT COLUMN 82, total USING "##,###.##"
ON LAST ROW
SKIP 1 LINES
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 2, "TOTAL HORAS",
COLUMN 41, h_35 using "###,###.##",
COLUMN 51, v_35 using "###,###.##",
COLUMN 61, h_100 using "###,###.##",
COLUMN 71, v_100 using "###,###.##",
COLUMN 81, v_35 + v_100 using "###,###.##"
LET h_35 = 0
LET h_100 = 0
LET v_35 = 0
LET v_100 = 0
END REPORT