很多企业上ERP的第一感受是:怎么这么多张单?销售订单、销货单、出库单、发票登记,一张比一张像。第二感受是:这些单居然是通的,销售下单仓库就能看见,仓库发货财务自动记账。这篇文章就顺着一张销售订单在系统里的完整路径,把ERP底层的数据模型拆开讲清楚。不管你是准备选型的IT负责人,还是想用低代码平台自己搭应用的业务骨干,看懂这层,后面很多问题就不用问人了。
一、为什么ERP必须拆成一张一张单据
先回答最基础的问题:为什么不做一个大表,直接记录所有业务?答案很实际——业务是分岗位发生的,数据也得跟着岗位分。
1. 单据即岗位动作的快照
销售只管接单,仓库只管发货,财务只管收钱记账。每个岗位在系统里留下的那张单,就是他那个动作的完整快照:谁、什么时间、动了哪些货、数量多少、依据是什么。出了争议翻单据,比翻聊天记录靠谱得多。这也是为什么审计最喜欢 ERP——每笔账都能顺着单据链捋到原始动作。
2. 单据之间靠状态机衔接
一张销售订单从录入到完结,会经历待审核、已审核、部分出库、全部出库、已结清几个状态。状态只能按规则往前走,不能跳,更不能倒着来。想改已审核的订单?系统会要求你先反审核,而这个动作会被记录。所谓流程管控,本质就是这台风冷冰冰的状态机在替制度站岗。
3. 单据改格式容易,改逻辑要慎重
在低代码平台上给销货单加个“备注2”字段,几分钟的事。但要是想把“出库数量”改成允许超订单量出库,就要想清楚连锁反应:库存怎么扣、成本怎么算、报表口径变不变。字段是皮,单据间的钩稽关系才是骨头。
二、主数据:ERP里最值钱也最容易被忽视的一层
单据是流动的水,主数据就是河床。物料档案、客户档案、供应商档案、会计科目,这四类主数据的质量直接决定ERP能不能用起来。
1. 一物一码,说起来容易做起来难
同一种螺丝,采购叫“内六角M8”,仓库叫“螺丝8mm”,车间叫“标准件A”,三个名字三个编码,库存账永远对不上。主数据管理的第一原则就是一物一码,所有单据只认编码不认叫法。上线前统一编码这项工作枯燥,但省下的是以后每个月盘点的解释成本。
2. 主数据要独立建表,不能散在单据里
用低代码平台自建应用时最常见的错误,就是把客户信息直接写在订单表里。订单表里存客户名,客户改名就得改几百张单。正确做法是客户档案独立成主数据表,订单表只存一个关联引用。改一处,全局生效,这才是关系型数据库该有的样子。
3. 主数据该有审批和版本
编码规则、计量单位、默认税率,这些属性一变,历史单据的口径就跟着晃。成熟做法是给主数据变更加审批,重要属性保留变更历史。银行账户、开票资料这类信息,更得留痕。
三、表间关联:数据打通的技术真相
销售下单后仓库自动可见、发货后财务自动生成凭证,靠的不是什么魔法,是表间关联加自动传动。拆开看就三件事。
1. 引用关系:单据牵着主数据走
订单表通过物料编码关联物料主档,通过客户编码关联客户主档。查一张订单时,系统顺着引用把单价单位、收货地址带出来。引用关系建得好,报表就能任意维度切片:按客户、按物料、按业务员,随取随用。
2. 单据链:上下游靠关联字段串起来
销货单引用销售订单的行号,出库单又引用销货单,一环扣一环。这条链在系统里通常叫单据追溯:从财务凭证一键跳回原始订单,中间每一跳都有据可查。低代码平台做ERP模板时,单据链是预置好的,企业自己加单据类型时,记得把上下游引用关系也配全,不然断链的地方就是以后对不上账的地方。
3. 事务与并发:两个人同时发货怎么办
可用库存100个,两个仓库同时各出80个,超发了怎么办?数据库层面靠事务加锁解决:第一笔出库扣减提交前,第二笔读到的可用数已经是20,自然发不出去80。选自建应用时这一点必须验证——并发扣减不严的库存模块,账迟早出问题。
四、权限模型:不是能不能看,是该不该看
ERP的权限不只是登录口令,是一套“角色—数据—动作”的三层控制。很多企业上线后权限一刀切全开,用半年就乱。
1. 动作权限:谁能审核、谁能改价
录入、审核、删除、反审核,每种动作分开授权。核心原则是制单和审核分离——录单的人不能审自己录的单,这条在内控里是硬要求,系统里就该配死。
2. 数据权限:销售只看自己的客户
同样的销货单列表,华东区销售只看到华东客户,老板看到全部。实现方式是数据范围过滤:按部门、按人、按客户归属过滤。配置数据权限前先把客户归属规则定清楚,系统只是执行规则,不发明规则。
3. 字段权限:成本价不是人人可见
采购单价、成本价这类敏感字段,建议单独设可见范围。报价员看得见售价看不见成本,仓库看得见数量看不见金额——这类细节配置,直接决定各部门对系统的接受度。
五、凭证自动化:业务财务一体的最后一块拼图
业务单据怎么变成财务凭证?规则引擎按单据类型预置模板:销货单审核后,按收入科目规则生成借应收、贷收入的凭证草稿,财务复核后过账。这层做通了,月末财务就不用对着出库单一张张录凭证。要提醒的是,凭证模板里的科目取值规则(比如按存货类别对应不同收入科目)要在测试环境反复验证,科目串了,报表全是错的。
六、自建ERP应用的五个技术检查点
用低代码平台自己搭进销存或ERP模块,上线前过一遍这张清单,能避开八成的坑:
- 主数据是否全部独立建表,单据表里有没有混入本该建档的信息?
- 核心单据的上下游引用是否配全,能否从报表一路追溯到原始单据?
- 库存扣减是否走了事务控制,并发场景测过没有?
- 制单与审核是否分离,敏感字段有没有设可见范围?
- 凭证模板科目规则是否在测试环境跑通了一整个月的账?
数据模型这层东西,平时看不见,出事就是要命的事。选型时多问一句“你们的单据怎么关联、权限怎么控制”,比看十场演示都有用。
常见问题解答
- Q1Q1:什么是ERP里的主数据,和普通数据有什么区别?
- 主数据是物料、客户、供应商、科目这类被大量单据反复引用的基础档案,具有唯一性和长期稳定性。普通业务数据是每天产生的单据流水。主数据质量差,所有引用它的单据和报表都会跟着错。
- Q2Q2:低代码平台自建ERP应用,技术上可行吗?
- 可行,但要分层:表单、字段、审批流、报表这类适合低代码搭建;库存并发扣减、成本核算、凭证生成建议用平台预置的成熟模块,自建容易在事务控制和核算口径上出问题。
- Q3Q3:为什么ERP里同一笔业务要录好几种单据?
- 因为业务动作分岗位发生,单据是各岗位动作的留痕。销售订单记录成交约定,销货单记录实际发货,各自服务不同岗位的管控需要,并通过关联字段串成可追溯的单据链。
- Q4Q4:ERP权限怎么设置比较合理?
- 按角色配置动作权限(录入、审核、删除分开),按组织架构配置数据权限(各看各的),对成本价等敏感字段单独设置可见范围。核心原则是制单与审核分离,录单的人不能审自己的单。
- Q5Q5:业务单据怎么自动生成财务凭证?
- 通过凭证模板规则引擎:单据审核后按预设模板自动生成凭证草稿,科目取值规则可按存货类别、客户类别等条件配置,财务复核后过账。上线前务必在测试环境验证整月账务。