# 凭证模版需求

## 1、在录入凭证的界面就模版按钮，点击下拉出现“保存为凭证模版“ 和 “从模版生成凭证”

### 从模版生成凭证：打开模版对话框，选择对应模版将内容加载到创建凭证内容中

以下图片展示的是从模版生成凭证，标题：选择模版，可以通过模版类型和模版名称搜索，模版类型为下拉选择框。

有勾选框仅显示模版类别和名称，默认勾选，如果去掉这个将自动显示模版内部对应的分录信息，含辅助核算，金额等信息，具体实现请参考凭证查询页面

[![img_v3_0213i_26f03f74-381f-404b-8b6a-49b0464c34ag.jpg](https://wiki.wimoor.com/uploads/images/gallery/2026-07/scaled-1680-/img-v3-0213i-26f03f74-381f-404b-8b6a-49b0464c34ag.jpg)](https://wiki.wimoor.com/uploads/images/gallery/2026-07/img-v3-0213i-26f03f74-381f-404b-8b6a-49b0464c34ag.jpg)

### 保存为凭证模版：将当前客户编辑的内容保存为特定模版

弹出新增模版 对话框，输入表单 模版名称，模版类别（下拉列表） 保存一下信息：摘要（默认勾选）科目（默认勾选）金额（默认不勾选）辅助核算（默认不勾选）

对话框footer部分提供保存与取消按钮，保存按钮点击后将会保存凭证页面维护的相应内容

[![img_v3_0213i_d9c06840-be0f-4270-af89-f45bf7de109g.jpg](https://wiki.wimoor.com/uploads/images/gallery/2026-07/scaled-1680-/img-v3-0213i-d9c06840-be0f-4270-af89-f45bf7de109g.jpg)](https://wiki.wimoor.com/uploads/images/gallery/2026-07/img-v3-0213i-d9c06840-be0f-4270-af89-f45bf7de109g.jpg)

模版类别提供编辑逻辑，可以在下拉框边上加入编辑图标，或者在下拉列表最下面加入新增按钮点击后弹出模版类别管理对话框

[![image.png](https://wiki.wimoor.com/uploads/images/gallery/2026-07/scaled-1680-/image.png)](https://wiki.wimoor.com/uploads/images/gallery/2026-07/image.png)

在模版类别管理对话可以新增，修改和删除模版类别。也可以选择某个模版类别，确定后下拉列表会自动选择对话框中选择的类别

[![image.png](https://wiki.wimoor.com/uploads/images/gallery/2026-07/scaled-1680-/u8Eimage.png)](https://wiki.wimoor.com/uploads/images/gallery/2026-07/u8Eimage.png)

## 数据库设计：

<div id="bkmrk-create-table-%60fin_vo">CREATE TABLE `fin_vouchers_template_type` (</div><div id="bkmrk-%60id%60-bigint%2820%29-unsi">`id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT 'ID',</div><div id="bkmrk-%60groupid%60-bigint%2820%29">`groupid` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '租户ID',</div><div id="bkmrk-%60name%60-varchar%2850%29-n">`name` VARCHAR(50) NULL DEFAULT NULL COMMENT '分类名称' COLLATE 'utf8mb4_bin',</div><div id="bkmrk-%60create_by%60-varchar%28">`create_by` VARCHAR(50) NULL DEFAULT NULL COMMENT '创建人名称' COLLATE 'utf8mb4_bin',</div><div id="bkmrk-%60modify_by%60-varchar%28">`modify_by` VARCHAR(50) NULL DEFAULT NULL COMMENT '修改人名称' COLLATE 'utf8mb4_bin',</div><div id="bkmrk-%60created_time%60-datet">`created_time` DATETIME NULL DEFAULT NULL COMMENT '创建时间',</div><div id="bkmrk-%60updated_time%60-datet">`updated_time` DATETIME NULL DEFAULT NULL COMMENT '修改时间'</div><div id="bkmrk-%29">)</div><div id="bkmrk-comment%3D%27%E5%87%AD%E8%AF%81%E6%A8%A1%E7%89%88%E5%88%86%E7%B1%BB%27">COMMENT='凭证模版分类'</div><div id="bkmrk-collate%3D%27utf8mb4_bin">COLLATE='utf8mb4_bin'</div><div id="bkmrk-engine%3Dinnodb">ENGINE=InnoDB</div><div id="bkmrk-%3B">;</div>后台controller应当在保存逻辑自动维护created\_time，updated\_time，modify\_by，create\_by

和修改时自动维护updated\_time，modify\_by

前端在保存时应当将当前的groupid维护上去，用户只需要维护对应的分类名称

<div id="bkmrk-create-table-%60fin_vo-1">CREATE TABLE `fin_vouchers_template` (</div><div id="bkmrk-%60id%60-bigint%2820%29-unsi-1">`id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT 'ID',</div><div id="bkmrk-%60groupid%60-bigint%2820%29-1">`groupid` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '租户ID',</div><div id="bkmrk-%60type_id%60-bigint%2820%29">`type_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '类型ID',</div><div id="bkmrk-%60name%60-varchar%2850%29-n-1">`name` VARCHAR(50) NULL DEFAULT NULL COMMENT '模版名称' COLLATE 'utf8mb4_bin',</div><div id="bkmrk-%60create_by%60-varchar%28-1">`create_by` VARCHAR(50) NULL DEFAULT NULL COMMENT '创建人名称' COLLATE 'utf8mb4_bin',</div><div id="bkmrk-%60modify_by%60-varchar%28-1">`modify_by` VARCHAR(50) NULL DEFAULT NULL COMMENT '修改人名称' COLLATE 'utf8mb4_bin',</div><div id="bkmrk-%60created_time%60-datet-1">`created_time` DATETIME NULL DEFAULT NULL COMMENT '创建时间',</div><div id="bkmrk-%60updated_time%60-datet-1">`updated_time` DATETIME NULL DEFAULT NULL COMMENT '修改时间'</div><div id="bkmrk-%29-1">)</div><div id="bkmrk-comment%3D%27%E5%87%AD%E8%AF%81%E6%A8%A1%E7%89%88%27">COMMENT='凭证模版'</div><div id="bkmrk-collate%3D%27utf8mb4_bin-1">COLLATE='utf8mb4_bin'</div><div id="bkmrk-engine%3Dinnodb-1">ENGINE=InnoDB</div><div id="bkmrk-%3B-1">;</div>用于存储凭证模版，type\_id存储新增模版对话框中的模版类型对应的ID，name是客户在新增模版对话框中的form中维护的input

页面上客户填写的内容存储到fin\_vouchers\_template\_entries中

<div id="bkmrk-create-table-%60fin_vo-2">CREATE TABLE `fin_vouchers_template_entries` (</div><div id="bkmrk-%60entry_id%60-bigint%2820">`entry_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '分录主键ID',</div><div id="bkmrk-%60groupid%60-bigint%2820%29-2">`groupid` BIGINT(20) UNSIGNED NOT NULL COMMENT '租户ID',</div><div id="bkmrk-%60template_id%60-bigint">`template_id` BIGINT(20) UNSIGNED NOT NULL COMMENT '关联的凭证模版ID',</div><div id="bkmrk-%60entry_no%60-int%2810%29-n">`entry_no` INT(10) NOT NULL COMMENT '分录序号',</div><div id="bkmrk-%60subject_id%60-bigint%28">`subject_id` BIGINT(20) UNSIGNED NOT NULL COMMENT '会计科目ID',</div><div id="bkmrk-%60summary%60-varchar%2820">`summary` VARCHAR(200) NULL DEFAULT NULL COMMENT '摘要说明' COLLATE 'utf8mb4_bin',</div><div id="bkmrk-%60debit_amount%60-decim">`debit_amount` DECIMAL(15,2) NULL DEFAULT '0.00' COMMENT '借方金额',</div><div id="bkmrk-%60credit_amount%60-deci">`credit_amount` DECIMAL(15,2) NULL DEFAULT '0.00' COMMENT '贷方金额',</div><div id="bkmrk-%60original_amount%60-de">`original_amount` DECIMAL(20,6) NULL DEFAULT NULL,</div><div id="bkmrk-%60currency%60-varchar%285">`currency` VARCHAR(5) NULL DEFAULT NULL COLLATE 'utf8mb4_bin',</div><div id="bkmrk-%60exchange_rate%60-deci">`exchange_rate` DECIMAL(20,6) NULL DEFAULT NULL,</div><div id="bkmrk-%60quantity%60-int%2810%29-n">`quantity` INT(10) NULL DEFAULT NULL,</div><div id="bkmrk-%60unit_price%60-decimal">`unit_price` DECIMAL(20,2) NULL DEFAULT NULL,</div><div id="bkmrk-%60created_time%60-datet-2">`created_time` DATETIME NULL DEFAULT NULL COMMENT '创建时间',</div><div id="bkmrk-primary-key-%28%60entry_">PRIMARY KEY (`entry_id`) USING BTREE,</div><div id="bkmrk-index-%60idx_voucher_e">INDEX `idx_voucher_entries_tenant_subject` (`groupid`, `subject_id`) USING BTREE COMMENT '租户分录科目索引',</div><div id="bkmrk-index-%60tenant_id%60-%28%60">INDEX `tenant_id` (`groupid`, `template_id`) USING BTREE,</div><div id="bkmrk-index-%60template_id%60-">INDEX `template_id` (`template_id`) USING BTREE</div><div id="bkmrk-%29-2">)</div><div id="bkmrk-comment%3D%27%E5%87%AD%E8%AF%81%E6%A8%A1%E7%89%88%E5%88%86%E5%BD%95%E6%98%8E%E7%BB%86%E8%A1%A8%EF%BC%8C%E5%AD%98">COMMENT='凭证模版分录明细表，存储凭证模版的每一笔分录信息'</div><div id="bkmrk-collate%3D%27utf8mb4_bin-2">COLLATE='utf8mb4_bin'</div><div id="bkmrk-engine%3Dinnodb-2">ENGINE=InnoDB</div><div id="bkmrk-auto_increment%3D12839">AUTO_INCREMENT=12839</div><div id="bkmrk-%3B-2">;</div><div id="bkmrk-%E6%B3%A8%E6%84%8F%E5%BF%85%E9%A1%BB%E6%8C%89%E7%85%A7%E5%AE%A2%E6%88%B7%E7%9A%84%E7%BB%B4%E6%8A%A4%E7%9A%84%E6%AC%A1%E5%BA%8F%E4%BF%9D%E5%AD%98entr">注意必须按照客户的维护的次序保存entry_no</div><div id="bkmrk-%E5%85%B6%E4%B8%AD%E5%A6%82%E6%9E%9C%E5%AE%A2%E6%88%B7%E7%BB%B4%E6%8A%A4%E4%BA%86%E8%BE%85%E5%8A%A9%E6%A0%B8%E7%AE%97%E7%B1%BB%E4%BA%BA%E4%B8%94%E5%9C%A8%E4%BF%9D%E5%AD%98%E6%97%B6">其中如果客户维护了辅助核算类人且在保存时勾选了辅助核算，应当将辅助核算保存在fin_vouchers_template_entries_auxiliary中</div><div id="bkmrk--4"></div><div id="bkmrk-create-table-%60fin_vo-3"><div>CREATE TABLE `fin_vouchers_template_entries_auxiliary` (</div><div>`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',</div><div>`entry_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '关联分录',</div><div>`auxiliary_type_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '核算类型：CUSTOMER, DEPARTMENT, PROJECT, SUPPLIER, EMPLOYEE',</div><div>`auxiliary_item_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '具体核算项的ID（对应客户主表、部门主表的ID）',</div><div>`groupid` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '租户ID',</div><div>PRIMARY KEY (`id`) USING BTREE,</div><div>UNIQUE INDEX `entry_id_assistant_type_code` (`entry_id`, `auxiliary_type_id`) USING BTREE</div><div>)</div><div>COLLATE='utf8mb4_bin'</div><div>ENGINE=InnoDB</div><div>AUTO_INCREMENT=5</div><div>;</div></div>## 文件位置

以上内容后台在wimoor-finance\\src\\main\\java\\com\\wimoor\\finance\\voucher

前段在wimoor-ui\\src\\views\\finance\\vouchers\_template

请帮我完成以上需求