IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_hallar_final_habil]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_hallar_final_habil
GO
CREATE PROCEDURE sp_fco_hallar_final_habil
    @compania            CHAR(04)      = '', 
    @trabajador          CHAR(10)      = '',
    @fecha_inicial   DATETIME    = '',
    @dias     SMALLINT      = 0
AS
BEGIN
DECLARE @i                 SMALLINT,
        @dia_lab_prog      TINYINT,
        @rel_lab_par       VARCHAR(20),
        @dato              CHAR(10),
        @ndias_periodo     DATETIME,
        @numero_dia        TINYINT,
        @no_habiles        TINYINT,
        @fecha_ini_per2    DATETIME,
        @agrupacion        VARCHAR(20),
        @agrupacion2       CHAR(10),
	@fecha_final	   DATETIME

   SELECT @i               = 0
   SELECT @dia_lab_prog    = 0
   SELECT @rel_lab_par     = ''
   SELECT @dato            = ''
   SELECT @ndias_periodo   = ''

   SELECT @no_habiles      = 0
   SELECT @fecha_ini_per2  = ''
   SELECT @agrupacion      = ''
   SELECT @agrupacion2     = ''
   

 BEGIN
    DECLARE cur_agrupacion_rh CURSOR
     FOR SELECT LTRIM(RTRIM(alfanumerico)) FROM parametros_rh
          WHERE compania = @compania AND
            parametro_rh = 'Ag_Dias_NL'

    OPEN cur_agrupacion_rh 
    FETCH cur_agrupacion_rh  INTO @agrupacion

   WHILE @@FETCH_STATUS = 0
    BEGIN
     
     SELECT @agrupacion2 = LTRIM(RTRIM(@agrupacion))
     SELECT @dato = ''
  
     SELECT @ndias_periodo   = ''
     SELECT @numero_dia = 0

   IF NOT ((@agrupacion2 = '') OR (@agrupacion2 IS NULL))
    BEGIN
      SELECT @dato = dato
        FROM rel_trab_agr
       WHERE compania = @compania   AND
           trabajador = @trabajador AND
           agrupacion = @agrupacion2
   END
  ELSE
   BEGIN
     SELECT @dato = ''
   END
         
   SELECT @i = 1
   SELECT @no_habiles = 0
   SELECT @fecha_ini_per2 = DATEADD(dd,-1,@fecha_inicial)          
   
  WHILE  (@no_habiles < @dias)
    BEGIN  /* BEGIN WHILE  */
      SELECT @ndias_periodo = DATEADD(dd,@i,@fecha_ini_per2)          
      SELECT @numero_dia = DATEPART(dw,@ndias_periodo) 

      IF NOT ((@numero_dia = 1) OR (@numero_dia = 7))       
       BEGIN
         
             IF NOT EXISTS(SELECT 1 FROM dias_no_laborables 
                            WHERE compania   = @compania   AND
                                  dato       = @dato       AND
                                  fecha      = @ndias_periodo )
               BEGIN 
                SELECT @no_habiles = @no_habiles + 1
               END
             END       
          
      SELECT @i = @i + 1
  END    /* END WHILE */      

FETCH cur_agrupacion_rh  INTO @agrupacion
END /* END WHILE @@FETCH_STATUS */

  CLOSE cur_agrupacion_rh
  DEALLOCATE cur_agrupacion_rh

END
  DELETE fco_tmpfechafin
  SELECT @fecha_final = CONVERT(DATETIME,@ndias_periodo) 
  INSERT INTO fco_tmpfechafin VALUES (@fecha_final)
END


GO
GRANT EXECUTE ON sp_fco_hallar_final_habil TO Public
GO