IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo.CP_Compras_por_Proveedor') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE dbo.CP_Compras_por_Proveedor 
END
GO 

CREATE PROCEDURE dbo.CP_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   

 set @Venta_Total =  (Select SUM((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion  * Isnull(t.Compromete_Compras,0) )
			 	 from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P, Prod_Familias F, Productos_TasaIva TI
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   and P.id_familia = F.Id_Familia
				   and I.id_Trans = C.Id_Trans
				   AND P.Id_Iva = TI.Id_Iva
				   And c.Id_Estado_Cbte <> 3
				   AND I.CANTIDAD <> 0
				   AND P.Id_Producto = I.Id_Producto
				   AND P.Descripcion_Detallada like rtrim(ltrim(@descrip))
	         	   And c.Id_Estado_Cbte <> 3
   	               And T.Compromete_COMPRAS in (1,-1)
		           AND C.FECHA >= @pFecha_Desde 
		           AND C.FECHA < dateadd(dd,1,@pFecha_Hasta))


IF @pfamilia = 0
   BEGIN
       IF @pProveedor = 0
	      BEGIN
			select C.Id_Proveedor as Id_Proveedor,F.Razon_Social as Descripcion ,cast(Sum(I.Cantidad*T.Compromete_Compras) as Int) As Cantidad
			    ,SUM(((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion )*isnull(t.Compromete_Compras,0)) as Importe
				, (SUM(((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion )*isnull(t.Compromete_Compras,0))  / @Venta_Total) * 100 as Porcentaje
		      from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P, Proveedores F, Productos_TasaIva TI
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   and C.Id_Proveedor = F.Id_Proveedor
				   and I.id_Trans = C.Id_Trans
				   And c.Id_Estado_Cbte <> 3
				   AND I.CANTIDAD <> 0
				   AND P.Id_Producto = I.Id_Producto
				   AND P.Descripcion_Detallada like rtrim(ltrim(@descrip))
				   AND P.Id_Iva = TI.Id_Iva
   				   And T.Compromete_Compras in (1,-1)
				   AND C.FECHA >= @pFecha_Desde 
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				   group by C.Id_Proveedor,F.Razon_Social having Sum(I.Cantidad*T.Compromete_Compras) <> 0
				   order by Porcentaje Desc
		   END
		ELSE 
		   BEGIN
			select C.Id_Proveedor as Id_Proveedor,F.Razon_Social as Descripcion  ,cast(Sum(I.Cantidad*T.Compromete_Compras) AS INT) As Cantidad
			    ,SUM(((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion )*isnull(t.Compromete_Compras,0)) as Importe
				, (SUM(((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion )*isnull(t.Compromete_Compras,0))  / @Venta_Total) * 100 as Porcentaje
		     	 from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P, Proveedores F, Productos_TasaIva TI
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   and I.id_Trans = C.Id_Trans
		   	        and C.Id_Proveedor = F.Id_Proveedor
				   And c.Id_Estado_Cbte <> 3
				   AND I.CANTIDAD <> 0
				   AND P.Id_Producto = I.Id_Producto
				   AND P.Descripcion_Detallada like rtrim(ltrim(@descrip))
				   AND P.Id_Iva = TI.Id_Iva
   				   And T.Compromete_Compras in (1,-1)
				   AND C.FECHA >= @pFecha_Desde 
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				   AND C.Id_Proveedor = @pProveedor
				   group by C.Id_Proveedor,F.Razon_Social  having Sum(I.Cantidad*T.Compromete_Compras) <> 0
				   order by Porcentaje Desc
		   END
	    END
	ELSE
       IF @pProveedor = 0
	      BEGIN
			select C.Id_Proveedor as Id_Proveedor,F.Razon_Social as Descripcion  ,CAST(Sum(I.Cantidad*T.Compromete_Compras) AS INT) As Cantidad
			    ,SUM(((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion )*isnull(t.Compromete_Compras,0)) as Importe
				, (SUM(((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion )*isnull(t.Compromete_Compras,0))  / @Venta_Total) * 100 as Porcentaje
			 	 from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P, Proveedores F, Productos_TasaIva TI
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   and I.id_Trans = C.Id_Trans
				   and C.Id_Proveedor = F.Id_Proveedor
				   And c.Id_Estado_Cbte <> 3
			       AND I.CANTIDAD <> 0
				   AND P.Id_Producto = I.Id_Producto
				   AND P.Descripcion_Detallada like rtrim(ltrim(@descrip))
				   AND P.Id_Iva = TI.Id_Iva
				   AND P.Id_familia = @pfamilia
   				   And T.Compromete_Compras in (1,-1)
				   AND C.FECHA >= @pFecha_Desde 
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				  group by C.Id_Proveedor,F.Razon_Social  having Sum(I.Cantidad*T.Compromete_Compras) <> 0
				   order by Porcentaje Desc
		   END
		ELSE 
		   BEGIN
			select C.Id_Proveedor as Id_Proveedor,F.Razon_Social as Descripcion ,Sum(I.Cantidad*T.Compromete_Compras) As Cantidad
			    ,SUM(((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion )*isnull(t.Compromete_Compras,0)) as Importe
				, (SUM(((isnull(I.Imp_gravado,0)+isnull(I.Imp_Exento,0))* C.Cotizacion )*isnull(t.Compromete_Compras,0))  / @Venta_Total) * 100 as Porcentaje
				 from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P, Proveedores F, Productos_TasaIva TI
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   and C.Id_Proveedor = F.Id_Proveedor
				   and I.id_Trans = C.Id_Trans
				   And c.Id_Estado_Cbte <> 3
				   AND P.Id_Producto = I.Id_Producto
				   AND P.Descripcion_Detallada like rtrim(ltrim(@descrip))
				   AND P.Id_Iva = TI.Id_Iva
   				   And T.Compromete_Compras in (1,-1)
				   AND C.FECHA >= @pFecha_Desde 
				   AND I.CANTIDAD <> 0
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				   AND P.Id_familia = @pfamilia
				   AND C.Id_Proveedor = @pProveedor
				   group by C.Id_Proveedor,F.Razon_Social  having Sum(I.Cantidad*T.Compromete_Compras) <> 0
				   order by Porcentaje Desc
		   END
   END


 /* 

 SP_Compras_por_Proveedor '20200701','20200831',0,140
 SP_Compras_por_Proveedor '20200701','20200831',0,0,'HELA'

 
 */

