1. 引言

记得那是2020年的中秋前后,我去开封参加一个活动。去之前,无意中在大学校友群中,联系到一位学长兼老乡。由于我们同年,只是比他小几个月,在高中时也曾相识。到了大学自然而然熟络起来,到后来几乎是形影不离,彼此视为知己,但自大学毕业后各奔前程后再无联系。机缘巧合的是,他已定居开封,自己经营一家医药公司,他得知我要去开封,有点喜出望外,激动不已。于是我们相约聚一下,把酒言欢。

由于活动日程安排比较紧凑,期间抽不出时间和学长相聚。待活动结束之后,学长早早地在场馆门口等我。相见之后,虽然发现彼此变化都很大,都已发福,但早年的轮廓、神韵依然存在,彼此不约而同地认出对方不在话下。由于活动结束,天色已晚,彼此寒暄一番后,学长从我的神态看出我很疲惫,让我早点休息,相约第二天带我畅游开封,并叙别后之境。

翌日一早,学长去宾馆接我,一同畅游清明上河园、龙亭、大相国寺等文化底蕴颇深的人文景观,一切不再言表。傍晚时分,学长带我去一家比较知名的酒馆就餐。鲤鱼焙面,汁头橙红鲜亮,面细如发,洁白如雪,晶莹剔透,犹如一件艺术品。兴盛德花生的“酥、脆、香”至今让我难忘,久负盛名的灌汤包,皮薄如纸,汁鲜馅香,果然名不虚传。仰韶美酒绵甜、清爽、回味悠长。席间,我向学长讲述了毕业后自己的经历,工作、家庭、事业无所不谈,以及对人情之冷暖,世态之现实的感悟、感慨。酒至微醺,学长带我驱车前往一个极为幽静,古朴雅致的茶馆,再叙别后之境。

到茶馆,月已西斜,中原腹地的深秋之夜,已有些许的冷意。我们选择了一个小包房,点了上等的毛尖,一些点心和果盘,茶馆里极为安静。偶尔传来一两声的犬吠,蛐蛐的吟唱和虫鸣相互应和着。月光透过窗纱漫入包间,燃两只烟,青色的烟从我们指间袅袅升起,和着茶的热气,升腾着,舞动着,相互交织着。人到中年,我们都难免会落入俗套,渐渐喜欢上了茶、烟、酒,只有经历沧桑,方能体会其中之妙。

在茶馆里,学长向我讲述了他的经历。他在穷途末路的情况下,毅然决定创业,当初虽有凌云之壮志,但筚路蓝缕,毫无根基,道路之曲折和艰辛也可想而知。说到动情之处,看到学长早已泪目,说实话,当时的我没有类似的经历,也很难身临其境地去体会。所幸,学长今日已小有所成,经营的医药公司日均几十万流水,高峰时会有百万之多,在开封也有几家分公司,天道酬勤,学长的辛苦也算没付诸东流。话题慢慢转移到他公司现在的经营上来,他向我吐槽,现在的年轻人真的吃不得一点苦。

学长解释道:“就拿我们公司的开票员来说,一年至少要换五六波人。”

我不解地问道:“开具发票的工作也不辛苦呀!是不是安排的还有其它工作,她们嫌累呢?”

学长深深地吸了一口烟,然后说道:“老弟有所不知,我们这个行业所开具的发票,大部分是清单票,一张发票少则几十条清单,多则上百条清单,开票员需要一条一条手工录入,很容易出错,开票量又多,所以开票员流动很厉害。这个问题,真的让我头痛。”

我略有所思,然后说道:“老哥,你怎么不尝试引入一款软件工具,来辅助开票员来开票呢,这样,你的问题或许就能迎刃而解了。”

学长若有所悟地说道:“老弟,我也曾想过,但是我们的业务系统和开票软件之间的天然屏障很难打通,所以一直没有找到合适的软件工具,以解我心之忧。老弟,你是这个行业的精英,我就把这件事情委托给你办理吧。”

真切地体会到学长的忧心之处,真心想为他排忧解难,我便一口应允下来。回去之后,我始终将这件事情放在首位,通过近三个月日夜兼程地努力,终于写出了一款工具。这款工具只需在业务系统的单据管理里操作,即快捷、高效完成发票开具的全流程操作,至今依然在学长的公司稳健地运行,自此,他们的开票员也稳定了下来。当时,学长真是喜出望外,感激、酬谢之情不在言表。

笔者今日稍得闲暇,将这款工具的思路、架构,以及和开票相关的核心代码分享给各位朋友。期望,能为像学长一样遇到类似场景的朋友,或遇到技术障碍的业界朋友,提供参考,能起到抛砖引玉的作用。同时笔者,也非常欢迎和各位朋友,进行更深一步的,业务场景或技术等方面的,沟通和交流。

2. 发票开具业务场景现状分析

发票相关的业务,和人们的生活,企业的生产经营的各个方面,都息息相关,业务链条一环紧扣一环,极具专业性。笔者由于认知、能力有限,在本文中仅对发票终端开具的相关业务场景做简要分析,如有不当或错误之处,欢迎各位批评指正。

2.1 终端开票软件

现在市场在用的开票软件分为金税盘(白盘)版,税控盘(黑盘)版,税务UKey版。当然,还有正在试点的全电发票,全电不在本文讨论之列。从当前的市场占有率来说,以金税盘为代表的航信系开票软件遥遥领先,是佼佼者。从趋势来说,百旺系的税务UKey独占鳌头,只有税务UKey版才能开具电专发票,代表着新的趋势。金税盘版开票软件从大版本来说分为2.0版和3.0版,时至今日,2.0版已经没落,会逐渐升级到3.0版。税控盘版开票软件从大版本来说,分为旧版本和新版本,旧版本极少。

各开票软件功能大致相同,包括领购,分发,开具,作废,冲红,查询等。金税盘版和税控盘版不支持版式文件的下载,不支持电专,税务UKey支持版式文件的下载,支持电专。

发票明细快速录入接口(清单发票批量开具工具需求分析及设计思路)(1)

图-1 终端开票软件

2.2 终端开票业务场景分析

终端开票软件提供了最为基本的开票功能,通过手工录入进行单张发票开具。至少有两个业务场景,使用开票软件进行开票已经很难满足需求,对于企业和开票员来说苦不堪言。

随着移动支付的普及,移动APP已经渗透到人们生活的各个方面,数字人民币方兴未艾,交易即开票等理念会很快成为现实。这就需要开票以服务的方式在台运行,提供7ⅹ24小时服务,以支撑移动端的扫码开票、智能抬头、智能赋码、发票交付等功能。显然,传统的开票软件无力应对这些诉求。

另外一种场景,正如我在引言中提及的,学长的烦恼一样。很多的商贸型企业和工业企业,有着很大的开票量,而且大多数是清单发票,使用传统的开票软件手工录入开具,无疑工作量巨大,有容易出错。显然这种场景,传统的开票软件也是不能胜任。针对这种场景,这就需要有一种工具,能将开票功能和企业原有的业务系统打通,最好能做到所有的开票操作,在原有的业务系统上完成。

3.开票工具整体架构设计

我从开封回来之后,牢记学长的嘱托,暗暗下定决心,开发一个工具来解决学长的烦恼,将这件事情始终都放在首位。开始我投入了几天时间做调研,并仔细分析,得出了上节所叙述的结论。

于是我给自己下达了指标,首先将解决学长的烦恼作为首要目标,要支持所有的税盘,包括金税盘,税控盘,税务UKey。再者,工具需要有很好的用户体验,最好将开票相关的操作“侵入”到业务系统中,和开票相关的操作入口,植入到业务系统的单据管理模块。最后,与发票开具相关的核心功能,按照模块化,服务化的思路搭建,做到易扩展,将来能以最低的成本实现,移动开票的需求(也即2.2节描述的业务场景一)。

根据给自己设定的指标,进行了整体架构设计如下图。首先,完全模块化(微服务化),每个基本模块就是积木单元,将来可根据具体需求,快速拼合成新的产品形态。例如金税盘组件,税控盘组件,税务UKey组件可以拿出来单独使用。整体架构设计出来后,我又到学长公司,对业务系统进行调研分析。花费了三天时间,最后确认,使用“侵入”的方式,将发票操作入口植入到第三方业务系统,并获取单据数据,和我预想的一样,在技术上完全不存在问题。

有关整体架构设计,由于笔者技术水平有限,可能存在缺陷,各位朋友如有改进建议,请不吝赐教。同时,也欢迎和各位朋友,做进一步的沟通交流,以期相互受益。

发票明细快速录入接口(清单发票批量开具工具需求分析及设计思路)(2)

图-2 整体架构设计

,