# 12.内置卡片[*]
# 通用卡片
# 富文本编辑器
# 功能说明
用于MarkDown格式文本编辑
# 表单
# 功能说明
用于处理单条数据
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
列数量 | 将表单纵向分割为多列 | 2 |
标题宽度 | 表单字段标题的宽度,单位为px | 120 |
标题身略号 | 标题长度过长,是否用省略号代替 | 默认关闭 |
文件批量下载 | 表单内的文件是否需要打包下载 | 默认关闭 |
# 组件库配置
# 添加字段
# 单据抬头
# 功能说明
配置单据的基本信息
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
单据默认名称EL | 通过EL表达式配置单据的默认名称,如果配置了单据名称EL ,此配置将不生效 | |
单据名称EL | 通过EL表达式配置单据名称 | (data.partner?.customer?.docName?:"未知承租人")+"-签约" |
伙伴ID EL | 通过EL表达式配置伙伴ID | data.partner?.customer?.docId |
伙伴名称EL | 通过EL表达式配置伙伴名称 | data.partner?.customer?.docName |
# 伙伴抬头
# 功能说明
配置单据的基本信息
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
显示单据编号 | 是否显示单据编号,默认关闭 | |
伙伴名称EL | 通过EL表达式配置伙伴名称 | data.partner?.customer?.docName |
# 文件模板
# 功能说明
在文件模板里配置表达式,并上传至该卡片。导出文件时,根据模板配置的表达式动态赋值
提示
文件模板需要再上传的word中配置文档域,位置:插入-文档部件-域-选择MergeField-编辑域名
域名写法示例:
直接取单据中的值:$doc.data.NkCardQuillEditor.html
通过EL方法取值:${doc.htmlArr(${$doc.data.NkCardQuillEditor.html})}
判断:#if(${contra.getOtherFlag()}) √ #else × #end
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
模板项 | 模板的唯一KEY | |
描述 | 模板的表述 | |
文件模板 | 上传的文件模板 | |
参数 | 导出文件时处理程序 需要的参数,自定义 | |
导出类型 | 导出的文件类型,pdf或者word | |
导出文件时处理程序 | 当赋值不满足业务需求时,可自定义开发处理程序来处理业务逻辑,自定义的处理程序必须继承NkAbstractFileTemplateMetadataPreprocessor.java 抽象类 |
# 文件模板导出
# 功能说明
文件模板导出卡片是文件模板的升级版,可以导出HTML数据,使用上跟文件模板略有不同
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
模板项 | 模板的唯一KEY | |
描述 | 模板的表述 | |
文件模板 | 上传的文件模板 | |
参数 | 可以自定义参数显示 | {"value":"${docName}"} |
导出类型 | 导出的文件类型,pdf或者word | |
导出文件时处理程序 | 当赋值不满足业务需求时,可自定义开发处理程序来处理业务逻辑,自定义的处理程序必须实现NkCardFileExportPreprocessor.java |
# 模板文档配置示例
从单据上取值
{{docName}}
{{data.NkForm.name}}
显示表格数据在卡片上
在表格配置数据来源:{{-data.payment}},每列数据显示:[key0] [key1]
通过参数字段自定义的数据展示
{{value}}
#如果一个文件模板要生成多个文件,可以在参数字段组装数组,导出数组数量对应文件数量的文件压缩包
[{"first":"第一个文档"},{"first":"第二个文档"}]
HTML数据展示
{{~data. NkCardQuillEditor.html}}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
其他插件展示
已默认支持的插件:
@ : 图片
# : 表格,需要TableRenderData数据模型
* : 列表
? : 判断(区块对)
/ : 判断结束符(区块对(
+ : 嵌套,需要DocxRenderData数据模型
- : 单行循环,LoopRowTableRenderPolicy
= : 多行循环,MultipleRowTableRenderPolicy
~ : HTML,通过三方插件实现 HtmlRenderPolicy
配置:
{
"binds":{
"key": "RenderPolicy",
},
"plugins":{
"tag": "RenderPolicy",
}
}
参数为空时,默认为doc对象
更多配置参考:http://deepoove.com/poi-tl/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
TIP
由于"@"用来标志图片转换,所以我们之前使用的@连接方法的写法失效了。
如果有要想通过spEL方法展示的数据,可以在参数中预先定义,例如:{"value":"${@date.now()}"}
在模板文档中直接使用取值
# 交易历史
# 功能说明
展示该单据所在的业务流,可以快速到达该业务流的其他单据
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
空配置 |
# 账号绑定
# 功能说明
将该伙伴单据绑定已有的系统账号,可实现用户权限管理
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
空配置 |
# 账号管理
# 功能说明
创建一个账号与该单据进行绑定,如果账号已存在,可直接进行绑定也可修改该账号的数据再绑定。
提示
绑定后的账号不能在设置->用户账号中进行修改。
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
密码正则表达式 | 通过正则表达式对密码进行校验 | |
密码不匹配的提示语 | 密码校验不通过提示语 |
# Excel导入
# 功能说明
将线下Excel表格数据导入到线下,根据实际情况,配置是否需要将导入的数据创建为单据。
提示
配置为导入数据时创建单据,该单据必须存在。
# 基础配置
# 头部配置
提示
当前卡片的整体配置。
属性 | 描述 | 举例 |
---|---|---|
单据类型 | 需要生成单据的类型 | DB01 |
业务组件规则 | 单行数据的唯一规则,与单据的业务规则进行匹配。不存在新增,存在修改单据 | -- |
执行条件 | 该条件下执行导入数据操作 | S002 |
成功状态 | 执行成功之后的单据状态 | S003 |
失败状态 | 执行失败之后的单据状态 | S004 |
触发计算 | 是否触发计算 | -- |
# 表格配置
提示
当前卡片单列数据的配置。
属性 | 描述 | 举例 |
---|---|---|
key | 字段的key。如果需要生成单据数据,配置cardKey.fieldKey ,如果不需要生成单据数据,配置key 即可 | business.month,key0 |
描述 | excel表格列名 | 业务合同号 |
输入框 | 数据类型,选择数据对应的数据类型 | |
显示格式 | 对数据的显示进行格式话处理 | yyyy-MM-dd HH:mm:ss |
真字符 | 对特殊数据类型进行处理。数据类型为单据引用时,配置为单据类型doctype 。数据类型为下拉选时,配置显示格式化 | 单据引用:docType ;下拉选:{1: '是',2: '否' } |
展示宽度% | 页面表格当列宽度 | -- |
模板宽度 | 下载的模板当列宽度 | -- |
导入数据 | 附否需要生成单据数据 | -- |
# 签署类卡片
# E签宝-电子签
# 功能说明
线上合同签署
提示
调用E签宝基于文件发起签署接口。 注意:模板文件内的字体如果没有,生成的上传E签宝文件中文会缺失。需要下载对应字体并放置在服务器上。 服务器路径:/nk/spring-applications/elcube_ce04/Fonts yml配置:nk.fontFolder: /nk/spring-applications/elcube_ce04/Fonts
# 基础配置
# 头部配置
提示
当前卡片的整体配置。
属性 | 描述 | 举例 |
---|---|---|
签署触发状态 | 什么状态下触发签署 | -- |
签署成功状态 | 签署成功单据的状态 | -- |
签署失败状态 | 签署失败单据的状态 | -- |
撤销触发状态 | 什么状态下触发撤签 | -- |
撤销成功状态 | 撤销成功单据的状态 | -- |
撤销失败状态 | 撤销失败单据的状态 | -- |
签署主题名称 | 本次签署的描述 | -- |
flowInfo参数 | E签宝基于文件发起签署接口 | 参考E签宝基于文件发起签署 (opens new window)接口参数signFlowConfig 详见例1 |
# 例1
{
"signFlowTitle": "${docName}",
"signFlowExpireTime": 1691056777000,
"autoStart": true,
"autoFinish": true,
"identityVerify": true,
"signConfig": {
"availableSignClientTypes": "1",
"showBatchDropSealButton": true
},
"noticeConfig": {
"noticeTypes": "1",
"examineNotice": false
},
"authConfig": {
"willingnessAuthModes": ["PSN_FACE_ALIPAY"],
"psnAvailableAuthModes": ["PSN_FACE"]
},
"redirectConfig": {
"redirectUrl": "www.xxx.com",
"redirectDelayTime": 3
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 表格配置
提示
签署模板的详细配置。
属性 | 描述 | 举例 |
---|---|---|
模板项 | 模板的KEY | -- |
描述 | 模板描述 | -- |
文件模板 | 待签署的文件模板 | -- |
导出文件时的处理程序 | 导出文件的处理程序 | -- |
签署条件EL | 什么条件下执行签署(结果为boolean) | -- |
签署方EL | 参与该模板的签署方 | 参考E签宝基于文件发起签署 (opens new window)接口参数signers 详见列2。平台方自动签署autoSign 为true ,orgId 必传,transactorInfo 参数不需要;keywords 合同关键字,通过关键字定位签字;params 合同模板参数) |
# 例2
[
{
"signers": [
{
"psnSignerInfo": {
"psnInfo": {
"psnIDCardType": "CRED_PSN_CH_IDCARD",
"psnIDCardNum": "511XXXXXX0215",
"psnMobile": "185XXXX1989",
"psnName": "李XX"
},
"psnAccount": "185XXXX1989"
},
"signerType": 0,
"noticeConfig": {
"noticeTypes": 1
},
"keywords": "承租人"
},
{
"orgSignerInfo": {
"orgInfo": {
"legalRepName": "谢XX",
"orgIDCardType": "CRED_ORG_USCC",
"legalRepIDCardType": "CRED_PSN_CH_IDCARD",
"legalRepIDCardNum": "33XXXXXXXXX310",
"orgIDCardNum": "91XXXXXXXXXF"
},
"transactorInfo": {
"psnInfo": {
"psnIDCardType": "CRED_PSN_CH_IDCARD",
"psnIDCardNum": "33XXXXXXXXX310",
"psnName": "谢XX"
},
"psnAccount": "159XXXX199"
},
"orgId": "b0XXXXbf"
},
"signerType": 1,
"noticeConfig": {
"noticeTypes": 1
},
"autoSign": true,
"keywords": "公司签章"
}
],
"params": {
"title": "李XX的合同"
}
},
{
"signers": [
{
"psnSignerInfo": {
"psnInfo": {
"psnIDCardType": "CRED_PSN_CH_IDCARD",
"psnIDCardNum": "511XXXXXXX6995",
"psnMobile": "185XXXX2986",
"psnName": "陈X"
},
"psnAccount": "185XXXX2986"
},
"signerType": 0,
"noticeConfig": {
"noticeTypes": 1
},
"keywords": "承租人"
},
{
"orgSignerInfo": {
"orgInfo": {
"legalRepName": "谢XX",
"orgIDCardType": "CRED_ORG_USCC",
"legalRepIDCardType": "CRED_PSN_CH_IDCARD",
"legalRepIDCardNum": "33XXXXXXXXX310",
"orgIDCardNum": "91XXXXXXXXXXF"
},
"transactorInfo": {
"psnInfo": {
"psnIDCardType": "CRED_PSN_CH_IDCARD",
"psnIDCardNum": "33XXXXXXXXX310",
"psnName": "谢XX"
},
"psnAccount": "159XXXX1199"
},
"orgId": "b0XXXXebf"
},
"signerType": 1,
"noticeConfig": {
"noticeTypes": 1
},
"autoSign": true,
"keywords": "公司签章"
}
],
"params": {
"title": "陈X的合同"
}
}
]
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# E签宝-身份认证
提示
调用E签宝个人(企业)核身认证接口。
# 功能说明
实名认证
# 基础配置
# 基础配置
属性 | 描述 | 举例 |
---|---|---|
触发状态 | 该状态下触发实名认证 | -- |
成功状态 | 认证成功单据的状态 | -- |
失败状态 | 认证失败单据的状态 | -- |
用户类型 | 个人用户1;企业用户2 | -- |
# 个人认证
提示
属性 | 描述 | 举例 |
---|---|---|
认证方式 | 指定页面显示认证方式PSN_BANK4_AUTHCODE - 个人银行卡四要素认证,PSN_TELECOM_AUTHCODE - 个人运营商三要素认证,PSN_FACEAUTH_BYURL - 个人刷脸认证 | {'PSN_TELECOM_AUTHCODE'} |
认证详情 | 指定通过银行卡认证或运营商认证方式时,是否使用详情版,如指定则核验失败可返回具体不匹配信息,传空默认为普通版。PSN_BANK4_AUTHCODE - 个人银行卡四要素认证,PSN_TELECOM_AUTHCODE - 个人运营商三要素认证 | -- |
通知手机号 | 接收实名认证链接短信通知的手机号。 | -- |
银行卡号 | 个人银行卡号(仅支持银联卡) | -- |
个人证件号 | 个人证件号 | -- |
证件类型 | 个人证件类型,INDIVIDUAL_CH_IDCARD - 中国大陆身份证,INDIVIDUAL_CH_TWCARD - 台湾来往大陆通行证,INDIVIDUAL_CH_HONGKONG_MACAO - 港澳来往大陆通行证,INDIVIDUAL_PASSPORT - 护照 | -- |
手机号 | 个人手机号 | -- |
姓名 | 个人姓名 | -- |
# 企业认证
提示
属性 | 描述 | 举例 |
---|---|---|
认证方式 | 指定页面可选的认证方式,ORG_BANK_TRANSFER - 组织机构对公账户打款认证,ORG_ZM_AUTHORIZE - 企业芝麻认证,ORG_LEGAL_AUTHORIZE - 组织机构法定代表人授权书签署认证,LEGAL_REP_AUTH - 法定代表人认证 | |
办理人认证方式 | 指定页面可选的办理人认证方式PSN_TELECOM_AUTHCODE - 个人运营商三要素,PSN_BANK4_AUTHCODE - 个人银行四要素,PSN_FACEAUTH_BYURL - 个人刷脸认证 | |
返回详情的认证方式 | 指定办理人通过银行卡认证或运营商认证方式时,是否使用详情版,如指定则核验失败可返回具体不匹配信息,传空默认为普通版。PSN_BANK4_AUTHCODE - 个人银行卡四要素认证,PSN_TELECOM_AUTHCODE - 个人运营商三要素认证 | -- |
通知手机号 | 接收实名认证链接短信通知的手机号。 | -- |
机构名称 | -- | |
机构证件号 | -- | |
法人证件类型 | 证件类型,INDIVIDUAL_CH_IDCARD - 中国大陆身份证,INDIVIDUAL_CH_TWCARD - 台湾来往大陆通行证,INDIVIDUAL_CH_HONGKONG_MACAO - 港澳来往大陆通行证,INDIVIDUAL_PASSPORT - 护照 | -- |
法人证件号 | -- | |
法人姓名 | -- | |
办理人姓名 | -- | |
办理人证件号 | -- | |
机构类型 | 1 - 企业类,2 - 个体工商户 ,99 - 其他组织 | -- |
# 公共配置
提示
属性 | 描述 | 举例 |
---|---|---|
不可修改信息 | 企业(指定页面上不可修改的信息属性,未指定的信息属性可以修改。name - 组织机构名称,certNo - 组织机构证件号,legalRepName - 法定代表人姓名,legalRepCertNo - 法定代表人身份证号,agentName - 办理人姓名,agentIdNo - 办理人证件号);个人(设置个人认证页面上不可修改的基本信息。传空表示可以修改,name - 姓名,certNo - 证件号,mobileNo - 手机号,bankCardNo - 银行卡号) | -- |
跳转地址 | 认证结束后页面跳转地址 | -- |
结果页展示 | 认证完成是否显示结果页,默认值为 true,true - 显示结果,false - 不显示结果 | -- |
# 卡片配置源码
{
"touchState": "NEW",
"successState": "ACTI",
"failState": "REFU",
"typeSpEL": null,
"psnInfo": {
"availableAuthTypesSpEL": "{'PSN_TELECOM_AUTHCODE'}",
"receiveUrlMobileNoSpEL": "\"185XXXX1989\"",
"authAdvancedEnabledSpEL": null,
"indivInfo": {
"bankCardNoSpEL": null,
"certNoSpEL": "\"51XXXXXXXXX15\"",
"certTypeSpEL": null,
"mobileNoSpEL": "\"185XXXX1989\"",
"nameSpEL": "\"李XX\""
}
},
"orgInfo": {
"availableAuthTypesSpEL": "{\"LEGAL_REP_AUTH\"}",
"agentAvailableAuthTypesSpEL": "{\"PSN_TELECOM_AUTHCODE\"}",
"agentAuthAdvancedEnabledSpEL": null,
"receiveUrlMobileNoSpEL": "\"159XXXX1199\"",
"orgEntity": {
"nameSpEL": "\"XXXXXXX公司\"",
"certNoSpEL": "\"91XXXXXXF\"",
"legalRepCertTypeSpEL": "\"INDIVIDUAL_CH_IDCARD\"",
"legalRepCertNoSpEL": "\"33XXXXXXX10\"",
"legalRepNameSpEL": "\"谢XX\"",
"agentNameSpEL": "\"谢XX\"",
"agentIdNoSpEL": "\"33XXXXXXX10\"",
"organizationTypeSpEL": "1"
}
},
"configParams": {
"indivUneditableInfoSpEL": null
},
"contextInfo": {
"contextIdSpEL": null,
"notifyUrl": null,
"origin": null,
"redirectUrl": null,
"showResultPageSpEL": "true"
}
}
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
# 数据类卡片
# 第三方数据查询
# 功能说明
查询第三方数据库,并将数据保存到本服务
# 第三方数据查询配置
# yml配置
属性 | 描述 | 举例 |
---|---|---|
nk.datax.services.MySql101Service | MySql101Service是服务名称,可自行配置 | -- |
nk.datax.services.MySql101Service.serviceClass | 服务类 | -- |
nk.datax.services.MySql101Service.dialect | 方言 | -- |
nk.datax.services.MySql101Service.props.jdbcUrl | 数据库链接地址 | -- |
nk.datax.services.MySql101Service.props.schema | 模式 | -- |
nk.datax.services.MySql101Service.props.username | 用户名 | -- |
nk.datax.services.MySql101Service.props.password | 密码 | -- |
nk.datax.services.MySql101Service.props.driverClassName | 驱动程序 | -- |
示例(代码)
nk:
datax:
services:
MySql101Service:
serviceClass: cn.nkpro.elcube.components.datax.services.MySQLQueryService
dialect: MySql
props:
jdbcUrl: jdbc:mysql://192.168.1.149:3306/elcube_jiyi?characterEncoding=utf-8&useSSL=false&createDatabaseIfNotExist=true
schema: elcube_jiyi
username: root
password: VTOZ8clUpSerX6hI
driverClassName: com.mysql.jdbc.Driver
2
3
4
5
6
7
8
9
10
11
12
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
查询服务 | 本次查询调用的服务 | -- |
SQL | 本次查询执行的SQL表达式 | -- |
数据源 | 本次查询结果需要的数据 | -- |
数据映射 | 对数据源进行数据映射,映射到其他卡片上 | -- |
示例(源码)
{
"items": [
{
"queryService": "MySql101Service",
"sqlSpEL": "SELECT DOC_ID docId FROM nk_doc_h where CREATED_TIME >= 1655865552",
"datasourceSpEL": "#this",
"mappingSpEL": "{\n\"data.grid\":#this\n}",
"_X_ROW_KEY": "row_1819"
},
{
"queryService": "MySql101Service",
"sqlSpEL": "SELECT DOC_ID docId FROM nk_doc_h where CREATED_TIME >= 1655865552",
"datasourceSpEL": "#this?.^[true]",
"mappingSpEL": "{\"data.NkDynamicForm.key1\":#this.docId}",
"_X_ROW_KEY": "row_1820"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 表格选择器
# 功能说明
1.通过配置,对数据进行查询、过滤和展示。查询字段需和表格字段保持一致
2.单据计算时触发
3.保存后只展示选中的数据
# 配置说明
属性 | 描述 | 举例 |
---|---|---|
模式 | 单选或多选 | |
查询服务 | 选择需要查询的库 | 详见查询服务说明 |
SQL | 查询语句 | es库查询:select docName from document |
数据过滤 | es数据过滤语法 | 详见es查询聚合语法示例 |
默认选中 | 从0开始,逗号分割 | 0,2,5,默认选中第1,3,6条 |
# 查询服务说明
属性 | 描述 | 举例 |
---|---|---|
ElasticSearchSQLService | 使用es的sql语法查询数据 | 详见es查询sql语法示例 |
ElasticSearchAggService | 使用es的聚合语法查询数据 | 详见es查询聚合语法示例 |
MySQLQueryService | mysql数据库查询 | select * from 表名 |
MySql101Service | 第三方库查询 | 详见第三方库连接配置 |
# 第三方库连接配置
datax:
services:
MySql101Service:
serviceClass: cn.nkpro.elcube.components.datax.services.MySQLQueryService
dialect: MySql
props:
jdbcUrl: jdbc:mysql://ip:端口/库名?characterEncoding=utf-8&useSSL=false&createDatabaseIfNotExist=true
schema: ts5_bb_preview
username: root
password: VTOZ8clUpSerX6hI
driverClassName: com.mysql.jdbc.Driver
2
3
4
5
6
7
8
9
10
11
# es查询sql语法示例
SELECT HISTOGRAM(createdTime, INTERVAL 1 DAY) AS "时间",
SUM(dynamics.loanAmount_double) AS "金额"
FROM "<document>"
WHERE docType = 'RBC1' AND docState = 'ACTI'
GROUP BY "时间"
2
3
4
5
# es查询聚合语法示例
{
"bool": {
"must": [
{
"terms": {
"docType": [
"RPF1"
]
}
},
{
"range": {
"dynamics.downPaymentFrom_double": {
"lte": "${data?.programme?.downPaymentPercent?:-1}"
}
}
},
{
"range": {
"dynamics.downPaymentTo_double": {
"gte": "${data?.programme?.downPaymentPercent?:10000}"
}
}
},
{
"range": {
"dynamics.termFrom_double": {
"lte": "${data?.programme?.term?:-1}"
}
}
},
{
"range": {
"dynamics.termTo_double": {
"gte": "${data?.programme?.term?:10000}"
}
}
},
{
"range": {
"dynamics.ageFrom_int": {
"lte": "${data?.customer?.age?:-1}"
}
}
},
{
"range": {
"dynamics.ageTo_int": {
"gte": "${data?.customer?.age?:10000}"
}
}
},
{
"terms": {
"dynamics.regions_keyword": "${data?.customer?.region?:{}}"
}
}
]
}
}
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 财务相关卡片
# 还款规则
# 功能说明
变更还款计划
# 字段说明
属性 | 描述 | 举例 |
---|---|---|
程序 | 规则变更选择 | 延期,固定金额,调整期限,调整利率,调整还款日,按贷款比例 |
激活日期 | 规则变更起始时间 | |
有效期间 | 规则变更有效区间 | |
期次自 | 规则变更起始期次 | |
期次至 | 规则变更结束期次 | |
值 | 根据变更规则填写数值 | 规则不同,所填值不同,例 |
# 变更规则说明
规则名称 | 描述 | 举例 |
---|---|---|
延期 | 延长还款期限 | |
固定金额 | 从激活日起,根据有效期间或期次区间,将付款金额变更为所填值 | |
调整期限 | 从激活日起,变更还款计划后续总期次为所填期数 | |
调整利率 | 从激活日起,根据所填利率,重新计算还款计划 | |
调整还款日 | 从激活日起,有效期间内,变更还款计划还款日 | |
按贷款比例 | 从激活日起,根据期次区间和贷款比例,变更还款计划 |
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
计算公式 | 金融方案中配置的还款计划计算方法 | |
自动添加EL | 根据配置EL,在触发计算时,自动填充还款规则 |
# 示例
初始化EL,提前结清配置
[
{
"program": "PAY_DT",
"activeDate": "${@date.now()}",
"effectiveDate": [
"${@date.now()}",
"${@date.now()}"
]
},
{
"program": "EXTEND",
"activeDate": "${data?.earlySett?.date?:0}",
"value": "1"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 还款计划
# 功能说明
自动计算并展示还款计划
# 字段说明
属性 | 描述 | 举例 |
---|---|---|
期次 | 还款计划第几期 | |
到期 | 应还款日 | |
付款金额 | 本金+利息+其他费用 | |
本金 | 应还本金 | |
利息 | 应还利息 | |
其他费用 | 其他应收费用 | |
剩余金额 | 剩余未还本金 | |
备注 | 备注信息 |
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
计算公式 | 还款计划计算方式,找到对应计算类 | 等额本息,等额本金 |
计算选项 | 还款计划计算传入值 |
# 示例
计算传值示例
{
"pv": "${data.price?.loanAmount}",
"ir": "${(data.price?.rateAfterDiscount?:0)*0.01}",
"np": "${(data.programme?.term?:12)/12*(data.programme?.frequency?:12)}",
"pf": "${data.programme?.frequency}",
"dt": "${data?.startRent?.loanDate}",
"dayOfPay": "${data?.startRent?.fixedRepayDate}",
"fv": 0,
"tp": "0",
"customPayAmountRule": "${data.customPayAmountRule}"
}
2
3
4
5
6
7
8
9
10
11
12
# 账单
# 功能说明
自动计算账单项,来款核销记录
# 字段说明
属性 | 描述 | 举例 |
---|---|---|
到期日期 | 应还款日期 | |
账单类别 | 应还账单类型 | 本金,利息,违约金 |
账单金额 | 应还金额 | |
已收金额 | 已还金额 | |
应收金额 | 剩余应收金额 | |
状态 | 账单状态 | 未激活,激活 |
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
激活条件 | 账单改为激活状态条件 | docState=="ACTI" |
账单交易伙伴 | 账单所属交易伙伴 | |
还款计划卡片 | 还款计划卡片key,账单根据还款计划计算得出 | |
计息日期 | 开始计息时间 | |
账单源 | 账单取值来源 | 当还款计划卡片不为空时,则取还款计划卡片的数据,其他:首付款,保证金 |
违约金起始日 | 可以自定义违约金的计算日期 | 默认是第一期账单的应收日期 |
违约金账单类别 | 账单违约金展示取值 | 违约金 |
违约金利率 | 账单逾期,违约金计算利率 | EL表达式,0.05 |
计算违约金的账单类别 | 哪些账单类别逾期后需要计算违约金 | 本金,利息 |
账单视图 | 账单视图分类,配置包含关系 | |
包含过期条目 | 已过期账单是否展示 | 这里的过期是指discard字段为1的数据 |
fix当日 | 选中之后,应还款当日就不会出现滞纳金的条目 |
# 示例
激活条件
docState=="ACTI"||docState=='SETT'||docState=='VOFF'
账单源
{
{
"billType":"代偿金额",
"fromDate":data.startRent?.loanDate,
"expireDate":data.startRent?.loanDate,
"amount":data.overdue?.overdueAmount
}
}
2
3
4
5
6
7
8
账单视图
[
{
"name": "全部"
},
{
"name": "还款视图",
"includes": [
"本金",
"利息"
]
},
{
"name": "违约金视图",
"includes": [
"违约金"
]
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 账单偿还
# 功能说明
核销账单已还金额,变更应收金额
# 字段说明
属性 | 描述 | 举例 |
---|---|---|
单据编号 | 偿还账单单据编号 | |
到期日期 | 应还款日期 | |
账单类别 | 应还账单类型 | 本金,利息,违约金 |
账单金额 | 应还金额 | |
已收金额 | 已还金额 | |
应收金额 | 剩余应收金额 | |
本次偿还 | 本次实际偿还金额 |
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
激活条件 | 激活偿还,修改账单条件 | docState=="ACTI" |
逆向偿还 | ||
可偿还金额 | 可用于本次偿还的金额 | |
记账日期 | 来款记账日期 | |
偿还总额回填 | 计算后的本次偿还总额回填到单据字段 | |
偿还规则组 | 偿还条件和顺序,从上往下 | |
目标单据ID | 指定需要偿还的目标单据 |
# 示例
偿还规则组
[
[
{
"billType": "违约金",
"condition": "#bill.expireDate < #$accountDate"
}
],
[
{
"billType": "利息"
},
{
"billType": "本金"
}
],
[
{
"billType": "代偿金额"
},
{
"billType": "一次性利息"
}
]
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 账单冲红
# 功能说明
冲红已核销金额,账单核销下游单据
# 字段说明
属性 | 描述 | 举例 |
---|---|---|
单据编号 | 冲红账单单据编号 | |
到期日期 | 应还款日期 | |
账单类别 | 应还账单类型 | 本金,利息,违约金 |
账单金额 | 应还金额 | |
收款金额 | 实际核销金额 | |
收款日期 | 核销到账日期 | |
冲红金额 | 本次冲红金额 |
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
激活条件 | 激活冲红条件 | |
前序偿还卡片 | 账单核销单据偿还卡片key | |
冲红金额回填 | 本次冲红金额回填单据字段 |
# 示例
冲红配置源码
{
"activeSpEL": "true",
"repaymentKey": "refund",
"balanceSpEL": "data.base?.amount"
}
2
3
4
5
# 财务凭证卡片
# 财务凭证引擎
# 功能说明
财务凭证金额计算,展示
# 字段说明
属性 | 描述 | 举例 |
---|---|---|
科目 | 财务科目 | |
币种 | 使用币种 | |
借方金额 | 借方金额 | |
贷方金额 | 贷方金额 | |
摘要 | 科目说明,辅助核算项 | |
现金流量 | 现金流量科目 |
# 卡片配置
属性 | 描述 | 举例 |
---|---|---|
激活条件 | 卡片展示条件 | |
生效条件 | 触发计算条件 | |
凭证类别 | 凭证名称 | |
记账日期 | 凭证传送参数 | |
会计年度 | 凭证传送参数 | |
会计期间 | 凭证传送参数 |
# 示例
凭证配置源码
{
"activeSpEL": "${@ltgContract.getBusinessModel(preDocId)} == 1",
"effectiveSpEL": "docState == 'S002' or docState == 'S003'",
"voucherKind": "收到租金直租凭证",
"accountDateSpEL": "@date.today()",
"accountYearSpEL": "@date.get(1)",
"accountPeriodSpEL": "@date.get(2)+1",
"vars": [
{
"key": "prev",
"valueSpEL": "@doc.detail(preDocId)",
"remark": "取前序单据数据",
"_X_ROW_KEY": "row_127"
},
{
"key": "taxMoney",
"valueSpEL": "${@ltgContract.monthPay(preDocId)}",
"remark": " 合同约定每期还款额 ",
"_X_ROW_KEY": "row_128"
}
],
"items": [
{
"businessKey": null,
"subject": "100399",
"subjectDesc": "银行存款",
"currType": "CNY",
"category": "D",
"dataSourceSpEL": null,
"targetDocIdSpEL": "preDocId",
"amountSpEL": "#taxMoney",
"explanationSpEL": "\" 合同约定每期还款额\"",
"cashFlowSpEL": "",
"cashFlowSide": 1,
"assists": [
{
"key": "0011",
"valueSpEL": "'601180217'"
}
],
"_X_ROW_KEY": "row_134"
},
{
"businessKey": null,
"subject": "118101",
"subjectDesc": "应收融资租赁款-租赁收款额",
"currType": "CNY",
"category": "C",
"dataSourceSpEL": null,
"targetDocIdSpEL": "preDocId",
"amountSpEL": "#taxMoney",
"explanationSpEL": "\"融资租赁所收到的现金-融资租赁\"",
"cashFlowSpEL": "1115",
"cashFlowSide": 1,
"assists": [
{
"key": "0004",
"valueSpEL": "'00112000002'"
}
],
"_X_ROW_KEY": "row_135"
}
]
}
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64