【设置】凭证字、常用摘要、凭证模板
凭证字、常用摘要和凭证模板属于设置管理,由 yudao-module-fms 后端模块的 config 包实现,前端实现在 @/views/fms/config/voucher-word、@/views/fms/config/digest 和 @/views/fms/config/voucher-template 目录。
这三类资料不参与建账,只服务于「录凭证」页面:
- 凭证字:维护凭证字、打印标题和默认凭证字,参与凭证编号和打印展示。
- 常用摘要:维护经常使用的摘要文字,在分录编辑时快速回填。
- 凭证模板:按分类保存常用借贷分录,在录凭证时套用并重新校验。
历史凭证会保存凭证字名称、摘要、科目编码和科目名称等展示快照,因此后续修改预设资料不会篡改已审核凭证;模板则是可重复套用的配置数据,套用时仍以当前科目和辅助核算状态为准。账套初始化和科目基础资料详见前两篇设置文档。
本文涉及表如下图所示:
# 1. 凭证字
凭证字,由 FmsVoucherWordController 提供接口(/fms/config/voucher-word)。
# 1.1 表结构
省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段
CREATE TABLE `fms_voucher_word` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
`account_set_id` bigint DEFAULT NULL COMMENT '账套编号',
`name` varchar(255) DEFAULT NULL COMMENT '凭证字',
`print_title` varchar(255) DEFAULT NULL COMMENT '打印标题',
`default_status` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否默认凭证字',
`sort` int NOT NULL DEFAULT 0 COMMENT '显示顺序',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_business` (`account_set_id`, `name`, `deleted`, `tenant_id`)
) ENGINE=InnoDB COMMENT='FMS 凭证字';
① account_set_id 关联 fms_account_set 表的 id 字段,name 在同一账套内唯一。
② 账套初始化时创建预置凭证字,内容对应枚举 FmsVoucherWordPresetEnum:
| 凭证字 | 枚举 | 打印标题 | 是否默认 | 显示顺序 |
|---|---|---|---|---|
| 记 | RECORD | 记账凭证 | ✓ | 1 |
| 收 | RECEIPT | 收款凭证 | — | 2 |
| 转 | TRANSFER | 转账凭证 | — | 3 |
| 付 | PAYMENT | 付款凭证 | — | 4 |
③ default_status 标识默认凭证字,由后端按账套保证唯一。默认凭证字不能删除,新增凭证时页面优先选中它。
④ print_title 只影响 FmsVoucherPrintForm.vue 的打印标题,不会改变凭证字名称,也不影响凭证号连续性。
# 1.2 管理后台
对应 [财务管理 -> 设置管理 -> 凭证字] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/fms/config/voucher-word 目录。
# 列表
展示凭证字、打印标题、默认标记和创建时间。

# 新增与修改
点击【新增】或【编辑】打开 FmsVoucherWordForm.vue,填写凭证字、打印标题和是否默认,保存时由后端按账套校验名称唯一和默认凭证字规则。
点击【新增】按钮,弹出凭证字新增表单。主要填写凭证字、打印标题,并选择是否设为默认凭证字。

# 删除
默认凭证字不能删除。录凭证页面的凭证字选择器由 FmsVoucherWordSelect.vue 提供,只读取当前账套的凭证字。
# 2. 常用摘要
常用摘要,由 FmsDigestController 提供接口(/fms/config/digest)。
# 2.1 表结构
CREATE TABLE `fms_digest` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
`account_set_id` bigint NOT NULL COMMENT '账套编号',
`content` varchar(500) NOT NULL COMMENT '摘要内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='FMS 常用摘要';
① account_set_id 关联 fms_account_set 表的 id 字段。摘要内容是纯文字资料,不关联科目、金额或凭证。
② 摘要内容没有唯一约束,同一账套允许维护相同摘要。
③ 删除摘要不会修改历史凭证:凭证分录保存时已经把摘要快照写入 fms_voucher_entry.digest。
# 2.2 管理后台
对应 [财务管理 -> 设置管理 -> 常用摘要] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/fms/config/digest 目录。
# 列表
展示摘要内容和创建时间,支持新增、编辑和删除。

# 新增与修改
点击【新增】或【编辑】打开 FmsDigestForm.vue,填写摘要内容。
新增表单只维护摘要内容,保存后即可在录凭证页面调用。

# 在录凭证中使用
录凭证页面的摘要输入框可以打开 FmsDigestLibrary.vue,读取同一账套的摘要并回填当前分录。选择摘要后仍允许在分录中继续修改文字,改动不会写回摘要库。
在录凭证页面打开摘要库,可查看当前账套的摘要并直接套用到当前分录。

# 3. 凭证模板
凭证模板分类,由 FmsVoucherTemplateCategoryController 提供接口(/fms/config/voucher-template-category);凭证模板,由 FmsVoucherTemplateController 提供接口(/fms/config/voucher-template)。两张表均以 account_set_id 隔离账套。
# 3.1 主表表结构
CREATE TABLE `fms_voucher_template_category` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
`account_set_id` bigint NOT NULL COMMENT '账套编号',
`name` varchar(255) NOT NULL COMMENT '凭证模板分类名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='FMS 凭证模板分类';
分类只有名称,删除分类前后端会校验分类下是否仍有模板。
该表包含一个子表:
fms_voucher_template(凭证模板):保存模板名称和一组预设分录。
# 3.2 子表结构
CREATE TABLE `fms_voucher_template` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
`account_set_id` bigint NOT NULL COMMENT '账套编号',
`category_id` bigint NOT NULL COMMENT '分类编号',
`name` varchar(255) NOT NULL COMMENT '凭证模板名称',
`entries` json NOT NULL COMMENT '凭证模板分录数组',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='FMS 凭证模板';
① category_id 关联 fms_voucher_template_category 表的 id 字段。
② entries 保存模板的录入结构,不保存凭证编号、凭证日期、附件或审核状态。
③ 模板中的科目和辅助项目必须属于当前账套。科目被停用或辅助项目被删除后,套用模板时会重新校验,不能通过旧 JSON 绕过当前账套的使用约束。
entries JSON 字段结构
[
{
"digest": "支付办公费用",
"subjectId": 1024,
"quantity": 0.0000,
"unitPrice": 0.000000,
"debitAmount": 1000.00,
"creditAmount": 0.00,
"auxiliaries": [
{
"type": 5,
"typeId": 16,
"itemId": 302,
"name": "行政部"
}
]
},
{
"digest": "支付办公费用",
"subjectId": 1002,
"quantity": 0.0000,
"unitPrice": 0.000000,
"debitAmount": 0.00,
"creditAmount": 1000.00,
"auxiliaries": []
}
]
① 每个元素对应一条预设分录,字段与凭证分录一一对应:digest 摘要、subjectId 科目、quantity 数量、unitPrice 单价、debitAmount 借方金额、creditAmount 贷方金额。
② auxiliaries 的结构与凭证分录相同,字段含义见 《【设置】币别、科目、辅助核算、初始余额》 的辅助核算组合小节;未启用辅助核算的科目为空数组。
③ 这份数组由 FmsVoucherTemplateDO 的内嵌对象承载,随模板整体保存,没有独立编号和生命周期。套用到凭证时会复制为真实分录,再由凭证保存逻辑重新校验。
# 3.3 管理后台
对应 [财务管理 -> 设置管理 -> 凭证模板] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/fms/config/voucher-template 目录。
# 列表
页面左侧是模板分类,右侧是当前分类下的模板列表,展示模板名称和分录数。

# 分类维护
FmsVoucherTemplateCategoryForm.vue 支持新增、编辑和删除分类。
点击分类列表【新增】,填写分类名称后保存。

# 模板维护
设置页只支持删除模板,模板内容的新增入口在录凭证页面的【保存为模板】。
# 3.4 在录凭证页面保存与套用
凭证模板的完整使用闭环在 [财务管理 -> 凭证管理 -> 录凭证] 完成,对应 @/views/fms/voucher/create 目录。
① 在录凭证页面先维护至少一条借贷分录,选择末级科目、摘要、金额和辅助项目。
② 点击【更多 -> 保存为模板】,由 FmsVoucherTemplateSaveForm.vue 选择分类并填写模板名称后保存。
③ 点击【更多 -> 使用模板】,由 FmsVoucherTemplateSelect.vue 查询分类和模板,将模板分录复制到当前凭证。套用后仍需填写凭证日期、凭证号和附单据张数。
④ 套用模板后,前端和后端都会重新校验借贷金额平衡、科目可用状态、辅助核算完整性和数量核算字段;校验失败时保留当前凭证,不写入数据库。

配置与业务页面的分工
设置页负责维护资料,录凭证页面负责消费资料并保存凭证。因此模板的保存和套用入口都在录凭证页面,设置页只做分类管理和清理,详见 《【凭证】凭证管理》。