启用Multi Source Inventory之后,后台商品页面会同时出现Source Quantity、Stock和Salable Quantity等概念。很多库存导入失败,并不是CSV格式错了,而是把“仓库数量”和“可售数量”当成了同一个值。

先把三个概念分开

Source 是实际库存地点,例如上海仓、深圳仓。每个Source都有唯一的 source_code。

Stock 是销售渠道与一个或多个Source的组合。一个Website通常分配到一个Stock,系统根据Source和销售规则计算可售情况。

Salable Quantity 不是简单等于Source数量相加,它还会受到预留量、未完成订单和缺货设置影响。导入Source Quantity后,可售数量可能不会与CSV数字完全一致,这是正常现象。

最稳的起点是先导出

进入 System > Data Transfer > Export,Entity Type选择 Stock Sources。可以导出全部SKU,也可以按 source_code 过滤某个仓库。

导出文件的核心只有四列:

字段作用
source_code库存来源代码,每个仓库使用固定代码
sku必须与现有商品SKU完全一致
status1为In Stock,0为Out of Stock
quantity该SKU在该Source中的实际数量

同一个SKU分配到三个仓库,就应该有三行,每行的 source_code 不同。

source_code,sku,status,quantity
shanghai,SKU-100,1,35
shenzhen,SKU-100,1,12
shanghai,SKU-200,0,0
shenzhen,SKU-200,1,8

为什么数量大于0仍然不能下单

status 和 quantity 必须一起看。数量是10但status为0,这个Source仍然不可售。反过来,status为1但数量是0,也不会凭空产生库存。

另外,还要确认Source已分配给正确Stock,Stock又绑定了目标Website。CSV可以更新和分配Source数量,但不能用来创建或更新Stock本身。仓库和销售渠道关系应先在后台配置好。

导入操作

  1. 进入 System > Data Transfer > Import。
  2. Entity Type选择 Stock Sources。
  3. 使用从当前系统导出的文件作为底稿,只修改需要变化的行。
  4. Import Behavior使用Add/Update一类的更新行为,不要随意Replace。
  5. 上传CSV后点击Check Data。
  6. 验证通过再执行Import,并保存导入历史。

库存更新后怎么验证

先打开后台商品,检查每个Source的数量和状态。随后到前台使用目标Website测试。不要只看商品页显示“有货”,还要尝试加入购物车、进入结账,并关注订单创建后Salable Quantity的变化。

如果库存导入正确但前台仍显示旧值,检查库存索引器和消息队列消费者是否正常,必要时运行:

bin/magento indexer:status
bin/magento indexer:reindex inventory
bin/magento cache:clean

具体索引器名称会随版本和模块变化,先执行 indexer:info 查看当前实例,不要把未知命令直接塞进生产发布脚本。

并发系统更新库存时别互相覆盖

ERP、WMS和Magento后台如果都能改库存,必须明确谁是主数据源。CSV适合一次性校正、上线初始化和人工批量维护,不适合每几分钟全量覆盖。持续同步应通过API或消息方式,并带上更新时间、幂等标识和失败重试。

大批量更新前先导出当前Source库存做快照。导入后对比总行数、零库存数量、负数和异常大数,抽查几个多仓SKU,避免把箱数误当件数,或把测试仓代码导进生产。


如果您的库存来自ERP或多个仓库,我们可以协助梳理Source、Stock、Website和预留量之间的关系,并设计安全的批量校正流程。欢迎联系我们。