【账簿】账簿管理
账簿管理模块,由 yudao-module-fms 后端模块的 ledger 包实现,前端实现在 @/views/fms/ledger 目录。
账簿是对当前账套初始余额和凭证分录的实时查询结果,不单独保存账簿业务表。明细账、总账、科目余额表、多栏账、核算项目账和数量金额账共八张账簿,共用同一套取数逻辑和会计期间。
- 取数来源:期初余额来自
fms_initial_balance,发生额来自fms_voucher和fms_voucher_entry,科目与辅助核算来自设置管理。 - 查询方式:八类账簿都由 FmsLedgerController 提供接口(
/fms/ledger),FmsLedgerService 按账套、期间、科目和辅助项目实时计算。 - 页面能力:查询结果支持 Excel 导出和浏览器打印;明细账、总账、科目余额表和多栏账支持按凭证字号或科目编码钻取。
本文涉及表如下图所示:
# 1. 取数来源
账簿没有独立的 fms_ledger 表,涉及的数据表如下:
| 表 | 关系与用途 |
|---|---|
fms_initial_balance | 按账套和科目保存期初金额、数量、本年累计和辅助余额,提供账簿的期初数 |
fms_voucher | 保存凭证日期、凭证字号、凭证期间、借贷合计和审核状态 |
fms_voucher_entry | 通过 voucher_id 关联凭证,保存摘要、科目、借贷金额、数量、单价及辅助项目 |
fms_subject | 保存科目树、余额方向、层级和数量核算标识 |
fms_assist_combination | 保存账套下科目与辅助项目的组合,核算项目账按它聚合 |
① 完整建表语句见 《【设置】币别、科目、辅助核算、初始余额》 和 《【凭证】凭证管理》,本篇不重复展开。
② 分录同时保留 subject_id、subject_code 和 subject_name。账簿按 subject_id 关联现行科目读取编码和名称,分录中的编码、名称快照主要用于凭证自身展示。
③ 账簿余额列的显示口径由财务参数的 ledger_balance_mode 决定,枚举 FmsLedgerBalanceModeEnum:
| 值 | 枚举 | 说明 |
|---|---|---|
1 | SAME_AS_SUBJECT | 与科目方向相同 |
2 | OPPOSITE_TO_SUBJECT | 与科目方向相反 |
余额方向本身由枚举 FmsBalanceDirectionEnum 表示:借、贷、平(余额为 0 时显示「平」)。
# 2. 管理后台
对应 [财务管理 -> 账簿管理] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/fms/ledger 目录。八张账簿共用 FmsLedgerSearchBar.vue 查询条、FmsLedgerMonthRangePicker.vue 期间选择器和 FmsLedgerPrintButton.vue 打印按钮。
# 2.1 明细账
对应 [财务管理 -> 账簿管理 -> 明细账] 菜单,对应 @/views/fms/ledger/detail 目录。页面先由 getDetailSubjectList 加载期间内有发生额的科目,再由 getDetailList 查询该科目的逐笔明细。点击凭证字号跳转到录凭证页面查看原始凭证。

# 2.2 总账
对应 [财务管理 -> 账簿管理 -> 总账] 菜单,对应 @/views/fms/ledger/general 目录。getGeneralList 按科目和期间汇总期初、本期发生额和期末余额,点击科目编码进入明细账。

# 2.3 科目余额表
对应 [财务管理 -> 账簿管理 -> 科目余额表] 菜单,对应 @/views/fms/ledger/subject-balance 目录。getSubjectBalanceList 返回树形结果,页面按科目树展示各级余额,点击科目进入明细账;导出时后端会先把树展平。

# 2.4 多栏账
对应 [财务管理 -> 账簿管理 -> 多栏账] 菜单,对应 @/views/fms/ledger/multi-column 目录。getMultiColumn 返回动态科目列和账簿行,把下级科目横向展开成栏;凭证字号同样可以钻取,导出使用动态表头。

# 2.5 核算项目明细账
对应 [财务管理 -> 账簿管理 -> 核算项目明细账] 菜单,对应 @/views/fms/ledger/auxiliary-detail 目录。页面使用 FmsAuxiliaryTypeSelect.vue 和 FmsAuxiliaryItemSelect.vue 选择辅助类别与项目,getAuxiliaryDetailList 按辅助项目、科目和期间查询逐笔明细。

# 2.6 核算项目余额表
对应 [财务管理 -> 账簿管理 -> 核算项目余额表] 菜单,对应 @/views/fms/ledger/auxiliary-balance 目录。getAuxiliaryBalanceList 按辅助项目汇总期初、发生额和期末余额,用于核对某个客户、供应商或项目的往来余额。

# 2.7 数量金额明细账
对应 [财务管理 -> 账簿管理 -> 数量金额明细账] 菜单,对应 @/views/fms/ledger/quantity-detail 目录。getQuantityDetailList 在明细账基础上增加数量、单价列。只有启用数量核算的科目才有数量和单价。

# 2.8 数量金额总账
对应 [财务管理 -> 账簿管理 -> 数量金额总账] 菜单,对应 @/views/fms/ledger/quantity-general 目录。getQuantityGeneralList 按科目树汇总数量和金额,导出时同样展平科目树。

# 2.9 打印
八张账簿的打印都由 FmsLedgerPrintButton.vue 打开 FmsPrintPreview.vue,在浏览器端渲染当前表格,不调用后端打印接口。

查询说明
账套未初始化或没有当前账套时,页面不发起查询。会计期间由 FmsLedgerMonthRangePicker.vue 选择,点击【重置】会回到账套的当前会计期间。
账簿是只读的,不提供新增、修改和删除;数据不对时应回到凭证或初始余额修正,账簿会在下一次查询时立即反映。