{ ------------------------------------------------------------------------------- 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