if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_3600_get_price]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_3600_get_price]
GO


create  function f_3600_get_price(
	@sheettype varchar(2),-- 单据类型 
	@supcust varchar(8),-- 客户/供应商 
	@branch_no varchar(8),-- 调出机构编码 
	@d_branch_no varchar(8),-- 调入机构编码 
	@self_branch varchar(8),-- 使用机构编码 
	@item_no varchar(20), -- 商品货号 
	@oper_id varchar(4) --用户id
	--成功则返回商品单价，否则返回零。 
)
returns numeric(16, 4)
begin
	declare @ret_price numeric(16,4),--返回价格
			@price numeric(16,4),--成本价
			@base_price numeric(16,4),--批发价
			@sale_price numeric(16,4)--,--销售价
			--@is_branch_no varchar(8),
			
			--@in_price_status char(1),
			--@sale_price_status char(1),
			--@base_price_status char(1),
			--@vip_price_status char(1),
			--@scheme_price_status char(1)
			
	--declare	@sheettype varchar(2),-- 单据类型 
	--		@supcust varchar(8),-- 客户/供应商 
	--		@branch_no varchar(8),-- 调出机构编码 
	--		@d_branch_no varchar(8),-- 调入机构编码 
	--		@self_branch varchar(8),-- 使用机构编码 
	--		@item_no varchar(20), -- 商品货号 
	--		@oper_id varchar(4) --用户id
	
	--		set @sheettype = 'PI'-- 单据类型 
	--		set @supcust = ''-- 客户/供应商 
	--		set @branch_no = '000001' -- 调出机构编码 
	--		set @d_branch_no = ''-- 调入机构编码 
	--		set @self_branch = ''-- 使用机构编码 
	--		set @item_no = '00011' -- 商品货号 
	--		set @oper_id = '1001' --用户id
	
	--select dbo.f_3600_get_price('PI','','000002','000001','000002','00011','2001')
			
	----价格权限,有权限才返回价格		
	--SELECT	@in_price_status=SUBSTRING(price_grant, 1, 1),
	--		@sale_price_status=SUBSTRING(price_grant, 2, 1),
	--		@base_price_status=SUBSTRING(price_grant, 3, 1),
	--		@vip_price_status=SUBSTRING(price_grant, 4, 1),
	--		@scheme_price_status = SUBSTRING(price_grant, 5, 1)
	--FROM t_sys_operator   
	--where oper_id = @oper_id
	
	--if @in_price_status is null
	--	set @in_price_status = '0'
	--if @sale_price_status is null
	--	set @sale_price_status = '0'
	--if @base_price_status is null
	--	set @base_price_status = '0'
	--if @vip_price_status is null
	--	set @vip_price_status = '0'
	--if @scheme_price_status is null
	--	set @scheme_price_status = '0'
	
	if charindex(@sheettype,'PO/PI/RO/IO/OO/PC/RT/YH') > 0 --IO转仓单,OO库存调整单,PI采购收货单,PO采购订单,RO采购退货单,PC成本调价单,RT退货通知单
		or charindex(@sheettype,'RI/SO/SS') > 0 --RI批发团购退货单,SO批发团购销售单,SS批发团购订单
		or charindex(@sheettype,'MI/MO') > 0 --配送单
	begin
		
		select @price = price, @base_price = base_price, @sale_price = sale_price 
		FROM t_pc_branch_price  
		WHERE branch_no = @branch_no AND item_no = @item_no
		
		if @@rowcount = 0 
			select @price = price, @base_price = base_price, @sale_price = sale_price  
				from t_bd_item_info where item_no = @item_no
		
		if charindex(@sheettype,'PO/PI/RO/IO/OO/PC/RT/YH') > 0  --and @in_price_status = '1'
		begin
			set @ret_price = @price --成本价
		end
		else if charindex(@sheettype,'RI/SO/SS') > 0 --and @base_price_status = '1'
		begin
			set @ret_price = @base_price --批发价
		end
		else if charindex(@sheettype,'MI/MO') > 0 
		begin
			declare @price_type char(1)
			
			if charindex(@sheettype,'MI') > 0
				set @self_branch = @branch_no
			if charindex(@sheettype,'MO') > 0
				set @self_branch = @branch_no
				
			select @price_type = price_type  from t_bd_branch_info where branch_no = @self_branch
			
			if @price_type = '1' or @price_type = '2'--进价
				set @ret_price = @price
			if @price_type = '3'--批发价
				set @ret_price = @base_price
			if @price_type = '4'--配送价
				set @ret_price = @price --配送价也是进价字段
		end
		else
		begin
			set @ret_price = 0
		end
	end
	else--没有识别的类型时返回销售价
	begin
		select @sale_price = sale_price 
		FROM t_pc_branch_price  
		WHERE branch_no = @branch_no AND item_no = @item_no
		
		if @@rowcount = 0 
			select @sale_price = sale_price  
				from t_bd_item_info where item_no = @item_no
				
		--if @sale_price_status = '1'
			set @ret_price = @sale_price
		--else
		--	set @ret_price = 0
	end
	
	if @ret_price is null 
		set @ret_price = 0
	--select @ret_price
	return @ret_price
end
GO

