标签:
需求:
主导部门 | 供应商 | 品号 | 名称 | 规格 | 实际单价 | 原单价 | 进货数量 | 价格差异 | 金额差异 |
核价单头自定义字段PURTL.UDF01 |
说明
1.供应商、品号、名称、规格、实际单价、进货数量取采购进货单的数据
2.原单价=核价单当前生效日期里的原单价
3.价格差异=实际单价-原单价
4.金额差异=价格差异*进货数量
举例说明:
3月16日有一笔进货记录:供应商甲,A进货数量500,进货单价5块钱,进货金额=500*5=2500元
条件1:2月15日有一笔核价单,供应商甲,A核价单价是4元,原单价是6元生效日期为2月15日。
结果1:
供应商 | 品号 | 名称 | 规格 | 实际单价 | 原单价 | 进货数量 | 价格差异 | 金额差异 |
甲 | A | 5 | 6 | 500 | -1 | -500 |
条件2 :
2月15日有一笔核价单,供应商甲,A核价单价是4元,原单价是6元生效日期为2月15日。
3月15日有一笔核价单,供应商甲,A核价单价是5元,原单价是4元生效日期为 3月15日。
结果2:
供应商 | 品号 | 名称 | 规格 | 实际单价 | 原单价 | 进货数量 | 价格差异 | 金额差异 |
甲 | A | 5 | 4 | 500 | 1 | 500 |
条件3:
2月15日有一笔核价单,供应商甲,A核价单价是4元,原单价是0元生效日期为2月15日。
如果核价单原来价格是0,不输出结果。
条件4:
如果供应商甲,产品A 无核价单,不输出结果。
Create Function UF_GetLastPrice( @TL004 AS nvarchar(10), @date as nvarchar(8), @item as nvarchar(30) )returns decimal(18,6) as begin --set @TL004=‘09001‘ --set @date=‘20150116‘ --set @item=‘10102069620001‘; declare @price as decimal(18,6); with b as( select TM004,TM014,TM010,TL004 from PURTL inner join PURTM ON TL001=TM001 AND TL002=TM002 where TM011=‘Y‘ AND TL004=@TL004 and TM014<=@date and TM004=@item) select @price=isnull(t.TM010,0) from ( select b.TM004,b.TM010,ROW_NUMBER() over(partition by b.TM004 order by b.TM014 desc )rn from b ) t where rn=1 return @price end
标签:
原文地址:http://blog.csdn.net/david_520042/article/details/43193265