财务每天都要跟会计凭证打交道,对于刚入门的财务而言,编制会计凭证是必修课!

对于一般的交易,会计或总账财务人员收到单据后,会按照单据上的金额录入核算系统形成会计凭证,但是当遇到交易数量庞大的时候,财务手工录入凭证难免会出现录错、遗漏的情况。

昨晚,小秘书刷到了学员几米的朋友圈,发现她每月初都要通宵加班做会计凭证。

唉~财务人真的太不容易了,我看完朋友圈之后就找几米聊了一下,会计凭证这类复制粘贴的工作其实可以用Python去完成。

如果你也有跟几米同样的困惑,那快来学习如何用Python编制会计凭证吧!

几米就职于一家名叫Yummy的经营连锁餐厅,在中国有多家门店,主要售卖汉堡、薯条、炸鸡等快餐食品。

Yummy公司目前通过“采购业务系统”实现原材料采购的下单、请款、支付、验收全过程管理。这些数据最终会汇总到财务部进行采购及应付会计核算。

2019年1月底,Yummy公司收到来自“采购业务系统”传送的数据,我们需要根据这些数据去编写Python程序,实现用Python编制会计凭证的功能。

接下来,我们结合案例看如何用Python编制会计凭证!

1

分析凭证处理要求

观察数据库,这就是用户在核算系统前台看到的凭证在数据库里存储的样子,下图是数据库字段:

要求:从采购业务的每一笔交易数据,分析科目代码、科目名称、交易币种、借贷方金额等信息,并将门店和供应商关键信息作为凭证的辅助核算字段,最后赋予每笔凭证各自的编号、凭证日期、行号。

2

梳理业务与准则依据

从上述数据中,我们可以看到公司存在两种付款模式,对于一般的采购,Yummy公司在下单时先预付供应商款项。可以就个别合同向供应商申请信用期付款,也就是验收货物后一段时间再支付货款。

因此,对于预付模式,在下单时间确认预付账款:

  • 借:预付账款
  • 贷:银行存款

在入库时确认原材料

  • 借:原材料
  • 应交税费-进项税额
  • 贷:预付账款

对于应付模式,在入库时确认原材料:

  • 借:原材料
  • 应交税费-进项税额
  • 贷:应付账款

在付款时核销应付

  • 借:应付账款
  • 贷:银行存款

3

两种付款模式的凭证处理

预付模式:

1)第一个预付模式会计分录,在下单时间确认预付账款:

  • 借:1123-预付账款
  • 贷:1002-银行存款

a.在采购数据中,筛选预付模式交易,以下单时间为凭证日期,借:预付账款,编制凭证第一行。

#筛选数据

df02_1=d[df01['预付应付']=='预付',['下单时间','门店','供应商','含税金额','不含税金额','进项税额','交易币种']].rename(columns={'下单时间':'凭证日期','门店':'辅助核算1','供应商':'辅助核算2'})


#凭证编号这里设置为:两组随机数相加后转换成16进制进行存储


df02_1['凭证编号'] = np.random.randint(10000,99999,df02_1['凭证日期'].shape) + np.random.randint(1000,9999,df02_1['凭证日期'].shape)

#hex函数转换成16进制,upper将字母转换成大写

df02_1['凭证编号'] = df02_1['凭证编号'].map(lambda x: hex(x).upper())


df02_1['行号'] = 1

df02_1['科目代码'] = '1123'

df02_1['科目名称'] = '预付账款'

df02_1['交易币借方'] = df02_1['含税金额']

df02_1['交易币贷方'] = np.nan #np.nan代表数组中的缺失值(空值)


d()

b.复制第一行凭证,科目修改为银行存款,金额修改为贷:含税金额

df02_2 = d()

df02_2['行号'] = 2

df02_2['科目代码'] = '1002'

df02_2['科目名称'] = '银行存款'

df02_2['交易币借方'] = np.nan

df02_2['交易币贷方'] = df02_2['含税金额']

d()

2)第二个分录,在入库时确认原材料

  • 借:1403-原材料
  • 22210102-应交税费-进项税额
  • 贷:1123-预付账款

a.筛选预付模式下的已入库交易,以入库时间为凭证日期,借记原材料,金额为不含税

#筛选数据

df02_3 = d[(df01['预付应付']=='预付')&(df01['是否入库']=='是'),['入库时间','门店','供应商','含税金额','不含税金额','进项税额','交易币种']].rename(columns={'入库时间':'凭证日期','门店':'辅助核算1','供应商':'辅助核算2'})


#随机生成凭证编号


df02_3['凭证编号'] = np.random.randint(10000,99999,df02_3['凭证日期'].shape) + np.random.randint(1000,9999,df02_3['凭证日期'].shape)

df02_3['凭证编号'] = df02_3['凭证编号'].map(lambda x: hex(x).upper())


df02_3['行号'] = 1

df02_3['科目代码'] = '1403'

df02_3['科目名称'] = '原材料'

df02_3['交易币借方'] = df02_3['不含税金额']

df02_3['交易币贷方'] = np.nan


d()

b.复制第一行凭证,借进项税额

df02_4 = d()

df02_4['行号'] = 2

df02_4['科目代码'] = '22210102'

df02_4['科目名称'] = '增值税-进项税额'

df02_4['交易币借方'] = df02_4['进项税额']

df02_4['交易币贷方'] = np.nan

d()

c.复制第一行凭证,贷方冲减预付账款,含税金额

df02_5 = d()

df02_5['行号'] = 3

df02_5['科目代码'] = '1123'

df02_5['科目名称'] = '预付账款'

df02_5['交易币借方'] = np.nan

df02_5['交易币贷方'] = df02_3['含税金额']

d()

3)将上述两笔凭证数据拼成一个完整的dataframe

df02=([df02_1,df02_2,df02_3,df02_4,df02_5],sort=False).sort_values(['凭证日期','凭证编号','行号']).rest_index(drop=Ture)


d()

【应付模式】参考【预付模式】的写法,形成不同的分录即可。

b.最后一步,我们再核对一下会计凭证要求的信息,做最后的加工处理,补充如下字段信息。

到这里,所有凭证相关的数据都处理完了~我们将生成的会计凭证存储到数据库中去!

用Python编制会计凭证可以避免手工输入带来的错漏,而且用时短,效率高可以说是财务工作中不可缺少的工具了。

END

©图片版权归财码Python所有,如对版权有异议,请联系后台议定处理。

本文由财码Python整理发布,如需转载请务必注明以上信息。

1.《汇总记账凭证如何编制,汇总记账凭证编制方法!》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《汇总记账凭证如何编制,汇总记账凭证编制方法!》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3257122.html