{
-------------------------------------------------------------------------------
PROGRAMA              :  ADPRRP040
OBJETIVO              :  LISTAR EL SEGURO SOCIAL POR EMPLEADO
PROGRAMADOR           :  Oscar Castillo
FECHA REALIZACION     :  Thursday, 23 November, 2000
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"

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 nomina

       AFTER FIELD nomina
         IF nomina IS NULL THEN
            LET numero_msg = 16
            CALL msg(numero_msg)
            NEXT FIELD nomina
         END IF
   
         SELECT * 
           FROM notb00008
          WHERE num_nomi = nomina
         
        IF STATUS = NOTFOUND THEN
            LET numero_msg = 3
            CALL msg(numero_msg)
            NEXT FIELD nomina
         END IF
           
    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.num_nomi = ? 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 nomina

    DISPLAY "                                         " AT 19,14
    DISPLAY "<< Reporte Generandose ...  Por Favor Espere. >>" 
            AT 19,14 ATTRIBUTE (REVERSE) 

    START REPORT list_solt TO "oscar"  #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

         IF solicita.cod_mov = 98 THEN
            LET m_v98 = solicita.valor
         END IF

         IF solicita.cod_mov = 22 THEN
            LET m_v22 = solicita.valor
         END IF
         
         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 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 17, "R A Y . O . V A C  D O M I N I C A N A,  S. A.",
                 COLUMN 73, "Pag. ",pageno using "###"
           PRINT COLUMN 17, "    Sistema de Administracion de Personal", 
                 COLUMN 73, today using "dd/mm/yyyy"
           PRINT COLUMN 17, "               Seguro Social ",
                 COLUMN 76, hora

        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, "----------------------------------------------------",
                        "-----------------------------",
                        "-------------------------------------------" 

        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

       BEFORE GROUP OF x.num_emp
          
    #ON EVERY ROW 


         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, GROUP SUM(v98) USING "#,###,###.##",
               COLUMN 108, GROUP SUM(V22) USING "#,###,###.##"

      ON LAST ROW
      SKIP 1 LINE
         PRINT COLUMN 10, "Total General  :  ", 
               COLUMN 90, SUM(v98) USING "#,###,###.##",
               COLUMN 108, SUM(V22) USING "#,###,###.##"
               

     END REPORT

