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

308 lines
8.9 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP027
OBJETIVO : Analisis Polizas de Accidente de Trabajo
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Octubre 18, 1995.
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE p_ano,p_mes INTEGER,
salir CHAR(1),
fecha1 DATE,
ano1 CHAR(4)
FUNCTION noprrp027()
## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
DEFINE datos_rep27 RECORD
num_emp INTEGER,
departamento INTEGER,
nom1_emp CHAR(15),
nom2_emp CHAR(15),
apell1_emp CHAR(15),
apell2_emp CHAR(15),
tipo_emp CHAR(1),
valor1 DECIMAL(12,2),
porc_trab DECIMAL(12,2),
valor2 DECIMAL(12,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp027 FROM "nofmrp027"
DISPLAY FORM nofmrp027
CALL pantalla()
DISPLAY "noprrp027" AT 4,3
DISPLAY "Analisis Polizas Accidentes de Trabajo" AT 6,21
## 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)
INPUT BY NAME p_ano,p_mes
AFTER FIELD p_ano
IF p_ano IS NULL OR p_ano > YEAR(TODAY) THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_ano
END IF
AFTER FIELD p_mes
IF p_mes IS NULL OR p_mes > 12 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
SELECT MAX(a.fecha_al) INTO fecha1 FROM notb00010 a
WHERE a.ano = p_ano AND a.mes = p_mes AND
(a.status_t IS NULL OR a.status_t = "P")
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
### Se crea el criterio de busqueda
CONSTRUCT criterio ON a.nomina FROM nomina
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 ano1 = p_ano USING "&&&&"
LET selec =
"SELECT a.num_emp,a.departamento,a.nom1_emp,a.nom2_emp,a.apell1_emp, ",
" a.apell2_emp,a.nomina ",
"FROM adtb00003 a ",
"WHERE (a.status_t IS NULL OR a.status_t = 'I') AND ",
criterio CLIPPED
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
PREPARE comando FROM selec
DECLARE busca1 CURSOR FOR comando
#OPEN busca1 USING fecha1,ano1
OPEN busca1
START REPORT reporte_027 TO "C:\\archivo"
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
DISPLAY "Fecha: ",fecha1 AT 22,14
LET idx = 1
LET salir = "N"
WHILE salir != "S"
FETCH busca1 INTO datos_rep27.*
IF STATUS = NOTFOUND THEN
LET salir = "S"
LET idx = 1
EXIT WHILE
END IF
LET idx = idx + 1
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET datos_rep27.valor1 = 0
LET datos_rep27.porc_trab = 0
LET datos_rep27.valor2 = 0
IF YEAR(TODAY) != p_ano THEN
SELECT SUM(a.valor) INTO datos_rep27.valor1 FROM notb00016 a
WHERE (a.status_t IS NULL) AND (a.num_emp = datos_rep27.num_emp) AND
(a.clase_mov IN ('I','E')) AND (a.fecha <= fecha1 AND
YEAR(a.fecha) = p_ano) AND (a.valor IS NOT NULL AND
a.valor > 0)
ELSE
SELECT SUM(a.valor) INTO datos_rep27.valor1 FROM notb00008 a
WHERE (a.status_t IS NULL) AND (a.num_emp = datos_rep27.num_emp) AND
(a.clase_mov IN ('I','E')) AND (a.fecha <= fecha1 AND
YEAR(a.fecha) = p_ano) AND (a.valor IS NOT NULL AND
a.valor > 0)
END IF
SELECT a.porc_accidente INTO datos_rep27.porc_trab
FROM notb00018 a WHERE a.num_emp = datos_rep27.num_emp
IF STATUS = NOTFOUND THEN
LET STATUS = 0
LET salir = "N"
END IF
IF datos_rep27.porc_trab IS NULL THEN
LET datos_rep27.porc_trab = 0
END IF
IF datos_rep27.valor1 IS NULL THEN
LET datos_rep27.valor1 = 0
END IF
LET datos_rep27.valor1 = (datos_rep27.valor1 / p_mes) * 12
LET datos_rep27.valor2 = datos_rep27.valor1 * (datos_rep27.porc_trab/100)
IF datos_rep27.valor1 > 0 THEN
DISPLAY "DATOS: ",datos_rep27.num_emp USING "&&&&","-",
datos_rep27.valor1 USING "##,###,###.##" AT 20,14
OUTPUT TO REPORT reporte_027(datos_rep27.*)
END IF
END WHILE
FINISH REPORT reporte_027
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_027(x)
DEFINE x RECORD
num_emp INTEGER,
departamento INTEGER,
nom1_emp CHAR(15),
nom2_emp CHAR(15),
apell1_emp CHAR(15),
apell2_emp CHAR(15),
tipo_emp CHAR(1),
valor1 DECIMAL(12,2),
porc_trab DECIMAL(12,2),
valor2 DECIMAL(12,2)
END RECORD,
doble_on,doble_off,negrillas_on,negrillas_off,comp_on,
comp_off,doce,normal CHAR(2),
hora CHAR(5),
tipo_nom CHAR(12)
## DEFINICION DE LOS MARGENES DE IMPRESION
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
ORDER BY x.tipo_emp,x.porc_trab DESC,x.num_emp
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 1, comp_on,negrillas_on
PRINT COLUMN 1, "noprrp027",
COLUMN 33, p_companias.nombre CLIPPED,
COLUMN 106, "Pag. ",pageno using "###"
PRINT COLUMN 33, " Sistema de Nomina",
COLUMN 106, today using "dd/mm/yy"
PRINT COLUMN 33, " Analisis Polizas Accidente de Trabajo",
COLUMN 109, hora
PRINT COLUMN 1, "FECHA DE CORTE: ",fecha1 USING "dd/mm/yy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-------------"
PRINT COLUMN 83, "Devengado",
COLUMN 107, "Total"
PRINT COLUMN 1, "Empleado",
COLUMN 70, "Depto.",
COLUMN 83, "Proyectado",
COLUMN 94, "% Poliza",
COLUMN 107, "A Pagar"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"-------------"
PRINT COLUMN 1, negrillas_off
BEFORE GROUP OF x.tipo_emp
IF x.tipo_emp= "Q" THEN
LET tipo_nom = " QUINCENALES"
ELSE
LET tipo_nom = "SEMANALES"
END IF
PRINT COLUMN 1, negrillas_on,tipo_nom CLIPPED,negrillas_off
ON EVERY ROW
PRINT COLUMN 1, x.num_emp USING "&&&&"," ",x.nom1_emp CLIPPED," ",
x.nom2_emp CLIPPED," ",x.apell1_emp CLIPPED," ",
x.apell2_emp CLIPPED,
COLUMN 70, x.departamento USING "&&&&",
COLUMN 80, x.valor1 USING "##,###,###.##",
COLUMN 94, x.porc_trab USING "###.##",
COLUMN 101, x.valor2 USING "##,###,###.##"
AFTER GROUP OF x.porc_trab
### Impresion de total devengado y total pagado por Prociento
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 5, "Total Por Porciento",
COLUMN 80, GROUP SUM(x.valor1) USING "##,###,###.##",
COLUMN 101, GROUP SUM(x.valor2) USING "##,###,###.##"
PRINT COLUMN 1, negrillas_off
AFTER GROUP OF x.tipo_emp
### Impresion de total devengado y total pagado por tipo de nomina
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 5, "Total Por Tipo de Nomina",
COLUMN 80, GROUP SUM(x.valor1) USING "##,###,###.##",
COLUMN 101, GROUP SUM(x.valor2) USING "##,###,###.##"
PRINT COLUMN 1, negrillas_off
ON LAST ROW
### Impresion de total devengado y total pagado en general
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 5, "Total General",
COLUMN 80, SUM(x.valor1) USING "##,###,###.##",
COLUMN 101, SUM(x.valor2) USING "##,###,###.##"
PRINT COLUMN 1, negrillas_off,normal
END REPORT