SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO


IF EXISTS (SELECT * FROM sys.objects 
   WHERE object_id = OBJECT_ID(N'WINV_Diferencia_Precio_RepInfo') )
DROP Procedure WINV_Diferencia_Precio_RepInfo
GO


Create PROCEDURE WINV_Diferencia_Precio_RepInfo
				 @Cod_desde varchar(20), 
				 @Cod_hasta varchar(20),	
				 @Fhasta datetime,
				 @Opcion tinyint
AS

/* ==============================================
   Date: Mar 02,2016
   Reporte de productos con precios diferentes
   
   Opcion de orden 
        0 : Proveedor / Articulo
        1 : Articulo  / Proveedor    

   ==============================================
*/

BEGIN

Set language us_english

	IF(LEN(@Cod_desde) = 0)
	BEGIN
		SET @Cod_desde = NULL
	END
	
	IF(LEN(@Cod_hasta) = 0)
	BEGIN
		SET @Cod_hasta = NULL
	END

--Declare @Cod_desde varchar(20), 
--        @Cod_hasta varchar(20),	
--        @Fhasta datetime
--Set @Cod_desde = '0101002'
--Set @Cod_hasta = '0101002'
--Set @Fhasta = '2016-01-31 00:00:00'
--drop table #T_Diferencia_Precio

	CREATE TABLE #T_Diferencia_Precio
			   (cRow int identity(1,1),
				cFirst tinyint default 0, 
				ProveCod varchar(50)  NULL,
				ProveDes varchar(250) NULL,
				ArtiCod varchar(50) NULL,
				Artides varchar(250) NULL,
				FamiCod varchar(50) NULL,
				FamiDes varchar(250) NULL,
				GrupCod varchar(50) NULL,
				GrupDes varchar(250) NULL,
				Unmeco varchar(50) NULL,
				Prec_Mb_Ini money default 0 NULL,
				FDesde datetime NULL,
				FHasta datetime NULL)


	Create Table #Lista_Grupo
			(cRow int)

	Delete #T_Diferencia_Precio

/* ==============================================
   Region 01
   Ordenado por: Proveedor / Articulo 
   ==============================================
*/
If @Opcion = 0
Begin
	  Insert Into #T_Diferencia_Precio
  				(ProveCod,ProveDes,
				 ArtiCod,Artides,
				 FamiCod,FamiDes,
				 GrupCod,GrupDes,
				 Unmeco,
				 Prec_Mb_Ini ,
				 FDesde,FHasta)
		Exec DifPrec_ArtiProv @Cod_desde,@Cod_hasta,@Fhasta
	     
	  Insert Into #Lista_Grupo(cRow)
 		 Select cRow  
			From 
			 (SELECT ROW_NUMBER() OVER(PARTITION BY 
			         ProveCod,ArtiCod ORDER BY ProveCod DESC ) AS r,
		  			 cRow
				 FROM #T_Diferencia_Precio) as r 
				 Where r.r=1

End

/* ==============================================
   Region 02
   Ordenado por: Articulo / Proveedor
   ==============================================
*/

If @Opcion = 1
Begin
	  Insert Into #T_Diferencia_Precio
  				(ProveCod,ProveDes,
				 ArtiCod,Artides,
				 FamiCod,FamiDes,
				 GrupCod,GrupDes,
				 Unmeco,
				 Prec_Mb_Ini ,
				 FDesde,FHasta)
		 Exec DifPrec_ProvArti @Cod_desde,@Cod_hasta,@Fhasta
	     
	  Insert Into #Lista_Grupo (cRow) 
 		 Select cRow  
			From 
			 (SELECT ROW_NUMBER() OVER(PARTITION BY 
			         ArtiCod,ProveCod ORDER BY ProveCod DESC ) AS r,
		  			 cRow
				 FROM #T_Diferencia_Precio) as r 
				 Where r.r=1
End

/* ==============================================
   Region 03
   Ordenado por: Articulo / Proveedor
   ==============================================
*/
	 Update #T_Diferencia_Precio
		Set cFirst = 1
		From #T_Diferencia_Precio a
		     Inner join #Lista_Grupo b on b.cRow = a.cRow 


	SELECT * 
	   FROM #T_Diferencia_Precio
	

END








