SQL除数为零出错及出库物料单价的处理

--算出出库成本单价,并写入单价到出库单对应的产品单价字段上,并更新库存余额表。注意红色部份
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值