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


CREATE PROCEDURE dbo.CP_Ventas_por_Cli_Producto
	@pFecha_Desde			DATETIME,
	@pFecha_Hasta			DATETIME,
	@pid_cliente            int,
	@id_Sucursal            INT,
	@pid_familia            int,
	@Venta_Total            DECIMAL(12,2)
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 
		,@Existe      	    SMALLINT


					
BEGIN 

IF @Venta_Total = 0
   BEGIN
   IF @pid_familia = 0
      BEGIN
		IF @id_Sucursal = 0
		   BEGIN
			   set @Venta_Total = 	(select sum((isnull(c.imp_Gravado,0)+isnull(c.imp_Gravado2,0)+isnull(c.imp_Gravado3,0)+isnull(c.imp_NoGravado,0)+isnull(c.imp_Exento,0))*isnull(t.compromete_factura,0))
				   from cbtes c, cbtes_tipos t 
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   And c.Id_Estado_Cbte <> 3
   				   And T.Compromete_Factura in (1,-1)
				   AND C.ID_CLIENTE = @pid_cliente
				   AND C.FECHA >= @pFecha_Desde 
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				   AND C.ID_TIPO_CBTE NOT IN ('CFIN','DFIN'))
			END
		  ELSE
			BEGIN
			   set @Venta_Total = 	(select sum((isnull(c.imp_Gravado,0)+isnull(c.imp_Gravado2,0)+isnull(c.imp_Gravado3,0)+isnull(c.imp_NoGravado,0)+isnull(c.imp_Exento,0))*isnull(t.compromete_factura,0))
				   from cbtes c, cbtes_tipos t 
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   And c.Id_Estado_Cbte <> 3
   				   And T.Compromete_Factura in (1,-1)
				   AND C.ID_CLIENTE = @pid_cliente
				   AND C.FECHA >= @pFecha_Desde 
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				   AND T.ID_SUCURSAL = @id_Sucursal
				   AND C.ID_TIPO_CBTE NOT IN ('CFIN','DFIN'))
			END
	  END
	ELSE
	  BEGIN
		IF @id_Sucursal = 0
		   BEGIN
			   set @Venta_Total = (select sum(isnull(i.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0))
				   from cbtes c, cbtes_tipos t, cbtes_items i, productos p
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   and i.id_trans = c.id_trans
				   and i.id_producto = p.id_producto
				   and p.Id_Familia = @pid_familia
			       AND C.ID_CLIENTE = @pid_cliente
				   And c.Id_Estado_Cbte <> 3
   				   And T.Compromete_Factura in (1,-1)
				   AND C.FECHA >= @pFecha_Desde 
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				   AND C.ID_TIPO_CBTE NOT IN ('CFIN','DFIN'))
			END
		  ELSE
			BEGIN
			   set @Venta_Total = 	(select sum(isnull(i.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0))
				   from cbtes c, cbtes_tipos t, cbtes_items i, productos p
				   where c.id_tipo_cbte  = t.id_tipo_cbte
				   and i.id_trans = c.id_trans
				   and i.id_producto = p.id_producto
				   and p.Id_Familia = @pid_familia
			       AND C.ID_CLIENTE = @pid_cliente
				   And c.Id_Estado_Cbte <> 3
   				   And T.Compromete_Factura in (1,-1)
				   AND C.FECHA >= @pFecha_Desde 
				   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
				   AND T.ID_SUCURSAL = @id_Sucursal
				   AND C.ID_TIPO_CBTE NOT IN ('CFIN','DFIN'))
			END
	  END
  END


   set @Id_Cliente = @pid_cliente
   IF  @pid_familia = 0
      BEGIN
		IF @id_Sucursal = 0
		   BEGIN

					select I.Id_Producto as Producto,P.Descripcion_Detallada as Descripcion ,CAST(Sum(I.Cantidad*T.Compromete_Factura) AS INT) As Cantidad
						,sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0)) as Importe,
						(sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0)) / @Venta_Total) * 100 as Porcentaje
						 from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P
						   where c.id_tipo_cbte  = t.id_tipo_cbte
						   and I.id_Trans = C.Id_Trans
						   And c.Id_Estado_Cbte <> 3
						   AND P.Id_Producto = I.Id_Producto
   						   And T.Compromete_Factura in (1,-1)
						   AND C.FECHA >= @pFecha_Desde 
						   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
						   AND C.ID_CLIENTE = @pid_cliente
						   AND C.ID_TIPO_CBTE NOT IN ('CFIN','DFIN')
						   group by I.Id_Producto,P.Descripcion_Detallada 
						    having sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0))  <> 0
						   order by Porcentaje Desc
			END
		 ELSE
			BEGIN
  

					select I.Id_Producto as Producto,P.Descripcion_Detallada as Descripcion ,CAST(Sum(I.Cantidad*T.Compromete_Factura) AS INT) As Cantidad
						,sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0)) as Importe,
						(sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0)) / @Venta_Total) * 100 as Porcentaje
						 from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P
						   where c.id_tipo_cbte  = t.id_tipo_cbte
						   and I.id_Trans = C.Id_Trans
						   And c.Id_Estado_Cbte <> 3
						   AND P.Id_Producto = I.Id_Producto
   						   And T.Compromete_Factura in (1,-1)
						   AND C.FECHA >= @pFecha_Desde 
						   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
						   AND C.ID_CLIENTE = @pid_cliente
						   AND T.ID_SUCURSAL = @id_Sucursal
						   AND C.ID_TIPO_CBTE NOT IN ('CFIN','DFIN')
						   group by I.Id_Producto,P.Descripcion_Detallada 
						    having sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0))  <> 0
						   order by Porcentaje Desc	END
     END
   ELSE
      BEGIN
		IF @id_Sucursal = 0
		   BEGIN

					select I.Id_Producto as Producto,P.Descripcion_Detallada as Descripcion ,CAST(Sum(I.Cantidad*T.Compromete_Factura) AS INT) As Cantidad
						,sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0)) as Importe,
						(sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0)) / @Venta_Total) * 100 as Porcentaje
						 from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P
						   where c.id_tipo_cbte  = t.id_tipo_cbte
						   and I.id_Trans = C.Id_Trans
						   And c.Id_Estado_Cbte <> 3
						   AND P.Id_Producto = I.Id_Producto
						   AND P.ID_FAMILIA = @pId_Familia
   						   And T.Compromete_Factura in (1,-1)
						   AND C.FECHA >= @pFecha_Desde 
						   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
						   AND C.ID_CLIENTE = @pid_cliente
						   AND C.ID_TIPO_CBTE NOT IN ('CFIN','DFIN')
						   group by I.Id_Producto,P.Descripcion_Detallada
						    having sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0))  <> 0
						   order by Porcentaje Desc
			END
		 ELSE
			BEGIN

					select I.Id_Producto as Producto,P.Descripcion_Detallada as Descripcion ,CAST(Sum(I.Cantidad*T.Compromete_Factura) AS INT) As Cantidad
						,sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0)) as Importe,
						(sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0)) / @Venta_Total) * 100 as Porcentaje
						 from cbtes c, cbtes_tipos t, Cbtes_Items I, Productos P
						   where c.id_tipo_cbte  = t.id_tipo_cbte
						   and I.id_Trans = C.Id_Trans
						   And c.Id_Estado_Cbte <> 3
						   AND P.Id_Producto = I.Id_Producto
   						   And T.Compromete_Factura in (1,-1)
						   AND C.FECHA >= @pFecha_Desde 
						   AND C.FECHA < dateadd(dd,1,@pFecha_Hasta)
						   AND P.ID_FAMILIA = @pId_Familia
						   AND C.ID_CLIENTE = @pid_cliente
						   AND T.ID_SUCURSAL = @id_Sucursal
						   AND C.ID_TIPO_CBTE NOT IN ('CFIN','DFIN')
						   group by I.Id_Producto,P.Descripcion_Detallada
						   having sum(isnull(I.Imp_Gravado,0)*(1-C.Porc_Bonificacion/100)*isnull(t.compromete_factura,0))  <> 0
						   order by Porcentaje Desc	END
     END     


END	


 /* 

 EXEC SP_Ventas_por_Producto_cli '20201001','20201007','192',0,93,0


 SP_Ventas_por_Producto_cli '20200901','20200927',0,0,0,0

SELECT * from Vendedores order by  Descripcion 

	@pFecha_Desde			DATETIME,
	@pFecha_Hasta			DATETIME,
	@pid_vendedor           char(10),
	@id_Sucursal            INT,
	@pid_familia            int,
	@Venta_Total            DECIMAL(12,2)

 FIN */