变体 GID 和 SKU 混用导致对账错行怎么选主键
现象#
ERP 按 SKU 回写库存,两个变体 SKU 都是空字符串,结果两边数量被写到同一个变体;改用条码后只读到了第一个条码。
原因#
- Shopify 不强制 SKU 唯一,也不禁止为空,导入之后重复 SKU 很常见
- variant.id 全局唯一且不随标题、价格变化,但复制商品会生成新 id
- 一个变体最多 20 个条码,旧的 barcode 字段只返回第一个,其余静默丢失
- POS 能扫任意已关联条码,渠道 feed 仍只读第一个条码
处理步骤#
- 内部主键统一用
gid://shopify/ProductVariant/...,SKU 只当业务编码 - 入库前用
productVariants(query: "sku:XXX")查重,空 SKU 直接判失败 - 读全部条码用
barcodes(first: 20){ barcode type },不要再读barcode - 写条码用
barcodes数组,它会整体替换,且不能与barcode同时传 - 商品复制或重建后重新映射 id,把旧 id 存进 metafield 做追溯
验收标准#
回写后每个 variant.id 的数量与 ERP 明细逐行相等;barcodes 返回条数与录入数量一致。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。