--算出出库成本单价,并写入单价到出库单对应的产品单价字段上,并更新库存余额表。注意红色部份
CREATE PROCEDURE sp_OutVerifyPost
@物料代码 [varchar](100),
@出库辅助数量 [decimal](20,2) ,
@出库数量 [decimal](20,2) ,
@期间 [char](10),
@出库单编号 [varchar] (50),
@id int
AS
declare @TempPrice decimal(20,2) --用来存储一个单价值,方便更新到出库单上的单价
if exists(select 物料代码 from t_StockBalance where 物料代码=@物料代码 and 期间=@期间)
begin
select @TempPrice=(isnull(期初金额,0)+isnull(入库金额,0))/(case when isnull(期初数量,0)+isnull(入库数量,0)=0 then 1 else isnull(期初数量,0)+isnull(入库数量,0) end) from t_StockBalance where (物料代码=@物料代码 and 期间=@期间)
update t_StockBalance set 出库辅助数量=isnull(出库辅助数量,0)+@出库辅助数量, 出库数量=isnull(出库数量,0)+ @出库数量,
出库金额=((isnull(期初金额,0)+isnull(入库金额,0))/(case when isnull(期初数量,0)+isnull(入库数量,0)=0 then 1 else isnull(期初数量,0)+isnull(入库数量,0) end))*@出库数量
where (物料代码=@物料代码 and 期间=@期间)
update t_StockOutEntry set 单价=@TempPrice where 出库单编号=@出库单编号 and ID=@ID
end
else
begin
insert into t_StockBalance(期间,物料代码)values(@期间,@物料代码)
select @TempPrice=(case when isnull(期初数量,0)+isnull(入库数量,0)=0 then 1 else isnull(期初数量,0)+isnull(入库数量,0) end) from t_StockBalance where (物料代码=@物料代码 and 期间=@期间)
update t_StockBalance set 出库辅助数量=isnull(出库辅助数量,0)+@出库辅助数量, 出库数量=isnull(出库数量,0)+ @出库数量,
出库金额=((isnull(期初金额,0)+isnull(入库金额,0))/(case when isnull(期初数量,0)+isnull(入库数量,0)=0 then 1 else isnull(期初数量,0)+isnull(入库数量,0) end))*@出库数量
where (物料代码=@物料代码 and 期间=@期间)
update t_StockOutEntry set 单价=@TempPrice where 出库单编号=@出库单编号 and ID=@ID
end
GO