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

237 lines
7.1 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP010
OBJETIVO : LISTAR LOS PAGOS A INFOTEP
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Septiembre 06, 1993
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
FUNCTION noprrp010()
DEFINE ano,ano1,mes,mes1,semanas INTEGER
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE infotep RECORD
nomina LIKE adtb00003.nomina,
num_nomi LIKE notb00008.num_nomi,
num_emp LIKE notb00008.num_emp,
fecha_del LIKE notb00010.fecha_del,
fecha_al LIKE notb00010.fecha_al,
sueldo_ac LIKE adtb00003.sueldo_ac
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp010 FROM "nofmrp010"
DISPLAY FORM nofmrp010
CALL pantalla()
DISPLAY "noprrp010" AT 4,3
DISPLAY "Pago INFOTEP" AT 6,34
## 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 ano,mes
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 = 160
CALL msg(numero_msg)
NEXT FIELD ano
END IF
AFTER FIELD mes
IF mes IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD mes
END IF
IF mes > MONTH(TODAY) AND ano >= YEAR(TODAY) THEN
LET numero_msg = 160
CALL msg(numero_msg)
NEXT FIELD mes
END IF
LET mes1 = mes
LET ano1 = ano
SELECT a.descrip INTO nombre_mes FROM mestable a
WHERE a.mes = mes1
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE Y
## SE DECLARA EL CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA
DECLARE accion CURSOR FOR
SELECT UNIQUE a.tipo_emp,a.num_nomi,a.num_emp,b.fecha_del,b.fecha_al,
SUM(a.valor)
FROM notb00010 b, notb00008 a
WHERE a.tipo_emp = b.tipo_emp AND a.num_nomi = b.num_nomi AND
b.ano = ano1 AND b.mes = mes1 AND a.status_t is null AND
a.cod_mov IN (1,31,33) GROUP BY 1,2,3,4,5 HAVING SUM(a.valor) <> 0
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
START REPORT list_infotep TO "C:\\archivo"
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
FOREACH accion INTO infotep.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT list_infotep(infotep.*,ano,mes,nombre_mes)
END FOREACH
FINISH REPORT list_infotep
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT list_infotep(x,ano1,mes1,nombrem)
DEFINE x RECORD
nomina LIKE adtb00003.nomina,
num_nomi LIKE notb00008.num_nomi,
num_emp LIKE notb00008.num_emp,
fecha_del LIKE notb00010.fecha_del,
fecha_al LIKE notb00010.fecha_al,
monto1 DECIMAL(10,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 ano1,mes1,semana1 INTEGER
DEFINE nombrem CHAR(10)
DEFINE total,total2,porciento DECIMAL(10,2)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
ORDER BY x.nomina,x.num_nomi
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
LET l = (82 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, normal,negrillas_on
PRINT COLUMN 2, "noprrp010",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 75, "Pag. ",pageno using "###"
PRINT COLUMN 32, "Sistema de Nomina",
COLUMN 75, today using "dd/mm/yy"
PRINT COLUMN 35, "Pago INFOTEP",
COLUMN 78, hora
SKIP 1 LINE
PRINT COLUMN 2, "Mes de",
COLUMN 9, nombrem clipped,
COLUMN 21, "De",
COLUMN 24, ano1 using "<<<<"
PRINT COLUMN 1, negrillas_on
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.nomina
LET descr = null
IF x.nomina = "Q" THEN
LET descr = "QUINCENAL"
ELSE
IF x.nomina = "V" THEN
LET descr = "VENDEDORES"
ELSE
LET descr = "SEMANAL"
END IF
END IF
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 2, "Numero",
COLUMN 34, "Cantidad",
COLUMN 52, "Monto"
PRINT COLUMN 2, "Nomina",
COLUMN 34, "Empleado",
COLUMN 52, "Nomina"
PRINT COLUMN 20, negrillas_off
AFTER GROUP OF x.num_nomi
PRINT COLUMN 2, x.num_nomi using "&&&&",
" Del ", x.fecha_del using "dd/mm/yy",
" Al ", x.fecha_al using "dd/mm/yy",
COLUMN 36, GROUP COUNT(*) USING "#,###",
COLUMN 48, GROUP SUM(x.monto1) using "#,###,###.##"
AFTER GROUP OF x.nomina
SKIP 1 LINE
PRINT COLUMN 2, "Total Nomina ",descr,
COLUMN 48, GROUP SUM(x.monto1) USING "#,###,###.##"
SKIP 2 LINES
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 2, "TOTAL GENERAL",
COLUMN 48, SUM(x.monto1) using "#,###,###.##"
SKIP 1 LINE
PRINT COLUMN 2, "TOTAL A PAGAR 1%",
COLUMN 48, SUM(x.monto1) * 0.01 using "#,###,###.##"
END REPORT