一种基于多金税盘的开票方法与流程

文档序号:11678770阅读:466来源:国知局
一种基于多金税盘的开票方法与流程

本发明涉及开票领域,尤其涉及一种基于多金税盘的开票方法。



背景技术:

目前,为了进行税务发票管理,企业开票、打印发票、抄税等操作都是通过使用开票专用设备金税盘实现的。企业通常只需使用单个金税盘设备进行开票,但是有些特殊单位如税务代理机构,需要使用多个金税盘进行开票。虽然开票软件支持同时连接多个金税盘进行开票,但开票软件作为一款面向大众企业的通用软件,往往无法适应一些特定场景下的开票需求。比如,在原有开票软件基础之上,基于开票组件接口二次开发的软件也应运而生。但是,开票组件接口在调用过程中,存在弊端,即在同一个进程中,一旦对一个金税盘进行开盘、开票等一系列操作后,再对另一个金税盘进行操作时,就会出错,无法进行开票等相关操作。



技术实现要素:

鉴于上述问题,提出了本发明,以便提供一种克服上述问题或至少部分地解决上述问题的一种基于多金税盘的开票方法,以便解决同时连接多个金税盘开票的问题。

本发明提供了一种基于多金税盘的开票方法,所述方法包括金税盘进程与主进程,所述主进程始终是发出一项操作请求后,等待所述金税盘进程的返回信息;

所述金税盘进程循环监听所述主进程发来的操作请求,操作完成后,回传返回信息。

进一步的,所述金税盘进程中封装了所有与金税盘交互的操作,所述主进程可以与多个所述金税盘进程进行通信,从而实现对多个金税盘的操作。

进一步的,在使用金税盘开票等操作过程中,所述主进程和多个金税盘进程均无需关闭,直到完成所有操作。

进一步的,所述金税盘进程是一个控制台程序,包含输入、输出和错误输出三条管道。为了使调用所述金税盘进程的主进程可以与所述金税盘进程进行通信,通过进程调用的方法,对输入、输出两条管道进行了重定向,所述主进程只需向输入管道发送操作指令或必要信息,然后等待从所述金税盘进程输出管道返回的数据,即可实现两个进程间的通信。

进一步的,每个金税盘需要单独使用一个金税盘进程。在首次执行金税盘操作时,需创建金税盘进程,使用之后可保留进程,以便下次金税盘操作时直接使用,更快地完成开票操作。

进一步的,所述金税盘进程具体包括:

创建金税盘进程后,首先执行一些初始化操作,即首先判断新盘是否传递证书口令,如果是,则继续判断开启金税盘是否成功;如果否,则回传错误代码或错误信息,结束金税盘进程;如果金税盘开启成功,则回传返回码,否则回传错误代码或错误信息,结束金税盘进程;

经过初始化操作后,所述金税盘进程开始监听主进程从输入管道传来的操作指令,根据不同的操作指令执行不同的操作。

进一步的,当所述金税盘进程接收到“读取税号”指令、“检查开票状态”指令、“关闭进程”指令时,可以直接开始相应的操作,操作完成后,不论成功与否都要通过输出管道将操作结果传回主进程;当所述金税盘进程接收到“开票”指令或“打印”指令时,需要再次监听主进程传来的必要信息,以便完成后续操作。

进一步的,所述金税盘进程收到“开票”指令后,接收所述主进程封装的开票信息json字符串后,需要按约定格式进行解析,才能进行后续的开票操作;开票成功后,通过输出管道返回发票代码、发票号码、开票日期等信息;如果开票没成功,则回传错误码或错误信息。

进一步的,所述主进程开始后,先复制注册表项获取开票路径,之后判断进程容器中是否已存在此进程,如果是,则从进程容器获取进程;如果否,显示窗体,提示用户输入税号、开票机号、证书口令,之后注册动态链接库,创建金税盘进程传递证书口令,判断接收开盘返回码是否成功,如果是,则发送操作指令,如果否,则输出错误信息;

所述主进程发送操作指令后,判断是否接收到金税盘进程回传的指令操作结果,如果收到,则添加进程到进程容器,否则输出错误信息,结束主进程。

进一步的,所述操作指令包括“读取税号”指令、“检查开票状态”指令、“开票”指令、“打印”指令和“关闭进程”指令。

本发明引入了金税盘进程,利用此方法可以进行其它开票软件的二次开发,解决了使用开票组件接口无法实现多金税盘开票的问题,改善了开票组件接口应用的局限性,扩大了软件的适用范围。金税盘进程具有很强的封装性、可复用性、可扩展性等优点。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的一种基于多金税盘的开票方法的金税盘进程操作流程示意图。

图2为发明实施例的一种基于多金税盘的开票方法的主进程操作流程示意图。

具体实施方式

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例作进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。

一种基于多金税盘的开票方法,包括金税盘进程与主进程,其中:

金税盘进程中封装了所有与金税盘交互的操作,包括开票、打印发票等。主进程可以与多个金税盘进程进行通信,从而实现对多个金税盘的操作。主进程始终是发出一项操作请求后,等待金税盘进程的返回信息,金税盘进程循环监听主进程发来的操作请求,操作完成后,回传返回信息。在使用金税盘开票等操作过程中,主进程和多个金税盘进程均无需关闭,直到完成所有操作。

本发明使用的金税盘进程是一个控制台程序,控制台程序包含输入、输出、错误输出三条管道。为了使调用金税盘进程的主进程可以与金税盘进程进行通信,通过进程调用的方法,对输入、输出两条管道进行了重定向。这样主进程只需向输入管道发送操作指令或必要信息,然后等待从金税盘进程输出管道返回的数据,即可实现两个进程间的通信。

每个金税盘需要单独使用一个金税盘进程。在首次执行金税盘操作时,需创建金税盘进程,使用之后可保留进程,以便下次金税盘操作时直接使用,更快地完成开票操作。

具体的,如图1所示,创建金税盘进程后,首先执行一些初始化操作,即首先判断新盘是否传递证书口令,如果是,则继续判断开启金税盘是否成功;如果否,则回传错误代码或错误信息,结束金税盘进程;如果金税盘开启成功,则回传返回码,否则回传错误代码或错误信息,结束金税盘进程。

经过初始化操作后,金税盘进程开始监听主进程从输入管道传来的操作指令,操作指令包括“读取税号”指令、“检查开票状态”指令、“开票”指令、“打印”指令和“关闭进程”指令,根据不同的操作指令执行不同的操作。

其中,当金税盘进程接收到“读取税号”指令、“检查开票状态”指令、“关闭进程”指令时,可以直接开始相应的操作。操作完成后,不论成功与否都要通过输出管道将操作结果传回主进程。比如,当判断收到“读取税号”指令时,则回传税号;当判断收到“检查开票状态”指令时,则判断金税盘是否可开票,如果是,则回传成功标识,如果否,则回传错误码或错误信息;当判断收到“关闭进程”指令时,则关闭金税盘,结束金税盘进程,否则,返回金税盘进程继续监听。

当金税盘进程接收到“开票”指令或“打印”指令时,需要再次监听主进程传来的必要信息,以便完成后续操作。对于收到“打印”指令时,只需接收待打印发票的发票代码和发票号码,如果打印成功,则回传返回码,如果打印没成功,则回传错误码或错误信息。对于收到“开票”指令,由于所需的必要信息较多,包括购销方企业税号、企业名称、发票明细、合计金额、合计税额等,为了方便通信,将发票信息封装成json(javascriptobjectnotation,是一种轻量级的数据交换格式)字符串后,再将字符串进行传输。与此同时,金税盘进程接收到开票信息json字符串后,需要按约定格式进行解析,才能进行后续的开票操作。开票成功后,通过输出管道返回发票代码、发票号码、开票日期等信息;如果开票没成功,则回传错误码或错误信息。

如图2所示,是本发明主进程的流程图,主进程开始后,先复制注册表项获取开票路径,之后判断进程容器中是否已存在此进程,如果是,则从进程容器获取进程;如果否,显示窗体,提示用户输入税号、开票机号、证书口令,之后注册动态链接库,创建金税盘进程传递证书口令,判断接收开盘返回码是否成功,如果是,则发送操作指令,操作指令包括“读取税号”指令、“检查开票状态”指令、“开票”指令、“打印”指令和“关闭进程”指令;如果否,则输出错误信息。发送操作指令后,判断是否接收到金税盘进程回传的指令操作结果,如果收到,则添加进程到进程容器,否则输出错误信息,结束主进程。图2中示例性的发送的是“读取税号”指令,因此,如果收到回传的正确税号,则将其添加到进程容器,否则输出错误信息。

本发明中,主进程始终是发送一项操作请求后等待金税盘进程的返回信息,金税盘进程循环监听主进程发来的操作请求,完成操作后,回传返回信息。主进程和多个金税盘进程均无需关闭,能够周而复始地完成与金税盘交互的相关操作。利用此方法可以进行其它开票软件的二次开发,满足同时连接多个金税盘进行开票的业务需要。

本发明引入了金税盘进程,封装了所有与金税盘交互的操作,主进程可以与多个金税盘进程进行通信,实现了使用开票组件接口,在同一台计算机上同时连接多个金税盘进行开票的功能,解决了之前使用开票组件接口无法实现的多金税盘开票问题,改善了开票组件接口应用的局限性,扩大了软件的适用范围。金税盘进程封装性强,易于维护;同时,可供其它软件调用,降低二次开发成本,可复用性强;另外,更新金税盘进程时,也不影响外界现有程序的调用,可扩展性强。

根据上述实施例,可知本发明具有下述优点

1.使用金税盘进程方法,主进程与多个金税盘进程进行通信,实现了同时连接多个金税盘进行开票等操作,改善了开票组件接口应用的局限性,扩大了软件的适用范围。

2.与金税盘交互的相关操作全部封装在金税盘进程中,外界调用时无需操作金税盘,只需按照约定格式与金税盘进程通信即可,封装性强,易于维护。

3.金税盘进程,可供其它软件调用,降低了二次开发的成本,可复用性强。

4.金税盘进程中的功能未来可持续扩充完善,并且更新金税盘进程,不影响外界现有程序的调用,可扩展性强。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1