NC核心财务数据表在审计中的应用分析
马社亮(审计署驻南京特派办)
【发布时间:2011年10月26日】
字号:【大】 【中】 【小】
    
    
    NC(New Century)软件是用友软件公司面向高端市场的ERP产品,该产品以“协同商务、集中管理”为设计理念,为集团企业提供了包括集团财务、管理会计、集团资金管理、集团供应、集团分销、多工厂制造、集团人力资源、分析决策等完整的管理解决方案。由于NC产品版本较多,各版本数据结构之间存有差异且结构复杂,而现场审计实施系统AO软件中提供的NC财务数据采集转换模板有限,这就为审计人员采集转换NC数据带来了障碍。另外,因NC产品目前市场占有率较高,审计工作中常常会遇到被审计单位使用NC软件,如何在遇到NC软件时,及时对软件中的核心财务数据加工整理并导入AO软件,是审计人员面临的一大困难。
    下面,我们以NC5.0为例,从后台数据库角度,对NC核心财务数据表加以介绍,并对数据进入AO软件前的加工整理过程进行说明,以使审计人员能从底层数据库了解NC软件的数据结构情况,从而在审计工作中举一反三,在遇到不同的NC产品时,能够灵活处理。
    NC核心财务数据表结构简析
    NC5.0产品中财务核算部分的核心表主要包括科目代码表、帐簿代码表、科目余额表、凭证主表、凭证明细表等,其中科目代码表BD_ACCSUBJ的BALANORIENT字段为借贷方向信息,数据1表示借方,2表示贷方;科目余额表GL_BALANCE的PERIOD字段为会计期间信息,数据00表示期初余额的会计期间;另外,记账凭证由凭证主表GL_VOUCHER和凭证明细表GL_DETAIL共同构成,相关信息分布在两表不同的字段中。上述各表主要信息如下表所示:
  

表名称

表含义

字段名称

字段含义

BD_ACCSUBJ

科目代码表

PK_ACCSUBJ

科目编码(关键字)

SUBJCODE

科目代码

SUBJNAME

科目名称

DISPNAME

科目全称

BALANORIENT

借贷方向(1:借方,2:贷方)

PK_GLORGBOOK

帐簿编码(外键)

BD_GLORGBOOK

帐簿代码表

PK_GLORGBOOK

帐簿编码(关键字)

GLORGBOOKCODE

帐簿代码

GLORGBOOKNAME

帐簿名称

GL_BALANCE

科目余额表

[YEAR]

年份

PERIOD

会计期间(00表示期初余额的会计期间)

LOCALDEBITAMOUNT

本币借方发生额

LOCALCREDITAMOUNT

本币贷方发生额

PK_ACCSUBJ

科目编码(外键)

PK_GLORGBOOK

帐簿编码(外键)

GL_VOUCHER

凭证主表

PK_VOUCHER

凭证编码(关键字)

[NO]

凭证号码

PERIOD

会计期间

PREPAREDDATE

凭证日期

[YEAR]

年份

PK_GLORGBOOK

帐簿编码(外键)

GL_DETAIL

凭证明细表(分录)

LOCALCREDITAMOUNT

本币贷方发生额

LOCALDEBITAMOUNT

本币借方发生额

EXPLANATION

摘要

PK_VOUCHER

凭证编码(外键)

PK_ACCSUBJ

科目编码(外键)


    上述5个表中,凭证明细表GL_DETAIL与凭证主表GL_VOUCHER、科目代码表BD_ACCSUBJ之间分别通过凭证编码PK_VOUCHER、科目编码PK_ACCSUBJ字段建立关系。科目代码表BD_ACCSUBJ、凭证主表GL_VOUCHER、科目余额表GL_BALANCE与帐簿代码表BD_GLORGBOOK之间均通过字段PK_GLORGBOOK建立关系。
    审计对NC数据采集加工整理过程及应注意的问题
    由于AO软件暂时没有提供NC5.0软件财务数据的直接采集转换模版,因此在实际工作中,审计人员必须在对NC5.0后台财务数据采集加工整理的基础上,通过AO软件的财务软件数据库数据采集模块实现财务数据的加载、转换,并最终生成审计人员方便使用的AO财务帐表。实践发现,在对NC5.0后台数据的采集和加工整理过程中,下面的几个问题值得注意:
    一是在数据采集过程中,要注意对年份字段的关联。在采集某个年份的数据时,如果数据表中有年份(如YEAR)字段,可以直接使用该字段对数据进行筛选;否则,不能通过数据表中的TS(时间戳)字段提取年份。实践发现,TS字段的年份与实际帐簿的年份存在差异,如根据该字段提取某年份的数据,可能导致采集到的该年份数据不完整,最终导致凭证、余额表、报表借贷方出现不平情况。如一定要采集只有TS字段的表中某年份的数据,可以通过关联有年份字段的相关表进行处理。如可以通过将GL_DETAIL表与GL_VOUCHER表关联,利用GL_VOUCHER表的年份字段筛选GL_DETAIL表中某年的数据。
    二是在科目代码表的加工整理过程中,注意对无效科目的剔除。NC5.0在设计过程中,考虑到软件用户的特殊情况需要,如为了对表外凭证进行处理,设置了部分单边记帐的表外科目。如在某集团财务公司帐簿中,为了对重要空白凭证、代保管的有价值品等表外科目进行核算,设置了部分以8开头的单边记帐科目。因此,在对科目代码表的加工整理过程中,在生成科目代码表中间表时应注意对可能存在的表外科目的剔除,以防止生成的会计帐簿存在借贷方不平的问题。实际中可以参考如下的类SQL语句生成某账簿的科目代码:
    如果不存在表外科目:
      select *
      into kmdm_tmp
      from BD_ACCSUBJ
      where PK_GLORGBOOK=@s_PK_GLORGBOOK
    否则:
      select *
      into kmdm_tmp
      from BD_ACCSUBJ
      where PK_GLORGBOOK=@s_PK_GLORGBOOK and subjcode not like '8%' 
    三是在科目余额表的整理过程中,要注意辅助科目对科目余额的影响。在NC5.0科目余额表中,每个会计科目在一个会计期间可能存在多条数据记录,每条记录分别对应该科目当月在不同的辅助帐下的借贷方发生额,而AO软件对该模式的余额表在采集转换过程中不能直接处理。因此,在数据整理过程中,必须根据科目代码,对余额表中各科目当月的借贷方发生额进行统计汇总,生成科目余额表中间表,从而满足余额表数据导入AO软件的要求。审计实践中可以参考如下的类SQL语句实现:
    SELECT SUBJCODE, SUBJNAME, DISPNAME,
    PERIOD, convert(money,SUM(LOCALCREDITAMOUNT)) AS LOCALCREDITAMOUNT,
    convert(money,SUM(LOCALDEBITAMOUNT)) AS LOCALDEBITAMOUNT
    into bal_tmp
    FROM GL_BALANCE inner JOIN
    Kmdm_tmp ON GL_BALANCE.PK_ACCSUBJ = kmdm_tmp.PK_ACCSUBJ
    WHERE GL_BALANCE.PK_GLORGBOOK=@s_PK_GLORGBOOK  and  [YEAR] =@s_year
    GROUP BY SUBJCODE, SUBJNAME, DISPNAME, PERIOD
    ORDER BY SUBJCODE
    四是在记账凭证中间表的生成过程中,要注意无效数据的剔除。在NC5.0凭证中间表的生成过程中,考虑到原始凭证表数据中存在部分无效数据,在中间表的生成过程中需要将这部分无效的数据剔除,否则容易造成最终的AO帐套出现借贷方不平的问题。经对NC5.0凭证数据分析发现,可以通过下述类SQL语句剔除无效的凭证数据:
    SELECT convert(int,a.[NO]) as [no], a.PERIOD,
           a.PK_VOUCHER, a.PK_VOUCHERTYPE,
           a.PREPAREDDATE, a.[YEAR],
           convert(money,b.LOCALCREDITAMOUNT) as LOCALCREDITAMOUNT,
    convert(money,b.LOCALDEBITAMOUNT) as LOCALDEBITAMOUNT,
           b.EXPLANATION,
           d.VOUCHTYPENAME, b.PK_ACCSUBJ,
           c.SUBJCODE, c.SUBJNAME,
           c.DISPNAME
           INTO pzh_tmp
           FROM gl_voucher a INNER JOIN
           gl_detail b ON
           a.PK_VOUCHER = b.PK_VOUCHER inner JOIN
           kmdm_tmp c  ON
           b.PK_ACCSUBJ = c.PK_ACCSUBJ
           where a.DISCARDFLAG = 'n' AND a.PERIOD <> '00' AND a.DR = '0'
    AND  a.PK_GLORGBOOK=@s_PK_GLORGBOOK and a.[year]=@s_year
    经过上述加工整理,生成的三张财务数据中间表就可以通过AO软件的财务软件数据库数据采集转换功能顺利导入AO软件,并最终生成相应的AO软件会计帐表。上述数据整理过程可以编写为存储过程,AO采集转换过程可以保存为AO模板,供NC5.0数据导入AO软件重复使用。
    由于NC软件版本众多,各版本的底层数据结构略有不同,因此在审计实践中,需根据具体的底层数据结构对数据整理过程进行不同程度的修改和完善。上面是我们在审计实践中的一点心得,希望能为首次遇到NC产品的审计同仁在审计过程中提供一点参考,不当之处敬请批评指正。(马社亮)
【关闭】    【打印】