如何从财务的角度实现方正春元数据向AO的完美转换,本文主要内容关键词为:角度论文,财务论文,完美论文,数据论文,方正春论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
目前,我国不少地区使用方正春元财务软件,方正春元网络版财务软件有两个版本,分别基于SQL SERVER与ORACLE平台开发。下面以SQL SERVER平台下的财务数据为例,阐述行政事业单位财务数据如何导入到AO中。
一、获取表、字段信息,分析会计科目表、余额表、凭证表等相关表内容
从被审计单位取得备份数据后,将数据还原到SQL_SERVER中,从企业管理器中可以看到有两张非常关键的表:TABLE_MANAGER(表管理表)与FIELD_MANAGER(字段管理表)。从这两张表中我们可以很快找到四张与AO紧密联系的表:ACCOUNTANT_SUBJKCT(会计科目表)、REMAIN(余额表)、VOUCHER(凭证表)、VOUCHER_DETAIL(凭证明细表)。下面分别研究这四张表:
1.会计科目表(ACCOUNTANT-SUBJECT)
该表主要包括:核算单位代码(SET CODE)、科目代码(IN_CODE)、科目名称(DISP_NAME)、借贷方向(IS_DEBIT)等字段。分析代码可以发现科目最大级次为二级,其中:往来款科目(203、104)只有一级;支出类科目(501)核算到二级,即基本支出(501001)、项目支出(501002),没有按经济用途设置明细科目;拨入经费(401)、拨出经费(502)、结余(303)、预算外资金收入(404),这些科目只设有基本支出、项目支出二级科目,其下均没有明细科目。从表的内容来看,仅相当于一级会计科目表。
2.余额表
余额表包括:核算单位代码(SET_CODE)、科目代码(AS_CODE)、余额(BALANCE)、往来代码(CR_CODE)、自定义代码(OTH_CODE)。表中存放各单位当年期初余额,且科目代码有很多重复,分析表中内容,可知往来科目根据往来代码列确定往来单位余额,结余科目按自定义代码列确定自定义项目余额。
3.凭证表与凭证明细表
凭证表提供了核算单位代码(SET_CODE)、关联码(VOUCHER_ID)、年(SET_YEAR)、月(V_MONTH)、日(V_DAY)、凭证号(VOUCHER_NO)等信息。
凭证明细表包括:核算单位代码(SET_CODE)、关联码(VOUCHER_ID)、摘要(SUMMARY)、借方发生额(DEB MONEY)、贷方发生额(CRE_MONEY)、科目代码(AS_CODE)、功能代码(BS_CODE)、往来代码(CRO_CODE)、自定义代码(OTH_CODE)、经济分类代码(BSI_CODE)等信息。经分析,很容易发现两张表是通过核算单位代码和关联码两列实现关联。从凭证明细表中可知:往来科目明细核算通过往来代码列,自定义项目明细核算通过自定义项目列,经费支出中的基本支出明细核算通过经济用途代码列,经费支出中的项目支出不仅核算自定义项目,而且按经济用途核算,其明细核算分别通过目定义项目代码列与经济用途代码列。
通过对上述关键表的分析,要实现向AO转换目标,而又能全面、详细反映财务核算内容,还要从往来表(CURRENTS)中获取往来单位信息,从自定义项目表(OTHER)中获取自定义项目信息,从经济用途分类表(BSI_CODE)获取经济用途分类信息。导入AO要实现以下目标:
(1)往来科目必须进行明细核算;
(2)设置自定项目的科目必须按自定义项目分类进行明细核算;
(3)经费支出中的基本支出按经济用途进行明细核算;
(4)经费支出中的项目支出不仅按自定义项目核算,而且要按经济用途进行明细核算,项目支出不设置自定义项目的要按经济用途进行明细核算。
方正春元行政事业版财务软件,还提供了按支出功能进行分类,根据现行行政事业单位财务制度要求,一般不采用,读者可以通过其他查询方法实现,本文不作为研究话题。
二、数据清理的方法及步骤
1.生成会计科目表
因科目表(ACCOUNTANT_SUBJECT)没有提供明细科目,须按照以下方法从其他途径获取:
(1)从余额表(REMAIN)中获取往来明细科目代码并从往来表(CURRENTS)中获取明细科目名称。
将余额表的科目代码列(AS_CODE)与往来代码列(CR_CODE)合并,生成新科目代码,同时将此表与往来表(CURRENTS)关联,即余额表的核算单位代码(SET_CODE)、往来代码(CR_CODE)分别与往来表的核算单位代码(SET_CODE)、系统内码(IN_CODE)进行等值连接,可获得往来明细科目代码及明细科目名称。合并科目代码与往来代码列时,因往来代码的空值用空字符串表示,所以直接用“+”相连。
(2)从凭证明细表(VOUCHER_DETAIL)中获取当年发生所有往来明细代码并从往来表(CURRENTS)中获取明细科目名称。
将凭证明细表中的科目代码(AS_CODE)与往来代码(CR_CODE)合并,生成新科目代码,并将此表与往来表(CURRENTS)关联,即凭证明细表的核算单位代码(SET_CODE)、往来代码(CR_CODE)分别与往来表的核算代码(SET_CODE)、系统内码(IN_CODE)进行等值连接,可获得往来明细科目代码及明细科目名称。注意合并科目代码时空值的影响,可用“AS_CODE+ISNULL(CR_CODE,'')”解决,用“DISTINCT”消除重复值。
(3)从余额表(REMAIN)获取结余明细科目并从自定义表(OTHER)中获取明细科目名称。
同理,将余额表的科目代码列(AS_CODE)与自定义代码列(OTH_CODE)合并,生成新科目代码,同时将此表与自定义表(OTHER)关联,可获得明细科目代码及科目名称,方法同步骤(1)。
(4)从凭证明细表中获取基本支出按经济用途核算的明细科目,从经济用途表(BUDGET_SUBEJECT_ITEM)中获取明细科目名称。
将凭证明细表的科目代码(AS_CODE)与经济用途代码(BSI_CODE)合并,并与经济用途表相关联。这一步获取经费支出中的基本支出明细科目及名称,同时也获得了项目支出中只按经济用途核算的明细科目及名称。
(5)从凭证明细表中获取自定义核算的明细科目,并与自定义表相关联。通过此方法,可取得自定义项目核算的明细科目码及名称,这一步骤同时获取了经费支出中项目支出按经济用途明细核算的上一级科目。
闷从凭证明细表中获取既按自定义项目核算又按经济用途进行明细核算的代码,并与用途表相关联。此步要将凭证明细表的AS_CODE、OTH_CODE、BSI_CODE合并(注意顺序),合并要求OTH_CODE、BSI_CODEG两列均不为空,此步骤可取得项目支出中按自定义项目分类且进行经济用途明细核算的科目代码及名称。
通过以上步骤取得了所有明细科目,将(1)至(6)与科目表进行“UNION”运算,可得到一级科目代码、部分二级科目代码及明细科目代码,并消除了重复记录。但是合并产生的科目代码中间缺少汇总科目,因此对运算后产生的新表用“DISTINCT”加“GROUP BY”多次汇总,并插入到表中,新插入的汇总科目名称为空,与原科目代码有少量重复值,要用语句删除重复代码且名称为空的列,再与经济用途表相关联即取得了汇总级科目名称。
2.生成余额表
行政事业单位年初余额表不包括收入、支出科目,因此将余额表的科目代码列与往来代码列及自定义代码列进行简单合并,可取得一级科目及明细科目的余额,因余额表不包含余额方向,可通过余额表核算单位代码(SET_CODE)、科目弋码(AS_CODE)与会计科目表(ACCOUNTANT_SUBJECT)的核算单位代码(SET_CODE)、科目代码(AS_CODE)相关联,从而取得各科目的余额方向,最后逐级汇总后并插入到该表中。这样处理后余额表形成了分级显示的规范化余额表。
3.关联凭证表与凭证明细表,形成一张凭证表
将凭证表的科目代列、往来代码列、自定义代码列及经济用途代码列合并,后三列包括很多空值,可以使用“ISNULL”函数预处理后合并。从这两张表中取得年、月、日、凭证号、摘要、借方发生额、贷方发生额等必要信息,值得注意的是:摘要列的字符长度为4000,已超过AO字符型数据类型长度的限制,可根据实际需要减少此列的长度。
4.导入AO前进行必要的验证
通过上述处理,取得了会计科目表、余额表、凭证表,在导入AO前,可进行一些基本的验证,以减少错误的发生。验证项目主要包括:
(1)验证科目表科目级次是否规则;
(2)余额表一级科目借贷方是否平衡;
(3)余额中的科目是否完全存在于科目表中;
(4)凭证表中的科目是否完全存在于科目表中;
(5)凭证表的借贷方是否相等。
将会计科目表、余额表、凭证表导入AO后,生成的财务数据不仅完全满足了审计的需要,与软件设计的财务核算目标也完全一致。
上述会计科目表的形成比较繁琐,其中包含了复杂的SQL语句、必备的财务理论基础等知识,其逻辑推理过程请大家自行验证。