轻易云
注册体验

销售退货-币别策略实战:吉客云到金蝶云星空的多币种字段映射

· 何金辉· 集成方案库· 5 次浏览· 约 4 分钟读完
吉客云金蝶云星空销售退货币别映射供应链集成轻易云

这个策略解决什么问题

某零售企业在多币种销售退货场景中,遇到一个很现实的财务痛点:吉客云的销售退货入库单已经传到金蝶云星空,但财务子表里的结算币别和汇率始终是空的,月末对账时金额对不上。问题就出在「基础销售退货同步」之外,缺一个专门补齐币别、汇率等财务字段的子策略。

我们用轻易云数据集成平台承接的「销售退货-币别」策略,正是为解决这个空白而设计的:它在已有的销售退货同步基础上,重点补充 SubHeadEntity 中的结算币别、汇率等字段,保证多币种退货业务在金蝶侧能准确核算。

数据流向与字段映射

数据流向是单向的:吉客云(销售退货入库单,inouttype=105)→ 轻易云 → 金蝶云星空(销售退货单 SAL_RETURNSTOCK)。

下面这张表只列与币别相关的关键字段,方便快速看清映射。

源字段(吉客云)目标字段(金蝶 SubHeadEntity)映射类型取值规则
chargeCurrencyCodeFSettleCurrId直接/转换优先取此字段
currencyCodeFSettleCurrId回退chargeCurrencyCode 为空时取此
currencyCodeFCURRENCYID直接交易币别
localExchangeRateExchangeRate直接本币折算汇率,优先使用
currencyRateExchangeRate回退localExchangeRate 为空时取此

主表其他字段如 goodsdocNo → FBillNo、companyCode → FSaleOrgId / FStockOrgId、inOutDate → FDate 沿用基础策略。退货客户 FRetcustId、关联单号 F_LSJC_Text、收货单号 F_LSJC_Text2 通过 _mongoQuery 从退换补货单数据源按 returnChangeNo = billNo 或 sourceBillNo 联查得到。

在轻易云上如何配置

在轻易云集成平台里,这个策略按「源 → 中间层 → 目标」三段搭建。

源端(吉客云)

  • API:erp.storage.goodsdocin.v2,POST 查询
  • 关键过滤:inouttype=105
  • 拉取字段除基础字段外,额外带出 currencyCode、currencyRate、localExchangeRate、chargeCurrencyCode 四个币别相关字段
  • 单据编号字段:goodsdocNo,幂等字段:recId,idCheck=true

中间层(轻易云)

  • 主表币别映射配置在 SubHeadEntity 节点,使用「优先取值 + 回退」的 CASE 表达式
  • 联查配置使用 _mongoQuery,语法上用 $or 兼容 billNo 与 sourceBillNo
  • 不写脚本,纯映射 + 联查即可

目标端(金蝶云星空)

  • API:batchSave,POST 执行
  • FormId:SAL_RETURNSTOCK,Operation:Save
  • IsVerifyBaseDataField=true(会校验币别编码是否存在于金蝶基础资料)
  • IsAutoSubmitAndAudit=false(保存后不自动提交审核)
  • InterationFlags=STK_InvCheckResult(允许负库存)
  • SubHeadEntity 当前配置为 null,需按本方案补全币别、汇率映射

实施步骤

我们建议客户分三个阶段上线,避免一次性铺开后对账困难。

阶段一:基础资料与币别档案先行 币别档案必须先于单据同步,否则 IsVerifyBaseDataField=true 会直接报错。物料档案(P3-057)、客户档案、组织档案同理。建议在轻易云里把这些基础资料同步策略作为依赖项检查清单。

阶段二:增量起点校准 源端按创建时间增量拉取,公式为 from_unixtime((LAST_SYNC_TIME - 18000), '%Y-%m-%d %H:%i:%s') 到 from_unixtime((CURRENT_TIME - 7200), '%Y-%m-%d %H:%i:%s')。前后各留 5 小时和 2 小时的窗口,是为了防止源端时间漂移导致漏单。第一次上线时,建议把 LAST_SYNC_TIME 手工回拨到一个明确的业务起点,再观察几轮。

阶段三:调度频率与全量补传 源端 crontab 40 */2 * * *(每 2 小时第 40 分),目标端 */20 * * * *(每 20 分钟)。频率错峰是稳妥做法——源端拉得慢一点,目标端执行得快一点,可以保证数据及时落库又不至于堆积。

如果客户上线初期数据缺失,可以用「全量触发」模式跑一次历史补传,再切回增量双轨。

踩坑复盘

  1. 币别档案没同步就先传单据。这是最典型的翻车点,IsVerifyBaseDataField=true 时金蝶直接拒收。稳妥的做法是把币别档案同步作为本策略的前置依赖。

  2. 汇率方向反了。金蝶汇率字段是「本币/原币」还是「原币/本币」,不同版本不一致。这里容易翻车,必须先在测试环境用一笔美元单据验证汇率换算结果,再上正式。

  3. billNo 为空导致联查失败。源端 billNo 可能为空,只查 billNo 会漏单。必须用 $or 同时匹配 sourceBillNo,我们在客户现场就遇到过一次。

  4. chargeCurrencyCode 与 currencyCode 都为空。极端情况下两个币别字段都空,此时不要硬抛错,可以配置默认币别(如人民币)兜底,再让财务补录。

  5. SubHeadEntity 忘记补全。基础销售退货策略里这个字段是 null,本策略必须补全,否则币别字段都进不了金蝶。这个问题隐蔽,第一次配置时容易忽略。

适用场景与不适用场景

适用:多币种销售退货业务、需要在金蝶侧按币别和汇率核算财务的场景、已有基础销售退货同步需补齐财务子表的集成。

不适用:单一币种(如纯人民币)业务、不需要金蝶核算币别汇率的场景、未先完成基础资料同步的前置环境。

本文为原创内容,转载请注明出处:https://www.qeasy.cloud/insights/solutions/strat-p2ea595-kingdee-cloud-3635-nd9b4d124-4ceacce0

评论