
/****** Object:  StoredProcedure [dbo].[Calc_Ing_Reserva_Reg]    Script Date: 08/17/2014 11:15:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO









ALTER     PROCEDURE [dbo].[Calc_Ing_Reserva_Reg]   @dia_inic datetime, @dia_fin datetime, @mone int, @tasa_ext numeric(13,8), @ing_reserva numeric(15,2) output
AS

/*

	-------------------------------------------------- SEVEN DSS -------------------------------------------------------------

	ADVERTENCIA: Este proceso nativo de Front se incluye en los scripts principales de Seven DSS.
	Se incluye porque tiene actualizaciones que lo hacen más preciso y permite que sus resultados sean los mismos que del DSS.
	Por favor indicar si este script fue actualizado para incluirlo en los scripts de Seven DSS y evitar
	des-actualizarlo por accidente al instalar o actualizar Seven DSS.
	
	--------------------------------------------------------------------------------------------------------------------------

*/

/*   Calcula el pronostico de ingresos de extras por reservas en la moneda base del Front , para el dia pasado como parametro */
begin
    SET NOCOUNT ON
   
    Declare @tasa_mb numeric(13,8) , @fecha_hotel datetime
    Select @tasa_mb = tasa,   @fecha_hotel = fecha_hotelera
        From Hotetabl  tabl
           Inner Join Siclamon sicla on tabl.id_mone = sicla.id_mone 

    Select  @ing_reserva  = sum(Precio / ((impuesto / 100) + 1)* cantidad * cant_habi) from(
  select lres.cant_habi, reau.precio ,reau.cantidad, SUM(coalesce(D.porc_impu,0))  as "Impuesto"  
       From Hoterese rese
          Inner Join Hotelres lres     on  rese.id_rese    = lres.id_rese
          Inner Join Hotecont cont  on  rese.id_cont   = cont.id_cont
          Inner join Hotereau reau on lres.id_lres = reau.id_lres
			      inner join HOTEPRE0 B ON B.id_con0 = REAU.id_con0
				  inner join SICLAMON T on t.id_mone = B.id_mone and t.tasa=1
				  left join HOTEIMPU C on C.id_pre0 =B.id_pre0 or coalesce(C.id_pre0,0)=0
				  left join SICLAIMP D on D.id_impu = C.id_impu 
          Inner Join Siclamon  sicla on  cont.id_mone  = sicla.id_mone
        Where --DATEDIFF(day, @fecha_hotel, fecha_ent)  >= 0 and 
              ((DateDiff(day, reau.fecha_desde, @dia_inic) >= 0 and
              DateDiff(day, @dia_inic, reau.fecha_hasta) > 0)  or
              (DateDiff(day, reau.fecha_desde, @dia_fin) >= 0 and
              DateDiff(day, @dia_fin, reau.fecha_hasta) > 0))  and 
              rese.id_estado in(2,3,5) and
              reau.id_con0 in (select rali.id_con0 from hoterali rali where rali.id_ralo = lres.id_ralo )
              AND rese.id_rese  NOT IN (SELECT ISNULL(id_rese, 0) FROM Hoteface)
       group by reau.precio,reau.cantidad,lres.id_lres,lres.cant_habi) as Total
     
     -- Vamos a incluir el histórico para que no hayan diferencias con DSS
     SET @ing_reserva = COALESCE (@ing_reserva, 0) +
     COALESCE ((select sum(Precio / ((impuesto / 100) + 1) * cantidad * cant_habi) from(
	  select lres.cant_habi, reau.precio ,reau.cantidad, SUM(coalesce(D.porc_impu,0))  as "Impuesto"  
		   From Hotehres rese
			  Inner Join Hotehlre lres     on  rese.id_rese    = lres.id_rese
			  Inner Join Hotecont cont  on  rese.id_cont   = cont.id_cont
			  Inner join Hotehreau reau on lres.id_lres = reau.id_lres
					  inner join HOTEPRE0 B ON B.id_con0 = REAU.id_con0
					  inner join SICLAMON T on t.id_mone = B.id_mone and t.tasa=1
					  left join HOTEIMPU C on C.id_pre0 =B.id_pre0 or coalesce(C.id_pre0,0)=0
					  left join SICLAIMP D on D.id_impu = C.id_impu 
			  Inner Join Siclamon  sicla on  cont.id_mone  = sicla.id_mone
			Where --DATEDIFF(day, @fecha_hotel, fecha_ent)  >= 0 and 
				  ((DateDiff(day, reau.fecha_desde, @dia_inic) >= 0 and
				  DateDiff(day, @dia_inic, reau.fecha_hasta) > 0)  or
				  (DateDiff(day, reau.fecha_desde, @dia_fin) >= 0 and
				  DateDiff(day, @dia_fin, reau.fecha_hasta) > 0))  and 
				  rese.id_estado in(2,3,5) and
				  reau.id_con0 in (select rali.id_con0 from hoterali rali where rali.id_ralo = lres.id_ralo )
				  AND rese.id_rese  NOT IN (SELECT ISNULL(id_rese, 0) FROM Hoteface)
		   group by reau.precio,reau.cantidad,lres.id_lres,lres.cant_habi) as Total), 0)        

     Select @ing_reserva = COALESCE (@ing_reserva, 0)
end






