Visual LabINTERACTIVE LEARNING
03 · ERP & SUPPLY CHAINP014 MIN

OrderItem、Pricing、Discount 与 Tax

用行项目快照表达成交内容,并让金额计算可复核。

MENTAL MODELORDER COMMERCIALS
01Unit Price × Qty
02Line Discount
03Taxable Amount
04Tax
05Order Total
订单金额不是一个孤立 total,而是一条可解释公式:行项目基价 → 折扣 → 税基 → 税 → 运费与总额。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

OrderItem

订单中的成交行,保存 SKU/配置、数量、单位价格、折扣、税和描述快照。

02

Discount

可按金额或比例作用在行或整单,并需要优先级、叠加和舍入规则。

03

Tax

根据地点、商品类别、客户免税资格和时点计算的法定义务。

04

Money

金额应使用最小货币单位整数或精确 decimal,并始终携带币种。

02 · BLIND BOTS CASE

99.9 × 3 为什么对不上账

问题现场

前后端用浮点数分别计算,折扣和税的舍入顺序不同。

  1. 01

    统一最小货币单位与舍入策略。

  2. 02

    服务端作为最终金额权威。

  3. 03

    保存每一步金额与规则版本。

得到什么

UI、支付和财务导出使用同一结果,也能解释一分钱差异。

03 · PRACTICE

马上动手

  1. 写出行折扣和整单折扣的计算顺序。
  2. 为多币种订单定义不可变币种。
04 · PITFALLS

常见坑

  • 金额用 float
  • 只存 total 不存组成
  • 税和折扣在前后端各写一套
05 · KNOWLEDGE CHECK为什么 OrderItem 要保存价格快照?查看答案⌄
答案

商品与价目表会变化;订单必须保留成交时的可复核金额,历史事实不能在每次读取时按新规则重算。