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

291 lines
9.2 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP025
OBJETIVO : REPORTE DE INGRESOS DE LA NOMINA
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Noviembre 03, 1993
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE ano,idx_k,idx_z,p,m INTEGER
DEFINE fecha1,fecha2 DATE
DEFINE totales ARRAY[50] OF DECIMAL(12,2)
DEFINE tot_gral ARRAY[50] OF DECIMAL(12,2)
DEFINE nomina,primera,sigue CHAR(1)
DEFINE nombre_mes2 CHAR(12)
DEFINE registro_25 RECORD
num_emp LIKE notb00018.num_emp,
porc_accidente LIKE notb00018.porc_accidente,
departamento LIKE adtb00003.departamento,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
valor DECIMAL(12,2)
END RECORD
FUNCTION noprrp025()
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp025 FROM "nofmrp025"
DISPLAY FORM nofmrp025
CALL pantalla()
DISPLAY "noprrp025" AT 4,3
DISPLAY "% Accidente de Trabajo en Base Al Devengado en Rango De Fecha"
AT 6,12
## 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 = 2
CALL msgrp000(tipo_papel)
LET primera = "S"
## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE
INPUT BY NAME ano,fecha1,fecha2,nomina
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 = 59
CALL msg(numero_msg)
NEXT FIELD ano
END IF
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
IF fecha1 > TODAY THEN
LET numero_msg = 189
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
IF YEAR(fecha1) <> ano THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF YEAR(fecha2) <> ano THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
AFTER FIELD nomina
IF nomina IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nomina
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
# Busqueda de los encabezados
CONSTRUCT criterio ON a.num_emp,b.departamento FROM num_emp,departamento
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
# Busqueda de los encabezados
LET selec1 =
"SELECT COUNT(*) FROM notb00018 a,adtb00003 b ",
"WHERE a.num_emp = b.num_emp AND a.status_t IS NULL AND (b.status_t IS NULL ",
" OR b.status_t = 'I') AND ",criterio CLIPPED," AND b.nomina = ? "
PREPARE comando1 FROM selec1
DECLARE busca1 CURSOR FOR comando1
OPEN busca1 USING nomina
FETCH busca1 INTO regi
LET p_param = "S"
LET selec =
"SELECT UNIQUE a.num_emp,a.porc_accidente,b.departamento,b.nom1_emp, ",
" b.apell1_emp ",
"FROM notb00018 a,adtb00003 b ",
"WHERE a.num_emp = b.num_emp AND a.status_t IS NULL AND (b.status_t IS NULL ",
" OR b.status_t = 'I') AND ",criterio CLIPPED," AND b.nomina = ? ",
" ORDER BY 3,1 "
DISPLAY "Buscando Informacion ... Espere Por Favor " AT 17,14
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
OPEN busca USING nomina
START REPORT reporte_25 TO "C:\\archivo"
DISPLAY "Reporte Generandose ... Espere Por Favor " AT 17,14
WHILE STATUS != NOTFOUND
FETCH busca INTO registro_25.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET registro_25.valor = 0
IF ano = YEAR(TODAY) THEN
SELECT SUM(a.valor) INTO registro_25.valor FROM notb00008 a
WHERE a.num_emp = registro_25.num_emp AND (a.status_t IS NULL OR
a.status_t = "I") AND a.clase_mov IN ("I","E","P") AND
a.fecha BETWEEN fecha1 AND fecha2
ELSE
SELECT SUM(a.valor) INTO registro_25.valor FROM notb00016 a
WHERE a.num_emp = registro_25.num_emp AND (a.status_t IS NULL OR
a.status_t = "I") AND a.clase_mov IN ("I","E","P") AND
a.fecha BETWEEN fecha1 AND fecha2
END IF
IF registro_25.valor IS NULL THEN
LET registro_25.valor = 0
END IF
CALL termometro(regi,p_param)
LET p_param = "N"
OUTPUT TO REPORT reporte_25(registro_25.*)
END WHILE
FINISH REPORT reporte_25
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte_25(x)
DEFINE x RECORD
num_emp LIKE notb00018.num_emp,
porc_accidente LIKE notb00018.porc_accidente,
departamento LIKE adtb00003.departamento,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
valor DECIMAL(12,2)
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE nombre_depto CHAR(20)
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 segunda,tipo CHAR(1)
DEFINE p_codigo,no_emp,k,h,n,ficha,no_nomina,l SMALLINT
DEFINE nombre,nombre2,varia CHAR(11)
DEFINE t_sal_hora,t_horas,sal_hora,horas DECIMAL(7,2)
DEFINE t_salario1,salario,salario1 DECIMAL(8,2)
DEFINE t_desc1,t_desc,neto,monto_desc,t_ganado,t_ganado_h,valor1,
t_t_horas,t_t_valor_h,t_valor_h DECIMAL(10,2)
DEFINE t_t_valor,t_t_neto,t_neto,t_t_Desc,t_t_ganado DECIMAL(12,2)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
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 27, 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, negrillas_on
PRINT COLUMN 1, "noprrp025",
COLUMN 17, p_companias.nombre CLIPPED,
COLUMN 72, "Pag. ",pageno using "###"
PRINT COLUMN 17, " SISTEMA DE NOMINA ",
COLUMN 72, today using "dd/mm/yy"
PRINT COLUMN 17, " % Accidente de Trabajo en Base al Devengado ",
COLUMN 75, hora
IF nomina = "Q" THEN
PRINT COLUMN 17, " Quincenal "
ELSE
PRINT COLUMN 17, " Semanal "
END IF
PRINT COLUMN 1, "Periodo: ",fecha1 USING "dd/mm/yy",
" Al ",fecha2 USING "dd/mm/yy"
PRINT COLUMN 1,"--------------------------------------------------",
"------------------------------"
PRINT COLUMN 1,"Empleado",
COLUMN 37,"Acumulado",
COLUMN 51,"% Accidente",
COLUMN 65,"Monto %"
PRINT COLUMN 1,"--------------------------------------------------",
"------------------------------"
ON EVERY ROW
PRINT COLUMN 1, x.num_emp USING "####"," ",
x.nom1_emp CLIPPED," ",x.apell1_emp CLIPPED,
COLUMN 37, x.valor USING "###,###.##",
COLUMN 51, x.porc_accidente USING "###,###.##",
COLUMN 65, x.valor * (x.porc_accidente/100) USING "###,###.##"
ON LAST ROW
PRINT COLUMN 1,"--------------------------------------------------",
"------------------------------"
PRINT COLUMN 1, "TOTAL ---> ",
COLUMN 33, SUM(x.valor) USING "###,###,###.##",
COLUMN 61, SUM(x.valor*(x.porc_accidente/100))
USING "###,###,###.##"
PRINT COLUMN 1,"--------------------------------------------------",
"------------------------------"
END REPORT