- 信息来源:市审计局
- 发布日期:2021-09-22 11:03
- 浏览次数:
在企业审计中会经常遇到被审计单位使用金算盘ERP系统的情况,但是AO2011中没有对应的采集模板,采用的是Oracle数据库,其数据备份方式有两种:GDB和DMP文件。其中GDB文件在导出过程由于受数据量的限制,导出过程较慢,比较影响工作效率,因此导出备份DMP文件成为取数的首选。但是此类型的备份数据没有AO2011中的导入模板,需要在SQL中进行处理从而整理成导入AO需要的格式。
将DMP文件恢复到SQL中时我们发现,金算盘ERP后台数据库中关系表很多,审计人员经过分析,导入AO仅需要ACCOUNT(科目表)、ACCOUNTDAILY(科目发生额表)、VOUCHER(凭证主表)、VOUCHER2(凭证子表)等基础数据表。
一、处理被审计单位账套的方法
(一)科目表的处理方法
科目表处理较为简单,需要的字段及含义如下:
序号 | 字段 | 字段含义 |
1 | straccountcode | 科目代码 |
2 | straccountname | 科目名称 |
3 | strfullname | 科目全称 |
4 | intdirection | 借贷方向 |
Select straccountcode,straccountname,strfullname,intdirection
into 科目表
from dbo.ACCOUNT
在导入AO2011的过程中需要注意的是,有的单位并未遵照严格的科目编码规则进行科目设置,随意性较大,例如科目编码‘1002-001’,导入AO时,AO默认二级科目长度为3,实际上科目长度为4,在科目表生成中需要手动修改对应的位数,否则导入AO将出现无法汇总上级科目的情况导致数据校验错误,如图。
(二)余额表的处理
由于数据库系统内没有直接的余额表,需要ACCOUNTDAILY(科目发生额表)与ACCOUNT(科目表)关联重新计算后才能得出,过程较为繁琐,而AO2011中余额表的导入要素较为简单,不一定非要按月存储才能导入,导入全年汇总数据即可,因此最简单的方法是从金算盘的前台导出余额表的EXCEL格式,构建余额表即可。此时余额表导入SQL后要字段类型如下图:
为确保导入AO不发生错误,要将借贷方向字段类型修改为nvarchar(50),期初、期末、借贷方金额等字段类型修改为decimal(18, 2),保留两位小数。
(三)凭证表的处理
处理凭证表时需要用到的字段如下表:
序号 | 字段 | 字段含义 |
1 | straccountcode | 科目代码 |
2 | straccountname | 科目名称 |
3 | lngvoucherdetailid | 凭证明细 |
4 | lngvoucherid | 凭证类别 |
5 | intvoucherno | 凭证号 |
6 | strdate | 日期 |
7 | strremark | 摘要 |
8 | dblcurrencyamount | 科目发生额 |
9 | intdirection | 借贷方向 |
10 | lngclassid | 项目核算标识 |
11 | lnggcustomerid | 客商核算标识 |
金算盘的凭证库是以发生额和借贷方向设置的,因此在在处理凭证表时,要选择dblcurrencyamount(当期本币发生额)字段进行处理,同时如果需要处理辅助账信
息,在处理过程中要把lngvoucherdetailid(凭证明细类别)、lngvoucherid(凭证类别)选上,作为以后链接辅助账信息的识别码,具体的处理语句如下:
select distinct a.straccountcode,a.straccountname,lngvoucherdetailid,b.lngvoucherid,b.intvoucherno,b.strdate,b.strremark,b.dblcurrencyamount,b.intdirection
into 凭证表
from dbo.ACCOUNT a join VOUCHER2 b on a.straccountcode=b.straccountcode
where b.strdate like '%被审计年度%'
至此,凭证库信息处理完成,同样需要修改字段类型,同余额表字段的修改。
二、被审计单位辅助账信息处理
如果需要处理辅助账,则需要在数据库中找到CLASS(项目信息表)、CUSTOM(客商信息表)、DEPARTMENT(部门信息表)等辅助信息表,单独进行处理。
关于辅助余额表的处理,同样是在科目发生额表中通过表中LNGCLASSID、LNGCUSTOMERID、LNDEPARTMENTID等标识进行处理,辅助余额表可以从被审计单位前台导入,整合到一张EXCEL表,以这种余额表的方式导入颇为简单。
关于辅助凭证表的处理,需要通过过渡表的格式进行处理,具体语句如下:
select distinct a.straccountcode as dm,a.straccountname as mc,b.lngvoucherdetailid as pzmxid ,b.lngvoucherid as pzid,b.intvoucherno as pzh,b.strdate as rq,b.strremark as zy,b.dblcurrencyamount as fse,b.intdirection as jd,b.LNGCLASSID2,b.LNGCUSTOMERID
into 辅助凭证过渡表
from dbo.GADATA0028_ACCOUNT a join dbo.GADATA0028_VOUCHER2 b on a.straccountcode=b.straccountcode
where b.strdate like '%年度%' and (b.LNGCLASSID2<>'0' or b.LNGCUSTOMERID<>'0')
select distinct a.*,b.strclasscode,c.strcustomercode,b.STRFULLNAME,c.STRCUSTOMERNAME
into 辅助凭证过渡表
from 辅助凭证过渡表 a left join dbo.GADATA0028_CLASS2 b on a.LNGCLASSID2=b.LNGCLASSID
left join dbo.GADATA0028_CUSTOMER c on a.LNGCUSTOMERID=c.lngcustomerid
此处辅助信息基本处理完成,可以以数据备份方式采集进入AO2011,注意最好是处理成单表竖排方式,因为在导入AO中用横排方式导入时,含有NULL值或为0的时候等导入AO可能会出错。
作者:翁枫