因为运输公司过路费电子发票的认证问题太过繁琐,所以想用程序来解决其中大部分的步骤,于是就想出来了这个破方法。
先把电子发票区分开
因为发票的二维码的扫描出来的内容有限,所以需要先把不征税的发票和可以抵扣的发票区分开,这个只能由人工分捡,程序实现太过复杂,还需要用扫描仪识别税额是否是*
,暂时用不了这样的功能,所以先用人工区分。
用手机扫描电子发票二维码
电子发票二维码扫描出来的只有其中的几个字段有意义:
- 第三位是发票代码;
- 第四位是发票号码;
- 第五位是不含税的金额;
- 第六位是开票日期。
这些字段以,
分割,所以扫描后可以将以上字段存储进数据库。
因为以前没有接触过java
和安卓编程
,所以入门都用了很长的时间。
参考ZXingLite的连续扫码功能,最终实现了很简陋的连续扫发票。
主要修改了MainActivity.java
和CustomCaptureActivity.java
涉及的部分功能,比如扫码时异步POST得到该发票是否重复(因为特殊原因,很有必要有这个功能);扫码后异步POST结果存储到数据库。
1 | ... |
关于Java和安卓程序,需要学习的东西还太多,因为暂时用这些就足够,所以先凑合着。
后台处理程序
当时本来是要用Python实现后台接口,但是Python也是不熟练,再加上时间紧迫,还是用比较顺手的PHP吧
PHP没啥要说的,虽然我离了搜索引擎写不成代码,但是也不影响很迅速的就实现了基本的功能。
当然数据库还是使用的Mysql。
不过,对于代码还是没有系统的学习过,粗糙是肯定的。
第三方页面用油猴脚本实现读取
本来本省的发票勾选认证是不能用Chrome浏览器打开的,但是最近一次的更新,发现金税盘开始支持使用Chrome了。
于是浏览器的扩展程序可以大展身手了。
基本思路是:
- 先在第三方页面添加按钮等DOM元素;
- 然后点击链接或按钮后得到服务器数据库中,手机扫码存入的电子发票;
- 将第三方页面显示的电子发票与前一步得到的发票比较,如果有则勾选;
- 显示已勾选和未勾选数量。
油猴有个功能不是很理解,就是那个类似Ajax
的GM_xmlhttpRequest
,本来是想用原生的Ajax
的,结果在油猴里,不管怎么改,远程获取的方法一直是GET
不是POST
,网上查到可以使用油猴御用的POST
方法,试验了一下还挺不错。
1 | var getInvoice = function (com, sjq, sjz){ |
不知道是我没看到还是怎样,在调试状态,也不能在浏览器中看到油猴连接服务器获取数据的记录。
关于前端的代码我自然也还是一知半解,所以程序运行过程中,可能还有多少的BUG没有发现。
统计不抵扣发票
对于不抵扣发票计算,以前的做法是一张一张的用计算器加。
既然现在可以扫码了,那么统计不抵扣发票应该也是小菜一碟。
于是在服务器中,使用Layui前端框架,将服务器数据库里面的指定发票显示出来,一一计算。
多年不见的layui,功能越来越多了,捡几个用的到的先使使。
这些功能还在完善。
理论上来说,电子发票扫码的结果中不能区分是否是不征税,所以计算时,只能将征税和不征税的发票分开计算。
这是一个绕不过去的坎。
还有税控盘
可能是本次发票系统更新的不彻底,税控盘还是不能在Chrome浏览器中使用,于是目前这还是一个大难题。
难道还要使用C#写一个桌面程序?
暂且放在一边。
好久好久
好久好久没有更新了。
太多太多的事儿,不像以前那样无所事事。