308 lines
8.9 KiB
Plaintext
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
|