{
  "synthetic": true,
  "execution": "Teaching record only; no live integration tested",
  "slug": "fulfilment-split-lineage-conservation",
  "group": "commerce-operations",
  "title": [
    "A split fulfilment needs a line-item lineage",
    "拆分履约后，要能追溯每条商品数量"
  ],
  "intro": [
    "Splitting a fulfilment creates new work assignments, not new ordered units. Before connecting a warehouse workflow, require a map from original lines to fulfilled, remaining and replacement assignments. Summing every original and child record together can double the apparent order.",
    "拆分履约产生新工作分配，不产生新订购数量。连接仓库流程前，要能从原商品行追到已履约、剩余和替代分配；把原记录与子记录全加起来，会把订单虚增。"
  ],
  "facts": [
    [
      "Shopify Flow’s fulfilment-order-split trigger provides original and resulting fulfilment orders, with an optional replacement. The trigger does not include the specific affected line items; the resulting orders must be read for them.",
      "Shopify Flow拆分触发器提供原及结果履约单，可能含替代单；触发器不直接包含受影响的具体行，须读取结果单。",
      "https://help.shopify.com/en/manual/shopify-flow/reference/triggers/fulfillment-order-split"
    ]
  ],
  "example": [
    [
      [
        "Order lineL1 quantity 4; already fulfilled1",
        "Unfulfilled scope is3",
        "Reconcile only the remaining3 against split assignments"
      ],
      [
        "订单L1数量4，已履约1",
        "未履约范围3",
        "仅用余3核对拆分分配"
      ]
    ],
    [
      [
        "RemainingF2:L1=1; replacementF3:L1=2",
        "1+2=3",
        "Matches unfulfilled scope"
      ],
      [
        "剩余F2中L1为1；替代F3中L1为2",
        "1+2=3",
        "与未履约范围一致"
      ]
    ],
    [
      [
        "Original unfulfilledF1=3 also counted with F2/F3",
        "3+1+2=6",
        "Double-counted lineage; reject"
      ],
      [
        "把原未履约F1的3也计入F2/F3",
        "3+1+2=6",
        "重复累计，拒绝"
      ]
    ],
    [
      [
        "Trigger received, child line items not read",
        "No resulting quantities",
        "Keep reconciliation unknown, not zero affected items"
      ],
      [
        "收到触发器，但未读子商品行",
        "缺结果数量",
        "核对未知，不能写受影响0项"
      ]
    ]
  ],
  "steps": [
    [
      "Define order-line identity separately from fulfilment-order identity and record which original assignments are superseded. Keep already fulfilled quantities outside the unfulfilled split scope.",
      "分开订单行与履约单身份，记录哪些原分配被替代；已履约不混入未履约拆分范围。"
    ],
    [
      "Supply the four records to the integration team. Require an item-level conservation report with original-to-child lineage and missing-read errors.",
      "把四条记录交集成方，要求逐商品守恒表、原到子追溯及缺读取错误。"
    ],
    [
      "In an authorised isolated store, exercise a partial fulfilment followed by a split. Verify source reads, line IDs and warehouse acknowledgements; no notification alone proves shipment.",
      "在获准隔离店铺先部分履约再拆分，核对来源读取、行ID及仓库回执；通知不证明已发货。"
    ]
  ],
  "result": [
    "The correct total is4 ordered units:1 already fulfilled and 3 still assigned. Six unfulfilled units in the third row are an accounting artefact, not new demand. A replacement may be absent; the implementation must use actual returned records instead of assuming a fixed number of children.",
    "正确是订购4件：已履约1、仍分配3。第三行的未履约6件是重复记账，不是新需求。替代单可能不存在，实现须按真实结果，不能假定固定子单数量。"
  ],
  "accept": [
    "Every active assignment must trace to an original line and conserve the stated remaining quantity, with missing child reads reported as incomplete.",
    "每个有效分配须追到原行，剩余数量守恒；缺少子单读取须明确不完整。"
  ],
  "limit": [
    "Synthetic lineage and arithmetic, no Flow activation, API mutation, warehouse instruction, shipment or payment. Plan/app support remains an implementation check.",
    "合成追溯及算术，未启用Flow、修改API、指示仓库、发货或付款；套餐及应用支持另验。"
  ],
  "oldLinks": [
    {
      "language": "en",
      "target": "/en/scenarios/ecommerce-returns-3pl/",
      "anchor": "Carry the line-item identity into returns and 3PL handover",
      "reason": "Returned units must retain the original line identity before stock updates."
    },
    {
      "language": "zh",
      "target": "/zh/scenarios/ecommerce-returns-3pl/",
      "anchor": "把商品行身份保留到退货与3PL交接",
      "reason": "Returns stock decisions depend on original line identity."
    }
  ]
}
