一张采购订单里的“折上折”,到底怎么算?

Published On: 2026年10月16日Categories: 成功案例Views: 23

© All rights reserved. • 西安知行软件有限公司 • 陕ICP备09022277号

报文摘要

从 ORDERS 原始报文可以先确认四项事实:

  1. 订单头存在一笔 2% 折扣;
  2. 第 1 条商品行存在 10% 和 5% 两层折扣;
  3. 两层商品行折扣分别标记为第 1 步和第 2 步;
  4. EDI 同时给出折前单价 100.00 和本例净价核对值 83.79。

后续业务解读与计算,都应建立在这些原始报文证据上。


一、先看 ORDERS 报文里实际传了什么

以下内容主要供 EDI 顾问和 ERP 开发参考。业务人员重点看“中文注释”列即可。

EDI 位置 报文值 业务解释 ERP 建议字段
ALC/5463 A A 表示 Allowance indicator
ALC/1227 1、2 同一范围内的计算顺序 calculationSequenceCode
PCD/C501/5245 12 后面的数值是折扣或附加费百分比 percentageQualifier
PCD/C501/5482 10、5、2 真正参与计算的百分比 percentage

对应的 EDI 片段如下:

ALC+A+++1'
PCD+12:2'

LIN+1++7500000001012:EN'
PRI+AAC:100.00'
PRI+AAA:83.79'
ALC+A+++1'
PCD+12:10'
ALC+A+++2'
PCD+12:5'

可以读成:

订单级:有一笔 2% 的折扣

商品行 1:
- 折前单价 100.00
- 净价 83.79
- 第 1 步折扣 10%
- 第 2 步折扣 5%

注意:ALC 中的 1、2 是计算顺序,不是折扣类型代码。它们不能说明这笔优惠属于促销折扣、数量折扣、合同折扣或付款折扣。


二、从 EDI 结构判断折扣作用范围

一张采购订单可以同时包含两类折扣。

1. 商品级折扣

只针对某一条商品明细。例如:

  • 第 1 件商品先优惠 10%;
  • 同一件商品再优惠 5%;
  • 其他商品不一定享受相同的两层优惠。

2. 订单级折扣

针对整张订单。例如“全单再优惠 2%”。至于这 2% 如何分摊到各商品行,需要按交易伙伴约定的价格规则处理。

在 EDIFACT ORDERS 报文中,可以根据折扣段出现的位置区分范围:

第一个 LIN 商品行之前的 ALC/PCD  → 订单级折扣
某个 LIN 商品行之后的 ALC/PCD    → 当前商品行折扣

如果 ERP 把两类折扣混在一起,可能导致商品净价、订单总额和财务对账金额都不正确。


三、站在业务角度解读这张订单

假设订单里有一件原价为 100.00 的商品:

要回答的问题 这张订单给出的答案
商品原价是多少? 100.00
商品本身有优惠吗? 有,先优惠 10%,再优惠 5%
整张订单还有优惠吗? 有,全单再优惠 2%
最终净价是多少? 83.79

业务上可以把它理解为:

商品原价 100.00
  ↓ 使用“商品九折券”
90.00
  ↓ 使用“商品九五折券”
85.50
  ↓ 结账时使用“全单九八折券”
83.79

本例中,折扣按顺序连续作用于价格。订单级折扣是否计入行净价、如何分摊到各商品行,仍以交易伙伴的价格规则为准。


四、本例的折上折为什么不能直接相加

错误算法:把三个折扣直接相加

10% + 5% + 2% = 17%
100.00 × (1 - 17%) = 83.00

该结果与本例的 PRI+AAA:83.79 不一致。

本例的核对算法:每一步都基于上一步价格

以下计算以 PRI+AAA:83.79 为含折扣后的行净价核对值,并假定订单级 2% 已按伙伴规则计入该行。

步骤 计算方式 价格
折前价格 — 100.00
商品行第 1 层优惠 10% 100.00 × 0.90 90.00
商品行第 2 层优惠 5% 90.00 × 0.95 85.50
订单级优惠 2% 85.50 × 0.98 83.79

两种算法只差 0.79,但当订单数量较多时,差异会累积并影响发票、付款和财务对账。


五、ERP 接口应如何保存这些折扣?

ERP 不应只接收一个“总折扣率”,而应保留每一层折扣。推荐结构如下:

{
  "poHeader": {
    "allowanceCharge": [
      {
        "indicator": "A",
        "calculationSequenceCode": "1",
        "percentageQualifier": "12",
        "percentage": "2"
      }
    ],
    "poDetail": [
      {
        "lineNumber": "1",
        "grossUnitPrice": "100.00",
        "netUnitPrice": "83.79",
        "allowanceCharge": [
          {
            "indicator": "A",
            "calculationSequenceCode": "1",
            "percentage": "10"
          },
          {
            "indicator": "A",
            "calculationSequenceCode": "2",
            "percentage": "5"
          }
        ]
      }
    ]
  }
}

为什么折扣节点要统一使用数组?

同一个商品行可能只有一层折扣,也可能有两层或更多折扣。如果一条时输出对象、多条时输出数组,ERP 就需要编写两套解析逻辑。

推荐统一为:

一条折扣  → allowanceCharge: [ {...} ]
多条折扣  → allowanceCharge: [ {...}, {...} ]

这样接口结构更稳定,后续新增折扣层级也不需要修改解析方式。


总结

从业务角度看,折上折就是“连续使用多张折扣券”;从 EDI 角度看,它是一条有范围、有顺序的价格条件链。

可靠的 ORDERS 到 ERP 接口不应只传最终折扣率,而应完整保留:

折扣作用范围 + 折扣方向 + 计算顺序 + 折扣百分比

价格计算和订单级折扣分摊,则以交易伙伴规范及金额核对结果为准。

为什么选择

知行之桥®?​

根据企业规模与集成需求,提供从本地部署到云端托管的灵活选择

可视化 EDI 工作流

基于拖拽式图形化设计器,零代码构建完整 EDI 业务流程,满足复杂供应链自动化场景。

Odette & Drummond 认证

通过 Odette(OFTP) 与 Drummond(AS2) 权威认证,确保与主机厂安全合规、高可靠的数据交换。

多系统集成能力

提供数据库、REST/SOAP、FTP/SFTP 等标准化接口,实现 ERP、WMS、MES 等系统的双向数据自动同步。

数据映射格式转换

内置可视化 Mapping 编辑器,零代码实现 EDI 报文与企业内部数据格式(XML/JSON…)的映射转换及复杂规则处理。

实时监控预警机制

全流程可视化监控报文状态,支持邮件、钉钉、企业微信自动预警,保障 JIT 交付的稳定性与及时性。

多工厂支持

支持集团级多组织、多工厂架构,实现数据隔离与权限管控,统一平台集中运维,满足大型制造企业多地点协同需求。