华为没有像 SAP 那样公开“MetaERP 采购模块白皮书”,所以下面这套分析是基于华为 MetaERP 公开架构表述 + 高端 ERP 采购到付款(P2P / Procure-to-Pay)通用范式 + 华为“阳光采购 / 业财一体 / 元数据驱动”实践反推出来的工程化解读,适合架构师、ERP 实施顾问、财务共享/采购数字化负责人看。
一、设计哲学:不是“把 SAP 抄一遍”,而是“对象 + 元数据 + 业财实时闭环”
MetaERP 采购模块的底色可以概括成 5 句话:
1. 业务对象优先,而不是表单/报表优先
传统 ERP:PO_HEADERS / PO_LINES / AP_INVOICES 是物理表。
MetaERP:先有“采购申请、采购订单、收货、发票、付款、供应商、合同”这些业务对象,字段、关系、状态、规则都由元数据描述。
物理表是元数据的投影,不是真理源。
2. 流程刚性化 + 配置柔性化
- 合规控制点硬控:无预算不采购、未比价不定点、三单不匹配不付款、权责不分离不让过。
- 业务流程可配:国家、子公司、品类、金额、项目类型通过元数据/低代码改,不碰核心代码。
3. 业财一体:业务一动,凭证就生
SAP/Oracle 老架构常是“业务先存,批处理过账”。
MetaERP 的哲学是:交易即会计事件。
收货 → 发事件 → 规则引擎 → 暂估凭证;
发票匹配 → 发事件 → 规则引擎 → 冲暂估+确认应付。
月结不是“算账”,而是“把没跑完的事件跑完”。
4. 阳光采购:防舞弊优先于“好用”
华为采购模块不是单纯提效工具,而是内控系统:
- 需求、寻源、定标、合同、收货、付款角色分离
- 三家比价 / 最低差异率 / 关联交易识别 / 供应商黑名单
- 全节点留痕、版本化、可审计
5. 全球一本账,但本地可变形
单套系统:
- 多法人、多币种、多准则(CAS / IFRS / 本地 GAAP)
- 170+ 国家税则、关税、VAT、转移定价规则元数据注入
- 区域合规包不靠打补丁,靠租户级元数据
二、总体架构:采购域不是单模块,而是“领域服务簇”
MetaERP 里采购相关服务大致这样切:
SRM / 寻源域 供应商主数据、准入、资质、绩效、招投标、询价、合同 采购执行域 PR、RFQ、PO、一揽子协议、释放单、变更单 仓储质检域 GR、IQC、退换货、批次/序列号、库存价值 财务应付域 GR/IR 暂估、发票匹配、AP、预付、留抵、进项税 资金域 付款申请、付款池、银企直连、核销 主数据/规则域 物料、组织、项目/WBS、成本中心、会计科目、容差、审批矩阵 事件总线 Domain Event:PO_APPROVED / GOODS_RECEIVED / INVOICE_MATCHED关键区别:
- 传统 ERP:PO 和 AP 在同一库、同一事务、靠触发器。
- MetaERP:每个域独立库 + 本地事务 + 事件驱动 + Saga 补偿。
三、核心实现逻辑
1. 元数据驱动对象模型
采购订单在元数据层大概是这样:
Object: PurchaseOrder fields: po_no, vendor_id, org_id, currency, term, tax_included... lines: item_id, qty, price, project_id, cost_center, budget_account states: DRAFT → SUBMITTED → APPROVED → SENT → PARTIAL_RECEIPT → CLOSED rules: price <= contract_price, qty <= pr_qty, budget_ok flows: submit → approve → publish → receive → invoice → pay acl: buyer create, manager approve, finance view, auditor trace改流程 = 改元数据;
加字段 = 元数据加属性;
加国家规则 = 租户元数据包。
2. 状态机代替“自由修改”
PR / PO / GR / Invoice 都不是随便改的,而是状态机:
PR: 创建 → 预算占用 → 审批 → 转 PO → 关闭 PO: 起草 → 审批 → 下发供应商 → 部分收货 → 全部收货 → 发票结清 → 关闭 GR: 到货 → 质检 → 合格入库 / 不合格退货 IV: 收票 → 匹配 → 容差检查 → 冻结/通过 → 应付确认 AP: 到期 → 付款建议 → 资金审批 → 支付 → 核销任何“回退”都是新事件,不是 UPDATE 原行。
3. 三单/四单匹配是内控引擎,不是查询语句
- 2-way:PO ↔ 发票(费用/服务)
- 3-way:PO ↔ GR ↔ 发票(物料)
- 4-way:PO ↔ GR ↔ 质检 ↔ 发票(高合规行业)
匹配维度:
- 数量:发票量 ≤ 收货量 ≤ 订单量
- 单价:在容差内(如 ±5%)
- 金额:不含税额、税额、含税额
- 税:税种、税率、进项税合规
- 维度:项目、WBS、成本中心、库存地点
不匹配 → 自动 Hold → 不付款 → 走差异处理流。
4. GR/IR 暂估:权责发生制原生实现
货到票未到:
借:原材料 / 库存商品 / 费用(按标准价或暂估价) 借/贷:采购价格差异 贷:应付账款-暂估(GR/IR)票到:
借:应付账款-暂估 借:应交税费-应交增值税(进项税额) 贷:应付账款-供应商 借/贷:价格差异(超容差)月结时 GR/IR 应趋近 0;没清零 = 有“票未到 / 货未到 / 价格争议”。
5. 预算承诺控制(Commitment Accounting)
- PR 保存:占用预算(Reserve)
- PO 审批:承诺负债(Encumbrance)
- GR:承诺转存货/费用
- IV:承诺释放,确认应付
- 取消/关闭:自动释放
“无预算不采购”不是审批人脑子记,是对象保存时就被规则引擎拦掉。
6. 事件驱动业财记账
伪代码:
on GOODS_RECEIVED: inventoryService.updateStock() accountingRuleService.eval("GR_ACCRUAL") eventBus.publish("INVENTORY_CHANGED") on INVOICE_MATCHED: accrualService.reverseGRIR() apService.createLiability() taxService.bookInputVAT() on PAYMENT_EXECUTED: apService.settle() cashService.decrease() reconciliationService.matchOpenItems()没有“晚上跑批过账”,只有“事件有没有消费成功”。
四、操作流程:P2P 端到端
阶段 1:采购申请 PR
- 需求部门按项目 / 成本中心 / 物料创建 PR
- 系统带出预算科目、项目维度、历史价
- 预算校验:超预算直接拒
- 审批矩阵:金额 / 品类 / 资本性支出 / 费用类分路由
- 通过后形成“采购承诺”
控制点:需求人和采购执行人不能是同一人。
阶段 2:寻源 & 供应商选定
- 标准物料:目录采购 / 框架协议释放
- 非标 / 大额:RFQ、招投标、比价
- 系统强制:
- 三家比价
- 最小差异率
- 供应商准入状态有效
- 无法律纠纷 / 资质不过期
- 定标建议由系统给加权分(历史交期、质量、价格偏离、关联风险)
阳光采购核心:寻源过程版本化,事后不能改原报价。
阶段 3:采购订单 PO
- PR → PO 行级转化
- 带出:供应商、价格、税、付款条件、交货地点、项目/WBS
- 关联框架合同 / 价格协议
- 容差:数量容差、价格容差、交货日期容差
- PO 审批后电子下发
PO 审批通过 ≠ 记账,但会:
- 占预算承诺
- 锁合同价
- 生成履约义务
阶段 4:发货 & 收货 GR
供应商发货 → 到货单 → 质检:
- 合格:一步式收货入库
- 不合格:退货 / 换货 / 让步接收(需授权)
- 超收:超容差冻结,采购特批
- 短收:按实收数量入库,PO 行部分完成
系统动作:
- 库存数量更新
- 库存价值更新
- 实时生成暂估凭证
- 发布 INVENTORY_CHANGED 事件
阶段 5:发票校验 IV
- OCR / 海关 / 税务平台 / 手工录入发票
- 三单匹配
- 税码、进项税、跨境税、转移定价检查
- 容差内:自动过账
- 容差外:冻结付款,采购/财务/税务三方处理
过账后:
- 冲 GR/IR 暂估
- 确认应付账款
- 登记进项税
- 发票状态:已匹配 / 部分匹配 / 冻结 / 红冲
阶段 6:付款 & 核销 AP
- 按付款条款(月结30 / 预付 / 分期)生成付款建议
- 资金计划校验:账户余额、外汇额度、税务合规
- 付款审批:重复支付检查、超付检查
- 银企直连 / 票据 / 跨境支付
- 自动核销 Open Item
- 对账单、账龄、供应商往来更新
五、和 SAP / Oracle EBS 的本质差异
维度 | SAP ECC/S4 | Oracle EBS | MetaERP |
|---|---|---|---|
架构 | 单体/HANA 内存化 | 多表+PLSQL 引擎 | 云原生微服务+事件总线 |
建模 | 事务码/配置/ABAP | 表+弹性域+并发程序 | 业务对象+元数据 |
记账 | 文档过账/部分实时 | 触发器+批处理 | 事件驱动实时会计 |
扩展 | 增强/Note/ABAP | 客制化表单 | 元数据低代码 |
合规 | 本地化包极深 | 多组织强 | 多租户元数据注入 |
采购哲学 | 最佳实践固化 | 配置弹性 | 阳光采购+防舞弊+全球实时 |
MetaERP 不是“SAP 替代品”,而是:
把 ERP 从“流程系统”重做成“业务对象 + 规则引擎 + 实时会计平台”。
六、华为式采购模块最值得学的 4 点
- 采购首先是内控系统,不是省钱系统
- 元数据驱动,让 170 国/200 法人不用 200 套代码
- 业务事件即会计事件,月结从“算”变成“收尾”
- 寻源—订单—收货—发票—付款全链路不可回改,只能补偿