-- \\\|///
-- \\ - - //
-- ( @ @ )
--┏━━━━━━━━━oOOo-(_)-oOOo━┓
--┃ 定义于2004-07-16 ┃
--┃ 成本试算存储过程定义,计算成本 ┃
--┃ Oooo ┃
--┗━━━━━━━━━ oooO━-( )━┛
-- ( ) ) /
-- \ ( (_/
-- \_)
CREATE PROCEDURE sp_costing_compute
( @out_matnr varchar(18),
@out_werks varchar(4),
@out_datetime datetime)
AS
--插入赠品
declare @matnr varchar(18),@werks varchar(4),@kriqi datetime,@meins varchar(10)
declare @bomatnr varchar(18),@bomsehl varchar(10),@menge float
declare @price float,@danw varchar(20)
declare @umrez float,@aaprice float,@jjprice float,@arate float,@jrate float,@asy float,@jsy float
declare @cpjg float,@umren float
set @cpjg = 0
--计算产成品成本价格
Declare mycursor cursor for select meins,aprice,jprice from tb_matnr where convert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120) and matnr = @out_matnr and plant=@out_werks
open mycursor
fetch mycursor into @meins,@aaprice,@jjprice
close mycursor
deallocate mycursor
declare bclearcase/" target="_blank" >ccursor cursor for select bomatnr,bomsehl,menge from tb_bom where cpmatnr=@out_matnr and werks=@out_werks and convert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)
open bccursor
fetch bccursor into @bomatnr,@bomsehl,@menge
while @@fetch_status = 0
begin
declare jgcursor cursor for select price,meins from tb_bcjg where matnr=@bomatnr and plant=@out_werks and convert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)
open jgcursor
fetch jgcursor into @price,@danw
close jgcursor
deallocate jgcursor
if @price = 0
begin
update tb_matnr set mstatus='置疑' where matnr = @out_matnr and plant = @out_werks and convert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)
break
end
--如果价格单位和bom单位不同,需要进行转换
if @bomsehl <> @danw
begin
declare zhgxcursor cursor for select umrez from tb_switch where matnr = @bomatnr and msehl = @danw
open zhgxcursor
fetch zhgxcursor into @umrez
close zhgxcursor
deallocate zhgxcursor
end
if @umrez is null
set @umrez = 1
set @cpjg = @cpjg + @menge * @price / @umrez
fetch next from bccursor into @bomatnr,@bomsehl,@menge
end
close bccursor
deallocate bccursor
--查看bom成品单位与成品销售单位,如果不同添加转换关系
declare cpzhcursor cursor for select umren from tb_switch where matnr = @out_matnr and msehl = @meins
open cpzhcursor
fetch cpzhcursor into @umren
close cpzhcursor
deallocate cpzhcursor
if @umren is null
set @umren = 1
if @cpjg <> 0
set @cpjg = @cpjg / @umren
if not @aaprice is null
begin
set @arate = @aaprice - @cpjg
if @aaprice <> 0
set @asy=@arate / @aaprice
end
else
begin
set @arate=0
set @asy=0
end
if not @jjprice is null
begin
set @jrate = @jjprice - @cpjg
if @jjprice <> 0
set @jsy = @jrate / @jjprice
end
else
begin
set @jrate = 0
set @jsy = 0
end
update tb_matnr set cbprice = @cpjg,apeyoff=@arate,jpayoff=@jrate,arate=@asy,jrate=@jsy where matnr=@out_matnr and plant=@out_werks and convert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)
GO