欢迎光临
我们一直在努力

前段时间写的一个关于成本计算的存储过程!-数据库专栏,SQL Server

建站超值云服务器,限时71元/月

—                              \\\|///
—                             \\  – –  //
—                             (  @ @  )
–┏━━━━━━━━━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  bccursor 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

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 前段时间写的一个关于成本计算的存储过程!-数据库专栏,SQL Server
分享到: 更多 (0)