IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo.[SP_Compras_por_Proveedor]') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE dbo.[SP_Compras_por_Proveedor]
END
GO
CREATE PROCEDURE [dbo].[SP_Compras_por_Proveedor]
	@pFecha_Desde			DATETIME,
	@pFecha_Hasta			DATETIME,
    @pfamilia               int,
	@pProveedor             Int,
	@descrip                CHAR(100)
AS
SET NOCOUNT ON

/*Declaracion Variables Locales*/

DECLARE @Mensaje			VARCHAR(100)
		,@UltError			INT
		,@Id_Trans			INT
		,@Id_Cliente		INT
		,@Importe			DECIMAL(16,2)
		,@Email_Cob			VARCHAR(256)
		,@Id_Trans_Rec		INT
		,@CursorOpen        INT
		,@Flag_Cbte_Tipo	SMALLINT
		,@Periodo           DATE 
		,@Id_sucursal	    SMALLINT
		,@Existe      	    SMALLINT
		,@Venta_Total       DECIMAL(16,2)

					
BEGIN 
	IF RTRIM(LTRIM(isnull(@descrip,''))) = '' 
	   BEGIN
		set @descrip = '% %'
	   END
	ELSE
	   BEGIN
		set @descrip = '%'+ltrim(rtrim(@Descrip))+'%' 
	   END 
   
	SELECT * INTO #PRODUCTOS FROM PRODUCTOS
    	WHERE ACTIVO = 1 AND Maneja_Stock = 1 
	      AND VENDIBLE = 1 AND Descripcion_Detallada like rtrim(trim(@descrip)) 

    SELECT * INTO #PROD_FAMILIAS FROM Prod_Familias
	IF @pFamilia <> 0
	   DELETE #PROD_FAMILIAS WHERE Id_Familia <> @pFamilia

    SELECT * INTO #Proveedores FROM Proveedores 
	IF @pProveedor <> 0
	   DELETE #Proveedores WHERE Id_Proveedor <> @pProveedor	


    Set @Venta_Total =  (Select SUM(I.Imp_Final * isnull(t.Compromete_Compras,0) * (1+(TI.Porc1/100)))
			 	 from cbtes c
			     JOIN #Proveedores PR ON C.Id_Proveedor = PR.Id_Proveedor
				 JOIN cbtes_tipos t ON c.id_tipo_cbte  = t.id_tipo_cbte  And T.Compromete_COMPRAS in (1,-1)
				 JOIN Cbtes_Items I ON I.id_Trans = C.Id_Trans AND I.CANTIDAD <> 0
				 JOIN #Productos P ON P.Id_Producto = I.Id_Producto
				 JOIN Prod_Familias F ON P.id_familia = F.Id_Familia
				 JOIN Productos_TasaIva TI ON P.Id_Iva = TI.Id_Iva
				   where  c.Id_Estado_Cbte <> 3
		           AND C.FECHA >= @pFecha_Desde 
		           AND C.FECHA < dateadd(dd,1,@pFecha_Hasta))

			select C.Id_Proveedor as Id_Proveedor,PR.Razon_Social as Descripcion ,cast(Sum(I.Cantidad*T.Compromete_Compras) as Int) As Cantidad
			    ,sum(I.imp_Final*isnull(t.Compromete_Compras,0) * (1+(TI.Porc1/100))) as Importe
				, (sum(I.imp_Final*isnull(t.Compromete_Compras,0) * (1+(TI.Porc1/100))) / @Venta_Total) * 100 as Porcentaje
				 from cbtes c
				 JOIN #Proveedores PR ON  C.Id_Proveedor = PR.Id_Proveedor	
				 JOIN cbtes_tipos t ON c.id_tipo_cbte  = t.id_tipo_cbte  And T.Compromete_COMPRAS in (1,-1)
				 JOIN Cbtes_Items I ON I.id_Trans = C.Id_Trans AND I.CANTIDAD <> 0
				 JOIN #Productos P ON P.Id_Producto = I.Id_Producto
				 JOIN #PROD_FAMILIAS F ON P.id_familia = F.Id_Familia
				 JOIN Productos_TasaIva TI ON P.Id_Iva = TI.Id_Iva
				 where  c.Id_Estado_Cbte <> 3
				   AND C.FECHA >= @pFecha_Desde 
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				   group by C.Id_Proveedor,PR.Razon_Social having Sum(I.Cantidad*T.Compromete_Compras) <> 0
				   order by Porcentaje Desc

	 DROP TABLE #PRODUCTOS
	 DROP TABLE #PROVEEDORES
	 DROP TABLE #PROD_FAMILIAS

END


