{ ------------------------------------------------------------------------------- PROGRAMA : adprrp041 OBJETIVO : LISTAR EL SEGURO DE VIDA POR EMPLEADO PROGRAMADOR : Oscar Castillo FECHA REALIZACION : Tuesday, 28 November, 2000 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" DEFINE fecha1,fecha2 DATE, edad,edad1 INTEGER FUNCTION adprrp041() ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE c_plan LIKE adtb00003.cod_plan DEFINE sueldo LIKE adtb00003.sueldo_ac DEFINE adtb40 RECORD LIKE adtb00040.* DEFINE empleado LIKE adtb00003.num_emp DEFINE seguro RECORD LIKE adtb00003.*, nom1,nom2,apell1,apell2 CHAR(15), depto LIKE adtb00003.departamento, nomina LIKE notb00008.num_nomi, m_v98,m_v22 DECIMAL (10,2), por_vida,por_myd,por_comi, l_porc_vida,vida,myd,comision DECIMAL(12,2), nombre CHAR(60),m_num_emp LIKE adtb00003.num_emp # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp041 FROM "adfmrp041" DISPLAY FORM adfmrp041 CALL pantalla() DISPLAY "adprrp041" AT 4,3 ATTRIBUTE(RED) DISPLAY "Seguro De Vida " 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 fecha1,fecha2 AFTER FIELD fecha1 IF fecha1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha2 END IF END INPUT ## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE CONSTRUCT BY NAME criterio ON a.cod_plan,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 adtb00003 a ", " WHERE a.cod_plan IS NOT NULL AND ", criterio clipped," ORDER BY 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 DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT list_seg1 TO archivo ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE FOREACH accion INTO seguro.* 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 UNIQUE a.num_emp INTO m_num_emp FROM notb00008 a WHERE a.num_emp = seguro.num_emp AND a.fecha BETWEEN fecha1 AND fecha2 #AND a.status_t IS NULL IF STATUS != NOTFOUND THEN IF seguro.monto_asegurado > 0 THEN LET nombre = seguro.nom1_emp CLIPPED," ",seguro.nom2_emp CLIPPED, " ",seguro.apell1_emp CLIPPED," ",seguro.apell2_emp clipped #DISPLAY " PLAN :",seguro.cod_plan IF seguro.sueldo_ac IS NULL THEN LET seguro.sueldo_ac = 0 END IF #display "sueldo ",seguro.sueldo_ac SELECT a.* INTO adtb40.* FROM adtb00040 a WHERE a.cod_plan = seguro.cod_plan AND a.status_t IS NULL IF STATUS != NOTFOUND THEN IF adtb40.porc_vida IS NULL THEN LET adtb40.porc_vida = 0 END IF IF adtb40.porc_mid IS NULL THEN LET adtb40.porc_mid = 0 END IF IF adtb40.porc_comision IS NULL THEN LET adtb40.porc_comision = 0 END IF LET edad1 = 0 LET edad1 = TODAY - seguro.fech_nac LET edad = edad1/365 LET vida = 0 LET myd = 0 LET comision = 0 LET por_vida = 0 LET por_myd = 0 LET por_comi = 0 LET vida = (seguro.monto_asegurado * (adtb40.porc_vida / 100)) LET myd = (seguro.monto_asegurado * (adtb40.porc_mid / 100)) { IF edad >= 60 THEN LET comision = 0 ELSE } LET comision = (seguro.monto_asegurado * (adtb40.porc_comision / 100)) # END IF # display "vida ",vida LET por_vida = (vida * 0.16) LET por_myd = (myd * 0.16) LET por_comi = (comision * 0.16) # display "porvida ",por_vida LET vida = vida + por_vida LET myd = myd + por_myd LET comision = comision + por_comi #display "ad ",adtb40.porc_comision { LET vida = ((seguro.monto_asegurado * adtb40.porc_vida) / 100) LET myd = ((seguro.monto_asegurado * adtb40.porc_mid) / 100) LET comision = ((seguro.monto_asegurado * adtb40.porc_comision) / 100) LET vida = vida LET myd = myd LET comision = comision } OUTPUT TO REPORT list_seg1(seguro.*,nombre,vida,myd,comision,adtb40.*) END IF END IF END IF END IF END FOREACH FINISH REPORT list_seg1 RUN imprime CLEAR SCREEN END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT list_seg1(x,p_nombre,p_vida,p_myd,p_comision,p) DEFINE x RECORD LIKE adtb00003.* DEFINE p RECORD LIKE adtb00040.* DEFINE p_depto LIKE adtb00003.departamento DEFINE nom_dep LIKE adtb00033.nom_dpto DEFINE p_sueldo LIKE adtb00003.sueldo_ac DEFINE p_plan LIKE adtb00003.cod_plan DEFINE p_emp LIKE adtb00003.num_emp DEFINE p_nombre CHAR(60), v98,v22,tt_v98,t_v98,tt_v22,t_v22 DECIMAL(10,2), p_vida,p_myd,p_comision DECIMAL(12,2), cuenta SMALLINT ## 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 x.cod_plan,x.departamento,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.comp_on PRINT COLUMN 2, "adprrp041", COLUMN 42, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 140, "Pag. ",pageno using "###" PRINT COLUMN 42, " Sistema de Administracion de Personal", COLUMN 140, today using "dd/mm/yyyy" PRINT COLUMN 42, " Seguro De Vida ", COLUMN 145, hora SKIP 2 LINES PRINT COLUMN "Desde : ",fecha1," Hasta : ",fecha2 PRINT COLUMN 2, "---------------------------------------------------", "---------------------------------------------", "------------------------------------------------" LET p.porc_vida = p.porc_vida * 1000 LET p.porc_mid = p.porc_mid * 1000 LET p.porc_comision = p.porc_comision * 1000 PRINT COLUMN 2, "Departamento", COLUMN 16, "Ficha Empleado", COLUMN 32, " Nombre", COLUMN 80, "Monto Aseg.", COLUMN 98, "% Vida", COLUMN 116, "% MyD", COLUMN 134, "% Comision" PRINT COLUMN 100, "(",p.porc_vida USING "<<<",")", COLUMN 118, "(",p.porc_mid USING "<<<",")", COLUMN 138, "(",p.porc_comision USING "<<<",")" PRINT COLUMN 2, "----------------------------------------------------", "--------------------------------------------", "------------------------------------------------" PRINT letras.negrillas_off ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.cod_plan PRINT letras.negrillas_on PRINT COLUMN 2, x.cod_plan USING "#####"," ",p.plan_descrip CLIPPED PRINT letras.negrillas_off SKIP 1 LINE BEFORE GROUP OF x.departamento SELECT a.nom_dpto INTO nom_dep FROM adtb00033 a WHERE a.departamento = x.departamento AND a.status_t IS NULL PRINT letras.negrillas_on PRINT COLUMN 7, x.departamento USING "#####"," ",nom_dep CLIPPED PRINT letras.negrillas_off #BEFORE GROUP OF x.num_emp ON EVERY ROW #display "porsien ",p_vida," - ",p_myd," - ",p_comision," - " PRINT COLUMN 20, x.num_emp USING "###", COLUMN 35, p_nombre CLIPPED, COLUMN 79, x.monto_asegurado USING "###,###.##", COLUMN 97, p_vida USING "###,###.##", COLUMN 114, p_myd USING "###,###.##", COLUMN 132, p_comision USING "###,###.##" LET cuenta = cuenta + 1 AFTER GROUP OF x.departamento SKIP 2 LINES PRINT COLUMN 10, "Total Por Departamento : ", COLUMN 97, GROUP SUM(p_vida) USING "#,###,###.##", COLUMN 114, GROUP SUM(p_myd) USING "#,###,###.##", COLUMN 132, GROUP SUM(p_comision) USING "#,###,###.##" ON LAST ROW SKIP 2 LINE PRINT COLUMN 10, "Total General : ", COLUMN 97, SUM(p_vida) USING "#,###,###.##", COLUMN 114, SUM(p_myd) USING "#,###,###.##", COLUMN 132, SUM(p_comision) USING "#,###,###.##" PRINT COLUMN 10, "Total Empleados : ", cuenta USING "###" LET p_vida = 0 LET p_myd = 0 LET p_comision = 0 END REPORT