{
-------------------------------------------------------------------------------
PROGRAMA              :  adprrp047
OBJETIVO              :  Listar las informaciones generales de los 
                         Empleados en formato ascii 
PROGRAMADOR           :  Oscar A. Castillo
FECHA REALIZACION     :  Wednesday, 16 January, 2002
-------------------------------------------------------------------------------
}
DATABASE rayovac
GLOBALS #"adprgb000.4gl"
 DEFINE tipo_l CHAR(1)
DEFINE tipo_papel SMALLINT
DEFINE numero_msg LIKE msgtable.cod_msg 
 DEFINE selec3,selec2,selec1,selec CHAR(1000)
DEFINE letras RECORD
     negrillas_on      ,
     negrillas_off     ,
     doble_on          ,
     doble_off         ,
     comp_on           ,
     comp_off          ,
     doce              ,
     normal            CHAR(6)
END RECORD

DEFINE   impresor              SMALLINT,
          imprime               CHAR(80),
          archivo               CHAR(20),
          parametro CHAR(2),
         orden CHAR(1),
         destino CHAR(1)
END GLOBALS
MAIN
  CALL adprrp047()
END MAIN

FUNCTION pantalla() 
   DEFINE fecha CHAR(10),
          hora char(5) 
   LET fecha = today USING "dd/mm/yyyy"  
   LET hora = time
    DISPLAY "R A Y . O . V A C  D O M I N I C A N A,  S. A." AT 4,17
            ATTRIBUTE (REVERSE,BLUE)
    DISPLAY fecha AT 4,68 ATTRIBUTE (RED)
#    DISPLAY "Sistema de Administracion de Personal" AT 5,21 ATTRIBUTE(BLACK)
     DISPLAY "Human Resource System" AT 5,30 ATTRIBUTE(BLUE)
    DISPLAY hora AT 6,73 ATTRIBUTE(RED)

    CALL fgl_drawbox(5,79,3,1)
#   CALL fgl_drawbox(1,79,22,1)
END FUNCTION

FUNCTION adprrp047()

## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
    DEFINE list_emp RECORD
           num_emp      LIKE adtb00003.num_emp,
           nivel_emp    LIKE adtb00003.nivel_emp,
           cod_puesto   LIKE adtb00003.cod_puesto,
           nom1_emp     LIKE adtb00003.nom1_emp,
           nom2_emp     LIKE adtb00003.nom2_emp,
           apell1_emp   LIKE adtb00003.apell1_emp,
           apell2_emp   LIKE adtb00003.apell2_emp,
           cedula       LIKE adtb00003.cedula,
           serie        LIKE adtb00003.serie,
           nom_puesto   LIKE adtb00004.nom_puesto,
           tipo_sangre  LIKE adtb00003.tipo_sangre
    END RECORD
    DEFINE nom_reporte  CHAR(20),
           ubicacion    CHAR(1),
           conjunto     CHAR(30)

#WHENEVER ERROR CONTINUE

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

    CLEAR SCREEN
    OPEN FORM adfmrp047 FROM "adfmrp047"
    DISPLAY FORM adfmrp047
    CALL pantalla()
    DISPLAY "adprrp047" AT 4,3 ATTRIBUTE(RED)
    DISPLAY "Maestra Empleado Resumen" AT 6,28 ATTRIBUTE(BLACK)

## INDICA EL PAPEL NECESARIO PARA IMPRIMIR EL REPORTE. 1 - PAPEL 9 1/2 X 11
## 2 - PAPEL 14 7/8 X 11
    LET tipo_papel = 2
    CALL msgrp000(tipo_papel)
        CALL defecto(impresor) RETURNING imprime,letras.*, archivo

## AQUI SE DIGITA LA VARIABLE QUE INDICA LA CONDICION DEL REPORTE, ES DECIR
## SI SE TRATA DE EMPLEADOS SEMANALES O QUINCENALES

   INPUT BY NAME nom_reporte,ubicacion

   AFTER FIELD nom_reporte
     IF nom_reporte IS NULL THEN      
           LET numero_msg = 16 
           CALL msg(numero_msg) 
           NEXT FIELD nom_reporte	     
     END IF

   AFTER FIELD ubicacion
     IF ubicacion IS NULL THEN      
           LET numero_msg = 16 
           CALL msg(numero_msg) 
           NEXT FIELD ubicacion	     
     END IF

   END INPUT
{
LABEL pide:   
PROMPT "Listado Numerico o Alfabetico (N/A)? " FOR CHAR tipo_l
LET tipo_l = UPSHIFT(tipo_l)
    IF int_flag THEN
       LET numero_msg = 2
       CALL msg(numero_msg)
       LET int_flag = FALSE
       RETURN
    END IF

IF tipo_l IS NULL THEN    
   LET tipo_l = "K"
END IF
IF tipo_l != "N" AND tipo_l != "A" THEN
   GOTO pide
END IF
IF decide IS NULL THEN
   LET decide = "S"
END IF
}
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE DE LOS QUINCENALES
{
 IF tipo_l = "N" THEN
  LET SELEC = 
   "SELECT UNIQUE a.num_emp,a.nivel_emp,a.cod_puesto, ",
   "       a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.cedula,a.serie, ",
   "       b.nom_puesto,a.tipo_sangre ",
   "FROM adtb00003 a,adtb00004 b ",
   "WHERE a.cod_puesto=b.cod_puesto AND ",
   "      a.num_emp != 888 AND ",
   "    (a.status_t is null OR ",
   "      a.status_t NOT IN('D','E','T')) ",
   "ORDER BY 1 "
 ELSE
} 
 LET SELEC = 
   "SELECT UNIQUE a.num_emp,a.nivel_emp,a.cod_puesto, ",
   "       a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.cedula,a.serie, ",
   "       b.nom_puesto,a.tipo_sangre ",
   "FROM adtb00003 a,adtb00004 b ",
   "WHERE a.cod_puesto=b.cod_puesto AND ",
   "      a.num_emp != 888 AND ",
   "      (a.status_t is null OR ",
   "      a.status_t NOT IN('D','E','T')) ",
   "ORDER BY 6,7,4,5 "
 # END IF

     DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
     ATTRIBUTE (REVERSE,BOLD)

## AQUI SE PREPARA LA INFORMACION SELECCIONADA
    PREPARE busca FROM selec
    DECLARE accion CURSOR FOR busca
    OPEN accion 

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

    LET conjunto = ubicacion CLIPPED ,":\\", nom_reporte CLIPPED
    display "  con  ",conjunto
    START REPORT emplear47 TO  conjunto
         
## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
    WHILE STATUS != NOTFOUND
    FETCH accion INTO list_emp.* 
      IF STATUS = NOTFOUND THEN
         EXIT WHILE
      END IF
      
      IF int_flag THEN
         LET numero_msg = 2
         CALL msg(numero_msg)
         LET int_flag = FALSE
         RETURN
      END IF

      OUTPUT TO REPORT emplear47(list_emp.*) 
    END WHILE  
    FINISH REPORT emplear47
    #RUN imprime

    CLEAR SCREEN

END FUNCTION

## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
    REPORT emplear47(x)
       DEFINE x RECORD
              num_emp      LIKE adtb00003.num_emp,
              nivel_emp    LIKE adtb00003.nivel_emp,
              cod_puesto   LIKE adtb00003.cod_puesto,
              nom1_emp     LIKE adtb00003.nom1_emp,
              nom2_emp     LIKE adtb00003.nom2_emp,
              apell1_emp   LIKE adtb00003.apell1_emp,
              apell2_emp   LIKE adtb00003.apell2_emp,
              cedula       LIKE adtb00003.cedula,
              serie        LIKE adtb00003.serie,
              nom_puesto   LIKE adtb00004.nom_puesto,
              tipo_sangre  LIKE adtb00003.tipo_sangre
       END RECORD,
       formato RECORD
           apellido      CHAR(30),
           nombre        CHAR(30),
           cedula        CHAR(13),
           cedula1       CHAR(11),
           cargo         CHAR(60)
       END RECORD,
           pri           CHAR(3),
           seg           CHAR(7),
           ter           CHAR(1)
        
## DEFINICION DE LAS VARIABLES DE IMPRESION
    
    DEFINE hora CHAR(5)
    DEFINE l SMALLINT
    DEFINE varia CHAR(12)

    OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
     TOP MARGIN 0
      LEFT MARGIN 2
      BOTTOM MARGIN 4

    FORMAT
     FIRST PAGE HEADER
{        
       LET hora = time

## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
           PRINT COLUMN   1, letras.comp_on,letras.negrillas_on
           PRINT COLUMN   1, "adprrp047",
                 COLUMN  44, "R A Y . O . V A C  D O M I N I C A N A,  S. A.",
                 COLUMN 128, "Pag. ",pageno using "###"
           PRINT COLUMN  44, "    Sistema de Administracion de Personal",
                 COLUMN 128, today using "dd/mm/yyyy"
           PRINT COLUMN  44, "       Maestra de Personal ",
                 COLUMN 131, hora

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

           PRINT COLUMN   2, "APELLIDOS",
                 COLUMN  34, "NOMBRES",
                 COLUMN  66, "CEDULA",
                 COLUMN  80, "POSICION"


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

    PRINT letras.negrillas_off
}
## AQUI SE INDICA LA IMPRESION DEL DETALLE
      ON EVERY ROW

         SELECT a.cedula_n
           INTO formato.cedula
           FROM adtb00038 a
          WHERE a.num_emp = x.num_emp

         LET pri = formato.cedula[1,3]
         LET seg = formato.cedula[5,11]
         LET ter = formato.cedula[13]

         LET formato.cedula1 = pri CLIPPED,seg CLIPPED,ter CLIPPED
         LET formato.apellido = x.apell1_emp clipped," ",x.apell2_emp
         LET formato.nombre   = x.nom1_emp clipped," ",x.nom2_emp

         PRINT COLUMN  2, formato.apellido CLIPPED,
               COLUMN 34, formato.nombre CLIPPED ,
               COLUMN 66, formato.cedula1 CLIPPED,
               COLUMN 80, x.nom_puesto CLIPPED
{
      ON LAST ROW
          SKIP 1 LINE
          PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###"
          PRINT letras.comp_off
}
   END REPORT

