财政审计中对往来款项 清理不及时数据审计技术方法

财政审计中对往来款项
清理不及时数据审计技术方法
一、审计关注的问题
当前地方财政及各预算单位,普遍存在往来款长期挂账问题,不利于优化营商环境,影响财政财务管理,并可能形成隐形债务,造成国有资产损失。为揭露该问题,需要对地方财政及各预算单位各往来科目的结转年限及金额分别进行统计,如果采用人工统计将会非常繁琐和消耗时间,该方法能够在取得对方明细科目的余额表的情况便实现自动统计往来科目的结转年限及金额,省时省力,高效准确。本实例以我区M街道行政账为样本进行演示。
二、所需要采取的数据
各部门及街镇的往来明细科目余额表
三、所采用的技术方法原理及步骤
1、原理:首先因为我们对每一笔往来明细实际具体结转情况不太清楚,在此前提下,出于最为保守的估计,我们只需要统计出每年往来明细科目的结转金额的最小值,也就是说假设该明细科目每一年年初的金额,在该年中明细科目相反方向发生额都是冲销了该明细科目的年初余额,只有这样才能保证是结转的最小的金额,而该年的同方向发生额则全部计入当年新的往来金额,这样统计出来的往来结转金额才能达到最小,对于往来清理不及时的问题定性也才有更有说服力。
2、步骤及语句:
(1)是将对方提供的某段时期(如2014至2019年)明细科目余额表涉及的往来明细科目部分全部提取出来,形成某段时期(如2014至2019年)往来明细科目余额表。并按年度,科目名称进行排序。
SSELECT*
into整理重新导入数据库用于游标分析
FROM[**].dbo.A行政账至年往来科目余额表
where科目编码like'1212%'or科目编码like'1215%'or科目编码like'2001%'or科目编码like'2305%'or(科目编码like'1218%'and年度='2019')or(科目编码like'2001%'and年度='2019')or(科目编码like'2201%'and年度='2019')or(科目编码like'2307%'and年度='2019')
orderby[借/贷]desc,科目名称,科目编码,年度
得到如下结果
(2)利用游标分析往来明细科目余额表各科目结转金额及结转年限情况,并以表格形式显示。
createtable#结转年限表#(年度nvarchar(4),科目编码nvarchar(16),科目名称nvarchar(50),方向nvarchar(4),年初余额int,借方累计数int,贷方累计数int,期末余额int,结转年限int,结转金额int)
declare@年度nvarchar(4),@科目编码nvarchar(16),@科目名称nvarchar(50),@方向nvarchar(4),@年初余额int,@借方累计数int,@贷方累计数int,@期末余额int
declare@年度oldvarchar(4),@科目编码oldvarchar(16),@方向oldvarchar(2),@科目名称oldvarchar(50),@结转年限int,@结转年限oldint,@结转金额oldint,@年初余额oldint,@期末余额oldint,@借方累计数oldint,@贷方累计数oldint
declarecur_往来明细scrollcursorfor
SELECT[年度]
,[科目编码]
,[科目名称]
,[借/贷]
,[年初余额]
,[借方累计数]
,[贷方累计数]
,[期末余额]
FROM[**].[dbo].整理重新导入数据库用于游标分析
orderby[借/贷]desc,科目名称,年度desc,科目编码
opencur_往来明细
fetchfirstfromcur_往来明细into@年度,@科目编码,@科目名称,@方向,@年初余额,@借方累计数,@贷方累计数,@期末余额
set@年度old=@年度
set@科目编码old=@科目编码
set@科目名称old=@科目名称
set@年初余额old=@年初余额
set@借方累计数old=@借方累计数
set@贷方累计数old=@贷方累计数
set@方向old=@方向
set@结转金额old=@期末余额
while@@FETCH_STATUS=0
begin
set@结转金额old=case
when@结转金额old>0and@方向='借'and@结转金额old-@借方累计数>0then@结转金额old-@借方累计数
when@结转金额old>0and@方向='借'and@结转金额old-@借方累计数<=0then0
when@结转金额old<0and@方向='借'and-@结转金额old-@贷方累计数>0then@结转金额old+@贷方累计数
when@结转金额old<0and@方向='借'and-@结转金额old-@贷方累计数<=0then 0
when@结转金额old>0and@方向='贷'and@结转金额old-@贷方累计数>0then@结转金额old-@贷方累计数
when@结转金额old>0and@方向='贷'and@结转金额old-@贷方累计数<=0then0
when@结转金额old<0and@方向='贷'and-@结转金额old-@借方累计数>0then@结转金额old+@借方累计数
when@结转金额old<0and@方向='贷'and-@结转金额old-@借方累计数<=0then 0
end
set@年度old=@年度
set@科目编码old=@科目编码
set@科目名称old=@科目名称
set@年初余额old=@年初余额
set@借方累计数old=@借方累计数
set@贷方累计数old=@贷方累计数
set@方向old=@方向
set@期末余额old=@期末余额
if@年度='2019'
set@结转年限=1
if@年度='2018'
set@结转年限=2
if@结转金额old<>0
begin
if@结转金额old>0 and@年初余额>0 and@方向='借'and@结转金额old-@借方累计数>0 and@借方累计数old>0
insertinto#结转年限表#values(@年度,@科目编码,@科目名称,@方向,@年初余额,@借方累计数,@贷方累计数,@期末余额,(@结转年限-1),@借方累计数)
if@结转金额old<0 and@年初余额<0 and@方向='借'and-@结转金额old-@贷方累计数>0and@贷方累计数old>0
insertinto#结转年限表#values(@年度,@科目编码,@科目名称,@方向,@年初余额,@借方累计数,@贷方累计数,@期末余额,(@结转年限-1),@贷方累计数)
if@结转金额old>0 and@年初余额>0 and@方向='贷'and@结转金额old-@贷方累计数>0and@贷方累计数old>0
insertinto#结转年限表#values(@年度,@科目编码,@科目名称,@方向,@年初余额,@借方累计数,@贷方累计数,@期末余额,(@结转年限-1),@贷方累计数)
if@结转金额old<0 and@年初余额<0 and@方向='贷'and-@结转金额old-@借方累计数>0and@借方累计数old>0
insertinto#结转年限表#values(@年度,@科目编码,@科目名称,@方向,@年初余额,@借方累计数,@贷方累计数,@期末余额,(@结转年限-1),@借方累计数)
end
fetchnextfromcur_往来明细into@年度,@科目编码,@科目名称,@方向,@年初余额,@借方累计数,@贷方累计数,@期末余额
if@科目名称old=@科目名称
set@结转年限=@结转年限+1
else
if@科目名称old<>@科目名称
begin
insertinto#结转年限表#values(@年度old,@科目编码old,@科目名称old,@方向old,@年初余额old,@借方累计数old,@贷方累计数old,@期末余额old,(@结转年限),@结转金额old)
set@结转年限=1
set@结转金额old=@期末余额
end
set@年度old=@年度
set@科目编码old=@科目编码
set@科目名称old=@科目名称
set@年初余额old=@年初余额
set@借方累计数old=@借方累计数
set@贷方累计数old=@贷方累计数
set@方向old=@方向
end
closecur_往来明细
deallocatecur_往来明细
select*from#结转年限表#
orderby方向desc,科目名称
droptable#结转年限表#
以上语句得到以下结果:
从以上结果可以得到A街道行政结转1年到6年的往来科目的金额及结转年限及形成年限情况。从而可以得出往来科目清理不及时的事实。