(一) 凭证表(ZF1PD)
在 ZF1PD 表中当 month=0 并且 day=0 时为余额表。
FLM(序号)顺序号
ZZ_SCM(1 级会计科目内码)
KM_SCM(功能分类科目内码)
DW_SCM(预算单位内码)
ZG_SCM(主管科室内码)
MONTH(月)
DAY(日)
PDH(凭证号)
FLM(分录号)
JDF(借贷方向),1 表示借方,-1 表示贷方
FDJ(附单据张数)
ZY(摘要)
ZY_MX(摘要明细)
VAL(金额)
ZDR(制单人)
ZDR_TIME(制单日期)
JZR(记账人)
JZR_TIME(记账日期)
KEEPFLAG(记账标志)
2、总账(会计)科目表(ZF1ZZ01)
SCM(科目内码),相关凭证表中关联字段
NAME(科目名称)字段,该科目表只到一级科目。
KMH(科目号),就是会计制度规定的科目号
ATT(科目类别)
JD_FLAG(借贷方向),1 表示借方,-1 表示贷方
USED_KM(使用功能分类科目标志),1 表示使用,0 表示不使用,其中与下级往
来、一般预算支出、基金预算支出、债务还本支出使用
USED_KM_TYP(使用功能分类科目的类型),共三个值,与功能分类科目表对应,
其中,与下级往来、一般预算支出的值是 10,基金预算支出的值是 11,债务还本支出的值
是 12,2012 年新加科目。
USED_ZG(使用主管科室标志),1 表示使用,其中暂付款、暂存款、一般预算支
出、基金预算支出、债务还本支出使用
USED_DW(使用预算单位标志)。1 表示使用,国库存款、与下级往来、一般预算
支出、基金预算支出、其他财政存款、债务还本支出使用
USED_DW_TYP(使用预算单位的类型),国库存款、其他财政存款的类型是 4,
一般预算支出、基金预算支出、债务还本支出的类型是 10,与下级往来的类型是 1
USED_SX1(使用事项 1 标志),值是 1,暂付款使用事项 1
USED_SX2(使用事项 2 标志),值是 1,暂存款使用事项 2
USED_SX3(使用事项 3 标志),值是 1,与上级往来使用事项 3
3、功能分类科目表(ZF1KM01)
SCM(功能科目内码)
JC(科目级次)
NAME(科目名称)
KMH(科目代码)
JC_FLAG(是否末级)(0 为否,1 为是)
SCM_1(一级科目内码)
SCM_2(二级科目内码)
SCM_3(三级科目内码)
SCM_4(四级科目内码),此便最大用到四级科目, 其中 SCM(科目代码)与末
级科目代码一致。
SCM_5(五级科目内码),
4、预算单位表(ZF1DW01)
SCM (预算单位内码)
JC(单位级次)
NAME(单位名称)
KMH(单位代码)
JC_FLAG(是否末级)(0 为否,1 为是)
SCM_1(一级单位内码)
SCM_2(二级单位内码)
SCM_3(三级单位内码),最大用到 3 级,其中 SCM(单位内码)与末级科目内码
一致。
SCM_4(四级单位内码)
SCM_5(五级单位内码)
5、主管科室代码表(ZF1ZG01)
SCM(主管科室内码)
JC(科室级次)
NAME(科室名称)
KMH(科室代码)
JC_FLAG(是否末级)(0 为否,1 为是)
SCM_1(一级科室内码),只用了一级,其中 SCM(科室代码)与末级科目代码一
致。
SCM_2(二级科室内码)
SCM_3(三级科室内码)
SCM_4(四级科室内码)
SCM_5(五级科室内码)
6、事项 1(ZF1SX01)
SCM(事项 1 内码)
JC(事项 1 级次)
NAME (事项 1 名称)
KMH(事项 1 代码)
SCM_1(一级事项代码)
SCM_2(二级事项代码)
SCM_3(三级事项代码)
SCM_4(四级事项代码)
SCM_5(五级事项代码),用到了五级,其中 scm 与末级科目代码一致。
7、事项 2(ZF1SX02)
SCM(事项 2 内码)
JC(事项 2 级次)
NAME (事项 2 名称)
KMH(事项 2 代码)
SCM_1(一级事项代码)
SCM_2(二级事项代码)
SCM_3(三级事项代码)
SCM_4(四级事项代码),用到了四级,其中 scm 与末级科目代码一致。 SCM_5
(五级事项代码)。
8、事项 3(ZF1SX03)
SCM(事项 3 内码)
JC(事项 3 级次)
NAME (事项 3 名称)
KMH(事项 3 代码)
SCM_1(一级事项代码)
SCM_2(二级事项代码),用到了二级,其中 scm 与末级科目代码一致。 SCM_3
(三级事项代码)
SCM_4(四级事项代码)
SCM_5(五级事项代码),
四、数据整理
经过以上的分析,科目表中只有一级科目,预算单位、主管科室还用原来的辅助核
算,暂付款、暂存款、与上级往来分别与事项 1、事项 2、事项 3 关联,生成多级明细科目,
与下级往来、一般预算支出、基金预算支出、债务还本支出与功能分类科目表关联,生成多
级明细科目。整理科目表与凭证表。
(一) 建立并转换科目表
-----建立科目表
select SCM,cast(rtrim(NAME) as varchar(100)) NAME,KMH,null MXNM,JC
into kmb
from dbo.ZF1ZZ01
---------建立功能分类科目表(ZF1KM01)转明细科目存储过程
create proc GNFLMXKM
@SCM int,
@KMH varchar(40),
@type int
as
select @SCM SCM, cast(rtrim(NAME) as varchar(100)) NAME, @KMH+(case
when len(kmh) =3 then KMH
when LEN(kmh) =5 then LEFT(KMH,3)+'0'+right(kmh,2)
when LEN(kmh) =7 then
LEFT(KMH,3)+'0'+substring(kmh,4,2)+'0'+right(kmh,2)
when LEN(kmh) =9 then
LEFT(KMH,3)+'0'+substring(kmh,4,2)+'0'+substring(kmh,6,2)+'0'+right(kmh,2)
end ) KMH,SCM MXNM,JC+1 JC
from dbo.ZF1KM01
where type=@type and NAME is not null
---自动转换所有用到功能分类的明细科目(下级往来,一般预算支出,基金预算支
出,债务还本支出)
declare @KM_SCM int,@KM_KMH varchar(40),@KM_type int
declare km_cursor cursor for
select SCM,KMH,USED_KM_TYP
from dbo.ZF1ZZ01
where USED_KM=1
open km_cursor
fetch next from km_cursor into @KM_SCM ,@KM_KMH,@KM_type
while @@FETCH_STATUS =0
begin
insert into kmb
exec GNFLMXKM @KM_SCM ,@KM_KMH,@KM_type
fetch next from km_cursor into @KM_SCM ,@KM_KMH,@KM_type
end
close km_cursor
deallocate km_cursor
---建立事项-3 转换明细科目的存储过程,默认事项的参数
create proc PROC_SX
@scm varchar(40)='3477',
@kmh varchar(40)='111',
@zfsx varchar(40)='ZF1SX01'
as
declare @maxJC int,@kmjc varchar(2)
set @kmjc='2'
declare @sql Varchar(4000),@sq2 Varchar(4000),@sq3 nVarchar(4000)
set @sql= 'select '+ @scm+ 'scm,cast(rtrim(NAME) as varchar(100))
name,''' +@kmh+'''+right(KMH,3) kmh ,' +' SCM_1 MXNM,JC+1 JC' + +
' from ' + @zfsx + ' where JC=1 and NAME is not null'
insert into kmb exec(@sql)
set @sq3 ='select @a=MAX(jc) from ' + @zfsx
exec sp_executesql @sq3,N'@a int output',@maxJC output
--select @maxJC
while @kmjc<= @maxJC
begin
declare @scmsx varchar(2)
set @scmsx=@kmjc-1
set @sq2='select B.SCM,cast(rtrim(a.NAME) as varchar(100)) name
,B.KMH+right(a.KMH,3) KMH, SCM_'+@kmjc + ' MXNM,a.JC+1 JC
from ' + @zfsx +' a join kmb b on a.SCM_'+@scmsx+ '=b.MXNM
where a.JC='+ @kmjc+ 'and a.NAME is not null'
insert into kmb exec(@sq2)
set @kmjc=@kmjc+1
end
----事项转暂付款明细科目
exec PROC_SX '3477','111','ZF1SX01'
----事项转暂存款明细科目
exec PROC_SX '3479','211','ZF1SX02'
----事项转与上级往来明细科目
exec PROC_SX '3480','212','ZF1SX03'
(二) 建立凭证表、期初余额表
-----建立临时表,转换会计科目