Files
MBS/PROYECTO/addir/adprrp040.4gl
T

302 lines
8.7 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP040
OBJETIVO : LISTAR EL SEGURO SOCIAL POR EMPLEADO
PROGRAMADOR : Oscar Castillo
FECHA REALIZACION : Thursday, 23 November, 2000
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
DEFINE fecha_inicio,fecha_final,m_del,m_al DATE,
mes,ano SMALLINT
FUNCTION adprrp040()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE solicita RECORD LIKE notb00008.*,
nom1,nom2,apell1,apell2 CHAR(15),
depto LIKE adtb00003.departamento,
nomina LIKE notb00008.num_nomi,
m_v98,m_v22 DECIMAL (10,2)
WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp040 FROM "adfmrp040"
DISPLAY FORM adfmrp040
CALL pantalla()
DISPLAY "adprrp040" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Seguro Social" AT 6,31 ATTRIBUTE(BLACK)
## 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)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
INPUT BY NAME mes,ano
AFTER FIELD mes
IF mes IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD mes
END IF
AFTER FIELD ano
IF ano IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ano
END IF
SELECT a.fecha_del,a.fecha_al
INTO m_del,m_al
FROM adtb00041 a
WHERE a.mes = mes
AND a.ano = ano
AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD mes
END IF
LET fecha_inicio = m_del
LET fecha_final = m_al
DISPLAY BY NAME fecha_inicio,fecha_final
END INPUT
## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE
CONSTRUCT BY NAME criterio ON a.tipo_emp,a.num_emp,a.departamento
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
AFTER CONSTRUCT
EXIT CONSTRUCT
END CONSTRUCT
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 a.* ",
" FROM notb00008 a ",
" WHERE a.status_t is null AND a.fecha between ? AND ? AND ",
" a.cod_mov in (98,22) AND ",criterio clipped," ORDER BY 4,3 "
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 fecha_inicio,fecha_final
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT list_solt TO archivo
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
FOREACH accion INTO solicita.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF status = NOTFOUND THEN
EXIT FOREACH
ELSE
SELECT SUM(a.valor)
INTO m_v98
FROM notb00008 a
WHERE a.num_emp = solicita.num_emp
AND a.cod_mov = 98
AND a.status_t IS NULL
AND a.fecha BETWEEN fecha_inicio AND fecha_final
SELECT SUM(a.valor)
INTO m_v22
FROM notb00008 a
WHERE a.num_emp = solicita.num_emp
AND a.cod_mov = 22
AND a.status_t IS NULL
AND a.fecha BETWEEN fecha_inicio AND fecha_final
SELECT a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.departamento
INTO nom1,nom2,apell1,apell2,depto
FROM adtb00003 a
WHERE a.num_emp = solicita.num_emp
#AND a.status_t IS NULL
LET nombre = nom1 CLIPPED," ",nom2 CLIPPED," ",apell1 CLIPPED," ",apell2 clipped
OUTPUT TO REPORT list_solt(solicita.*,nombre,depto,m_v98,m_v22)
END IF
END FOREACH
FINISH REPORT list_solt
RUN imprime
CLEAR SCREEN
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT list_solt(x,p_nombre,p_depto,v98,v22)
DEFINE x RECORD LIKE notb00008.*
DEFINE p_depto LIKE adtb00003.departamento
DEFINE nom_dep LIKE adtb00033.nom_dpto
DEFINE p_nombre CHAR(60),
v98,v22,tt_v98,t_v98,tt_v22,t_v22 DECIMAL(10,2)
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
ORDER BY p_depto,x.num_emp
FORMAT
PAGE HEADER
LET hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, letras.normal,letras.negrillas_on,letras.doble_on,letras.comp_on
PRINT COLUMN 2, "adprrp040",
COLUMN 37, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 112, "Pag. ",pageno using "###"
PRINT COLUMN 37, " Sistema de Administracion de Personal",
COLUMN 112, today using "dd/mm/yyyy"
PRINT COLUMN 37, " Seguro Social ",
COLUMN 117, hora
SKIP 1 LINES
PRINT "Desde ",fecha_inicio USING "dd/mm/yyyy"," Hasta ",
fecha_final USING "dd/mm/yyyy"
PRINT COLUMN 2, "---------------------------------------------------",
"------------------------------",
"-------------------------------------------"
PRINT COLUMN 2, "Departamento",
COLUMN 16, "Ficha Empleado",
COLUMN 32, " Nombre",
COLUMN 87, "Pagado Empresa",
COLUMN 105, "Pagado Empleado"
PRINT COLUMN 2, "----------------------------------------------------",
"-----------------------------",
"-------------------------------------------"
IF tt_v98 IS NULL THEN
LET tt_v98 = 0
END IF
IF tt_v22 IS NULL THEN
LET tt_v22 = 0
END IF
PRINT letras.negrillas_off
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF p_depto
SELECT a.nom_dpto
INTO nom_dep
FROM adtb00033 a
WHERE a.departamento = p_depto
AND a.status_t IS NULL
PRINT letras.negrillas_on
PRINT COLUMN 2, p_depto USING "#####"," ",nom_dep CLIPPED
PRINT letras.negrillas_off
LET t_v98 = 0
LET t_v22 = 0
BEFORE GROUP OF x.num_emp
#ON EVERY ROW
LET t_v98 = t_v98 + v98
LET t_v22 = t_v22 + v22
PRINT COLUMN 20, x.num_emp USING "###",
COLUMN 35, p_nombre CLIPPED,
COLUMN 90, v98 USING "###,###.##",
COLUMN 108, v22 USING "###,###.##"
AFTER GROUP OF p_depto
SKIP 2 LINES
PRINT COLUMN 10, "Total Por Departamento : ",
COLUMN 90, t_v98 USING "#,###,###.##",
COLUMN 108, t_V22 USING "#,###,###.##"
LET tt_v98 = tt_v98 + t_v98
LET tt_v22 = tt_v22 + t_v22
#display "28 ",tt_v98, " 22 ",t_v98
ON LAST ROW
SKIP 2 LINE
PRINT COLUMN 10, "Total General : ",
COLUMN 90, tt_v98 USING "#,###,###.##",
COLUMN 108, tt_V22 USING "#,###,###.##"
END REPORT