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

258 lines
7.8 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP018
OBJETIVO : FROMULARIOS DE LOS MOVIMIENTOS
PROGRAMADOR : Ing. Juan F. Soto
FECHA REALIZACION : Enero 17, 1994
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
FUNCTION noprrp018()
DEFINE fecha1,fecha2 DATE
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE extras RECORD
num_emp LIKE notb00007.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,
cod_mov LIKE notb00007.cod_mov,
descrip_mov CHAR(30)
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp018 FROM "nofmrp018"
DISPLAY FORM nofmrp018
CALL pantalla()
DISPLAY "noprrp018" 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)
INPUT BY NAME novedad.tipo_emp
AFTER FIELD tipo_emp
IF novedad.tipo_emp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_emp
END IF
EXIT INPUT
END INPUT
CONSTRUCT criterio ON a.cod_mov FROM cod_mov
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,a.cod_mov,",
"a.descrip_mov ",
"FROM adtb00003 b,notb00002 a ",
"WHERE ",
"b.nomina = ? AND ",
"a.status_t is null AND ",
criterio clipped,
"ORDER BY 7,1"
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
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## SE DECLARA EL CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA
DECLARE accion CURSOR FOR busca
OPEN accion using novedad.tipo_emp
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT formualrio TO "C:\\archivo"
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
WHILE status != NOTFOUND
FETCH accion INTO extras.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
EXIT WHILE
FINISH REPORT formualrio
END IF
IF status = NOTFOUND THEN
EXIT WHILE
ELSE
OUTPUT TO REPORT formualrio(extras.*,fecha1,fecha2)
END IF
END WHILE
FINISH REPORT formualrio
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT formualrio(x,fech1,fech2)
DEFINE x RECORD
num_emp LIKE notb00007.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,
cod_mov LIKE notb00007.cod_mov,
descrip_mov CHAR(30)
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(5,2)
DEFINE descuento1,porcentaje1,porcentaje2,acumula,acumula1 DECIMAL(5,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 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
IF novedad.tipo_emp = "Q" THEN LET varia = "QUINCENALES" END IF
IF novedad.tipo_emp = "S" THEN LET varia = "SEMANALES" END IF
IF novedad.tipo_emp = "V" THEN LET varia = "VENDEDORES" END IF
## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA-
LET l = (100 - LENGTH(varia))/2
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, doce,
COLUMN 2, "noprrp018",
COLUMN 14, negrillas_on,
COLUMN 15, doble_on,
COLUMN 16, comp_on,
COLUMN 26, p_companias.nombre CLIPPED,
COLUMN 73, negrillas_off,
COLUMN 74, doble_off,
COLUMN 75, comp_off,
COLUMN 91, "Pag. ",pageno using "###"
PRINT COLUMN 41, "Sistema de Nomina",
COLUMN 93, today using "dd/mm/yy"
PRINT COLUMN L, varia,
COLUMN 96, hora
SKIP 1 LINE
PRINT COLUMN 2, "---------------------------------------------------",
"------------------------------------------------"
PRINT COLUMN 2, "Codigo No.",
COLUMN 19, "| Nombre",
COLUMN 59, "| Cantidad",
COLUMN 69, "| Valor ",
COLUMN 80, "| Total"
PRINT COLUMN 2, "----------------------------------------------------",
"-----------------------------------------------"
BEFORE GROUP OF x.cod_mov
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 1, x.descrip_mov
PRINT negrillas_off
ON EVERY ROW
PRINT COLUMN 2, x.num_emp using "&&&&","-",
COLUMN 7, x.departamento using "&&&&","-",
COLUMN 11, x.nivel_emp using "&&","-",
COLUMN 15, x.cod_puesto using "&&",
COLUMN 23, x.nom1_emp clipped," ",x.apell1_emp clipped,
COLUMN 69, "|",
COLUMN 80, "|",
COLUMN 91, "|"
PRINT COLUMN 59, "__________|",
COLUMN 70, "__________|",
COLUMN 81, "__________|"
AFTER GROUP OF x.cod_mov
PRINT COLUMN 59, " |",
COLUMN 70, " |",
COLUMN 81, " |"
PRINT COLUMN 1, " Total General",
COLUMN 59, "__________|",
COLUMN 70, "__________|",
COLUMN 81, "__________|"
PRINT COLUMN 2, "TOTAL Empleados: ",count(*) using "###"
SKIP TO TOP OF PAGE
END REPORT