交互图

支持手动匹配待对账明细.png

与单配发票的区别

单配发票 发票配待对账明细
首先做准入性校验 不需要做准入性校验(发票采集已做)
优先后端自动匹配 用户选择明细匹配,提交校验
发票:单据明细 = 1:1 发票:单据明细 = n:n

整体设计

组件设计

精确匹配入口交互.png

对应的组件结构图
发票匹配待对账明细组件结构图.png

流程设计

发票匹配2.0技术设计 的流程中的手动匹配一致(去掉容差部分),区别在于容差非前端计算

数据结构设计

原数据结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 单张发票对象 
{   
invoiceItems: [{     
// 单张发票匹配的单据     
sourceItems: [{           
invoiceAmount: ,         
  invoicedQuantity: , // 数量         
  totalAmountIncludedTax: , // 含税金额         
  totalAmountExcludedTax: , // 未税金额           
totalTax: ,// 税额           
...     
}], 
],
// 发票明细     
status,
// 发票验真状态     
errorCode, // 准入性校验结果     
matchStatus,
// 匹配结果     
matchResult, // 容差匹配结果      
matchOffset, // 模糊匹配后端返回容量     
leftCapacity: {  // 人工介入的剩余容量         
alert, // 是否需要人工介入         
... // 剩下的就是容量字段     
},
}]}

// 全局数据管理
referenceType: 匹配模式
globalInvoice: 匹配的发票列表
globalSourceItems: 全局的单据
globalMatchedSourceItems: 全局匹配的单据
globalUnMatchedSourceItems: 全局未匹配的单据
globalMatchedSourceItemsMap: 全局匹配的单据code与对应金额数量映射表
globalConfirmList: 全局待确认的映射表

上一个版本发票明细:单据明细为多对多,但是发票明细只能存在于同一张发票中

这个版本需要修改数据结构,改成匹配关系更为明确的方式,要支持跨发票的发票明细多对多(即发票明细:单据明细 = n:n 并且 发票:单据明细 = n:n)

数据流设计与原发票基本一致,参考 发票匹配2.0技术设计 中的数据流设计,区别在于增加了全局的globalMatchGroupList

假如是发票与单据明细匹配, 那么groupId挂在发票对象上,如果是发票明细与单据明细匹配,那么groupId挂在发票明细对象上

一条发票明细只能存在于一个匹配组,对于未验真发票来说,一张发票也只能存在一个匹配组,并且对于未验真发票来说不能单独匹配

现有数据结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 单张发票对象 
{   
invoiceItems: [{     
// 单张发票匹配的单据 
groupId, // 多对多的话针对的是匹配组
],
// 发票明细     
status,
// 发票验真状态     
errorCode, // 准入性校验结果     
matchStatus,
// 匹配结果     
matchResult, // 容差匹配结果      
matchOffset, // 模糊匹配后端返回容量     
groupId, // 未验真发票匹配的单据(未验真发票没有明细)
leftCapacity: {  // 人工介入的剩余容量         
alert, // 是否需要人工介入         
... // 剩下的就是容量字段     
},
}]}

// globalMatchGroupList
{
matchGroupList: {
1: {
invoiceItems: [],
sourceItems: [],
invoiceCode: 12121212
},
2: {
invoiceItems: [],
sourceItems: [],
invoiceCode: 12121212
}
}
}

// 全局数据管理
referenceType: 匹配模式
globalInvoice: 匹配的发票列表
globalSourceItems: 全局的单据
globalMatchedSourceItems: 全局匹配的单据
globalUnMatchedSourceItems: 全局未匹配的单据
globalMatchedSourceItemsMap: 全局匹配的单据code与对应金额数量映射表
globalConfirmList: 全局待确认的映射表
globalMatchGroupList: 全局匹配的匹配组