小满OKKICRM与金蝶云星空供应链集成方案设计
场景与价值
在以订单驱动的供应链业务中,CRM 与 ERP 的协同效率直接决定订单履约与财务对账的及时性。某户外用品企业在日常运营中,需要在 CRM 中维护客户、产品、销售订单,并由 ERP 负责物料主数据、出库执行、即时库存与收款记账。
两端系统天然存在主数据分散、单据状态不同步、库存与回款信息割裂等问题:CRM 创建订单后,需要在 ERP 中手工二次录入;ERP 完成出库后,CRM 侧的订单状态无法自动更新;收款单录入 ERP 后,CRM 中缺少对应的回款记录。
本文给出一套覆盖基础资料、销售订单、库存、财务回款的双向集成方案,共 8 个集成策略,其中 6 个数据同步策略、2 个仅查询策略。通过标准化的字段映射、显式的执行依赖与可配置的调度策略,把 CRM 与 ERP 的关键单据打通,使订单履约状态、库存与回款信息在两端一致。
集成架构与数据流
整体架构遵循「基础资料先行 → 订单核心 → 状态回写与财务」的三阶段执行模型。基础资料阶段并行执行物料、客户、产品的同步与查询;订单阶段把 CRM 的销售订单下发到 ERP;状态回写阶段把 ERP 的出库数量、收款单回写到 CRM,并同步即时库存。
┌─────────────────────┐ ┌─────────────────────┐
│ 小满OKKICRM │ │ 金蝶云星空 │
├─────────────────────┤ ├─────────────────────┤
│ 产品 ←──────────────│ 物料 │ BD_MATERIAL │
│ 客户 ──────────────→│ 客户 │ BD_Customer │
│ 销售订单 ──────────→│ 销售订单 │ SAL_SaleOrder │
│ 销售订单 ←──────────│ 出库状态 │ SAL_SaleOrder(FQty) │
│ 即时库存 ←──────────│ 即时库存 │ STK_Inventory │
│ 回款单 ←────────────│ 收款单 │ AR_RECEIVEBILL │
└─────────────────────┘ └─────────────────────┘
↑ ↑
└──────────── 仅查询(支撑联查) ────────────┘
执行依赖如下:
- 基础资料先行:物料→产品、客户→客户 需先于订单、库存、财务执行,为后续单据提供主数据。
- 销售订单核心:CRM→ERP 销售订单下发后,才能在出库状态更新、收款单联查时形成 order_no / order_id 对照关系。
- 联查依赖:即时库存、出库状态、收款单都依赖通过业务键的跨系统联查,确保编码映射在同步时已经建立。
接口清单
| 序号 | 源平台 | 目标平台 | 数据对象 | 同步方向 | 类型 |
|---|---|---|---|---|---|
| 1 | 金蝶云星空 | 小满OKKICRM | 物料→产品 | ERP→CRM | SYNC |
| 2 | 小满OKKICRM | 金蝶云星空 | 客户→客户 | CRM→ERP | SYNC |
| 3 | 小满OKKICRM | 金蝶云星空 | 销售订单 | CRM→ERP | SYNC |
| 4 | 金蝶云星空 | 小满OKKICRM | 销售订单出库状态 | ERP→CRM | SYNC |
| 5 | 金蝶云星空 | — | 销售出库单 | ERP→平台 | QUERY |
| 6 | 金蝶云星空 | 小满OKKICRM | 即时库存 | ERP→CRM | SYNC |
| 7 | 小满OKKICRM | — | 产品 | CRM→平台 | QUERY |
| 8 | 金蝶云星空 | 小满OKKICRM | 收款单→回款单 | ERP→CRM | SYNC |
实施要点
字段映射原则。所有策略均以业务键作为主对照:物料/产品用 FNumber ↔ product_no,客户用 serial_id ↔ FNumber,销售订单用 order_no ↔ FBillNo,回款单用销售订单扩展字段关联 order_id 与 company_id。常量字段(组织、分组、仓库、单据类型)统一通过「按业务配置」占位符管理,实施时按租户实际情况替换。
销售订单下发。主表将 order_no / account_date / company.serial_id / remark / company_address / customer_name / customer_phone 直接映射到金蝶的 FBillNo / FDate / FCustId / FNote / FReceiveAddress / FLinkMan / FLinkPhone,单据类型固定为 XSDD13_SYS。明细行通过 product_list[] 数组整体映射,把 product_no → FMaterialId、quantity → FQty、price → FPrice、amount → FAmount。IsAutoSubmitAndAudit=true 触发金蝶自动提交与审核。
出库状态更新。从金蝶销售订单读取 FQty 与 FStockOutQty,按状态枚举回写:FStockOutQty=0 → 未出库、0 < FStockOutQty < FQty → 部分出库、FStockOutQty ≥ FQty → 全部出库。过滤条件为 FApproveDate 近 5 小时、FBillTypeID=XSDD13_SYS,并排除 FBillNo LIKE '%XSDD%' 的内嵌单据。该策略依赖【仅查询】金蝶出库单提供的 FSoorDerno 作为订单号联查入口。
即时库存。通过 FMaterialId_FNumber → product_id 的联查把金蝶物料转换为 CRM 产品 ID,把 FBaseQty 写入 real_count / enable_count。过滤依赖 FStockId.FNumber 与 FUpdateTime>=LAST_SYNC_TIME。
收款单→回款单。关键点在于金额字段:amount = FRECAMOUNTFOR + FHANDLINGCHARGEFOR + FSETTLEDISTAMOUNTFOR、real_amount = FREALRECAMOUNTFOR + FHANDLINGCHARGEFOR + FSETTLEDISTAMOUNTFOR,必须做数值相加而非字符串拼接。销售订单号通过扩展字段 F_UJOP_Text_re5 提取,并通过 _findCollection 联查到 CRM 的 order_id 与 company_id。前置条件是该销售订单已在 CRM→ERP 同步中存在。
编码映射维护。物料编码在同步时自动建立;客户分组、币别、销售员、销售模式、业务模式、销售渠道需要在客户同步前预维护映射表,缺失则不重试并人工维护。
最佳实践
异常处理。网络超时采用指数退避(30s/60s/120s,最多 3 次);目标系统 5xx 重试 2–3 次,间隔 60s;4xx 业务校验不重试,记录失败日志并告警;编码映射缺失同样不重试。重试耗尽后写入死信队列,同时在失败记录表中保留源主键、目标主键、错误码、时间戳。幂等控制以 order_no / FBillNo / product_no 等业务键为准,避免重复写入。
告警阈值。同步失败率超过 5%、单策略连续失败 ≥3 次、关键字段联查为空、增量延迟超过 2 个调度周期,均触发即时通知。
调度频率。基础资料(物料、客户、产品查询)建议每 5 分钟,业务单据(销售订单、收款单)每 5–10 分钟,出库状态每 10 分钟,即时库存每 30 分钟。所有调度集中在业务时段(7:00–22:00),减小对源系统的压力。
执行顺序。阶段 1 并行执行物料→产品、客户→客户、产品查询;阶段 2 执行销售订单下发;阶段 3 串行执行出库状态更新、出库单查询、收款单→回款单、即时库存。
全量与增量。生产环境默认增量,通过 LAST_SYNC_TIME / FApproveDate / FUpdateTime 等时间字段控制;物料、客户、产品支持全量(去掉时间过滤或使用足够早的起始时间),建议在非业务时段执行。
隐私与安全。方案文档不含真实客户名称、API Key、组织编码、仓库 ID 等敏感信息,所有可配置项均以占位符形式给出,实施时由项目方按租户实际值替换。