-- 使用临时表
-- 创建临时表
--ALTER TABLE TS_ExpenseApplication_Reim_Detail ADD BgCode NVARCHAR(50) NULL, BgItem NVARCHAR(50) NULL, BgCate NVARCHAR(50) NULL;
IF OBJECT_ID('dbo.tempExpense','U') IS NOT NULL DROP TABLE dbo.tempExpense;
GO
SELECT *
INTO dbo.tempExpense
FROM TS_ExpenseApplication_Reim_Detail
where ISNULL(Bgcode,'')=''
ORDER BY TaskID;
--select budgetno,BgCode,* from TS_ExpenseApplication_Reim_Detail
--select * from TS_ExpenseApplication_Reim_Detail1
--SELECT * FROM dbo.tempExpense;
-- 声明变量
DECLARE
@task AS INT,
@budgetnum AS NVARCHAR(50) ,
@budgetcode AS NVARCHAR(50),
@Costcenter AS NVARCHAR(50) ,
@Feecategory AS NVARCHAR(50),
@budgetItem AS NVARCHAR(50);
WHILE EXISTS(SELECT TaskID FROM dbo.tempExpense)
BEGIN
-- 也可以使用top 1
SET ROWCOUNT 1
SELECT @task= TaskID, @budgetnum= BudgetNo FROM dbo.tempExpense;
--抓取费用类别
select @Costcenter=FreeCategory from TS_ExpenseApplication_Reim a inner join Trina_CostCenterFreeCategory b on a.costcentercode=b.CostCenterCode
where TaskID=@task;
print @Costcenter;
--B002 BA05 B003 B004 B003_1 B004_1 B006 B007 B010 B017 B021 B022 B027 B030 B031 B032 B027高管手机
--根据规则匹配对应预算号
begin
if CHARINDEX('B004_1',@budgetnum)>0
set @budgetcode='B004_1';
else if CHARINDEX('B003_1',@budgetnum)>0
set @budgetcode='B003_1';
else if CHARINDEX('B027高管手机',@budgetnum)>0
set @budgetcode='B027高管手机';
else if CHARINDEX('B002',@budgetnum)>0
set @budgetcode='B002';
else if CHARINDEX('BA05',@budgetnum)>0
set @budgetcode='BA05';
else if CHARINDEX('B003',@budgetnum)>0
set @budgetcode='B003';
else if CHARINDEX('B004',@budgetnum)>0
set @budgetcode='B004';
else if CHARINDEX('B006',@budgetnum)>0
set @budgetcode='B006';
else if CHARINDEX('B007',@budgetnum)>0
set @budgetcode='B007';
else if CHARINDEX('B010',@budgetnum)>0
set @budgetcode='B010';
else if CHARINDEX('B017',@budgetnum)>0
set @budgetcode='B017';
else if CHARINDEX('B021',@budgetnum)>0
set @budgetcode='B021';
else if CHARINDEX('B022',@budgetnum)>0
set @budgetcode='B022';
else if CHARINDEX('B027',@budgetnum)>0
set @budgetcode='B027';
else if CHARINDEX('B030',@budgetnum)>0
set @budgetcode='B030';
else if CHARINDEX('B031',@budgetnum)>0
set @budgetcode='B031';
else if CHARINDEX('B032',@budgetnum)>0
set @budgetcode='B032';
else
set @budgetcode='';
end
print @budgetcode;
--抓取关联的维护表中会计号和科目
begin
if @Costcenter='销售费用'
begin
select @budgetItem=SellingCode,@Feecategory=SellingName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
print @budgetItem;
print @Feecategory;
end
else if @Costcenter='管理费用'
begin
select @budgetItem=GACode,@Feecategory=GAName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
print @budgetItem;
print @Feecategory;
end
else if @Costcenter='研发费用'
begin
select @budgetItem=RDCode,@Feecategory=RDName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
print @budgetItem;
print @Feecategory;
end
else if @Costcenter='制造费用'
begin
select @budgetItem=OverheadCode,@Feecategory=OverheadName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
print @budgetItem;
print @Feecategory;
end
else
begin
select @budgetItem='',@Feecategory='' from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
print @budgetItem;
print @Feecategory;
end
end
UPDATE TS_ExpenseApplication_Reim_Detail SET BgCode= @budgetcode,BgItem=@budgetItem,BgCate=@Feecategory WHERE TaskID=@task;
set @budgetcode='';
set @Feecategory='';
set @budgetItem='';
SET ROWCOUNT 0
DELETE FROM dbo.tempExpense WHERE TaskID=@task;
END