企业级 ERP / SaaS 财务模块统一命名规范设计与实践

------ 从 AR / AP / GL 出发,构建可长期演进的财务系统

一、为什么"命名规范"在财务系统中是生死级问题?

在业务系统中,最容易被低估、但最终代价最高的设计问题之一,就是命名

而在财务系统中,这个问题的严重程度被放大了 10 倍以上。

常见问题包括:

  • 同一个"应收",有人叫:ysreceivableshoukuanar

  • 同一个"总账凭证",有人叫:voucher,有人叫 journal

  • 同一套业务,在 数据库、接口、代码层命名完全不一致

在系统规模较小时,这些问题"看起来还能忍";

当系统进入 多团队协作、多微服务、多租户、对接外部财务系统阶段,命名混乱会直接导致:

  • 财务口径无法统一

  • 新人理解成本极高

  • 接口对接错误频发

  • 数据仓库指标口径混乱

  • 审计、合规成本激增

结论只有一句:
👉 财务系统的命名规范,不是代码风格问题,而是"财务一致性与系统可持续性"的基础设施。


二、全球通用的财务命名体系:AR / AP / GL

企业级系统不采用拼音、不采用中式缩写,而是统一遵循国际会计标准(IFRS / GAAP):

模块 英文全称 国际标准缩写 中文
应收账款 Accounts Receivable AR 应收
应付账款 Accounts Payable AP 应付
总账 General Ledger GL 总账
资金管理 Cash Management CM 资金
固定资产 Fixed Assets FA 固定资产
成本核算 Cost Accounting CA 成本
税务管理 Tax Management TAX 税务
预算管理 Budget Control BC 预算

这些缩写不仅存在于 SAP、Oracle、用友、金蝶中,也存在于绝大多数银行、财务 SaaS、数据仓库模型中

✅ 这不是"个人偏好",而是行业共识


三、统一命名的设计原则(架构级约束)

一套合格的财务命名规范,必须满足以下四条铁律:

1️⃣ 模块前缀强制统一

  • 所有应收相关表 → 必须以 ar_ 开头

  • 所有应付相关表 → 必须以 ap_ 开头

  • 所有总账相关表 → 必须以 gl_ 开头

禁止出现:

  • ys_yf_cw_ 这类拼音

  • receive_payable_ 这类不统一英文


2️⃣ 数据库、API、代码三层同名

同一个对象,三层命名必须一致:

层级 示例
表名 ar_adjust_bill
API /api/ar/adjust/post
Java 类 ArAdjustBill

这可以保证:

  • 新人一眼能从接口定位到表

  • 架构设计具备"可读性"

  • 避免领域模型割裂


3️⃣ 财务数据禁止"语义不明的字段命名"

禁止:

  • status = 0 / 1 / 2

  • type = 1 / 2 / 3

必须:

status = NEW / APPROVED / POSTED / REVERSED adjust_type = PLUS / MINUS / WRITE_OFF

这是为审计、对账、回溯服务的基本要求


4️⃣ 命名必须为"长期可扩展"而设计

例如:

  • 不用 receipt1receipt2

  • 不用 bill_tmp

  • 不用 data_new

而应该是:

  • ar_receipt

  • ar_writeoff

  • ar_adjust_bill


四、AR(应收)模块命名规范示例

这是企业级系统中最核心的一组表:

业务含义 标准表名
应收台账 ar_account
应收单据 ar_bill
应收明细 ar_bill_detail
应收收款单 ar_receipt
应收核销单 ar_writeoff
应收调整单 ar_adjust_bill
应收调整明细 ar_adjust_detail
客户账龄 ar_aging
客户信用额度 ar_credit_limit

五、AP(应付)与 GL(总账)命名规范示例

AP(应付)

业务 表名
应付台账 ap_account
应付单据 ap_bill
应付付款单 ap_payment
应付核销单 ap_writeoff
应付调整单 ap_adjust_bill

GL(总账)

业务 表名
会计科目 gl_account_subject
会计凭证 gl_voucher
凭证明细 gl_voucher_entry
会计期间 gl_period
结账记录 gl_close_record

六、跨模块公共字段统一规范

所有财务单据,必须包含以下字段:

业务含义 统一字段
主键 id
租户 tenant_id
单号 bill_no
状态 status
创建人 creator
创建时间 create_time
审核人 approver
审核时间 approve_time
过账人 poster
过账时间 post_time

金额字段统一:

amount 本币金额 foreign_amount 外币金额 currency 币种


七、为什么"命名统一"是财务系统可扩展的基础?

当你的系统发展到以下阶段之一,命名规范会直接决定你能否继续演进:

  • 上线数据仓库(ODS / DWD / ADS)

  • 多账套并行

  • 对接外部财务系统(金蝶 / 用友 / SAP)

  • 做经营分析、资金预测、现金流模型

  • 通过审计、IPO、融资尽调

如果底层命名是:

ys_table、ys_data、cw_mx、cw_tmp

那么你后续的:

  • BI 报表

  • 财务分析

  • 资金预测

  • 税务申报

都会变成灾难级维护成本


八、架构级结论

✅ 财务系统的命名不是"技术洁癖",而是"业务长期安全性设计"。

✅ AR / AP / GL 不是习惯问题,而是"行业通用协议"。

✅ 命名一旦失控,系统规模越大,重构成本越趋近于"不可承受"。

相关推荐
往事随灬锋2 个月前
请教软件和业务问题,引发的思考
需求
胡子叔(本胡)6 个月前
招标方案撰写的博弈:需求、成本与边界的三重修行
边界·成本·需求·招投标
荣--1 年前
当开发人员接到新任务后
需求
Theodore_10221 年前
3 需求分析
java·开发语言·算法·java-ee·软件工程·需求分析·需求
网络研究院1 年前
网络战时代的端点安全演变
安全·端点·技能·需求·演变·网络战·时代
往事随灬锋1 年前
后端开发学习敏捷需求-->干系人分析与识别
需求
往事随灬锋1 年前
后端开发学习敏捷需求-->专题的目标与价值成效
需求
往事随灬锋1 年前
后端开发学习敏捷需求-->产品价值的定位
需求
我就吃最后一口2 年前
奇葩需求记录 各个系统取数据联表展示
数据库·纯折磨·奇葩·需求