
DROP PROC listap_ALL_SP
GO

create proc listap_ALL_SP
@idlista  	UD_PRECLVID,		--codigo tipo lista de precios
@tipomoneda  	UD_CURYID,		--codigo de moneda a mostrar
@SITE 		varCHAR(8000),		--almacenes que se desean mostrar
@TCONDICION 	CHAR(3),		--tipo de condicion, CAT categoria SCA subcategoria, TIp tipo, ART articulo
@todas 		integer,			--si de desean ver todos los elementos del tipo de condicion 
@condicion 	varchar(8000)='' 	--condicion si solo se desean ver algunos item
	as
SET @CONDICION=LTRIM(@CONDICION)
declare @tipoc 		numeric(6,4)	--TIPO DE CAMBIO PARA LOS CALCULOS
declare @tipoc_actual	numeric(6,4)	--tipo de cambio referencial
declare @Ta		VARCHAR(10)	--tipo de cambio referencial EN TEXTO
DECLARE @TMONEDAL 	UD_CURYID	--TIPO MONEDA LISTA
DECLARE @OPERADOR 	CHAR(1)		--OPERADOR PARA LA CONVERSION
DECLARE @TTIPOC 	CHAR(6)		--TIPO LISTA  DE TIPO DE CAMBIO
DECLARE @CONSULTA	VARCHAR(8000)	--CONSULTA QUE SE VA A EJECUTAR
declare @tc 		Varchar(10)	--TIPO DE CAMBIO PARA EL CALCULO EN CADENA
DECLARE @VISTA		VARCHAR(25)	--NOMBRE DE LA VISTA

SET @CONDICION=RTRIM(@CONDICION)
SET @TMONEDAL= (SELECT CURYID FROM IN_PRICELEVELTYPE WHERE PRECLVID=@IDLISTA)	--SABER LA MONEDA DEL TIPO DE LISTA

SET @TTIPOC=(SELECT CURYTYPEID  FROM IN_PRICELEVELTYPE WHERE PRECLVID=@IDLISTA)


IF @TMONEDAL=@TIPOMONEDA 
	BEGIN
		SET @TIPOC=1	--SI SE PIDE EL MISMO LA CONSULTA EN EL MISMO TIPO DE MONEDA DE LA LSITA NO SE NECESITA CONVERTIR
	
		SET @TIPOC_aCTUAL=(SELECT  TOP 1 RATE FROM CURYRATE 
			WHERE  FROMCURYID=@TMONEDAL AND CURYTYPEID=@TTIPOC 
			ORDER BY CURYDATE DESC )	-- OBTENER EL TIPO DE CAMBIO
	END
ELSE
	BEGIN 
		SET @TIPOC=(SELECT  TOP 1 RATE FROM CURYRATE 
			WHERE TOCURYID=@TIPOMONEDA AND FROMCURYID=@TMONEDAL AND CURYTYPEID=@TTIPOC 
			ORDER BY CURYDATE DESC )	-- OBTENER EL TIPO DE CAMBIO
	
		SET @OPERADOR=(SELECT  TOP 1 OPERADOR FROM CURYRATE 	--SI SE PIDEN DIFERENTES TIPOS DE MONEDA SE NECESITA OBTENER TIPO CAMBIO
			WHERE TOCURYID=@TIPOMONEDA AND FROMCURYID=@TMONEDAL AND CURYTYPEID=@TTIPOC 	--BUSCAR EL DATO DE TIPOS LISTA DE PRECIOS
			ORDER BY CURYDATE DESC )	-- OBTENER EL TIPO DE CAMBIO	
		set @tipoc_actual=@TIPOC  --se busca el tipo de cambio solo para presentacion, se calcula con @tipoc			
	END
SET @Ta=LTRIM(Rtrim(str(@tipoc_actual,3,2)))
set @tc=LTRIM(Rtrim(str(@tipoc,3,2)))

IF @TCONDICION='PRO' 
	SET @VISTA='VW_PRODUCTOSXPROVEEDOR'
ELSE
	SET @VISTA='VW_LISTAPRECIOS'

IF @OPERADOR='/'
	SET @CONSULTA =	'SELECT *,'+@TC+' AS TIPOCAMBIO, '+ 
			'CAST( ROUND(SLS_PRICE/' +@TC+',2) AS NUMERIC(10,2) ) AS PVENTA, '+
		 	'CAST( ROUND( (SLS_PRICE/'+@TC+')*(VALUEIGV/100),2) AS NUMERIC(10,2) )AS TAX, '+
			'CAST( ROUND(SLS_PRICE/'+@TC+',2)-ROUND( (SLS_PRICE/'+@TC+')*(VALUEIGV/100),2)  AS NUMERIC(10,2) )  AS VVENTA, '+ @Ta+' as tipoactual ' +
			"FROM "+@VISTA+" WHERE PRECLVID='" + @IDLISTA + "' AND SITEID IN (" +@SITE+ ") "
ELSE
	SET @CONSULTA =	'SELECT *,'+@TC+' AS TIPOCAMBIO, '+ 
			'CAST( ROUND(SLS_PRICE*' +@TC+',2) AS NUMERIC(10,2) ) AS PVENTA, '+
		 	'CAST( ROUND( (SLS_PRICE*'+@TC+')*(VALUEIGV/100),2) AS NUMERIC(10,2) )AS TAX, '+
			'CAST( ROUND(SLS_PRICE*'+@TC+',2)-ROUND( (SLS_PRICE*'+@TC+')*(VALUEIGV/100),2)  AS NUMERIC(10,2) )  AS VVENTA, '+ @Ta+' as tipoactual ' +
			"FROM "+@VISTA + " WHERE PRECLVID='" + @IDLISTA + "' AND SITEID IN (" +@SITE+ ") "

if @TCONDICION="CAT"	--POR CATEGORIA
	IF @TODAS=1	--SIN CONDICION
		BEGIN
			SET @CONSULTA =@CONSULTA +' order by siteid,classid,descr'
			EXEC (@CONSULTA)		
		END	
	ELSE
		BEGIN	
			SET @CONSULTA =@CONSULTA +' and classid IN ('+@condicion+') '+
						  ' order by siteid,classid,descr'
			EXEC (@CONSULTA)
		END

	if @TCONDICION="SCA"	--POR SUB CATEGORIA
		IF @TODAS=1
		BEGIN
			SET @CONSULTA =@CONSULTA +' order by siteid,classid,classubid,descr'				
			EXEC (@CONSULTA)		
		END	
	ELSE
		BEGIN
			SET @CONSULTA =@CONSULTA +' AND CLASSUBID IN (' +@CONDICION+')'+
						  ' order by siteid,classid,classubid,descr'				
		EXEC (@CONSULTA)		
		END	
	if @TCONDICION="TIP"	--POR SUB CATEGORIA
		IF @TODAS=1
		BEGIN
			SET @CONSULTA =@CONSULTA +' order by siteid,invtypeid,descr'
			EXEC (@CONSULTA)		
		END	
		
	ELSE
		BEGIN
			SET @CONSULTA =@CONSULTA +' AND invtypeid in ('+@condicion+')'+
						  ' order by siteid,invtypeid,descr'
			EXEC (@CONSULTA)		
		END	
	if @TCONDICION="ART"	--POR SITE X ARTICULO
		IF @TODAS=1
		BEGIN
			SET @CONSULTA =@CONSULTA +' order by siteid,descr'
			EXEC (@CONSULTA)		
		END	
	ELSE
		BEGIN
			SET @CONSULTA =@CONSULTA +' AND invtidsku in ('+@condicion+')' +
						  ' order by siteid,descr '
			EXEC (@CONSULTA)		
		END	

	if @TCONDICION="ARS"	-- ARTICULO X SITE
		IF @TODAS=1
		BEGIN
			SET @CONSULTA =@CONSULTA +' order by invtidsku,SITEID'
			EXEC (@CONSULTA)		
		END	
	ELSE
		BEGIN
			SET @CONSULTA =@CONSULTA +' AND invtidsku in ('+@condicion+')' +
						  ' order by invtidsku,SITEID '
			EXEC (@CONSULTA)		
		END	

	if @TCONDICION="PRO"	-- PROVEEDOR
		IF @TODAS=1
		BEGIN
			SET @CONSULTA =@CONSULTA +' order by VENDIDSS,SITEID,NPRODUCTO'
			EXEC (@CONSULTA)		
		END	
	ELSE
		BEGIN
			SET @CONSULTA =@CONSULTA +' AND vendidss in ('+@condicion+') ' +
						  ' order by VENDIDSS,SITEID,NPRODUCTO '
			EXEC (@CONSULTA)		
		END	
GO


EXEC listap_ALL_SP '001','PEN',"'00057','CENTR'",'PRO',1