USE [FrontAlma]
GO
/****** Object:  StoredProcedure [dbo].[ex_Entradas_Clientes_Fechas]    Script Date: 08/09/2012 11:16:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO




/*
declare   @result    numeric(19,4) 
execute ex_Entradas_Clientes_Fechas '05/21/2004','05/21/2004','APTOS','','','','',-1,'',@result  output
select @result
*/
ALTER   PROCEDURE [dbo].[ex_Entradas_Clientes_Fechas]  @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)  ,
     					       @result       numeric(19,4) output

AS
-- PROC QUE CALCULA LAS ENTRADAS PRONOSTICADAS POR DE CLIENTES TENIENDO EN BASE 
-- A LAS ESTADISTICAS Y TENIENDO EN CUENTA LAS HABITACIONES Y RESERVAS FUTURAS
-- USADO EN EL MODULO DE INN FROM EXCEL
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
 	  
 Select @result  = Sum ( COALESCE(paxs.a_entrada ,0) + 
			 COALESCE(paxs.n_entrada ,0) 
			)
  From ESTAALOP paxs
   Inner Join Estadias dias  on paxs.id_dias = dias.id_dias
   Inner Join Estacoma coma  on paxs.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_cont is null or coma.id_cont = @id_cont) and
        ( @id_agen is null or cont.id_agen = @id_agen) and
        ( @id_merc is null or cont.id_merc = @id_merc) and 
        ( @id_thab is null or uhab.id_thab = @id_thab) and
        ( @id_uhab is null or coma.id_uhab = @id_uhab) and
        ( @id_naci is null or coma.id_naci = @id_naci) and
        ( @directo is null or agen.directo = @directo) 
    
  Select @result = COALESCE(@result, 0)

  if DateDiff(day,@fecha_hotel, @hasta) >= 0
  begin
     execute ex_Entradas_Clientes_Fechas_Futuro_Habit
					         @fecha_hotel,
			           	   	 @hasta     ,
					   	 @tipo_hab  ,
					   	 @agencia   ,
					   	 @desc_merc ,
					   	 @contrato  ,
					   	 @uso_hab   ,
					   	 @directo   ,
					   	 @nacionalidad  ,
     					   	 @result_habit output
     execute ex_Entradas_Clientes_Fechas_Futuro_Reservas
						 @fecha_hotel,
			           	   	 @hasta     ,
					   	 @tipo_hab  ,
					   	 @agencia   ,
					   	 @desc_merc ,
					   	 @contrato  ,
					   	 @uso_hab   ,
					   	 @directo   ,
					   	 @nacionalidad  ,
     					   	 @result_reserv output
     execute ex_Entradas_Clientes_Fechas_Futuro_Rooming
						 @fecha_hotel,
			           	   	 @hasta     ,
					   	 @tipo_hab  ,
					   	 @agencia   ,
					   	 @desc_merc ,
					   	 @contrato  ,
					   	 @uso_hab   ,
					   	 @directo   ,
					   	 @nacionalidad  ,
     					   	 @result_rooming output

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

end









