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

268 lines
8.2 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP032
OBJETIVO : CALCULA LA REGALIA PASCUAL PROYECTADA A DICIEMBRE
PROGRAMADOR : Juan Soto
FECHA REALIZACION : Agosto 5, 1996.
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE salir CHAR(1),
fecha_regalia CHAR(12),
p_mes,dias SMALLINT,
p_tipo_emp CHAR(1),
porc_dias DECIMAL(8,2)
FUNCTION noprrp032()
# WHENEVER ERROR CONTINUE
DEFINE cooper RECORD
num_emp LIKE notb00008.num_emp,
departamento LIKE adtb00003.departamento,
nivel_emp LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
sueldo LIKE adtb00003.sueldo_ac,
fecha_entrada LIKE adtb00003.fech_efec,
regalia DECIMAL(12,2)
END RECORD
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp032 FROM "nofmrp032"
DISPLAY FORM nofmrp032
CALL pantalla()
DISPLAY "noprrp032" AT 4,3
DISPLAY "Movimientos de Empleados" AT 6,28
## 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 p_tipo_emp
AFTER INPUT
IF p_tipo_emp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_tipo_emp
END IF
EXIT INPUT
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT BY NAME criterio ON b.departamento
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 SELEC =
"SELECT UNIQUE b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ",
" b.nom1_emp,b.apell1_emp,b.sueldo_ac,b.fech_efec ",
" FROM adtb00003 b ",
" WHERE nomina = ? and ",
" (b.status_t is null or b.status_t = 'I') and ",
criterio clipped,
" ORDER BY 1"
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
## SE PREPARA LA INFORMACION SELECCIONADA
PREPARE comando FROM selec
DECLARE accion CURSOR FOR comando
OPEN accion USING p_tipo_emp
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT pro_regalia TO "C:\\archivo"
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
WHILE status != notfound
FETCH accion INTO cooper.*
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 cooper.regalia = cooper.sueldo
# Calculo para los empleados que su regalia es proporcional
LET fecha_regalia = "31/12/",year(today) using "####"
LET fecha_regalia = fecha_regalia CLIPPED
IF year(today) = year(cooper.fecha_entrada) THEN
LET p_mes = month(cooper.fecha_entrada)
SELECT dias_prod INTO dias FROM mestable
WHERE mes = p_mes
LET porc_dias = (dias - day(cooper.fecha_entrada)) / dias
LET p_mes = 12 - month(cooper.fecha_entrada)
LET porc_dias = porc_dias + p_mes
LET cooper.regalia = (cooper.sueldo / 12) * porc_dias
END IF
OUTPUT TO REPORT pro_regalia(cooper.*)
END WHILE
FINISH REPORT pro_regalia
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT pro_regalia(x)
DEFINE x RECORD
num_emp LIKE notb00008.num_emp,
departamento LIKE adtb00003.departamento,
nivel_emp LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
sueldo LIKE adtb00003.sueldo_ac,
fecha_entrada LIKE adtb00003.fech_efec,
regalia DECIMAL(12,2)
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 valor1,total,total1,balance DECIMAL(10,2)
DEFINE l smallint
DEFINE varia CHAR(30)
DEFINE nombre_d CHAR(30)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
ORDER BY x.departamento
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 doce
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 1, "noprrp032",
COLUMN 22, p_companias.nombre CLIPPED,
COLUMN 74, "Pag. ",pageno using "###"
PRINT COLUMN 22, " Sistema de Nomina"
PRINT COLUMN 25, "Proyeccion Regalia Para El Ano Actual",
COLUMN 74, today using "dd/mm/yy"
PRINT COLUMN 77, hora
## SE SELECCIONA EL TIPO DE NOMINA A IMPRIMIR
IF p_tipo_emp = "Q" THEN
LET descr = "QUINCENAL"
ELSE
IF p_tipo_emp = "V" THEN
LET descr = "VENDEDOR"
ELSE
LET descr = "SEMANAL"
END IF
END IF
PRINT COLUMN 1, negrillas_on,
COLUMN 5, descr,
COLUMN 15, negrillas_off
PRINT COLUMN 2, "---------------------------------------------------",
"-----------------------------"
PRINT COLUMN 41, "Fecha De",
COLUMN 67, "Regalia"
PRINT COLUMN 2, "Ficha No.",
COLUMN 15, "Nombre",
COLUMN 41, "Entrada",
COLUMN 55, "Sueldo",
COLUMN 67, "Al ",fecha_regalia
PRINT COLUMN 2, "---------------------------------------------------",
"-----------------------------"
BEFORE GROUP OF x.departamento
IF x.departamento IS NOT NULL THEN
SELECT nom_dpto INTO nombre_d
FROM adtb00001
WHERE departamento = x.departamento
IF STATUS = NOTFOUND THEN
LET STATUS = 0
LET nombre_d = " NO TIENE DEPARTAMENTO "
END IF
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 2, "DEPTO.: ", x.departamento USING "&&&&", " ",
nombre_d CLIPPED
PRINT COLUMN 1, negrillas_off
END IF
ON EVERY ROW
PRINT COLUMN 2, x.num_emp using "&&&&",
COLUMN 15, x.nom1_emp clipped," ",x.apell1_emp clipped,
COLUMN 41, x.fecha_entrada using "dd/mm/yy",
COLUMN 53, x.sueldo using "##,###.##",
COLUMN 71, x.regalia using "##,###.##"
AFTER GROUP OF x.departamento
SKIP 1 LINE
ON LAST ROW
PRINT COLUMN 2, "----------------------------------------------------",
"-----------------------------------------"
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 1, "TOTAL REGALIA =====>",
COLUMN 66, SUM(x.regalia) USING "###,###,###.##"
PRINT COLUMN 15, negrillas_off,normal
END REPORT