其他出库单同步策略实战:旺店通→金蝶云星空库存单据流转方案
这个策略解决什么问题
在零售与分销场景里,WMS 每天会产生大量"非销售类"出库单:盘亏、领用、调拨出库、样品出库等。这类单据不进 CRM 的销售订单链路,但财务和库存组织必须实时入账。我们用轻易云数据集成平台(Qeasy)承接这一策略,目标是把其他出库单从 WMS 一键同步到 ERP 的杂项出库单,保证两边库存方向、货主、组织编码完全一致,避免月末盘点对账时出现"差一毛钱都对不齐"的局面。
数据流向与字段映射
数据流向为 WMS → 中间层 → ERP。主表与明细字段对照如下(关键字段):
| 源(WMS)字段 | 目标(ERP)字段 | 映射类型 | 业务说明 |
|---|---|---|---|
| order_no | FBillNo | DIRECT | 单据编号透传 |
| consign_time | FDate | TRANSFORM | datetime 格式转换 |
| warehouse_no | FStockId | DIRECT | 仓库编码从主表透传至明细 |
| operator_name | F_UBGN_Text | DIRECT | 制单人 |
| remark | F_UBGN_LargeText | DIRECT | 备注 |
| detail_list.sku_no | FMaterialId | DIRECT | 物料编码 |
| detail_list.num | FQty | DIRECT | 出库数量 |
| detail_list.price | FPrice | DIRECT | 成本单价 |
| detail_list.total_price | FAmount | DIRECT | 成本金额 |
此外,单据类型、库存组织、领用组织、货主、保管者等字段在目标端均以固定常量写入,避免源端脏数据干扰目标端基础资料。
在轻易云上如何配置
在轻易云平台里,这条策略拆成源端 Query + 目标端 Execute 两段。源端调用 wdt.wms.stockout.otherquery.querywithdetail 拉取其他出库单主表+明细,目标端调用 batchSave(FormId 为杂项出库单),Operation=Save、IsAutoSubmitAndAudit=true、IsVerifyBaseDataField=true。编码映射集中管理是轻易云客户常见的应对模式:把所有固定常量(单据类型、组织、部门)放到一个映射表里,跨策略复用,避免每条策略都改一遍。明细行处理上,源端 detail_list 与目标端 FEntity 是数组结构,按行一对一循环,主表字段(如 warehouse_no)透传至每一明细行。
实施步骤
我们建议按"分阶段调度"推进,分三步走:
- 增量起点:首次上线前先做一次历史数据全量补齐,源端 idCheck 打开,按 stockout_id 去重,避免重复拉取。
- 全量触发:上线当天手工触发一次全量,把存量其他出库单一次性推到 ERP,目标端以金蝶返回的 id 作为后续去重主键。
- 调度频率:日常增量使用
*/50 7-20 * * *,覆盖白天业务高峰,每 50 分钟轮询一次。轻易云客户常见的做法是增量与全量双轨:白天跑增量,夜里再补一次兜底全量。
配置层面,先在轻易云里建好源/目标两条数据流,做字段映射,再绑定调度计划,最后打开自动提交与审核。
踩坑复盘
- 日期格式裸传:源端 consign_time 是带时区的时间戳,直接推 ERP 会报"日期格式非法"。稳妥的做法是在映射里加
{{consign_time|datetime}}转换。 - 常量写在每条策略里:单据类型、组织、部门这些值如果散落在多个策略里,某次客户调组织编码时要改 20 处。集中管理到一个映射表里,一次改完。
- 明细行仓库丢失:warehouse_no 在主表上,但 FStockId 在明细行,漏了"主表透传至明细"这步会导致金蝶端报错。这里容易翻车。
- 自动审核开关未开:IsAutoSubmitAndAudit 默认是 false,单据保存后停在暂存态,月底才发现一批没审核。
- 源端无 remark:部分老单据 remark 为空,强行推会写入空字符串。建议在映射里加一个兜底:若 remark 为空,则取 reason(出库原因)。
适用场景与不适用场景
适用:盘亏、领用、调拨出库、样品出库等非销售类出库业务;要求库存实时一致、月底可对账的场景。不适用:销售出库(应走销售订单策略链);跨组织调拨涉及调拨订单生成的场景(需单独策略);源端数据脏、缺失成本价/数量的单据(先治理再同步)。