{
-------------------------------------------------------------------------------
PROGRAMA              :  adprrp042
OBJETIVO              :  LISTAR EL vida DENTAL POR EMPLEADO
PROGRAMADOR           :  Oscar Castillo
FECHA REALIZACION     :  Wednesday, 29 November, 2000
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"

FUNCTION adprrp042()

## 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 vida 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),
           myd,comision,v_comp,v_empl DECIMAL(12,2),
           nombre CHAR(60)   

  WHENEVER ERROR CONTINUE

    OPTIONS
       FORM LINE 8,
       ERROR LINE 23,
       COMMENT LINE 21

    CLEAR SCREEN

    OPEN FORM adfmrp042 FROM "adfmrp042"
    DISPLAY FORM adfmrp042
    CALL pantalla()
    DISPLAY "adprrp042" AT 4,3 ATTRIBUTE(RED)
    DISPLAY "vida Dental " 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

## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE 
    CONSTRUCT BY NAME criterio ON 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 adtb00003 a ",
                " WHERE a.status_t IS NULL AND ",
                "       a.monto_seg_dental 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_vida TO archivo
         
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
    FOREACH accion INTO vida.* 

    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
        
          LET v_comp = vida.monto_seg_dental * 0.70    
          LET v_empl = vida.monto_seg_dental * 0.30

          LET nombre = vida.nom1_emp CLIPPED," ",vida.nom2_emp CLIPPED,
                       " ",vida.apell1_emp CLIPPED," ",vida.apell2_emp clipped


    OUTPUT TO REPORT list_vida(vida.*,nombre,v_comp,v_empl)
       END IF
    END FOREACH
    FINISH REPORT list_vida
    RUN imprime

    CLEAR SCREEN

END FUNCTION

## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
   
 REPORT list_vida(x,p_nombre,p_comp,p_empl)
       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,p_comp,p_empl DECIMAL(12,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 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.doble_on,letras.comp_on
           PRINT COLUMN  2, "adprrp042",
                 COLUMN 42, "R A Y . O . V A C  D O M I N I C A N A,  S. A.",
                 COLUMN 113, "Pag. ",pageno using "###"
           PRINT COLUMN 42, "    Sistema de Administracion de Personal", 
                 COLUMN 113, today using "dd/mm/yyyy"
           PRINT COLUMN 42, "                 Seguro Dental ",
                 COLUMN 118, hora

           SKIP 2 LINES

        PRINT COLUMN 2, "---------------------------------------------------",
                        "---------------------------------------------",
                        "----------------------------" 


           PRINT COLUMN   2, "Departamento",
                 COLUMN  16, "Ficha Empleado",
                 COLUMN  32, "   Nombre",
                 COLUMN  87, "% Empresa",
                 COLUMN 105, "% Empleado"

        PRINT COLUMN 2, "----------------------------------------------------",
                        "--------------------------------------------",
                        "----------------------------" 
                
        PRINT letras.negrillas_off
## AQUI SE INDICA LA IMPRESION DEL DETALLE
    
    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
         
         SKIP 1 LINE

       #BEFORE GROUP OF x.num_emp
          
    ON EVERY ROW
        
         PRINT COLUMN  20, x.num_emp USING "###",
               COLUMN  35, p_nombre CLIPPED,
               COLUMN  86, p_comp USING "#,###,###.##",
               COLUMN 104, p_empl USING "#,###,###.##"

    AFTER GROUP OF x.departamento

         SKIP 2 LINES
        
         PRINT COLUMN 10, "Total Por Departamento  :   ", 
               COLUMN 86,  GROUP SUM(p_comp) USING "#,###,###.##",
               COLUMN 104, GROUP SUM(p_empl) USING "#,###,###.##"

      ON LAST ROW
      SKIP 2 LINE
      
         PRINT COLUMN 10, "Total General  :  ", 
               COLUMN 86,  SUM(p_comp) USING "#,###,###.##",
               COLUMN 104, SUM(p_empl) USING "#,###,###.##"        

     END REPORT

