电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

经典案例 财务管理系统(6)[1]


发布日期:2021/10/6
 

创建存储过程

系统使用了sf_初始化帐户sf_启用帐户sf_凭证过帐sf_期末结帐sf_计算资产负债表个存储过程实现的功能分别为新建帐套启用帐套凭证过帐确认期末结帐和运算指定会计期间的资产负债表等功能具体计算方法在下面的脚本中有详细的注释读者可以参考这些注释

create proc sf_初始化帐户

as

begin tran

清除原来数据从新建立帐户

delete from 帐簿初始化表

设置帐户初始基本数据

insert into 帐簿初始化表

(科目代码科目名称累计借方累计贷方期初余额余额方向)

select 科目代码科目名称余额方向 from 科目表

设置初始信息

update 系统参数表 set 取值 = datepart(mmgetdate())

where 参数名称 = 会计期间开始月份

update 系统参数表 set 取值 = datepart(mmgetdate())

where 参数名称 = 当前会计期间

commit

GO

create proc sf_启用帐户

as

begin tran

清除原来数据从新建立帐户

delete from 科目余额表

delete from 本期汇总帐簿

delete from 本期明细帐簿

delete from 分录表

delete from 分录表历史

delete from 凭证表

delete from 凭证表历史

设置本期汇总帐簿及科目余额表

insert into 本期汇总帐簿 select 科目代码期初余额

期初余额余额方向 from 帐簿初始化表

update 本期汇总帐簿 set 会计期间=b取值 from

系统参数表 as b where 参数名称=当前会计期间

insert into 科目余额表(科目代码 期初借方余额 期初贷方余额

本期借方发生额 本期贷方发生额 本年借方累计发生额

本年贷方累计发生额 本期借方余额 本期贷方余额

余额方向)

select 科目代码累计借方累计贷方

case when 余额方向=借方 then 期初余额 else end

case when 余额方向=贷方 then 期初余额 else end

余额方向 from 帐簿初始化表

update 科目余额表 set 会计期间=b取值 from

系统参数表 as b where 参数名称=当前会计期间

commit

GO

create proc sf_凭证过帐

as

begin tran

设置本期汇总帐簿信息

update 本期汇总帐簿 set 本期借方合计 = 本期借方合计 + b借方

本期贷方合计 = 本期贷方合计 + b贷方

本年借方累计 = 本年借方累计 + b借方

本年贷方累计 = 本年贷方累计 + b贷方

余额 = 余额 + case when 余额方向=借方 then (借方 贷方)

else (贷方 借方) end

from 本期汇总帐簿 as a

(select 科目代码 sum(借方) as 借方 sum(贷方) as 贷方

from 分录表 as f 凭证表 as p where f凭证编号 = p凭证编号

group by f科目代码) as b

where a科目代码 = b科目代码

设置本期明细帐簿信息

insert into 本期明细帐簿(分录编号会计期间凭证字号 凭证编号 摘要

科目代码 借方 贷方 数量 单价 结算方式 结算号 结算日期)

select 编号会计期间凭证字号 p凭证编号 摘要 科目代码 借方 贷方 数量 单价

结算方式 结算号 结算日期 from 凭证表 as p 分录表 as f where f凭证编号 = p

凭证编号

计算余额

update 本期明细帐簿

set 余额方向=a余额方向 from 科目表 as a

where 本期明细帐簿科目代码=a科目代码

通过游标循环计算余额

declare @bh int @dm char() @jf money @df money

declare @fx char() @bj char() @ye money @kjqj int

declare mycursor cursor for select 内部编号科目代码

借方贷方余额方向余额标记会计期间 from 本期明细帐簿

where 余额标记 is null order by 内部编号

open mycursor

fetch next from mycursor into @bh@dm@jf@df@fx@bj@kjqj

while (@@fetch_status=)

begin

select @ye = 余额 from 本期明细帐簿 where 内部编号 in (select max(内部编号) from

本期明细帐簿 where 内部编号 < @bh and 科目代码=@dm and 余额标记 = )

没有本期第一条明细从科目余额表取余额

if(@ye is null)

select @ye = case when 余额方向=借方 then

本期借方余额 本期贷方余额 else

本期贷方余额 本期借方余额 end

from 科目余额表 where 会计期间 = @kjqj

[] [] []

上一篇:经典案例 财务管理系统(5)

下一篇:经典案例 财务管理系统(6)[3]