IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID('[dbo].[mps_g_depart_fee_item]') AND type = 'P')
DROP PROCEDURE [dbo].[mps_g_depart_fee_item]
GO
 
CREATE procedure [dbo].[mps_g_depart_fee_item](
@cmpid int,
@mydpid int ,
@budget int,
@bizsid int,
@extparam1 nvarchar(50),
@extparam2 nvarchar(50),
@extparam3 nvarchar(50),
@extparam4 nvarchar(50),
@extparam5 nvarchar(50),
@extparam6 nvarchar(50),
@extparam7 nvarchar(50),
@extparam8 nvarchar(50),
@extparam9 nvarchar(50) 
)
as 
begin
-- 返回部门名称
set nocount on

declare @sql1 nvarchar(4000) 
declare @sql nvarchar(max) 
select @sql1=bizs_condition from  mps_biztype_source where bizs_id=@bizsid 
set @sql1 = ISNULL(@sql1,'') 
if (@sql1>'') set @sql1 = ' and ('+@sql1+') '

set @sql = '
declare @t table(aiid int , dpid int) 
insert into @t(aiid , dpid) 
select ai_id , 0 from mps_account_items 
where ai_cmpid=@cmpid and  ai_use=0 and  
(@budget=1 or (@budget=0 and ai_budget=0))    '+@sql1 +'

update @t set dpid=aid_dpid 
from mps_account_depart 
where aid_aiid=aiid and aid_use=0 and aid_dpid=@mydpid 

update @t set dpid=@mydpid 
where dpid=0 and (exists (select 1 from mps_account_depart where aid_aiid=aiid and aid_use=0)) 

delete @t where dpid=0 

select a.*  
from mps_account_items  a, @t where ai_id=aiid   
order by ai_order,ai_code '

exec sp_executesql @sql,
N'@cmpid int,
@mydpid int ,
@budget int,
@extparam1 nvarchar(50),
@extparam2 nvarchar(50),
@extparam3 nvarchar(50),
@extparam4 nvarchar(50),
@extparam5 nvarchar(50),
@extparam6 nvarchar(50),
@extparam7 nvarchar(50),
@extparam8 nvarchar(50),
@extparam9 nvarchar(50)',
@cmpid ,
@mydpid,
@budget ,
@extparam1 ,
@extparam2 ,
@extparam3 ,
@extparam4 ,
@extparam5 ,
@extparam6 ,
@extparam7 ,
@extparam8 ,
@extparam9

set nocount off
end