VBA随学随用系列:进口关税电子发票管理工具 - 总纲

前言

VBA是微软office系列软件内置的,自带输入输出的界面(想像一下Excel表), 所以用于解决日常工作中的问题就非常顺手。而且VBA语法简单,容易上手。只要有一点点基本编程知识就够了,可以边学边用。本文从一个具体的案列开始,讲解VBA的功能。因为相对复杂,所以拆解成若干篇。
本系列的目标读者是工作中的Power User, 他(她) 只需要具有少量编程概念,甚至没有也行。

背景介绍

在2018年之前,海关进口报关后取得的关税发票都是纸质的。因为公司进口业务量较大,所以有专门的团队处理进口关税发票。基本流程是先收集并核对纸质发票,在Excel文件里录入发票号及金额等信息,然后分类(有几个不同的公司抬头,而且要区分几种不同的进口类别),然后统计汇总金额后做成交接单交财务入账。财务做好账后需要将发票交给税务处理增值税抵扣事宜。
2018年开始,对于进口关税,海关不再提供纸质发票。进出口团队需要到海关网站上去下载电子发票。

问题:

初期进出口团队仍沿用过去的流程,将下载的电子发票(pdf文件)打印出来,整理汇总。但是很快就遇到了一些实际问题:

  • 发票经常被重复打印并统计。
    因为从海关网站下载发票时,为确保不遗漏,都会将起始时间放宽一些,这样发票自然会有一部分的重复。另外在打印发票的过程中,因为数量较多,难免会失误重打。
  • 打印发票工作量巨大,人手不足。

所以进出口团队提出,希望能够做个小工具,自动打印发票并确保不重复打印。

需求分析:

收到需求后,召集相关部门(进出口团队、记账团队、税务团队) 讨论后,确认了以下事实:

  • 其实记账团队并不需要发票本身。记账团队更看重交接单,因为记账团队所需要的信息都已经在交接单上(发票数量、分类及金额)。对于原来的正式纸质发票,记账团队需要装订成册保管,但是对于电子发票,已经没有这个需求了。
  • 税务团队也不需要发票本身,因为在金税系统官网上,只需要输出发票号就可以认证了。之前只所以需要发票,是因为进出口团队提供的发票清单中缺少几位字符,需要翻查纸质发票取得完整号码。而且此项工作也非常耗费精力。
    鉴于这些发现,与进出口团队协商后,修改项目的目标为:实现海关进口关税电子发票的无纸化管理。初步设想方案为:
  1. 从进出口团队下载的电子发票文件中,提取相关信息,存入后台数据库。
  2. 根据提取的发票信息,自动分类统计,生成与财务的交接单。
  3. 进出口团队打印交接单,签字后与财务交接。
  4. 财务收到交接单后,确认入账。
  5. 税务在收到入账确认信息后,根据入账的月份,在税务网站认证发票。

在后续进一步了解操作细节中得知两个有趣的事情:

  • 实际上从海关网站下载的电子发票,除了有pdf文件外,还有一个xml文件。查询海关文档后得知,这个文件是xbrl标准,实际上包含了电子发票的所有信息。所以并不需要从pdf文件中提取信息,从xml文件中提取就够了。难度登时降低很多。
  • 金税网站上,有一个导入功能,可以批量导入发票。只是导入的文件有两个,其中一个文件内容是校验码。只要搞明白检验码的生成规律,那么就可以直接生成上传文件,而不再需要税务手工输入。

到此,需求已经非常明确,可以着手开发。

解决方案:

考虑到公司当时计划切换ERP系统,所以决定用VBA做成一个临时性工具。前台用Excel,后台用Access数据库(放在一个有访问权限控制的共享盘目录下)。大体上框架如下:

  • 进出口团队工具
    • 信息提取(批量文件解压、解析、去除重复)
    • 信息修正及确认
    • 信息上传(含电子发票pdf文件归档)
    • 生成交接单
    • 经手发票查询
    • 进口固定资产类发票甄别(后来追加的功能)
  • 记账团队工具
    • 待入账发票查询
    • 入账确认
    • 已入账发票查询
    • 发票归档核查
  • 税务团队工具
    • 待认证发票查询
    • 生成用于发票认证的xml文件
    • 已生成认证文件的发票查询
  • 管理员工具
    • 用户权限管理
    • 工具版本管理
    • 公司代码管理
    • 异常业务数据修正

因为这4部分相对独立,为了方便开发及用户使用,各自成为独立的工具。

涉及的技术问题

工具开发涉及以下技术,会各自独立成篇:

  • 用VBA操纵目录、文件文章链接
  • 用VBA查询压缩软件安装位置 文章链接
  • 用VBA实现批量解压缩 文章链接
  • 用VBA解析xml文件(字符串提取)
  • 用VBA对Excel表格进行排序、筛选
  • 用VBA操纵后台数据库 文章链接
  • 用VBA+Excel实现用户权限及工具版本管理
  • 待续

结语

对于日常工作中的小项目,技术其实并不是最主要的问题,问题剖析反而更关键。做为用户,很多情况下只在意自己经手的那一小部分,缺乏全局观。如果不从更高的角度看待问题,往往会做无用功。以这个项目为例,如果依照用户的原始需求去开发一个工具,可以预见其生命必然短暂,用户很快就会提出新的问题,陷入恶性循环。
做为Power User, 需要即从流程的角度看问题,也从技术的角度看问题,将二者结合起来。这样比纯IT开发的工具更易使用,更有生命力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值