drop proc op_obtieneprecio_proc
go
create proc op_obtieneprecio_proc
@idcliente ud_codclient,
@id ud_idcorporativo
as
declare @SKU ud_idcorporativo
declare @alter ud_idcorporativo
declare @idproducto ud_idcorporativo
declare @cliente_interno ud_codclient
declare @status bit 
declare @stksales bit 
declare @stkfuels bit 
declare @stkstore bit 
declare @stkitem bit 
declare @precio ud_precio
declare @precio_dat ud_precio
declare @CLASSID ud_category
declare @CLASSUBID char(5)
declare @CURYID ud_curyid 
declare @CURYID_dat ud_curyid 
DECLARE @SITEID UD_IDSITE
DECLARE @DESCR UD_DESCRIPCION
DECLARE @ndprecio UD_CANTDECIMAL
DECLARE @ndCOSTO UD_CANTDECIMAL
DECLARE @taxvalue NUMERIC(5,2)
DECLARE @STDCOSTPEN UD_COSTO
DECLARE @STDCOSTUSD UD_COSTO
declare @tipotpc char(1)
DECLARE @ESTADO_INVENTARIO BIT
DECLARE @STKFISI BIT
DECLARE @DISCMTO UD_MONTO
DECLARE @ENCONTRADO BIT
DECLARE @UNIDAD UD_STKUNITID
DECLARE @STOCK UD_STOCK

select @ndprecio=FLOATPRICE, @ndcosto=FLOATCOST from setup
set @cliente_interno =(select custid from setup)
SET @SITEID=(SELECT SOURCESITE FROM SETUP)


SET @SKU= (select INVTIDSKU from IN_INVENTORYalter where INVTIDBARR=@id )
if( @sku is not null) --no es codigo de barra o no esta registrado
begin
	set @alter=@id
	set @idproducto=@sku
end
else
begin
	set @idproducto=@id
	set @sku=@id
end

--BUSCAR LA DESCRIPCION DEL PRODUCTO SI EXISTE
SET @DESCR=(SELECT DESCR FROM IN_INVENTORY WHERE INVTIDSKU=@idproducto )
SET @ENCONTRADO=@@ROWCOUNT

--buscar categoria,sub categoria,bloqueado,activo y stkfuels
select @precio_dat=SLS_PRICE,@CURYID_dat=CURYID, @stkitem=stkitem,@STKFUELS=STKFUELS,@stkstore=stkstore,@STATUS=STATUS,
	@CLASSID=CLASSID,@CLASSUBID=CLASSUBID,@STKSALES=STKSALES,@taxvalue=taxvalue,@STDCOSTPEN=ROUND(STDCOSTPEN,@NDPRECIO),
	@STDCOSTUSD=ROUND(STDCOSTUSD,@NDCOSTO) ,@taxvalue=taxvalue, @UNIDAD=STKUNITID, @STOCK=QTYAVAIL  
	from VW_PRECIOSPRODUCTOS where INVTIDSKU=@idproducto AND SITEID=@SITEID

--BUSCAR SI EL PRODUCTO ESTA EN INVENTARIO FISICO

SET @ESTADO_INVENTARIO  =(SELECT STKFISI FROM IN_SETUP )

IF @ESTADO_INVENTARIO=0		--SI EL INVENTARIO ESTA INACTIVO, NADA SE ESTA INVENTARIANDO
	SET @STKFISI=0
ELSE				--SI EL INVENTARIO ESTA ACTIVO BUSCAR SI EL PRODUCTO HA SIDO SELECCIONADO	
	SET @STKFISI=(SELECT COUNT(INVTIDSKU) FROM IN_INVENTPHISICAL where INVTIDSKU=@idproducto AND SITEID=@SITEID )

if(@cliente_interno<>@idcliente)	--venta contado cliente NO REGISTRADO
begin		--cliente registrado buscar en TPC CLIENTES
	
	SELECT @DISCMTO=DISCMTO,@precio= SLS_PRICECUST, @CURYID=curyid,@tipotpc=TYPEPRCLVLCUST
	from VW_PRECIOSCLIENTES where INVTIDSKU=@idproducto AND custidss=@idcliente AND SITEID=@SITEID
	
	IF(@tipotpc=1)	SET @PRECIO=@PRECIO_DAT-@DISCMTO -- TIENE DESCUENTO EN MONTO
	IF(@tipotpc=3) 	SET @PRECIO=@PRECIO_DAT-ROUND(@PRECIO_DAT*(@DISCMTO/100),@ndprecio) -- TIENE DESCUENTO EN PORCENTAJE

	if (@precio>0 AND  @precio is NOT null)	--el producto esta en la lista, devolver precio de la lista					
	BEGIN
		select @STKSALES as stksales,@stkitem as stkitem,@STKFUELS as STKfuel,@stkstore as stkstore, @STATUS as status,
		@CLASSID as classid,@CLASSUBID as classubid,@CURYID AS CURYID,@precio as precio,@DESCR AS DESCR,
		@SKU as sku,@alter as altern,@STDCOSTPEN as STDCOSTPEN, @STDCOSTUSD as STDCOSTUSD,@taxvalue as taxvalue,
		@precio_dat as preciodat,@STKFISI AS STKFISI,@ENCONTRADO AS ENCONTRADO,@UNIDAD AS UNIDAD,@STOCK AS STOCK,
		'LC' AS UBICACION
	end
END
if (@precio=0 OR  @precio is null )	--BUSCAR EN LISTA DE PROMOCIONES
	begin				--el producto esta en la lista, devolver precio de la lista					
	SELECT @PRECIO=NEWSLS_PRICE,@CURYID=CURYID FROM VW_PRECIOSPROMOCION WHERE INVTIDSKU=@idproducto  AND SITEID=@SITEID
	IF (@precio>0 AND  @precio is NOT null) 	--ARTICULO EXISTE EN LA LISTA DE PROMOCION
	BEGIN
		select @STKSALES as stksales,@stkitem as stkitem,@STKFUELS as STKfuel,@stkstore as stkstore,@STATUS as status,
		@CLASSID as classid,@CLASSUBID as cLASSUBID,@CURYID AS CURYID,@precio as precio,@DESCR AS DESCR,
		@SKU as sku,@alter as altern,@STDCOSTPEN as STDCOSTPEN, @STDCOSTUSD as STDCOSTUSD,@taxvalue as taxvalue,
		@precio_dat as preciodat,@STKFISI AS STKFISI,@ENCONTRADO AS ENCONTRADO,@UNIDAD AS UNIDAD,@STOCK AS STOCK,
		'LP' AS UBICACION
	END
END

--??? Y SI NO EXISTE EN INVENTORYDAT
if (@precio=0 or  @precio is null) 	--ARTICULO EXISTE EN LA LISTA normal
begin
	select @STKSALES as stksales,@stkitem as stkitem,@STKFUELS as STKfuel,@stkstore as stkstore,@STATUS as status,
	@CLASSID as classid,@CLASSUBID as cLASSUBID,@CURYID_dat AS CURYID,@precio_dat as precio,@DESCR AS DESCR,
	@STDCOSTPEN as STDCOSTPEN,@SKU as sku,@alter as altern,@STDCOSTUSD as STDCOSTUSD,@taxvalue as taxvalue,
	@precio_dat as preciodat,@STKFISI AS STKFISI,@ENCONTRADO AS ENCONTRADO,@UNIDAD AS UNIDAD,@STOCK AS STOCK,
	'LN' AS UBICACION
END
go

declare @idproducto ud_idcorporativo
SET @idproducto='5000267014005' 
--SET @idproducto='100002'
exec op_obtieneprecio_proc '',@idproducto
--select * from in_inventorydat where INVTIDSKU=@idproducto and siteid='00057'
--select * from customer where custidss='10000924712'
--select * from op_customer_prclvl
--select * from op_prclvlCUSTDET WHERE INVTIDSKU=@idproducto 
--SELECT * FROM IN_INVENTORY WHERE STKFUELS=1
