怎样才能在最短的时间内学会会计分录?

你们懂得会计吗?

如果懂一点,以下内容应该很容易理解。

我来做一个业务:公司收到从张三得来的货款1000元,已存到银行存款中去。

会计是如何记录这句话呢?

银行存款:借方 1000元

张三:贷方 1000元

会计是将这句话简化成张三,银行存款,1000元。这三个要素。

那么,借贷是什么呢?记录这个钱的流动方向呀。

正方向为借,反方向为贷。于是从xxx,到xxx,就表示这个钱的流动方向了。会计中,复式记账法比较先进的地方是可以记录流动方向,将一维信息转化成二维。

我将其转化成python代码:

#自定义函数会计分录
class AccountEntry:
    def __init__(self, account, amount):
        self.account = account #账户名称
        self.amount = amount #金额

    def is_debit(self):
        return self.amount >= 0 #判断是否大于零

    def __str__(self):#如果是正数,为借方,负数为贷方
        entry_type = "借方" if self.is_debit() else "贷方"
        return f"{self.account}: {entry_type} {abs(self.amount)}"


# 创建会计分录
entry1 = AccountEntry("银行存款", 1000)
entry2 = AccountEntry("应收账款(张三)", -1000)


# 输出会计分录
print("会计分录:")
print(entry1)
print(entry2)

运行后:

会计分录: 银行存款: 借方 1000 应收账款(张三): 贷方 1000

但问题是谁会一个一个的将分录敲到代码中呀,又要自己判断这个正负,这不是浪费时间吗?

于是我们可以设计一个输入方式:

 input_text = "收到从应收账款(张三)得来的1000元货款,汇到银行存款中去。"

只要我们按从XXX,到XXX中去这个格式的时候登记业务,那么配合正则表达式,就可以自动生成会计分录。

import re

class AccountEntry:
    def __init__(self, account, amount, debit=True):
        self.account = account
        self.amount = amount
        self.debit = debit

    def __str__(self):
        entry_type = "借" if self.debit else "贷"
        return f"{self.account}: {entry_type} {abs(self.amount)}"


# 输入文本
input_text = "收到从应收账款(张三)得来的1000元货款,汇到银行存款中去。"

# 正则表达式匹配关键信息
pattern = r"从(.*?)得来的(.*?)元.*?到(.*?)中去"
match = re.search(pattern, input_text)

if match:
    payer = match.group(1)
    amount = float(match.group(2))
    receiver = match.group(3)

    entry1 = AccountEntry(receiver, amount)
    entry2 = AccountEntry(payer, amount, debit=False)

    print("会计分录:")
    print(entry1)
    print(entry2)
else:
    print("输入文本不符合格式要求")

运行后的结果是:

会计分录:

银行存款: 借 1000.0

应收账款(张三): 贷 1000.0

当然,不单纯的收钱的业务,付款的业务我们也要的,例如当我们输入:从银行存款得来到5000元,汇入到其他应收款(老板)的私人户中去。

运行以上代码:

import re

class AccountEntry:
    def __init__(self, account, amount, debit=True):
        self.account = account
        self.amount = amount
        self.debit = debit

    def __str__(self):
        entry_type = "借" if self.debit else "贷"
        return f"{self.account}: {entry_type} {abs(self.amount)}"


# 输入文本
input_text = "从银行存款得来的5000元,交到其他应收款(老板私人户)中去。"

# 正则表达式匹配关键信息
pattern = r"从(.*?)得来的(.*?)元.*?到(.*?)中去"
match = re.search(pattern, input_text)

if match:
    payer = match.group(1)
    amount = float(match.group(2))
    receiver = match.group(3)

    entry1 = AccountEntry(receiver, amount)
    entry2 = AccountEntry(payer, amount, debit=False)

    print("会计分录:")
    print(entry1)
    print(entry2)
else:
    print("输入文本不符合格式要求")

运行后的结果是:

会计分录:

其他应收款(老板私人户): 借 5000.0

银行存款: 贷 5000.0

是不是很神奇呢?不过,如果这个钱不是单纯的直线流动,而是流到两个方向呢?如我销售一笔存货,"销售收到从存货得来的1000元,增加到应收账款中去。"

按以上代码,运行后的结果是

会计分录:

应收账款: 借 1000.0

存货: 贷 1000.0

但实际工作中,销售是要交增值税的。即

应收账款:借 1130

存货:贷 1000

应交税金:贷 130

所以你就需要将一笔业务分成两个以上的正则表达式,这个才麻烦的地方。不过现在有人工智能大模型,如果不介意准确率的话,LLM是可以解决的。

由于专利的限制,即使我是发明人也不能将代码公开,只能大概写一下原理。

由于怕自卖自夸,我就不详细介绍了。具体的原理是: 指定生成文本的长度、格式给模型,然后再调用大模型的生成方法来生成能匹配正则表达式的文本。

由于互联网的制度,我只能用清华的ChatGLM3来代替一下,不是ChatGTP3,效果是不错的。不过由于没有配套的ERP,只能放在公司的主页上供别人试用。

我可以肯定地说,记账这些事情,自动化是未来的趋势,十年,可能不出十年,自动化入账就是一件很平常的事,会计分录估计在未来是不用学的,交给人工智能就可以了,你只要将某件事写给人工智能,它就可以为你生成会计分录,而且符合会计准则的要求。

三十年前的会计要懂得如何用算盘,二十年前的会计要懂得计算机,估计未来十年的会计们,要懂得人工智能了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甘德东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值