发票二维码解析

1. 简介

1.1 案例简介

发票二维码解析插件专为企业财税场景设计,一键扫描发票左上角二维码,精准解析发票代码、发票号码、开票日期、价税合计等关键字段,彻底告别手工录入错漏烦恼,助力报销审核、进项税认证、电子归档等场景的管理效率,让发票数据从纸面到系统全程零误差流转,筑牢企业财税合规的数字防线。

1.2 业务背景

小微企业财务报销场景中,财务人员需要提炼发票的部分关键信息,并进行发票复核做账。然而传统发票管理中存在以下核心痛点:

  • 人工低效录入,拖慢业务流转;
  • 信息错漏频发,合规风险暗藏;
  • 系统割裂孤立,企业管控成本高;
  • 技术赋能缺位,人力瓶颈难以突破。

1.3 设计思路

1)新建「扫码采集发票」表单,用于扫描并录入用户提供的发票二维码;

2)开发自建插件「发票二维码解析」,用于识别并解析二维码。具体包括:

  • 设置请求参数「发票二维码」,确保能够获取到用户提供的发票二维码;
  • 设置返回参数,将通过代码识别并解析出的发票信息返回给用户;
  • 进行代码设计,识别并解析用户提供的发票信息。

3)在表单中设置前端事件/智能助手/流程节点,调用自建插件「发票二维码解析」,从而实现将解析出的发票信息回写在表单中的效果。

1.4 预期效果

利用「发票二维码解析」插件,财务人员只需扫描发票左上角的二维码,即可提取关键字段并回填相关信息。能够快速的、准确的批量采集发票信息,核对金额。效果如下所示:

2. 表单搭建

在学习之前建议安装 发票二维码解析应用模板,本文将按照模板中的示例数据进行讲解。

新建「扫码采集发票」表单,所需字段及字段设置如下:

字段名称

字段类型

字段设置

请扫描或输入发票二维码内容

单行文本

在「字段属性 >> 扫码」处勾选扫码输入

是否识别发票信息

按钮

——

发票代码

单行文本

发票号码

开票日期

发票金额

校验码后六位

3. 自建插件设计

3.1 新建自建插件

在「开放平台 >> 开发者后台 >> 自建插件」处,点击「新建插件」,并在「插件设计」页面中修改自建插件的名字为「发票二维码解析」。

3.2 前端解析发票二维码

1)新增前端函数

点击左下角的「新增函数」,选择「前端扩展」,并修改函数名称为「前端解析发票二维码」。

2)设计请求参数

点击「请求参数」,在页面中添加并设置字段控件,如下所示:

字段名称

字段类型

字段设置

发票二维码

单行文本

在右侧字段信息处,修改 ID 为 invoice_qrcode

3)设计返回参数

点击「返回参数」,添加 5 个返回参数,并进行如下设置:

  • 发票代码:设置 ID 为「invoice_code」,类型为「any」;
  • 发票号:设置 ID 为「invoice_number」,类型为「any」;
  • 发票代码:设置 ID 为「invoice_date」,类型为「any」;
  • 发票代码:设置 ID 为「invoice_amount」,类型为「any」;
  • 发票代码:设置 ID 为「invoice_check_code」,类型为「any」;

4)编辑代码

请求参数和返回参数都设计完成后,点击「代码」进入代码编辑页面。代码示例如下所示:

const invoice_qrcode = triggerConf['invoice_qrcode']
if(!invoice_qrcode){
    return { invoice_code: '发票二维码内容不能为空' }
}
const invoice_qrcode_array = invoice_qrcode.replaceAll(',',',').split(',')
if (invoice_qrcode_array.length > 7) {
    return { invoice_code: invoice_qrcode_array[2], invoice_number: invoice_qrcode_array[3], invoice_date: invoice_qrcode_array[5], invoice_amount: invoice_qrcode_array[4], invoice_check_code: invoice_qrcode_array[6] ? invoice_qrcode_array[6].slice(-6):'' }
}

return { invoice_code: '发票二维码格式不正确'}

3.3 后端解析发票二维码

设置后端解析发票二维码时,仅需在左下角新增函数为「后端函数 >> Node.js 20」,请求参数和返回参数的设置与「前端解析发票二维码」函数一致,故本节仅说明「后端解析发票二维码」中代码的编辑。

请求参数和返回参数都设计完成后,点击「代码」进入代码编辑页面。代码示例如下所示:

//let invoice_qrcode = _.get(triggerConf, ['invoice_qrcode']);
let invoice_qrcode = triggerConf['invoice_qrcode']
if(!invoice_qrcode){
    throw new Error('发票二维码内容不能为空');
}
const invoice_qrcode_array = invoice_qrcode.replaceAll(',',',').split(',')
if (invoice_qrcode_array.length > 7) {
    return { invoice_code: invoice_qrcode_array[2], invoice_number: invoice_qrcode_array[3], invoice_date: invoice_qrcode_array[5], invoice_amount: invoice_qrcode_array[4], invoice_check_code: invoice_qrcode_array[6] ? invoice_qrcode_array[6].slice(-6):'' }
}

throw new Error('发票二维码格式不正确');

3.4 保存并启用

参数和代码都设计完成后,点击右上角的「保存」按钮,并返回至「自建插件」页面中,打开「发票二维码解析」右侧开关,即可启用插件。

4. 调用插件

4.1 添加按钮执行动作

进入「扫码采集发票」表单中,点击「是否开始计算」按钮,在「字段属性 >> 执行动作」处点击「设置」,添加一个前端事件。

4.2 设置前端事件和说明

添加好前端事件后,首先设置前端事件的基础信息,即事件名称和事件说明,用于区分前端事件。设置完成后,点击「下一步」。

4.3 设置执行动作

设置执行动作如下:

  • 选择插件:选择「发票二维码解析 >> 前端解析发票二维码」插件;
  • 字段值:设置为「字段值」,即「请扫描或输入发票二维码内容」字段;
  • 字段存储关系:点击添加按钮,进行如下设置:
    • 将「发票代码」的值存储到「发票代码」中;
    • 将「发票号」的值存储到「发票号」中;
    • 将「开票日期」的值存储到「开票日期」中;
    • 将「发票金额」的值存储到「发票金额」中;
    • 将「校验码后六位」的值存储到「校验码后六位」中。

全部设置完成后,点击「保存」按钮。

4.4 效果演示

效果参见本文【1.3 预期效果】。

5. 共创伙伴

由衷感谢个人共创伙伴伍一为简道云平台贡献的自建插件案例!以低代码+轻量级的创新模式,精准击破手工录入效率低等问题,为小微企业财税管理赋新能。期待未来持续共建企业服务新生态!

立即探索自建插件,解锁属于您的数字化创新力!

文档内容是否对您有帮助?
有帮助
没帮助没帮助
如需获取即时帮助,请联系技术支持
咨询
扫码领取100+零代码资料简道云官方微信号400-111-0890
图标在线咨询
立即体验