# 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}}

1
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/
1
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
	}
}

1
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。平台方自动签署autoSigntrueorgId必传,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的合同"
    }
  }
]

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
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"
    }
}

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

# 数据类卡片

# 第三方数据查询

# 功能说明

查询第三方数据库,并将数据保存到本服务

# 第三方数据查询配置
# 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
1
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"
    }
  ]
}
1
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
1
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 "时间"
1
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?:{}}"
        }
      }
    ]
  }
}
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
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"
    }
]
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}"
}
1
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'
1

账单源

{
	{
		"billType":"代偿金额",
		"fromDate":data.startRent?.loanDate,
		"expireDate":data.startRent?.loanDate,
		"amount":data.overdue?.overdueAmount
	}
}
1
2
3
4
5
6
7
8

账单视图

[
  {
    "name": "全部"
  },
  {
    "name": "还款视图",
    "includes": [
      "本金",
      "利息"
    ]
  },
  {
    "name": "违约金视图",
    "includes": [
      "违约金"
    ]
  }
]
1
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": "一次性利息"
    }
  ]
]
1
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"
}
1
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"
    }
  ]
}
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64