
/****** Object:  StoredProcedure [dbo].[Update_ProformaUso]    Script Date: 12/02/2015 10:44:38 ******/

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE dbo.Update_ProformaUso
	  @IdRoom INT,
	  @IdFaca INT,
	  @debug BIT = 0
AS

/*	Hecho Por: Luis Abarca
	Fecha:	16 Julio 2014
	Detalle : Actualiza los usos de habitación,
			en proforma, de acuerdo con la infomación,
			del Rooming.
			
	  1.Se modifico, para que realizar el
	  calculo de precios y conceptos, de
	  cada una de las habitaciones		
*/

/*  Modificado por: Francis Bolaños 
    Fecha         : 02 Diciembre 2015 (U18 - v5.0.255)
    Descripción   : Se mete variable @debug para depurarlo
*/

/*  Modificado por: Francis Bolaños 
    Fecha         : 18 Abril 2016 (U18 - v5.0.290)
    Descripción   : Se mete variable @IdFaca para filtrar mejor 
                    sobre cuales habitaciones va a actualizar
*/

BEGIN

	/* --------------------------
	   01 Declarar Variables   
	   --------------------------
	*/

	DECLARE @cFilaI       INT, 
			@cFilaF       INT, 
			@idFace       INT, 
			@IdContrato   INT, 
			@TipoProforma INT = 1


	--Select @IdFaceI    = MIN(id_face),
	--       @IdFaceF    = Max(id_face),
	--       @IdContrato = Min(id_cont),
	--       @IdFaca     = MIN(id_faca)
	--From Hoteface
	--Where id_room = @IdRoom	 

	/* -----------------------------------
	   02 Obtener informacion de Hoteface
	   -----------------------------------
	*/

	SELECT ROW_NUMBER()OVER(ORDER BY id_face ASC)AS cFila, 
		   * INTO #THoteFace
	FROM   Hoteface
	WHERE  id_room = @IdRoom
	ORDER BY id_face 


	/* -----------------------------------
	   03 Obtener si la proforma, se hacer por 
	   todas las habitaciones del rooming
	   o se realiza una por una
	   -----------------------------------
	*/

	SELECT ROW_NUMBER()OVER(ORDER BY id_faca DESC)AS cFila, 
		   * 
	INTO   #ListaProforma
	FROM   VST_InfoProforma
	WHERE  id_room = @IdRoom
	  AND  id_faca = @IdFaca -- v5.0.290
	
	-- v5.0.290: Legítimo Arroz con Mango...
	/*
	DELETE #ListaProforma
	WHERE  cFila IN(SELECT E1.cFila
				    FROM       #ListaProforma E1
					INNER JOIN #ListaProforma E2 ON E1.id_faca = E2.id_faca AND E1.cFila > E2.cFila)

	SELECT @TipoProforma = COUNT(id_face)
	FROM   #ListaProforma

	IF @TipoProforma = 1
	BEGIN
		DELETE #THoteFace WHERE cfila > 1
	END
	*/

	/* -----------------------------------
	   04 Obtener la cantidad de habitaciones
	   del rooming
	   -----------------------------------
	*/

	SELECT @cFilaI = MIN(cFila), 
		   @cFilaF = MAX(cFila)
	FROM   #THoteFace
	WHERE  id_faca IS NOT NULL


	/* -----------------------------------
	   03 Actualiza los precios, de acuerdo,
	   con el id_face de cada habitación
	   -----------------------------------
	*/

	WHILE @cFilaI <= @cFilaF
	BEGIN

		SELECT @idFace = id_face
		FROM   #THoteFace
		WHERE  cFila = @cFilaI
		
		IF @debug = 1
		BEGIN
			SELECT '*** [Update_PrecioCheckin] ***'
		END
		
		EXEC Update_PrecioCheckin @IdFace, @TipoProforma, @debug

		SET @cFilaI = @cFilaI + 1

	END


END