本发明涉及计算机技术领域,尤其涉及一种电子发票的开具方法、装置及计算机系统。
背景技术:
电子发票是指在购销商品中,开具、收取的以电子方式存储的收付款凭证。根据国家税务总局的公告,电子发票为真实有效的合法发票,与传统纸质发票具有同等法律效力,可作为用户报销、维权、保修的有效凭据。相比纸质发票,电子发票具有无纸化、低能耗、易保存、易查询等优点。对于受票方而言,电子发票可长期保存,且可随时通过互联网查询、下载和验证。
对于电商平台而言,如果需要开具纸质发票,则需向税务机关先申请开票,再将发票进行打印,然后寄送给消费者,不但费时费力,在配送过程中还会出现丢票、漏票等情况,增加了电商平台的运营成本。
技术实现要素:
为了解决现有技术的不足,本发明的主要目的在于提供一种电子发票的开具方法、装置及计算机系统,以实现电子发票的自动开具。
为了达到上述目的,第一方面本发明提供了一种电子发票的开具方法,所述方法包括:
接收发票报文并保存在数据表中,所述发票报文包含用于识别订单的识别码及对应的店铺;
从所述数据表提取发票报文;
根据识别码与订单的对应关系,获取所述识别码对应的订单;
对提取的所述发票报文及所述订单进行整合,生成电子发票;
将所述电子发票发送给所述对应的店铺。
在一些实施例中,所述从所述数据表提取发票报文包括:
按照预设的分页参数,对所述数据表进行分页,获得所述数据表的分页结果,所述分页结果包含所述数据表的所有分页;
按照第一预设时间周期,定时将所述分页按照预设的分配规则分配给第一预设线程,所述第一预设线程用于根据识别码与订单的对应关系,获取所述识别码对应的订单,对被分配的所述发票报文及所述订单进行整合,生成电子发票。
在一些实施例中,所述将所述电子发票发送给所述对应的店铺包括:
将所述电子发票存入待上传发票表;
按照第二预设时间周期,定时将所述待上传发票表中存储的所述电子发票分配给第二预设线程;
根据对应的时间片参数,为所述第二预设线程分配时间片;
所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺并在发送成功后从所述待上传发票表中删除分配的所述电子发票。
在一些实施例中,所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺包括:
所述第二预设线程使用所述对应的店铺的预设接口将分配的所述电子发票发送给所述对应的店铺。
在一些实施例中,所述发票报文还包含目标地址,所述方法还包括:
将所述电子发票及所述目标地址发送给所述对应的店铺,以便所述店铺将所述电子发票保存至所述目标地址。
在一些实施例中,所述方法还包括:
接收发票修改请求,所述请求包含发票报文及请求的目标地址;
根据识别码与订单的对应关系,获取包含的所述发票报文的所述识别码对应的订单;
对所述订单及所述发票报文进行整合,生成修改后的电子发票;
将所述修改后的电子发票及所述请求的目标地址发送给所述对应的店铺,以便所述店铺将修改后的电子发票替换所述请求的目标地址对应的发票。
在一些实施例中,所述接收发票报文并保存在数据表中包括:
接收发票报文,并对所述发票报文按照预设的校验方法进行报文校验;
当校验通过时,将所述发票报文保存在数据表中。
第二方面,本申请提供了一种电子发票的生成装置,所述装置包括:
接收模块,用于接收发票报文并保存在数据表中,所述发票报文包含用于识别订单的识别码及对应的店铺;
读取模块,用于从所述数据表提取发票报文;
处理模块,用于根据识别码与订单的对应关系,获取所述识别码对应的订单,对提取的所述发票报文及所述订单进行整合,生成电子发票;
发送模块,用于将所述电子发票发送给所述对应的店铺。
在一些实施例中,,所述处理模块还可用于将所述电子发票存入待上传发票表,所述发送模块还可用于按照第二预设时间周期,定时将所述待上传发票表中存储的所述电子发票分配给第二预设线程,根据对应的时间片参数,为所述第二预设线程分配时间片,所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺并在发送成功后从所述待上传发票表中删除分配的所述电子发票。
第三方面,本申请提供了一种计算机系统,所述系统包括:
一个或多个处理器;
以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:
接收发票报文并保存在数据表中,所述发票报文包含用于识别订单的识别码及对应的店铺;
从所述数据表提取发票报文;
根据识别码与订单的对应关系,获取所述识别码对应的订单;
对提取的所述发票报文及所述订单进行整合,生成电子发票;
将所述电子发票发送给所述对应的店铺。
本发明实现的有益效果为:
本发明提供了一种电子发票的开具方法,包括接收发票报文并保存在数据表中,所述发票报文包含用于识别订单的识别码及对应的店铺;从所述临时表提取发票报文;根据识别码与订单的对应关系,获取所述识别码对应的订单;对提取的所述发票报文及所述订单进行整合,生成电子发票;将所述电子发票发送给所述对应的店铺,通过接收发票报文,并对发票报文及订单数据进行整合生成了电子发票,实现了对电子发票的自动开具;
本申请还提出了按照预设的分页参数,对所述临时表进行分页,获得所述临时表的分页结果,所述分页结果包含所述临时表的所有分页;按照第一预设时间周期,定时将所述分页按照预设的分配规则分配给第一预设线程,所述第一预设线程用于根据识别码与订单的对应关系,获取被分配的所述发票报文的所述识别码对应的订单,对被分配的所述发票报文及对应的所述订单进行整合,生成电子发票,通过异步调用线程进行消费的方式生成电子发票,保证了电子发票的开具效率;
本申请公开了将所述电子发票存入待上传发票表;按照第二预设时间周期,将所述待上传发票表存储的所述电子发票分配给第二预设线程;根据对应的时间片参数,为所述第二预设线程分配时间片;所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺并在发送成功后从所述待上传发票表中删除分配的所述电子发票,通过将生成的电子发票存入待上传发票表,并异步调用对应的线程将电子发票发送至对应的店铺,保证了电子发票的传输安全及传输效率。
本发明所有产品并不需要具备上述所有效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的开票系统架构图;
图2是本申请实施例提供的电子发票查询列表示意图;
图3是本申请实施例提供的方法流程图;
图4是本申请实施例提供的装置结构图;
图5是本申请实施例提供的计算机系统结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
为实现对电子发票的自动开具,如图1所示,本申请预先搭建了一个开票系统,包括店铺、第三方开票平台及内部平台,内部平台中还包含了接口系统、订单系统及发票中心。当消费者在店铺下单后,店铺会将该订单对应的金额、发票下载地址、发票识别码等数据发送给第三方开票平台,由第三方开票平台根据这些数据生成发票报文并发送给内部平台中的发票中心,由发票中心将发票报文转发给订单系统,订单系统对其进行报文校验,并在通过后存入发票临时表中。订单系统定时启动多线程消费发票临时表中存储的发票报文,调用接口系统中该报文对应店铺的预设接口获取该发票报文对应的订单数据并进行整合,生成电子发票并存入待上传发票表中,并定时多线程调用接口系统中发票的上传接口,将电子发票发送至对应的店铺,实现了电子发票的自动生成并发送至对应店铺。
实施例一
具体的,上述方案具体可通过如下步骤实现:
步骤一、用户下单,店铺生成订单并将开票数据发送至第三方开票平台;
所述开票数据包含了发票的金额、用于识别订单的识别码及该发票的目标下载地址等数据,由第三方开票平台根据这些数据生成发票报文并发送至发票中心;
步骤二、发票中心将接收的发票报文下发给订单系统,订单系统按照预设的报文校验方法对其进行报文校验;
步骤三、订单系统将报文检验通过的发票报文存入发票临时表中,并按照第一预设时间周期,定时从该表中提取发票报文进行处理,生成电子发票;
所述处理过程包括:
按照第一预设时间周期,定时对发票临时表进行分页,获得分页结果。将分页结果中包含的分页按照预设的分配参数分配给对应的第一预设线程,由第一预设线程分别调用接口,根据识别码与订单的对应关系,调用接口获得发票报文对应的订单数据,所述订单数据中包含了该订单购买的商品详情等数据;当获得对应的订单数据后,即将发票报文与对应的订单数据进行整合,生成电子发票。
同时,对于处理失败的发票报文还建立了补偿机制,当一定的预设时间内没有完成对某一发票报文的电子发票的生成时,自动调用新的线程重新进行该报文对应的电子发票的生成。
当某一发票报文成功生成了电子发票后,即将其从发票临时表中删除。
步骤四、将生成的电子发票存入待上传发票表,按照第二预设时间周期,定时启动并使用第二预设线程调用电子发票对应的店铺的预设接口进行发票上传;
具体的,所述上传过程包括:
按照第二预设时间周期,定时所述待上传发票表中存储的电子发票分配给第二预设线程;根据对应的时间片参数,为所述第二预设线程分配时间片;所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺并在发送成功后从所述待上传发票表中删除分配的所述电子发票。
当出现待上传发票表中的电子发票数量超过预设阈值等情况时,可对时间片参数进行动态调整,防止电子发票等待上传的时间过长。
对于上传失败的电子发票,可对其进行自动导出,方便业务人员对其进行检查及修改以实现电子发票的重新上传。
步骤五、店铺接收电子发票,并保存至对应的目标下载地址,供用户下载或查看。
当订单发生了退货退款等操作时,所述方案还包括:
步骤六、店铺将失效订单发送至发票中心,发票中心将对应的发票报文转发至订单系统;
步骤七、订单系统重新通过接口获得该失效订单对应的订单数据,并根据订单数据及失效订单重新整合生成红字发票;
步骤八、将所述红字发票存入待上传发票表,等待第二预设线程调用对应的店铺的预设接口进行发票上传。
图2示出了电子发票的查询列表示意图,用户可方便地在线查看或下载对应的电子发票,改善了用户的使用体验。
实施例二
对应上述实施例,本申请提供了一种电子发票的开具方法,如图3所示,所述方法包括:
310、接收发票报文并保存在数据表中,所述发票报文包含用于识别订单的识别码及对应的店铺;
优选的,所述接收发票报文并保存在数据表中包括:
311、接收发票报文,并对所述发票报文按照预设的校验方法进行报文校验;
当校验通过时,将所述发票报文保存在数据表中。
320、从所述数据表提取发票报文;
优选的,所述从所述数据表提取发票报文包括:
321、按照预设的分页参数,对所述数据表进行分页,获得所述数据表的分页结果,所述分页结果包含所述数据表的所有分页;
按照第一预设时间周期,定时将所述分页按照预设的分配规则分配给第一预设线程,所述第一预设线程用于根据识别码与订单的对应关系,获取被分配的所述发票报文的所述识别码对应的订单,对被分配的所述发票报文及所述订单进行整合,生成电子发票。
330、根据识别码与订单的对应关系,获取所述识别码对应的订单;
340、对提取的所述发票报文及所述订单进行整合,生成电子发票;
优选的,生成电子发票后,所述方法还包括:
341、将所述电子发票存入待上传发票表;
按照第二预设时间周期,定时将所述待上传发票表中存储的所述电子发票分配给第二预设线程;
根据对应的时间片参数,为所述第二预设线程分配时间片;
所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺并在发送成功后从所述待上传发票表中删除分配的所述电子发票。
优选的,所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺包括:
342、所述第二预设线程使用所述对应的店铺的预设接口将分配的所述电子发票发送给所述对应的店铺。
350、将所述电子发票发送给所述对应的店铺。
优选的,所述发票报文还包含目标地址,所述方法还包括:
351、将所述电子发票及所述目标地址发送给所述对应的店铺,以便所述店铺将所述电子发票保存至所述目标地址。
优选的,所述方法还包括:
352、接收发票修改请求,所述请求包含发票报文及请求的目标地址;
根据识别码与订单的对应关系,获取包含的所述发票报文的所述识别码对应的订单;
对所述订单及所述发票报文进行整合,生成修改后的电子发票;
将所述修改后的电子发票及所述请求的目标地址发送给所述对应的店铺,以便所述店铺将修改后的电子发票替换所述请求的目标地址对应的发票。
实施例三
对应上述方法实施例,本申请提供了一种电子发票的开具装置,如图4所示,所述装置包括:
接收模块410,用于接收发票报文并保存在数据表中,所述发票报文包含用于识别订单的识别码及对应的店铺;
读取模块420,用于从所述数据表提取发票报文;
处理模块430,用于根据识别码与订单的对应关系,获取所述识别码对应的订单,对提取的所述发票报文及所述订单进行整合,生成电子发票;
发送模块440,用于将所述电子发票发送给所述对应的店铺。
优选的,所述处理模块430还可用于将所述电子发票存入待上传发票表,所述发送模块440还可用于按照第二预设时间周期,定时将所述待上传发票表中存储的所述电子发票分配给第二预设线程,根据对应的时间片参数,为所述第二预设线程分配时间片,所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺并在发送成功后从所述待上传发票表中删除分配的所述电子发票。
优选的,所述读取模块420还可用于按照预设的分页参数,对所述数据表进行分页,获得所述数据表的分页结果,所述分页结果包含所述数据表的所有分页;所述处理模块430还可用于按照第一预设时间周期,定时将所述分页按照预设的分配规则分配给第一预设线程,所述第一预设线程用于根据识别码与订单的对应关系,获取被分配的所述发票报文的所述识别码对应的订单,对被分配的所述发票报文及所述订单进行整合,生成电子发票。
优选的,所述发送模块440还可用于将所述电子发票存入待上传发票表,按照第二预设时间周期,定时将所述待上传发票表中存储的所述电子发票分配给第二预设线程,根据对应的时间片参数,为所述第二预设线程分配时间片,所述第二预设线程在分配的所述时间片内将分配的所述电子发票发送给所述对应的店铺并在发送成功后从所述待上传发票表中删除分配的所述电子发票。
优选的,所述发送模块440还可用于使用所述第二预设线程将所述对应的店铺的预设接口将分配的所述电子发票发送给所述对应的店铺。
优选的,所述发票报文还包含目标地址,所述所述发送模块440还可用于将所述电子发票及所述目标地址发送给所述对应的店铺,以便所述店铺将所述电子发票保存至所述目标地址。
优选的,所述接收模块410还可用于接收发票修改请求,所述请求包含发票报文及请求的目标地址;
所述处理模块430还可用于根据识别码与订单的对应关系,获取包含的所述发票报文的所述识别码对应的订单;对所述订单及所述发票报文进行整合,生成修改后的电子发票;
所述发送模块440还可用于将所述修改后的电子发票及所述请求的目标地址发送给所述对应的店铺,以便所述店铺将修改后的电子发票替换所述请求的目标地址对应的发票。
优选的,所述接收模块410还可用于接收发票报文,并对所述发票报文按照预设的校验方法进行报文校验;当校验通过时,将所述发票报文保存在数据表中。
实施例四
对应上述方法、设备及系统,本申请实施例四提供一种计算机系统,包括:一个或多个处理器;以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:
接收发票报文并保存在数据表中,所述发票报文包含用于识别订单的识别码及对应的店铺;
从所述数据表提取发票报文;
根据识别码与订单的对应关系,获取所述识别码对应的订单;
对提取的所述发票报文及所述订单进行整合,生成电子发票;
将所述电子发票发送给所述对应的店铺。
其中,图5示例性的展示出了计算机系统的架构,具体可以包括处理器1510,视频显示适配器1511,磁盘驱动器1512,输入/输出接口1513,网络接口1514,以及存储器1520。上述处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520之间可以通过通信总线1530进行通信连接。
其中,处理器1510可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。
存储器1520可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1520可以存储用于控制计算机系统1500运行的操作系统1521,用于控制计算机系统1500的低级别操作的基本输入输出系统(bios)。另外,还可以存储网页浏览器1523,数据存储管理系统1524,以及图标字体处理系统1525等等。上述图标字体处理系统1525就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码保存在存储器1520中,并由处理器1510来调用执行。输入/输出接口1513用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
网络接口1514用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
总线1530包括一通路,在设备的各个组件(例如处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520)之间传输信息。
另外,该计算机系统1500还可以从虚拟资源对象领取条件信息数据库1541中获得具体领取条件的信息,以用于进行条件判断,等等。
需要说明的是,尽管上述设备仅示出了处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,存储器1520,总线1530等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,云服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。