【正文】
的憑證過帳 exec sf_憑證過帳 declare kjqj int 當(dāng)前會計期間 select kjqj = 會計期間 from 本期匯總帳簿 計算科目余額表,可以統(tǒng)計資產(chǎn)負(fù)債表/損溢表等 update 科目余額表 set 本期借方發(fā)生額 = , 本期貸方發(fā)生額 = , 會計期間 = , 余額方向 = from 科目余額表 as a, 本期匯總帳簿 as b where = and = update 科目余額表 set 本年借方累計發(fā)生額 = 本年借方累計發(fā)生額 + 本期借方發(fā)生額, 本年貸方累計發(fā)生額 = 本年貸方累計發(fā)生額 + 本期貸方發(fā)生額, 本期借方余額 = 期初借方余額 + 本期借方發(fā)生額, 本期貸方余額 = 期初貸方余額 + 本期貸方發(fā)生額 where 會計期間 = kjqj 更新會計期間 update 系統(tǒng)參數(shù)表 set 取值 = 取值 + 1 where 參數(shù)名稱=39。 then 期初余額 else 0 end, 余額方向 from 帳簿初始化表 update 科目余額表 set 會計期間= from 系統(tǒng)參數(shù)表 as b where 參數(shù)名稱=39。 then 期初余額 else 0 end, case when 余額方向=39。 insert into 科目余額表(科目代碼, 期初借方余額, 期初貸方余額, 本期借方發(fā)生額, 本期貸方發(fā)生額, 本年借方累計發(fā)生額, 本年貸方累計發(fā)生額, 本期借方余額, 本期貸方余額, 余額方向) select 科目代碼,累計借方,累計貸方,0,0,0,0, case when 余額方向=39。mitGOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GOcreate proc sf_啟用帳戶as begin tran 清除原來數(shù)據(jù),從新建立帳戶 delete from 科目余額表 delete from 本期匯總帳簿 delete from 本期明細(xì)帳簿 delete from 分錄表 delete from 分錄表歷史 delete from 憑證表 delete from 憑證表歷史 設(shè)置本期匯總帳簿及科目余額表 insert into 本期匯總帳簿 select 科目代碼,0,期初余額, 0,0,0,0,期初余額,余額方向 from 帳簿初始化表 update 本期匯總帳簿 set 會計期間= from 系統(tǒng)參數(shù)表 as b where 參數(shù)名稱=39。 update 系統(tǒng)參數(shù)表 set 取值 = datepart(mm,getdate()) where 參數(shù)名稱 = 39。 放入歷史 insert into 憑證表歷史 select * from 憑證表 insert into 分錄表歷史 select * from 分錄表 清除已過帳數(shù)據(jù) 注意,改放到程序中清除,因為要統(tǒng)計憑證張數(shù)/分錄張數(shù)和金額 統(tǒng)計后刪除 delete from 分錄表 delete from 憑證表mitGOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GOcreate proc sf_初始化帳戶as begin tran 清除原來數(shù)據(jù),從新建立帳戶 delete from 帳簿初始化表 設(shè)置帳戶初始基本數(shù)據(jù) insert into 帳簿初始化表 (科目代碼,科目名稱,累計借方,累計貸方,期初余額,余額方向) select 科目代碼,科目名稱,0,0,0,余額方向 from 科目表 設(shè)置初始信息 update 系統(tǒng)參數(shù)表 set 取值 = datepart(mm,getdate()) where 參數(shù)名稱 = 39。 where 內(nèi)部編號=bh fetch next from mycursor into bh,dm,jf,df,fx,bj,kjqj end close mycursor deallocate mycursor 更改狀態(tài) update 憑證表 set 過帳狀態(tài) = 39。 then ye + jf df else ye + df jf end, 余額標(biāo)記=39。 then 本期借方余額 本期貸方余額 else 本期貸方余額 本期借方余額 end from 科目余額表 where 會計期間 = kjqj and 科目代碼 = dm select ye = isnull(ye,0) update 本期明細(xì)帳簿 set 余額=case when fx=39。) 沒有,本期第一條明細(xì),從科目余額表取余額 if(ye is null) select ye = case when 余額方向=39。 then (借方 貸方) else (貸方 借方) end from 本期匯總帳簿 as a, (select 科目代碼, sum(借方) as 借方, sum(貸方) as 貸方 from 分錄表 as f, 憑證表 as p where = group by ) as b where = 設(shè)置本期明細(xì)帳簿信息 insert into 本期明細(xì)帳簿(分錄編號,會計期間,憑證字號, 憑證編號, 摘要, 科目代碼, 借方, 貸方, 數(shù)量, 單價, 結(jié)算方式, 結(jié)算號, 結(jié)算日期) select 編號,會計期間,憑證字號, , 摘要, 科目代碼, 借方, 貸方, 數(shù)量, 單價, 結(jié)算方式, 結(jié)算號, 結(jié)算日期 from 憑證表 as p, 分錄表 as f where = 計算余額 update 本期明細(xì)帳簿 set 余額方向= from 科目表 as a where = 通過游標(biāo)循環(huán)計算余額 declare bh int, dm char(20), jf money, df money declare fx char(4), bj char(4), ye money, kjqj int declare mycursor cursor for select 內(nèi)部編號,科目代碼, 借方,貸方,余額方向,余額標(biāo)記,會計期間 from 本期明細(xì)帳簿 where 余額標(biāo)記 is null order by 內(nèi)部編號 open mycursor fetch next from mycursor into bh,dm,jf,df,fx,bj,kjqj while (fetch_status=0) begin select ye=NULL select ye = 余額 from 本期明細(xì)帳簿 where 內(nèi)部編號 in (select max(內(nèi)部編號) from 本期明細(xì)帳簿 where 內(nèi)部編號 bh and 科目代碼=dm and 余額標(biāo)記 = 39。) = 1)drop table [dbo].[資產(chǎn)負(fù)債表]GOCREATE TABLE [dbo].[憑證表] ([憑證編號] [char] (10) NOT NULL ,[會計期間] [int] NULL ,[憑證字號] [char] (2) NULL ,[日期] [datetime] NULL ,[附單據(jù)] [int] NULL , [制單] [char] (20) NULL ,[借方合計] [money] NULL ,[貸方合計] [money] NULL ,[過帳狀態(tài)] [char] (4) NULL [憑證狀態(tài)] [char] (10) NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[憑證表歷史] ([憑證編號] [char] (10) NOT NULL ,[會計期間] [int] NULL ,[憑證字號] [char] (2) NULL , [日期] [datetime] NULL ,[附單據(jù)] [int] NULL ,[制單] [char] (20) NULL ,[借方合計] [money] NULL ,[貸方合計] [money] NULL ,[過帳狀態(tài)] [char] (4) NULL ,[憑證狀態(tài)] [char] (10) NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[分錄表] ([編號] [int] IDENTITY (1, 1) NOT NULL ,[憑證編號] [char] (10) NOT NULL , [摘要] [char] (40) NULL ,[科目代碼] [char] (20) NULL ,[借方] [money] NULL , [貸方] [money] NULL ,[數(shù)量] [int] NULL ,[單價] [money] NULL ,[結(jié)算方式] [char] (10) NULL , [結(jié)算號] [int] NULL , [結(jié)算日期] [datetime] NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[分錄表歷史] ([編號] [int] NOT NULL ,[憑證編號] [char] (10) NOT NULL , [摘要] [char] (40) NULL ,[科目代碼] [char] (20) NULL ,[借方] [money] NULL ,[貸方] [money] NULL ,[數(shù)量] [int] NULL ,[單價] [money] NULL ,[結(jié)算方式] [char] (10) NULL ,[結(jié)算號] [int] NULL ,[結(jié)算日期] [datetime] NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[帳簿初始化表] ( [科目代碼] [char] (20) NOT NULL ,[科目名稱] [char] (20) NULL ,[累計借方] [money] NULL , [累計貸方] [money] NULL ,[期初余額] [money] NULL , [余額方向] [char] (4) NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[本期明細(xì)帳簿] ([內(nèi)部編號] [int] IDENTITY (1, 1) NOT NULL ,[分錄編號] [int] NULL ,[會計期間] [int] NULL , [憑證字號] [char] (4) NULL , [憑證編號] [char] (10) NULL , [摘要] [char] (40) NULL ,[科目代碼] [char] (20) NULL , [借方] [money] NULL ,[貸方] [money] NU