一种非侵入式的发票自助填开方法及装置与流程
未命名
07-12
阅读:81
评论:0

1.本发明涉及数据处理技术领域,具体涉及一种非侵入式的发票自助填开方法及装置。
背景技术:
2.随着互联网的普及,以及税务改革的推进,越来越多的人已经习惯于吃饭和购物后索要发票,随着开票量的增多,传统的由开票员手工进行开票的方式就越来越不能符合人民群众的开票需求,因此,各种扫码开票如雨后春笋般的出现。
3.扫码开票就是通过扫描二维码,录入开票信息,开票信息录入完毕后,app或者网页端将开票信息通过云端服务器转发给发票自动填开客户端,由发票填开客户端将开票信息全自动填入开票软件,完成发票的开具。
4.一般来说发票的全自动填开有三种方式,分别是类按键精灵填开、通过文本或者接口填开、通过进程注入的方式控制界面控件完成填开。下面分别说明三种填开方式的优劣。
5.类按键精灵填开是采用类似按键精灵一样的程序,事先录制一组鼠标键盘的操作,比如鼠标点击购方名称控件,然后等待几秒的键盘录入事件,录入完成后继续点击其他控件,然后等待录入,直到所有的开票信息都录入完毕,本次的录制就结束了,并且将键盘录入的部分进行编程通用化,以后如果有自动开票的请求以后就播放这段鼠标点击开票软件控件的录像,当点击购方名称控件后,将录像中的购方名称替换为自动开票请求中需要填入的真正的购方名称,然后再点击下一个控件,直到录像播放完毕,这样就完成了发票的自动填开。第二种是通过文本或者接口填开,《发票开具方法及设备》(申请号:202010213751.7)既是通过这种方法实现自动发票填开。具体原理如下,发票填开客户端通过开票软件提供的文本接口,向某个文件夹下放置一个由发票填开和开具指令组成的文本文件或者xml文件。开票软件定时扫描该文件夹,如果存在文件,就读入该文件,并根据文本中的开票指令完成发票的填写和开具;抑或是发票填开客户端通过接口的形式直接将这组开票指令发送给开票软件,然后由开票软件根据指令完成发票的填写和开具。第三种是通过将发票填开客户端通过进程注入的方式完成发票的填开,《发票生成方法、装置、存储介质及电子设备》(申请号:201811003169.7)既是通过这种方式实现发票的自动填开,具体原理如下,发票填开客户端通过进程注入的方式将自己装载到开票软件中,将自己装载到开票软件中就可以通过句柄来控制开票软件界面上的控件,然后通过开票指令向开票软件界面控件填写开票信息,并完成发票开具。
6.公知的上述自动发票填开方法或装置,如类按键精灵的发票自动填开,虽然使用简单,开发方便,但是局限性较大,只能针对特定的简单场景,灵活性不够,不适合大量推广使用。通过文本和接口进行发票自动填开的方法或者装置又需要对开票软件对外提供填开接口或者相关机制,而且需要开发人员对于接口非常熟悉,这些条件限制了这种方法和装置的大量使用。通过进程注入的方式实现的发票自动填开装置虽然无需了开票软件提供额
外的填开接口或者相关机制,而且具有较强的灵活性,具备大量使用的条件,但是这种方式是一种侵入式的方式,极有可能造成开票软件运行不稳定、崩溃,严重时甚至可能导致开票计算机的操作系统死机、崩溃等。
技术实现要素:
7.针对上述技术问题,本发明提供一种非侵入式的发票自助填开方法,包括:
8.通过控件内容接口获取开票软件的窗体;
9.将所述开票软件的主窗体作为根节点,从所述根节点开始遍历所述开票软件的所有界面控件,获取界面控件的属性信息;
10.根据所述界面控件的属性信息获取所述开票软件的购方信息;
11.接收开票请求,根据开票请求中的开票信息将购方信息,通过所述控件内容接口,将所述开票信息和购方信息自动填入对应的界面控件;通过点击接口打印发票,完成发票的自助填开。
12.进一步的,通过控件内容接口获取开票软件的窗体,具体的,通过uiautomation的控件内容接口找到开票软件的窗体。
13.进一步的,所述界面控件的属性信息,包括:
14.界面控件id、控件classname、控件类型、控件位置、控件名称。
15.进一步的,根据所述界面控件的属性信息获取所述开票软件的购方信息,包括:
16.根据所述界面控件的属性信息,找到开票软件对应的购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号。
17.进一步的,通过点击接口打印发票,完成发票的自助填开,包括:
18.通过uiautomation的点击接口点击打印按钮印发票,完成发票的自助填开。
19.本发明同时提供一种非侵入式的发票自助填开装置,包括:
20.窗体获取单元,用于通过控件内容接口获取开票软件的窗体;
21.属性信息获取单元,用于将所述开票软件的主窗体作为根节点,从所述根节点开始遍历所述开票软件的所有界面控件,获取界面控件的属性信息;
22.购方信息获取单元,用于根据所述界面控件的属性信息获取所述开票软件的购方信息;
23.自助填开单元,用于接收开票请求,根据开票请求中的开票信息将购方信息,通过所述控件内容接口,将所述开票信息和购方信息自动填入对应的界面控件;通过点击接口打印发票,完成发票的自助填开。
24.进一步的,窗体获取单元,具体的,通过uiautomation的控件内容接口找到开票软件的窗体
25.进一步的,所述界面控件的属性信息,包括:
26.界面控件id、控件classname、控件类型、控件位置、控件名称。
27.进一步的,购方信息获取单元,包括:
28.购方信息获取子单元,用于根据所述界面控件的属性信息,找到开票软件的对应的购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号。
29.进一步的,自助填开单元,包括:
30.打印子单元,用于通过uiautomation的点击接口点击打印按钮印发票,完成发票的自助填开。
31.本发明提供的一种非侵入式的发票自助填开方法及装置,将ui automation技术引入发票填开软件上,形成了一种非侵入式的发票自动填开流程,发票填开客户端与开票软件各自以独立的进程运行,互相不会影响,同时通过ui automation的方式向开票界面上的控件填写发票信息也不会受到分辨率,开票软件界面的位置等的影响,为用户提供了一种高可靠性、高可编程性、高灵活性的发票自动填开流程。
附图说明
32.图1是本发明提供的一种非侵入式的发票自助填开方法的流程示意图;
33.图2是本发明涉及的非侵入式的发票自助填开的工作流;
34.图3是本发明涉及的发票自动填开的结构框图;
35.图4是本发明提供的一种非侵入式的发票自助填开装置的结构示意图。
具体实施方式
36.在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
37.图1是本发明提供的一种非侵入式的发票自助填开方法的流程示意图,下面结合图1对本发明提供方法进行详细说明。其中,开票软件是发票填写和开具的主体,一般由开票员在开票软件相应的界面控件上填写购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号等发票要素后,点击界面上的发票打印按钮,就完成了发票填开的全部流程。发票填开客户端是指接受到服务器端的开票命令后,根据指令中的开票信息自动在开票软件的界面控件上完成购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号的填写,并控制开票软件自动完成发票打印。
38.步骤s101,通过控件内容接口获取开票软件的窗体。
39.步骤s102,将所述开票软件的主窗体作为根节点,从所述根节点开始遍历所述开票软件的所有界面控件,获取界面控件的属性信息。
40.步骤s103,根据所述界面控件的属性信息获取所述开票软件的购方信息。
41.步骤s104,接收开票请求,根据开票请求中的开票信息将购方信息,通过所述控件内容接口,将所述开票信息和购方信息自动填入对应的界面控件;通过点击接口打印发票,完成发票的自助填开。
42.本发明涉及的控件为windows平台的一个辅助框架uiautomation,主要是使windows应用程序能够提供与用户界面相关的编程信息,以及提供界面上大多数ui控件的编程访问。
43.首先启动开票软件,然后启动发票填开客户端,发票填开客户端检测到开票软件已经启动后,发票填开客户端通过uiautomation的控件内容接口找到开票软件的窗体。以开票软件的主窗体作为根节点,从所述根节点开始通过ui automation遍历所述开票软件的所有界面控件,在遍历的过程中通过ui automation的接口获取界面控件id、控件
classname、控件类型、控件位置、控件名称等。根据所述界面控件的属性信息,找到开票软件对应的购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号等控件。然后根据服务器端发送的开票请求的开票信息将购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号等信息通过ui automation的控件内容接口将上述信息填入对应的控件,最后通过uiautomation的点击接口点击打印按钮印发票,完成发票的自助填开。
44.非侵入式的发票自助填开的工作流如图2所示,首先判断开票软件是否运行,在开票软件正常运行的基础上,遍历开票软件界面的控件,获取界面控件的属性信息,以及开票软件的购方信息。在接收到开票请求后,自动填写发票信息并自动打印发票,完成发票的自助添开。发票的自助添开主要涉及开票软件和发票填开客户端,如图3所示,开票软件和发票填开客户端之间通过uiautomation接口进行交互,通过遍历模块遍历开票软件界面的控件,获取发票信息,然后由发票信息填开模块,自助添开发票信息及发票打印。
45.基于同一发明构思,本发明同时提供一种非侵入式的发票自助填开装置400,如图4所示,包括:
46.窗体获取单元410,用于通过控件内容接口获取开票软件的窗体;
47.属性信息获取单元420,用于将所述开票软件的主窗体作为根节点,从所述根节点开始遍历所述开票软件的所有界面控件,获取界面控件的属性信息;
48.购方信息获取单元430,用于根据所述界面控件的属性信息获取所述开票软件的购方信息;
49.自助填开单元440,用于接收开票请求,根据开票请求中的开票信息将购方信息,通过所述控件内容接口,将所述开票信息和购方信息自动填入对应的界面控件;通过点击接口打印发票,完成发票的自助填开。
50.进一步的,窗体获取单元,具体的,通过uiautomation的控件内容接口找到开票软件的窗体
51.进一步的,所述界面控件的属性信息,包括:
52.界面控件id、控件classname、控件类型、控件位置、控件名称。
53.进一步的,购方信息获取单元,包括:
54.购方信息获取子单元,用于根据所述界面控件的属性信息,找到开票软件的对应的购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号。
55.进一步的,自助填开单元,包括:
56.打印子单元,用于通过uiautomation的点击接口点击打印按钮印发票,完成发票的自助填开。
57.本发明提供的一种非侵入式的发票自助填开方法及装置,将ui automation技术引入发票填开软件上,形成了一种非侵入式的发票自动填开流程,发票填开客户端与开票软件各自以独立的进程运行,互相不会影响,同时通过ui automation的方式向开票界面上的控件填写发票信息也不会受到分辨率,开票软件界面的位置等的影响,为用户提供了一种高可靠性、高可编程性、高灵活性的发票自动填开流程。
58.最后应该说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修
改或者等同替,其均应涵盖在本发明的权利要求范围当中。
技术特征:
1.一种非侵入式的发票自助填开方法,其特征在于,包括:通过控件内容接口获取开票软件的窗体;将所述开票软件的主窗体作为根节点,从所述根节点开始遍历所述开票软件的所有界面控件,获取界面控件的属性信息;根据所述界面控件的属性信息获取所述开票软件的购方信息;接收开票请求,根据开票请求中的开票信息将购方信息,通过所述控件内容接口,将所述开票信息和购方信息自动填入对应的界面控件;通过点击接口打印发票,完成发票的自助填开。2.根据权利要求1所述的方法,其特征在于,通过控件内容接口获取开票软件的窗体,具体的,通过uiautomation的控件内容接口找到开票软件的窗体。3.根据权利要求1所述的方法,其特征在于,所述界面控件的属性信息,包括:界面控件id、控件classname、控件类型、控件位置、控件名称。4.根据权利要求1所述的方法,其特征在于,根据所述界面控件的属性信息获取所述开票软件的购方信息,包括:根据所述界面控件的属性信息,找到开票软件对应的购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号。5.根据权利要求1所述的方法,其特征在于,通过点击接口打印发票,完成发票的自助填开,包括:通过uiautomation的点击接口点击打印按钮印发票,完成发票的自助填开。6.一种非侵入式的发票自助填开装置,其特征在于,包括:窗体获取单元,用于通过控件内容接口获取开票软件的窗体;属性信息获取单元,用于将所述开票软件的主窗体作为根节点,从所述根节点开始遍历所述开票软件的所有界面控件,获取界面控件的属性信息;购方信息获取单元,用于根据所述界面控件的属性信息获取所述开票软件的购方信息;自助填开单元,用于接收开票请求,根据开票请求中的开票信息将购方信息,通过所述控件内容接口,将所述开票信息和购方信息自动填入对应的界面控件;通过点击接口打印发票,完成发票的自助填开。7.根据权利要求6所述的装置,其特征在于,窗体获取单元,具体的,通过uiautomation的控件内容接口找到开票软件的窗体。8.根据权利要求6所述的装置,其特征在于,所述界面控件的属性信息,包括:界面控件id、控件classname、控件类型、控件位置、控件名称。9.根据权利要求6所述的装置,其特征在于,购方信息获取单元,包括:购方信息获取子单元,用于根据所述界面控件的属性信息,找到开票软件的对应的购方名称、购方纳税人识别号、购方地址电话、购方开户行和银行账号。10.根据权利要求6所述的装置,其特征在于,自助填开单元,包括:打印子单元,用于通过uiautomation的点击接口点击打印按钮印发票,完成发票的自助填开。
技术总结
本发明公开了一种非侵入式的发票自助填开方法及装置,包括:通过控件内容接口获取开票软件的窗体;将所述开票软件的主窗体作为根节点,从所述根节点开始遍历所述开票软件的所有界面控件,获取界面控件的属性信息;根据所述界面控件的属性信息获取所述开票软件的购方信息;接收开票请求,根据开票请求中的开票信息将购方信息,通过所述控件内容接口,将所述开票信息和购方信息自动填入对应的界面控件;通过点击接口打印发票,完成发票的自助填开。解决现有技术可靠性低、灵活性低的问题。灵活性低的问题。灵活性低的问题。
技术研发人员:陈晶鑫 张学军 朱兴 吴磊 谢宇 魏贺生 单国军
受保护的技术使用者:航天信息股份有限公司
技术研发日:2022.12.27
技术公布日:2023/7/11
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:提供用于冷冻消融的与解剖结构相关的热导率数据的制作方法 下一篇:显示装置的制作方法