{
-------------------------------------------------------------------------------
PROGRAMA              :  ADPRRP011
OBJETIVO              :  Listar las informaciones generales de los 
                         Empleados Quincenales y Semanales y Ex-Empleados 
PROGRAMADOR           :  Ing. Betania Guerrero Perez
FECHA REALIZACION     :  Junio 24, 1993
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
 DEFINE tipo_l CHAR(1)

FUNCTION adprrp011()

## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE
    DEFINE list_emp RECORD
       num_emp      LIKE adtb00003.num_emp,
       departamento LIKE adtb00003.departamento,
       nivel_emp    LIKE adtb00003.nivel_emp,
       cod_puesto   LIKE adtb00003.cod_puesto,
       nom1_emp     LIKE adtb00003.nom1_emp,
       apell1_emp   LIKE adtb00003.apell1_emp,
       cedula       LIKE adtb00003.cedula,
       serie        LIKE adtb00003.serie,
       telefono     LIKE adtb00003.telefono,
       fech_nac     LIKE adtb00003.fech_nac,
       tipo_sangre  LIKE adtb00003.tipo_sangre,
       licencia     LIKE adtb00003.licencia,
       fech_efec    LIKE adtb00003.fech_efec,
       sueldo_ac    LIKE adtb00003.sueldo_ac,
       nom_dpto     LIKE adtb00001.nom_dpto,
       nom_puesto   LIKE adtb00004.nom_puesto,
       calle        LIKE adtb00003.calle,
       casa_num     LIKE adtb00003.casa_num,
       barrio       LIKE adtb00003.barrio,
       urbanizacion LIKE adtb00003.urbanizacion,
       sexo         LIKE adtb00030.sexo
    END RECORD

#WHENEVER ERROR CONTINUE

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

    CLEAR SCREEN

    OPEN FORM adfmrp011 FROM "adfmrp011"
    DISPLAY FORM adfmrp011
    CALL pantalla()
    DISPLAY "adprrp011" AT 4,3 ATTRIBUTE(RED)
    DISPLAY "Empleados Activos" AT 6,34 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 = 1
    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 decide   
    
    ON KEY(CONTROL-P)
      CALL busca_printer() RETURNING imprime,letras.*, archivo
 
    AFTER INPUT
    EXIT INPUT
  END INPUT



    IF int_flag THEN
       LET numero_msg = 2
       CALL msg(numero_msg)
       LET int_flag = FALSE
       RETURN
    END IF
CONSTRUCT BY NAME criterio ON a.num_emp 

 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

LABEL pide:   
PROMPT "Listado Numerico o Alfabetico (N/A)? " FOR CHAR tipo_l
LET tipo_l = UPSHIFT(tipo_l)

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.departamento,a.nivel_emp,a.cod_puesto, ",
   "       a.nom1_emp,a.apell1_emp,a.cedula,a.serie,a.telefono,a.fech_nac, ",
   "       a.tipo_sangre,a.licencia,a.fech_efec,a.sueldo_ac,c.nom_dpto, ",
   "       b.nom_puesto,a.calle,a.casa_num,a.barrio,a.urbanizacion,d.sexo ",
   "FROM adtb00003 a,adtb00004 b,adtb00001 c,adtb00030 d ",
   "WHERE (a.cod_puesto=b.cod_puesto) AND (a.departamento=c.departamento) AND ",
   "      a.nomina=? AND (a.status_t is null OR a.status_t NOT IN('D','E','T')) AND ",
   "     (a.num_emp = d.num_emp AND ",criterio CLIPPED,
   ") ORDER BY 1 "
 ELSE
  LET SELEC = 
   "SELECT UNIQUE a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ",
   "       a.nom1_emp,a.apell1_emp,a.cedula,a.serie,a.telefono,a.fech_nac, ",
   "       a.tipo_sangre,a.licencia,a.fech_efec,a.sueldo_ac,c.nom_dpto, ",
   "       b.nom_puesto,a.calle,a.casa_num,a.barrio,a.urbanizacion ",
   "FROM adtb00003 a,adtb00004 b,adtb00001 c ",
   "WHERE (a.cod_puesto=b.cod_puesto) AND (a.departamento=c.departamento) AND ",
   "      a.nomina=? AND (a.status_t is null OR a.status_t NOT IN('D','E','T'))", #AND ",
   " ORDER BY 6 "
{
   "     (a.num_emp = d.num_emp AND ",criterio CLIPPED,
   ") ORDER BY 6 "
}
  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 USING decide

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

    START REPORT emplear TO archivo
         
## 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 emplear(list_emp.*) 
    END WHILE  
    FINISH REPORT emplear
    RUN imprime

    CLEAR SCREEN

END FUNCTION

## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
    REPORT emplear(x)
       DEFINE x RECORD
       num_emp      LIKE adtb00003.num_emp,
       departamento LIKE adtb00003.departamento,
       nivel_emp    LIKE adtb00003.nivel_emp,
       cod_puesto   LIKE adtb00003.cod_puesto,
       nom1_emp     LIKE adtb00003.nom1_emp,
       apell1_emp   LIKE adtb00003.apell1_emp,
       cedula       LIKE adtb00003.cedula,
       serie        LIKE adtb00003.serie,
       telefono     LIKE adtb00003.telefono,
       fech_nac     LIKE adtb00003.fech_nac,
       tipo_sangre  LIKE adtb00003.tipo_sangre,
       licencia     LIKE adtb00003.licencia,
       fech_efec    LIKE adtb00003.fech_efec,
       sueldo_ac    LIKE adtb00003.sueldo_ac,
       nom_dpto     LIKE adtb00001.nom_dpto,
       nom_puesto   LIKE adtb00004.nom_puesto,
       calle        LIKE adtb00003.calle,
       casa_num     LIKE adtb00003.casa_num,
       barrio       LIKE adtb00003.barrio,
       urbanizacion LIKE adtb00003.urbanizacion,
       sexo         LIKE adtb00030.sexo
    END RECORD
 
## 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
      PAGE HEADER
       
        LET hora = time

        IF decide = "Q" THEN
           LET varia = "QUINCENALES"
        END IF 
        IF decide = "S" THEN
           LET varia = "SEMANALES"
        END IF
        IF decide = "T" THEN
           LET varia = "EX-EMPLEADOS"
        END IF
## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA-
           LET l = (135 - LENGTH(varia))/2

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

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

           PRINT COLUMN  75, "Fecha de",
                 COLUMN  86, "Tipo de",
                 COLUMN 104, "Fecha de"

           PRINT COLUMN   2, "Codigo No.",
                 COLUMN  18, "Nombre Empleado",
                 COLUMN  49, "Cedula",
                 COLUMN  60, "Serie",
                 COLUMN  66, "Telefono",
                 COLUMN  75, "Nacimiento",
                 COLUMN  86, "Sangre",
                 COLUMN  95, "Licencia",
                 COLUMN 104, "Entrada",
                 COLUMN 114, "Salario Mes"

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

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

         PRINT COLUMN   1, letras.negrillas_on,
               COLUMN   3, x.num_emp USING "&&&&","-",
                           x.departamento USING "&&&&","-",
                           x.nivel_emp USING "&&","-",x.cod_puesto USING "&&",
                           " ",x.apell1_emp clipped,", ",x.nom1_emp clipped,
               COLUMN  48, letras.negrillas_off,
               COLUMN  52, x.cedula using "#<<<<<<<<","-",x.serie using "&&&&",
               COLUMN  70, x.telefono,
               COLUMN  80, x.fech_nac using "dd/mm/yyyy",
               COLUMN  92, x.tipo_sangre,
               COLUMN  98, x.licencia using "#<<<<<<<<",
               COLUMN 108, x.fech_efec using "dd/mm/yyyy",
               COLUMN 117, x.sueldo_ac using "#,###,###.##"

         PRINT COLUMN   1, "Departamento: ",x.nom_dpto,
               COLUMN  45, "Puesto: ",x.nom_puesto,
               COLUMN  84, "Direccion: ",x.calle clipped," ",x.casa_num clipped,
                           " ",x.barrio clipped," ",x.urbanizacion clipped,
                           " Sexo: ", x.sexo
          SKIP 1 LINE

   ON LAST ROW
          SKIP 1 LINE
          PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###"
          PRINT letras.comp_off,ASCII 27, ASCII 80

   END REPORT

