create PROCEDURE Ex_Estancias_Habit_Fechas_Futuras  
				@desde datetime,@hasta datetime,
				@tipo_hab  varchar(9)  ,
				@agencia   varchar(25) ,
				@desc_merc varchar(25) ,
				@contrato  varchar(11) ,
				@uso_hab   varchar(9)  ,
				@directo   int  	 ,
				@nacionalidad varchar(3) ,
				@nSolic    int,@nConfirm  int,
			    @result    numeric(19,4) output

AS

/*
declare   @result    numeric(19,4) 
execute ex_Estancias_Habit_Fechas_Futuras '11/01/2007','11/30/2007','SLM','','A.V. INTERNACIONALES','','',-1,'',1,0,@result  output
select @result
*/

-- PROC QUE CALCULA LAS ESTANCIAS(NOCHES) PRONOSTICADAS POR HABITACIONES TENIENDO EN BASE 
-- A LAS ESTADISTICAS Y TENIENDO EN CUENTA LAS HABITACIONES Y RESERVAS FUTURAS
begin
   SET NOCOUNT ON
    
   declare  @id_agen  int  , @id_merc  int  ,
     	    @id_cont  int  , @id_thab  int  ,
     	    @id_uhab  int  , @id_naci  int  ,
	    @fecha_hotel     datetime     ,
	    @result_habit    numeric(19,4), 
	    @result_reserv   numeric(19,4), 
	    @result_rooming  numeric(19,4)

  Select @id_thab = dbo.ex_Get_Id_thab ( @tipo_hab  ) ,
	 @id_agen = dbo.ex_Get_Id_agen ( @agencia   ) ,
	 @id_merc = dbo.ex_Get_Id_merc ( @desc_merc ) ,
	 @id_cont = dbo.ex_Get_Id_cont ( @contrato  ) ,
	 @id_uhab = dbo.ex_Get_Id_uhab ( @uso_hab   ) ,
	 @directo = CASE WHEN @directo In(0,1) THEN @directo ELSE NULL END,
 	 @id_naci = dbo.ex_Get_Id_Naci (@nacionalidad),
	 @result  	  = 0 ,
	 @result_habit    = 0 , 
	 @result_reserv   = 0 , 
	 @result_rooming  = 0

  Select @fecha_hotel = fecha_hotelera from hotetabl
 

if @nSolic = 0
begin	     
 Select  @result = Sum ( COALESCE(habi.h_ocupada,0) )
    From ESTAALOH habi
      Inner Join Estadias dias  on habi.id_dias = dias.id_dias
      Inner Join Estacoma coma  on habi.id_coma = coma.id_coma
      Inner Join Hoteuhab uhab  on coma.id_uhab = uhab.id_uhab
      Inner Join Hotethab thab  on uhab.id_thab = thab.id_thab
      Inner Join Hotecont cont  on coma.id_cont = cont.id_cont
      Inner Join Hoteagen agen  on cont.id_agen = agen.id_agen
      Inner Join Hotemerc merc  on cont.id_merc = merc.id_merc
  Where DateDiff(day, @desde, dias.fecha) >= 0 and 
        DateDiff(day, @hasta, dias.fecha) <= 0 and
        ( @id_thab is null or uhab.id_thab = @id_thab) and
        ( @id_agen is null or cont.id_agen = @id_agen) and
        ( @id_merc is null or cont.id_merc = @id_merc) and 
        ( @id_cont is null or coma.id_cont = @id_cont) and
        ( @id_uhab is null or coma.id_uhab = @id_uhab) and
        ( @id_naci is null or cont.id_naci = @id_naci) and
        ( @directo is null or agen.directo = @directo) 
    
  Select @result = COALESCE(@result, 0)
end

  if DateDiff(day,@fecha_hotel, @hasta) >= 0
  begin

   if @nSolic = 0
     execute ex_Estancias_Habit_Fechas_Futuro    @desde     ,
			           	   	 @hasta     ,
					   	 @tipo_hab  ,
					   	 @agencia   ,
					   	 @desc_merc ,
					   	 @contrato  ,
					   	 @uso_hab   ,
					   	 @directo   ,
					   	 @nacionalidad  ,
     					   	 @result_habit output

     execute ex_Estancias_Habit_Reservas_Fechas_Futuro
						 @desde,
			           	   	 @hasta     ,
					   	 @tipo_hab  ,
					   	 @agencia   ,
					   	 @desc_merc ,
					   	 @contrato  ,
					   	 @uso_hab   ,
					   	 @directo   ,
					   	 @nacionalidad  ,
						 @nSolic,
						 @nConfirm,
     					   	 @result_reserv output



     execute ex_Estancias_Habit_Rooming_Fechas_Futuro
						 @desde,
			           	   	 @hasta     ,
					   	 @tipo_hab  ,
					   	 @agencia   ,
					   	 @desc_merc ,
					   	 @contrato  ,
					   	 @uso_hab   ,
					   	 @directo   ,
					   	 @nacionalidad  ,
						 @nSolic,
						 @nConfirm,
     					   	 @result_rooming output



    Select @result = @result + @result_habit + @result_reserv + @result_rooming
  end
	
  Return @result

end















