SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO

IF EXISTS (SELECT * FROM sys.objects 
   WHERE object_id = OBJECT_ID(N'DSS_Ingresos_AyB_Fechas_Reservas') )
DROP Procedure DSS_Ingresos_AyB_Fechas_Reservas
GO

CREATE PROCEDURE DSS_Ingresos_AyB_Fechas_Reservas
					@desde     DATETIME,
					@hasta     DATETIME,
					@tasa      NUMERIC(13,8),
					@id_oper   INT,
					@result    NUMERIC(19,4) OUTPUT

AS
-- OJOOOO: ESTA PROC LLAMA A LA FUNCION dbo.ex_Get_Precio_Pension_Inc la cual se debe configurar para cada
-- hotel para que devuelva segun la id_ralo el valor de la pension que esta incluida en el precio.
-- ESTO ES TEMPORAL HASTA QUE SE ACLARE EL DESGLOSE DEL PRECIO PARA RESERVAS DE AGENCIA
BEGIN
   SET NOCOUNT ON
    
   DECLARE @fecha_hotel DATETIME

   SELECT  @result  = 0

   SELECT  @fecha_hotel = fecha_hotelera FROM hotetabl

   SELECT  @result = SUM((COALESCE(dbo.ex_Get_Precio_Pension_Reserva(lres.id_ralo,rese.id_cont, uhab.max_adultos,uhab.max_ninos) * @tasa, 0) /
						  COALESCE(cont.tasa_fija, mone.tasa) 
			             ) *
			             (lres.cant_habi *
			                  CASE WHEN DATEDIFF(DAY, @hasta, 	rese.fecha_sal) > 0
							       THEN DATEDIFF(DAY, rese.fecha_ent, @hasta) + 1
							       ELSE DATEDIFF(DAY, rese.fecha_ent, rese.fecha_sal)
							  END ))
   FROM       HOTERESE rese
   INNER JOIN HOTECONT cont  ON rese.id_cont = cont.id_cont
   INNER JOIN SICLAMON mone  ON cont.id_mone = mone.id_mone
   INNER JOIN HOTELRES lres  ON rese.id_rese = lres.id_rese
   INNER JOIN HOTEUHAB uhab  ON lres.id_uhab = uhab.id_uhab
   INNER JOIN HOTETHAB thab  ON uhab.id_thab = thab.id_thab
   INNER JOIN HOTEAGEN agen  ON cont.id_agen = agen.id_agen
   INNER JOIN HOTEMERC merc  ON cont.id_merc = merc.id_merc
   INNER JOIN HOTEPRE0 pre0  ON thab.id_con0 = pre0.id_con0 AND  pre0.id_mone = cont.id_mone
   WHERE (@id_oper = 0 OR rese.id_oper = @id_oper)  
     AND (rese.id_estado IN (3, 5) 
		OR (rese.id_estado = 2 
	   AND DATEDIFF(DAY, @fecha_hotel, rese.fecha_ent) = 0))	
	 AND DATEDIFF(DAY, @desde, rese.fecha_ent) >= 0     
	 AND DATEDIFF(DAY, @hasta, rese.fecha_ent) <= 0  
 	  	 
   SELECT @result = ROUND( COALESCE(@result, 0), 2) 
	
   RETURN @result

END





