场景4 · 退货 Credit — Pentana vs 新POTD 对照(代码级验证版)

结论切换收益链路验证 角色映射流程对比退货类型专题 状态机关键差异差异矩阵 行动计划待决策
生成 2026-11-03(代码级验证版,跨系统修订) · 数据源:Pentana知识库 + 新POTD + 订单中台/履约中台 + 营销服中台(order-tool) + OTWB + GODP 代码考古 · 四场景对比第4份(末份)

执行摘要

退货 Credit 链路已通可切换(红冲业务分流/职责迁移需对齐)

核心结论(已跨系统代码级验证):经销商门店退货/贷记链路从退货建单到 SAP 红冲发票全链贯通,0个致命缺陷。新链路 RO 退货模块是完整实现(非桩)——退货单本体(逆向单 ReverseOrder)在订单中台,POTD 做门面+门店仓出库,SAP 推送(逆向销售单+红冲发票)在 order-tool,物流履约统一走 OTWB(与正向发运同接口,仅 DN-Return 202 vs DN-Sales 201)。RO 模块只覆盖门店(B2B)销售退货;子公司采购逆向是索赔、在 GODP 承接(godp-claim-part),与门店退货是两个独立域,不在本场景对照。

0
致命Gap 🔴
7
业务对齐/迁移项 🟡
10
链路节点已验证
6
涉及系统数
⚠️ 本场景三个重点(均需业务/财务对齐,非技术配置开关):
① 红冲要不要推 SAP,看正向发票开没开——正向发票已开→必然推 SAP 红冲冲抵;正向发票未开→走红冲以外的其他方式。Pentana 有此分流(已开票 OE216 对发票贷记+打印 credit note / 未开票 OE218 杂项贷记);iParts 代码当前无此分流(无论正向开票与否,只要已发货就统一推逆向销售单,红冲与否只看国家白名单不看正向发票)——这是需业务/财务对齐的设计差异,不是"GB 白名单 AU 在不在"的技术问题。
② 发票/红冲职责迁移:Pentana 自持 AR、自己开票(正向 OE212 + 逆向 OE216/OE217 credit note,内部 GL 闭环);iParts 无财务能力,发票/红冲全推 SAP。职责从 Pentana 内部迁到 SAP。
③ 退货库存链路是两段、跨系统、与正向一致:门店仓出库(POTD 本地)→ 履约中台生成 DN → 中台推 RDN 给 OTWB 待入库(DN-Return 202)→ OTWB 入库 → 回调履约中台。与正向发运推 OTWB(DN-Sales 201)同接口同模式。不是"不经 OTWB"。

一、切换收益:退货 Credit 链路的能力跃升

先看结论——切换后退货链路能带来哪些 Pentana 做不到的能力提升(均代码级可证);其后各节为得出此结论的过程证据。本节列本场景独有能力;推送失败补偿、CQRS、多品牌多租户等为全链路通用能力,不再单列。

退货物流统一走 OTWB
退货 RDN 推 OTWB 待入库,与正向销售发运、采购入库同一物流履约入口(同一 Wrapper、同一 GBOP 网关,仅 customOrinOrderType 201 DN-Sales → 202 DN-Return)。退货物流状态在 OTWB 统一可视、统一对账,不再散落在 AR 模块内部。
Pentana:退货回库在 OE217 释放时内部完成(贷 INAC),无独立物流履约层。
退货有独立审批闸门
退货审核 review 是关键闸门,有按钮权限控制(@BtnPermission);审核通过才出库+推 SAP,拒绝则取消库存占用。NSC 退货单不可取消、原单已关联 NSC 单不可再审批。
Pentana:OE217 释放是操作动作,无独立审批闸门;逾期可用 F13/F14 覆盖。
退货原因结构化枚举
退货原因 ReturnReasonEnum 结构化:30系统错误/40经销商下错单/50物流损坏/51故障件/52拒收损坏,便于数据分析与质量追溯。
Pentana:原因码 CRRC 参数维护,无结构化分类。
可退数量自动计算
按 SO 已签收数 - 已退/在退数自动算可退量(queryReturnableQtyBySo),防止超退。
Pentana:OE216 对发票退货靠系统校验不超发票值/量;OE218 杂项贷记无上限校验。
部分退货/仅退款灵活
退货处理方式两种:RETURN(退货退款)+ SCRAP(报废/仅退款);订单中台还有 ONLY_GOODS(仅退货)。SCRAP 自动出库(autoOutbound=true),RETURN 等出库。
Pentana:OE216 三类贷记明细(Quantity/Price/Tax),但无"仅退款不退货"的独立处理方式枚举。
NSC 退货单自动生成
原退货单审核选"退回直发供应商"时,自动生成 orderType=5 的 NSC 退货单 + 提交 + 锁原单,退货退款到 NSC/供应商的 B2B 逆向链路自动衔接。
Pentana:客户退货(OE216)与供应商贷据(AP203)是独立两条链,需手工衔接。

二、代码级链路验证(新链路侧,跨系统)

经销商门店退货/贷记端到端链路,每步标注实现系统 + 代码证据。✅ 全部已验证。重点标注跨系统归属(POTD / 订单中台 / 履约中台 / order-tool / OTWB / SAP)。

1
建退货单 [POTD门面 → 订单中台]
POTD /web/return(ReturnOrderController)→ 订单中台建逆向单 ReverseOrder(/msc-order-center/open-api/v2/reverse/create)。退货单本体在订单中台;关联原单 relationNo=正向SO配货单号、orderNo=正向订单号。退货原因 ReturnReasonEnum + 处理方式 HandlingMethodEnum(RETURN/SCRAP)。
POTD: ReturnOrderController:40 /web/return;ReturnOrderServiceImpl:101;RoOrderConstants:18-73;订单中台 reverse/create
2
提交 + 库存占用 [POTD本地]
提交(doSubmitRoOrder)→ 状态 TO_BE_SUBMITTED→UNDER_REVIEW;提交前建库存占用 createOccupancyForSoReturn(写 StockOccupancyRecord,门店仓)。
POTD: ReturnOrderServiceImpl.doSubmitRoOrder:1274;createOccupancyForSoReturn:1001;RoStatusEnum.UNDER_REVIEW(20)
3
审核(审批闸门) [POTD]
review 审核闸门(@BtnPermission NS_RO_REVIEW/RO_REVIEW)。通过→approved(推 bizevent);拒绝→取消库存占用 + businessStatus=REJECTED。
POTD: ReturnOrderController:90 @BtnPermission;ReturnOrderServiceImpl.review:1288;通过:1379-1381;拒绝取消占用:1366-1372;RoStatusEnum.APPROVED(25,26)
4
门店仓出库(POTD本地) [POTD本地仓库]
审核通过创建出库单 stockOutboundOrderGateway.createOutbound → ShipmentOutboundHandler → 门店仓 PartInventory 扣减、占用释放。autoOutbound:SCRAP=true(直接出库),RETURN=false(等出库)。BizTypeEnum.SHIPMENT。
POTD: ReturnOrderServiceImpl:1343-1349;ShipmentOutboundHandler:51;BaseOutbound.executeOutbound:765-815(fillPartInventory扣减);BizTypeEnum.SHIPMENT:55
5
出库确认 → 履约中台生成 DN [POTD → 履约中台]
出库确认(StockOutboundOrderServiceImpl.confirmOutbound,orderBizType==SHIPMENT)调中台 returnOrderService.doReviewRoOrder,履约中台生成逆向配货单(AllocateNote)+发运单(SendNote=DN),传退货链单号对。
POTD: StockOutboundOrderServiceImpl.confirmOutbound:237-261(doReviewRoOrder:244,注释"生成配货单和发运单");履约中台 performance-service
6
中台推 RDN 给 OTWB(待入库) [履约中台 → OTWB]
发运单 SUBMIT 事件触发 LocalReturnStatusEventPreProcessExtPt.preProcess → ReverseOtwbManager.sendSync 构建 RDN(customOrinOrderType=202 DN-Return,正向是 201 DN-Sales;customerInboundNo=sendNoteNo)→ POST /uis/rest/in/OmIntClearanceTaskBuffalo 经 GBOP 网关 otwb-gbop-gateway。与正向发运推 OTWB 同接口同 Wrapper,仅 201→202。
履约中台: ReverseOtwbManager.sendSync:139-161, buildReverseSendSyncDTO:190-338(customOrinOrderType=202:62,251);LocalReturnStatusEventPreProcessExtPt:48-71;OtwbRemoteWrapper.postOtwb:185-240;SendSyncOtwbDTO.reqUrl:24-27
7
OTWB 待入库 → 入库 → 回调履约中台 [OTWB → 履约中台]
OTWB 收 RDN 建待入库任务(ASN,状态 301001→301010),货到 NSC 实际入库(301020)。入库完成 OTWB 回调履约中台 OtwbEventInOutBoundExt.process(type=0 INTBOUND)→ inOutboundGateway.syncFromOtwb 把出入库流水同步回履约中台 → 发布 ReverseSendNoteSignedEvent 触发 RO2 虚拟入库级联。
履约中台: OtwbEventInOutBoundExt:89-161(回调路径/v1/bizevent/outer/sparePart/inOutBoundEvent/otwb:92);syncFromOtwb:138;ReverseSendNoteSignedEvent:153
8
推 SAP 逆向销售单 [order-tool → SAP]
order-tool 扩展点 ReverseOrderPushDataToSapExtPt → EM 实现 reverseOrderSyncSap。退货退款(GOODS_MONEY)推 ZBRE,仅退款(ONLY_MONEY)推 ZBCR。前置:正向必须有发货单 sendNoteNo 存在(已发货),不要求正向发票已开。
order-tool: ReverseOrderPushDataToSapEMExtPt.reverseOrderSyncSap:158;ZBRE:75,179/ZBCR:80,183;ReverseOrderPushDataToSapExtPt.loadData:182-194(sendNoteNo必填,不查发票)
9
推 SAP 红冲发票(以正向开票为前提,业务对齐) [order-tool → SAP]
推送逆向销售单成功后,若 正向发票已开 → 创建 InvoiceTask(bizSource=25)→ SparePartReverseSapInvoiceCreateCmdExe 推 SAP 红冲发票(INVCAT=TI,AUART=ZBRE/ZBCR),报文填原正向 TI 票号。正向发票未开 → 不应走红冲,走其他方式(业务/财务对齐决定)。⚠️ 当前代码无"正向开票与否"判断:红冲创建唯一条件是国家白名单(isRedInkCountry,默认 GB),不看正向发票,原票号留空时 SAP 仍接受——这是需业务/财务对齐的设计差异(见七)。
order-tool: ReverseOrderPushDataToSapEMExtPt.createRedInkInvoiceTask:199-201,716-730(isRedInkCountry);SparePartReverseSapInvoiceCreateCmdExe:164,284-287(查原TI票仅填字段),447-449(原票号留空SAP仍接受)
10
SAP 开票回传 → 已红冲 → 确认退款完成 [履约中台MQ → POTD → 订单中台]
SAP 红冲开票回传→履约发 FulfillmentStatusChangeMQ(bizId=2,type=2)→ POTD FulfillmentStatusChangeConsumer 推 bizevent redInked→ 订单中台状态机 CREDIT_INVOICE_ISSUED(45)→ confirmRefund→COMPLETED(100)。整链闭环。
POTD: FulfillmentStatusChangeConsumer:37,89,136-182;RoStatusEnum.CREDIT_INVOICE_ISSUED(45);ReturnOrderServiceImpl.confirmRefund:1494;RoStatusEnum.COMPLETED(100)
✅ 链路判定:退货 Credit 链路完整跨系统贯通——POTD门面→订单中台逆向单→POTD门店出库→履约中台DN→中台推RDN给OTWB待入库→OTWB入库回调履约中台→order-tool推SAP(逆向销售单ZBRE/ZBCR+红冲发票INVCAT=TI)→SAP开票回传→FulfillmentStatusChangeConsumer→确认退款完成。RO 模块完整实现,非桩;退货物流走 OTWB 与正向一致。
⚠️ 红冲业务分流缺口(需业务/财务对齐,非配置项):红冲要不要推 SAP 应看"正向发票开没开"。Pentana 有此分流(OE216 已开票 / OE218 未开票杂项);iParts 代码当前无此分支,红冲与否只看国家白名单(默认 GB)、不看正向发票。"GB 白名单"与澳洲无直接业务关系,它是 SAP 侧红冲报文接受的配置开关,不是业务分流判断依据。需业务/财务定义:正向未开票时 iParts 应走红冲(原票号留空)还是订单取消/其他方式。

三、角色 / 组织映射

Pentana 角色/对象新链路对应映射说明
经销商(退货方)退货单 relationNo=正向SO配货单号退货关联正向销售单;Pentana OE216 关联已开票发票
子公司(收退货方)POTD 门面 + 订单中台逆向单 + 履约中台 DN退货单本体在订单中台;DN 在履约中台
NSC/供应商(退货退款到)NSC 退货单(orderType=5,businessType=TOB=2)原单审核选"退回直发供应商"自动生成 NSC 单
退货入库仓(NSC)OTWB 待入库(RDN,DN-Return 202)→ 履约中台流水OTWB 是物流履约统一入口;Pentana OE216 Warehouse Goods Returned To(内部回库)
AR 贷记/红冲(发票职责)SAP 红冲发票(INVCAT=TI,order-tool 推)职责迁移:Pentana 自持 AR 开 credit note(OE217 打印)→ iParts 推 SAP 红冲
正向开票(发票职责)SAP 正向销售发票(order-tool 推 ZSDI_OTD_FPXX)职责迁移:Pentana 自开 OE212/OE225 → iParts 推 SAP(详见场景3)
📌 不在本场景对照:子公司/RDC 采购逆向索赔在 GODP 的 godp-claim-part 模块(RdcCiClaimController/SpCiClaimController),独立于 POTD/RO,与门店退货是两个域。Pentana OE216↔AP203 的 AR/AP 对称结构在门店退货场景不做映射(那是采购索赔域的事)。

四、端到端流程对比(Pentana C5 vs 新分布式链路)

步Pentana(C5 退货/贷记,单系统自持)新链路(跨系统,已验证)
0前置:已开票订单(状态≠A);原因码 CRRC;AR402客户前置:正向SO配货单(已签收/已发货 sendNoteNo);ReturnReasonEnum;可退量自动算。不要求正向发票已开
1OE216 录贷记单(ARPR056):选发票+退货仓+原因码;三类明细 Quantity/Price/TaxPOTD /web/return → 订单中台建逆向单;HandlingMethodEnum(RETURN/SCRAP)
2(无独立提交步,OE216 录完即待释放)提交→门店仓库存占用(StockOccupancyRecord);状态 UNDER_REVIEW
3OE217 释放(ARPR058):Accept+打印 credit note 或 reject;F13零库存/F14覆盖到期review 审批闸门(@BtnPermission);通过出库/拒绝取消占用
4(释放即回库,无独立出库步)门店仓出库(POTD本地 ShipmentOutboundHandler,门店仓 PartInventory 扣减)
5(单系统无中台/DN)出库确认→调履约中台生成逆向配货单(AllocateNote)+发运单(DN)
6(单系统无 OTWB)中台推 RDN 给 OTWB 待入库(DN-Return 202,同接口 DN-Sales 201)
7(单系统无 OTWB 回调)OTWB 入库→回调履约中台 syncFromOtwb 同步流水→ReverseSendNoteSignedEvent
8AR 贷记过账 + 打印 credit note(释放自动):贷 DBTR 减应收 + 退货量回库(贷 INAC);受损件核销借 IC418order-tool 推 SAP 逆向销售单(ZBRE退货退款/ZBCR仅退款)
9(credit note 是 Pentana 内部独立单据,内部 GL 闭环)正向已开票→order-tool 推 SAP 红冲发票(INVCAT=TI,填原票号);正向未开票→走红冲以外方式(业务对齐)。⚠️ 当前代码无此分支(只看国家白名单)
10GL AR 批(GL204/206):贷 DBTR/借收入反冲或 INAC 库存(内部 GL Interface)SAP 红冲回传→FulfillmentStatusChangeConsumer→CREDIT_INVOICE_ISSUED(45)→confirmRefund→COMPLETED(100);GL 全在 SAP 侧
altOE218 杂项贷记/经销商回购(无发票,不校验上限;option 5 Release to stock)SCRAP(仅退款,reverseOrderType=3)部分对应;无独立"经销商回购"类型。无 OE218 等价的"未开票杂项贷记"类型
✅ Pentana 关键事实(本次考古):C5=OE216(录贷记单)→OE217(释放+打印 credit note)→AR贷记过账;贷记单是对已开票订单的冲红(系统校验不超发票值/量),credit note 是独立单据会打印;OE217释放=贷DBTR减应收+退货量回库;正向未开票走 OE218 杂项贷记(另一方式);UAT阻塞根因=订单状态A未开票。

五、退货类型与红冲职责专题对照

退货类型/处理方式/原因码/红冲职责——Pentana 与新链路的模型差异与业务对齐点。

5.1 退货类型对照

Pentana 退货类型新链路 HandlingMethodEnum / ReverseOrderTypeEnum映射说明
OE216 对已开票订单退货(系统校验不超发票值/量)RETURN(退货退款,reverseOrderType=1=GOODS_MONEY)✅ 直接对应;都有数量+金额双向
OE216 Price/Tax 贷记(错价/错税,无库存移动)SCRAP(仅退款,reverseOrderType=3=ONLY_MONEY)部分对应⚠️ Price/Tax 贷记无库存;SCRAP 是报废仅退款。纯错价/错税(不退货只调金额)在新链路无独立类型
OE218 杂项贷记/经销商回购(无发票,不校验上限)无直接对应(SCRAP 部分对应仅退款)⚠️ 经销商回购(buy-back)在新链路无独立类型;OE218 option 5 "Accept Credit and Release to stock" 无对应
—ONLY_GOODS(仅退货,reverseOrderType=2,订单中台有,POTD 未暴露)新链路有仅退货类型,Pentana 无对应(退货必伴随贷记)
OE216 三类明细:Quantity(退货有库存)/Price(错价无库存)/Tax(错税无库存)HandlingMethodEnum 两类:RETURN/SCRAPPentana 三分(库存/价格/税)→ 新链路二分(退货退款/仅退款);错价/错税贷记的映射需确认

5.2 红冲职责对照(本场景核心,需业务/财务对齐)

红冲要不要推 SAP,看正向发票开没开 🟡 业务/财务对齐(非配置项)
Pentana(自持 AR,有分流):正向发票已开(Pentana 自己用 OE212 开)→ OE216 对发票贷记 + OE217 释放时打印 credit note(红冲票),受发票金额/数量上限约束;正向发票未开 → OE218 杂项贷记(无发票、不校验上限)。两套事务码、两套校验,业务自持判断。
iParts(无财务能力,当前无分流):代码完全没有"正向发票是否已开出"的判断分支。无论正向发票开没开,只要已发货(有 sendNoteNo),退货统一推逆向销售单 ZBRE/ZBCR;红冲与否只看国家白名单 isRedInkCountry(默认 GB),不看正向发票;原正向 TI 票号查不到就留空,代码注释明说"SAP 仍接受"。没有 OE218 等价的"未开票杂项贷记"类型。
对齐点:iParts 是否应像 Pentana 那样按正向发票开没开分流?正向未开票时该走红冲(原票号留空)还是订单取消/其他方式?当前代码无此分支,需业务/财务定义。"GB 白名单"是 SAP 侧红冲报文接受的配置开关,与澳洲无直接业务关系,不是业务分流判断依据。

5.3 发票/红冲职责迁移(横跨场景3+4)

发票职责从 Pentana 内部自持 → SAP 外部持有 🟢 职责迁移点(文档必讲)
Pentana 自持 AR、自己开票,内部 GL 闭环:正向发票 OE212 To Be Charged Run(批量开票)/OE225 跨仓发票打印/OE06 即开;逆向 credit note OE216→OE217 释放时打印(独立单据);AR 持应收→AR204 收款→GL Interface 内部总账。无任何 SAP/外部财务对接。经销商不能自助开票(开票在子公司侧)。
iParts 无任何财务能力:正向销售发票 order-tool 推 SAP ZSDI_OTD_FPXX;退货红冲 order-tool 推 SAP INVCAT=TI;AR/AP/收款/付款/GL 全在 SAP 侧。
迁移含义:发票/红冲职责从 Pentana 内部迁到 SAP。场景3 讲正向发票职责迁移,场景4 讲红冲职责迁移。培训/历史数据/对账都要跟着职责迁移走。

5.4 库存与 GL 对照(跨系统两段链路)

退货库存是两段跨系统链路,与正向发运一致 🟢 已验证一致(非"不经OTWB")
新链路两段:① 门店仓出库(POTD 本地 ShipmentOutboundHandler,门店仓 PartInventory 扣减、占用释放);② 回 NSC 入库——履约中台生成 DN → 中台推 RDN 给 OTWB 待入库(DN-Return 202) → OTWB 入库 → 回调履约中台 syncFromOtwb 同步流水。与正向发运推 OTWB(DN-Sales 201)同接口同 Wrapper,仅 201→202。OTWB 是物流履约统一入口。
Pentana:OE217 释放即回库(贷 INAC),单系统内部完成,无独立物流履约层。
需对账:POTD 本地门店仓 PartInventory 扣减(出库侧)已确认;NSC 入库侧库存最终归属(POTD PartInventory 是否直接增加 vs 履约中台流水汇聚)两个 agent 见到不同代码路径,需进一步对账确认。
GL 分录差异 🟢 SAP 承接
Pentana(内部 GL Interface):贷 DBTR 减应收,借方视类型(数量退货借 INAC 库存/核销借 IC418 费用;价格/税借收入反冲/税清算),内部总账闭环。新链路:SAP 红冲发票(INVCAT=TI)自动生成反向分录;GL 全在 SAP 侧闭环。

六、状态机对比

Pentana(C5 单系统,自持 AR)

OE216录贷记单(ARPR056) │ 选发票+退货仓+原因码 │ 三类明细: Quantity/Price/Tax │ ⚠️ 要求已开票订单(状态≠A) ▼ OE217释放(ARPR058) │ Accept+打印 credit note / reject │ F13零库存 / F14覆盖到期 ▼ AR 贷记过账 + 打印 credit note(释放自动) 贷 DBTR(减应收) 退货量回库(贷 INAC) 受损件核销(借 IC418) │ ▼ GL AR 批(GL204/206,内部 GL Interface) alt: 正向未开票 → OE218 杂项贷记(另一方式) 无发票/不校验上限/option5 Release to stock ⚠️ 无独立审批闸门 ⚠️ UAT: 订单状态A未开票→阻(走OE218) ✅ 有"正向开票与否"业务分流

新链路(订单中台逆向单 + 跨系统)

POTD /web/return(门面) │ → 订单中台建逆向单 ReverseOrder ▼ TO_BE_SUBMITTED(10) → 提交+门店仓库存占用 ▼ UNDER_REVIEW(20) │ review 审批闸门(@BtnPermission) ├ 通过: createOutbound + approved └ 拒绝: 取消占用 + REJECTED ▼ APPROVED(25,26) → 门店仓出库(POTD本地) │ → 履约中台生成 DN │ → 中台推 RDN 给 OTWB 待入库(202) │ → OTWB 入库回调履约中台 ▼ order-tool 推 SAP: ZBRE(退货退款)/ZBCR(仅退款) ✅ 红冲发票 INVCAT=TI ✅(正向已开票为前提) │ ▼ redInkApplying → 46 SAP开票回传 → FulfillmentStatusChangeConsumer ▼ redInked CREDIT_INVOICE_ISSUED(45) │ ▼ confirmRefund COMPLETED(100) ⚠️ 代码无"正向开票与否"分支 红冲只看国家白名单(默认GB),不看正向发票 → 需业务/财务对齐补分流 ⚠️ 状态机不感知正向发票,45照常到达
✅ 关键差异:Pentana 退货状态在单系统(OE216→OE217→AR),有"正向开票与否"分流(OE216/OE218);新链路状态机在订单中台(RoStatusEnum)+红冲回传驱动,不感知正向发票、无分流。Pentana 无独立审批闸门;新链路有 review 审批闸门(@BtnPermission)。

七、关键差异点解析

红冲业务分流:iParts 无"正向开票与否"判断 🟡 业务/财务对齐(本场景核心)
Pentana 有分流:正向已开票→OE216 对发票贷记+打印 credit note;正向未开票→OE218 杂项贷记(另一方式)。iParts 无分流:代码无"正向发票是否已开出"判断,红冲与否只看国家白名单(默认 GB)、不看正向发票,原票号留空 SAP 仍接受。对齐点:正向未开票时 iParts 应走红冲(原票号留空)还是订单取消/其他方式?当前代码无此分支,需业务/财务定义。"GB 白名单"不是业务分流判断依据(与澳洲无直接业务关系,是 SAP 侧红冲报文接受的配置开关)。
发票/红冲职责迁移:Pentana 自持 AR → iParts 推 SAP 🟢 职责迁移点
Pentana 自持 AR、自己开票(正向 OE212/OE225 + 逆向 OE216/OE217 credit note,内部 GL Interface 闭环,无外部财务对接);iParts 无财务能力,正向发票推 SAP ZSDI_OTD_FPXX、退货红冲推 SAP INVCAT=TI、AR/AP/收款/付款/GL 全在 SAP。职责从 Pentana 内部迁到 SAP。培训/历史数据/对账跟着职责迁移走。
退货库存两段跨系统,与正向一致 🟢 已验证(推翻"不经OTWB"误判)
门店仓出库(POTD 本地 ShipmentOutboundHandler 扣减门店仓 PartInventory)→ 履约中台生成 DN → 中台推 RDN 给 OTWB 待入库(DN-Return 202) → OTWB 入库 → 回调履约中台 syncFromOtwb。与正向发运推 OTWB(DN-Sales 201)同接口同 Wrapper,仅 201→202。OTWB 是物流履约统一入口。不是"不经 OTWB/库存模型不一致"——之前因只查 POTD 仓库、漏看履约中台而误判。需对账:NSC 入库侧库存最终归属(POTD PartInventory vs 履约中台流水)两 agent 见到不同路径。
错价/错税贷记无独立类型 🟡 映射
Pentana OE216 三类明细(Quantity/Price/Tax);新链路 HandlingMethodEnum 两类(RETURN/SCRAP)。纯错价/错税(不退货只调金额)在新链路无独立类型——疑似走 SCRAP 或发票调整。必做:确认错价/错税贷记的迁移路径。
经销商回购(buy-back)无对应 🟡 映射
Pentana OE218 杂项贷记支持经销商过剩库存回购(option 5 Accept Credit and Release to stock);新链路无独立"经销商回购"类型。必做:确认回购业务在新链路的承接方式。
UAT 阻塞解除 🟢 收益
Pentana UAT C5 全链被阻(订单状态 A 未开票,OE216 要求已开票订单);新链路退货关联正向 SO 配货单(已发货 sendNoteNo)即可,不要求正向发票已开。
审批闸门 🟢 收益
Pentana OE217 释放无独立审批闸门(操作动作);新链路 review 审批闸门(@BtnPermission),通过才出库+推 SAP,拒绝取消占用。

八、10维度差异全景

🟢已验证对齐 / 🟡业务对齐/迁移/待确认 / 🔴缺失(本次:0)

维度评级核心差异
1 触发与前置主数据🟢正向SO已发货(sendNoteNo)即可退货,不要求正向发票已开;ReturnReasonEnum 结构化;可退量自动算;Pentana 需已开票订单+CRRC
2 单据创建🟢POTD门面→订单中台逆向单已验证;关联 relationNo/orderNo;HandlingMethodEnum(RETURN/SCRAP)
3 审批流🟢有审批闸门(review @BtnPermission);Pentana OE217 释放无独立闸门
4 状态机🟡订单中台 RoStatusEnum;不感知正向发票、无"开票与否"分流(Pentana 有 OE216/OE218 分流);红冲回传驱动
5 库存动作(跨系统两段)🟢门店仓出库(POTD本地)→履约中台DN→中台推RDN给OTWB待入库(202)→OTWB入库回调履约中台;与正向发运(201)一致;NSC入库库存归属需对账
6 物流/运输🟢OTWB 物流履约统一入口;退货 RDN 与正向同接口
7 红冲/退款(职责迁移+业务分流)🟡Pentana 自持 AR 开 credit note(有开票与否分流)→ iParts 推 SAP 红冲 INVCAT=TI(当前无分流,只看国家白名单);需业务/财务对齐
8 退货类型🟡RETURN/SCRAP vs OE216(Quantity/Price/Tax)+OE218(杂项/回购);错价/错税/回购无独立类型
9 异常处理🟢拒绝取消占用;NSC退货单自动生成;子公司采购索赔在 GODP(独立域,不在本场景)
10 查询报表🟡order-boss 逆向单查询;跨系统对账(POTD+订单中台+履约中台+order-tool+OTWB+SAP)

九、切换必做动作(均为🟡业务对齐/迁移,无🔴开发断链)

  1. 红冲业务分流对齐(最高优先,业务/财务):定义"正向发票已开→推SAP红冲;正向未开票→走其他方式(订单取消/仅库存逆向/本地贷记)"的分流规则;决定 iParts 是否补"正向开票与否"判断分支(当前代码无);明确"GB 白名单"只是 SAP 侧红冲报文接受的配置开关,不是业务分流判断依据
  2. 发票/红冲职责迁移培训:Pentana 自持 AR 开票(正向 OE212/逆向 OE216-217 credit note)→ iParts 推 SAP(ZSDI_OTD_FPXX / INVCAT=TI);子公司 AR 人员、经销商(原 DC 门户重打印)培训;职责从 Pentana 内部迁到 SAP 的对账机制
  3. 退货类型映射:Pentana OE216 三类明细(Quantity/Price/Tax)+OE218(杂项/回购)→ HandlingMethodEnum(RETURN/SCRAP)映射;错价/错税贷记走 SCRAP 还是发票调整;经销商回购业务承接方式;补结构化拒绝原因(新链路拒绝退货无枚举)
  4. 退货库存跨系统对账:门店仓出库(POTD本地)→履约中台DN→中台推RDN给OTWB(DN-Return 202)→OTWB入库回调履约中台;与正向发运(DN-Sales 201)一致;NSC入库侧库存最终归属(POTD PartInventory vs 履约中台流水)需对账确认
  5. SAP 侧配置:逆向销售单 ZBRE/ZBCR + 红冲发票 INVCAT=TI 在 UAT/生产可用;AR 红冲/GL 闭环;科目映射(DBTR→SAP AR,INAC→SAP 库存,IC418→费用);澳洲(EM)红冲配置(redInk.enabled/countries)按业务分流结论配置
  6. 数据迁移:未清退货单/贷记单余额;历史 credit note 数据;Pentana OE218 杂项贷记/回购的存量处理
  7. 培训:退货审批闸门操作、红冲回传状态查询、退货类型选择、跨系统对账(POTD+订单中台+履约中台+order-tool+OTWB+SAP)、发票职责迁移后的开票/对账流程

十、待确认问题

  1. 红冲业务分流(最高优先,业务/财务):正向发票未开时,iParts 退货应走红冲(原票号留空)还是订单取消/仅库存逆向/本地贷记?iParts 是否要补"正向开票与否"判断分支(当前代码无,只看国家白名单)?"GB 白名单"与澳洲的实际关系?
  2. 发票职责迁移:Pentana 自持 AR 开票(正向 OE212/逆向 credit note)→ iParts 推 SAP,职责迁移后的开票触发、对账、经销商重打印如何承接?历史 credit note 数据迁移?
  3. 退货库存跨系统对账:门店仓出库(POTD本地)→履约中台DN→中台推RDN给OTWB(202)→OTWB入库回调履约中台——NSC入库侧库存最终归属是 POTD PartInventory 还是履约中台流水?(两 agent 见到不同代码路径)
  4. 错价/错税贷记:Pentana OE216 Price/Tax 贷记(不退货只调金额)在新链路走 SCRAP 还是发票调整?有无独立类型?
  5. 经销商回购:Pentana OE218 支持 buy-back(过剩库存回购),新链路无独立类型——回购业务如何承接?
  6. SAP 接口:ZBRE/ZBCR(逆向销售单)+ 红冲发票 INVCAT=TI 在 UAT/生产可用?字段映射?澳洲(EM)红冲配置(redInk.enabled/countries)按业务分流结论如何配?
  7. NSC 退货单:orderType=5 NSC 退货单(退回直发供应商)在澳洲子公司的实际场景?与子公司采购索赔(GODP)的域边界?
  8. 拒绝原因:新链路审核拒绝退货无结构化拒绝原因(仅 businessStatus=REJECTED)——是否需补拒绝原因枚举(对标 Pentana CRRC rejection)?
  9. 受损件核销:Pentana OE217 释放时受损件 write off 产生财务分录(借 IC418);新链路 SCRAP(仅退款)是否对应受损件核销?GL 分录如何?
  10. 信用控制(场景3 延伸):退货退款金额是否受信用/额度控制?与场景3 信用池新开发的联动?