一个批次的库存数量全进去了,后台Source列表也能看到20、50、100,但前台清一色缺货。查表后很直白:quantity更新了,status还是0。MSI把“有多少”与“是否可用”分成了两个字段。
SELECT source_code,sku,quantity,status
FROM inventory_source_item
WHERE sku IN ('SKU-001','SKU-002');
如果是官方库存导入模板,检查 source_code、sku、status、quantity四列,status写1。自己写同步脚本时不要UPDATE表,组装SourceItemInterface后交给SourceItemsSaveInterface,Magento才能触发后续索引和事件。
还有一层Stock关系
status已经是1但仍缺货,就看这个Source有没有分配到当前Website使用的Stock。多仓项目经常在默认Source补了库存,而网站实际用的是另一个Stock。
bin/magento indexer:reindex inventory bin/magento cache:clean SELECT * FROM inventory_source_stock_link ORDER BY stock_id,source_code;
我会挑一个SKU做完整闭环:导入前记录Source Qty、Salable Quantity,导入后下单一次,再取消订单。数量、reservation和可售量能按预期变化,才说明导入程序真的接入了MSI,而不是只把后台数字改好看。

