轻易云
注册体验

销售出库生成应收单:从旺店通到金蝶云星空的状态回写实战

· 尹春锐· 集成方案库· 318 次浏览· 约 5 分钟读完
旺店通金蝶云星空供应链集成销售出库生成应收单轻易云Qeasy联查回写

这个策略解决什么问题(场景与价值)

某零售企业在一次实际项目中遇到过这种情况:前端电商仓的出库流程跑在旺店通上,后台财务应收跑在金蝶云星空,两边都各自维护一套「销售出库单」。账面上单据是齐的,但下游应收单生成一直对不上——根本原因是金蝶那张出库单上,缺少「订单到底有没有真的完成」「发货时间是哪一刻」这两个关键标记,财务无从判断能否结应收。

我们用轻易云数据集成平台(Qeasy)承接的「销售出库生成应收单」策略,就是为了解决这一公里:它不新建单据,也不动明细,只把旺店通里 status=110(已完成)的出库单状态和发货时间,精准回写到金蝶已存在的销售出库单自定义字段上,为后续应收单生成提供状态依据。

数据流向与字段映射(源 → 中间层 → 目标)

本策略的数据流向是:旺店通·企业奇门 → 轻易云平台 → 金蝶云星空。中间层不承担业务计算,只负责时间窗增量、联查定位与字段改写。

环节字段目标字段映射类型转换规则业务说明
源(旺店通)stockout_no—取数键作为查询与联查关键字出库单号,跨系统唯一标识
中间层(轻易云)stockout_noFIDCOLLECTION_findCollection find FID from <集线器方案> where FBillNo={{stockout_no}}通过「查询金蝶销售出库单」策略的集线器数据,按单据号反查金蝶单据主键
目标(金蝶)trade_statusF_PBLH_ComboDIRECT{{trade_status}}旺店通出库单状态(5/10/…/110/113)
目标(金蝶)consign_timeF_PBLH_DateDIRECT{{consign_time}}发货时间,格式 yyyy-MM-dd HH:mm:ss

值得强调的是,本策略不涉及明细行(details_list / FEntity),只动主表的两枚自定义字段,这种「表头表体分阶段」的写法也是轻易云客户常见的应对模式——先把状态写准,再考虑后续是否扩展到行项目。

在轻易云上如何配置

在 Qeasy 上落地这条策略时,典型配置要点有四项:

第一,源端 API选 wdt.stockout.order.query.trade(POST,QUERY),增量时间窗用 {{LAST_SYNC_TIME|datetime}} 与 {{CURRENT_TIME|datetime}},status 固定传 110。这种「增量与全量双轨」的思路在我们做过的客户现场非常常见,平时跑增量、首日或异常窗口再补一次全量,可以兼顾时效与容错。

第二,目标端 FormId 用 SAL_OUTSTOCK(销售出库单业务对象),Operation 设为 Save,IsAutoSubmitAndAudit 保持 false,InterationFlags 取 STK_InvCheckResult,SubSystemId 填 21(供应链模块)。其中最关键的一行是 NeedUpDateFields,只声明 F_PBLH_Combo,F_PBLH_Date 两个字段,确保 Save 时只更新这两枚字段、不覆盖其他业务数据。

第三,联查配置写在目标端 FID 的 value 模板里,语法是 _findCollection find FID from <集线器方案ID> where FBillNo={{stockout_no}}。注意关键字之间是一个英文空格,多个 where 条件之间为 AND,条件格式 字段名={{源字段}} 中间不要有空格——这是联查语法最容易翻车的细节。

第四,编码映射集中管理:出库单号到金蝶 FID 的映射,完全交给 _findCollection 从集线器取,不在脚本里硬编码,也不在目标字段做拼接。这种做法的好处是后续如果联查方案调整,只改一处,所有依赖它的策略自动跟随。

实施步骤(分阶段调度)

我们建议把上线拆成三步走,稳一些:

第一步,确认前置依赖已落地。本策略强依赖两条上游:一是「销售出库单同步」(策略 C),要在金蝶里把销售出库单建出来;二是「查询金蝶销售出库单」(策略 F),要把金蝶单据落到轻易云集线器里供联查。任何一个没跑通,FID 都查不到,Save 就会失败。

第二步,配置增量起点。首次上线建议把 LAST_SYNC_TIME 设为「昨天 00:00:00」,先用一个小窗口(比如 1 天)做一次回放,核对 F_PBLH_Combo 与 F_PBLH_Date 是否如预期回写。

第三步,设定调度频率。参考配置:源端 1 8 * * *(每天 8:01 拉数),目标端 30 8 * * *(8:30 落库),两个 cron 之间留 30 分钟缓冲,留给上游策略和联查落库用。生产稳定后,也可以视单量收紧到 15 分钟级。

踩坑复盘

  • 联查语法空格:_findCollection 与 find 之间必须是一个英文空格,FBillNo={{stockout_no}} 等号两侧不能加空格,加了就查不到数据,排查时只看日志很容易误判成上游没同步。
  • NeedUpDateFields 没设或设错:如果不显式声明,金蝶 batchSave 默认会按全字段提交,可能误覆盖金蝶侧已有的业务字段,稳妥的做法是只列本策略真正要回写的字段。
  • status=110 写死带来的盲区:本策略只处理已完成订单,如果业务上还有「部分打款(105)」也要触发应收,需要把这个固定值改成变量,或者新增一条策略并行处理;典型错误是把 status 留空,导致所有状态的出库单都进来,污染数据。
  • IsAutoSubmitAndAudit=false 不能乱开:本策略只做状态回写,不希望自动提交审核把单据推到下游;一旦设成 true,等于把「应收单生成」的时机提前到了这一步,容易和财务节奏错位。
  • 集线器数据滞后:联查依赖「查询金蝶销售出库单」先落库,如果把目标端 cron 排得比策略 F 还早,会出现「明明上游跑完了,联查还是空」的假象,稳妥的做法是在依赖图里把执行顺序显式声明出来。

适用场景与不适用场景

适用:旺店通→金蝶云星空的私有化供应链集成,金蝶侧已有销售出库单,只需要把旺店通的完成状态与发货时间回写到自定义字段,用于驱动应收单生成等下游财务流程。

不适用:需要同步明细行(行项目、序列号、批号)的场景、需要新建金蝶销售出库单而非更新的场景、或者上游并非「已完成」而是任意状态的回写需求——这些都要单独设计策略。

本文为原创内容,转载请注明出处:https://www.qeasy.cloud/insights/solutions/strat-wdt-kingdee-cloud-4676-n5cef73bb-7ec48caf

评论