在会计核算中,不同的系统之间进行数据核对是经常发生的事情,比如CRM(客户关系管理系统)与收入对账、税务系统与应交税费对账、采购系统与存货对账。
如果公司的信息化程度较高,在进行收入核算的时候输入发票号或者收入凭证本身就是根据开票信息生成的,那么核对这两者的信息就比较容易了,只需按照发票号进行匹配和查找就OK了。
- 一个合同或一笔凭证对应好几张发票;
- 发票金额或记账金额录入错误出现差异;
- 有些收入是未开票收入,核对时需要剔除这些项目;
- 有些发票是废弃发票,同样需要剔除。
在今天的课程案例中,我们将结合数字化工具Python,以开票系统的发票数据与收入核算核对为例,为大家解决上述的问题!
在案例开始前,我们给大家提供了即学即用的Tips,对未开票收入的处理,可以参考如下方式:
- 未开票收入直接按开票方式入账。相关分录如下:借:银行存款
贷:主营业务收入
应交税金-应交增值税 - 无票收入在税控系统中有专门的录入窗口,同样需要缴税。
- 无票收入入账前,应确认清楚,对方以后是否要发票,若需要发票的话可以留到开票后再做收入,避免进行调整。当然,确实有已经入账的不需开票收入后来需要开票时,可以先冲销入账时的记账凭证,再开票重做收入,成本不用处理。但是,税控系统内要做适当调整,冲减无票收入,增加开票收入。
接下来,我们结合案例看看如何将Python运用到收入与发票的核对中!
1
数据准备
从核算系统导出收入凭证数据,需要包含主营业务收入、其他业务收入、营业外收入等任何发生开票行为的科目。
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
file = 财会实验数据.xlsx
dfj = pd.read_excel(file, sheet_name=收入记账凭证)
dfj.fillna(0,inplace=True)
dfj
从开票机导出发票信息:
dft=pd.read_excel(file,sheet_name
=开票机)
dft.fillna(0,inplace=True)
dft
2
数据处理
剔除凭证中的无票收入,并且计算凭证金额为贷方-借方:
dfj1=dfj[dfj[科目名称].str.contains
(开票收入)]
dfj1[凭证金额]=dfj1[贷方]-dfj1[借方]
dfj1
3
数据计算
剔除发票中的作废票据,并且计算不含税金额为开票金额(收入是不含税的,拿不含税的开票额才能比对)
dft1=dft[dft[作废]==0]
dft1[开票金额]=dft1[金额]-dft1[税额]
dft1
4
数据输出
按客户比较凭证数和开票数的差异:
a.凭证金额按客户汇总
dfj2 = pd.pivot_table(dfj1,index=[客户名称],
values=[凭证金额],aggfunc=sum).reset_index()
b.发票金额按客户汇总
dft2 = pd.pivot_table(dft1,index=[购方名称],
values=[开票金额],aggfunc=sum).reset_index()
c.两者相减得出差异
diff = dfj2.merge(dft2,how=outer,left_on
=客户名称, right_on=购方名称)
diff[差异] = diff[凭证金额]-diff[开票金额]
diff
找到差异不为0的客户,将原始数据按金额匹配。
这里以A客户为例,匹配不到的即双方的差异原因。
dfj1[dfj1[客户名称]==A].merge
(dft1[dft1[购方名称]==A],how=outer,left_on=凭证金额,
right_on=开票金额)
同理,使用循环对所有差异客户输出比对表:
for index, row in diff[(diff[差异]>0.001)|
(diff[差异]<-0.001)].iterrows():
print(dfj1[dfj1[客户名称]==
row[客户名称]].merge(dft1[dft1[购方名称]
==row[购方名称]],how=outer,
left_on=凭证金额, right_on=开票金额))
# 可以用to_excel输出到excel中,方便查看
在上述案例中,我们可以看到A客户的差异不为0,可以将Python计算生成的表格输出到Excel中做详细的分析。以上就是用Python实现收入与发票核对的方法了~你get到了吗?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123456@qq.com 举报,一经查实,本站将立刻删除。