一个批次的库存数量全进去了,后台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,而不是只把后台数字改好看。