职责:仓库主数据、结存、流水;调拨 / 降级 / 盘点头表;期初 / 报损 / 拆合用精简库存单据。
边界:不写库位/波次/WMS;采购销售加工的出入库由业务单确认驱动,见 14-库存确认契约.md。
SKU:引用 skus、sku_units。仓库与产品无关。
线下等级变更/报损/调拨低频(见 13),能力保留、入口可不突出;盘点常用。
表:warehouses
| 字段 | 说明 |
|---|---|
| id | 主键 |
| name | 名称 |
| type | origin / sales |
| status | 启用 / 停用 |
| created_at / updated_at / deleted_at | 时间戳;软删除 |
表:stocks
唯一:(warehouse_id, sku_id, unit)。无单位成本字段(见规则 17)。
| 字段 | 说明 |
|---|---|
| id | 主键 |
| warehouse_id | 仓库 |
| sku_id | SKU |
| unit | 包装单位 |
| quantity | 件数 |
| weight_kg | 实际重量合计(kg) |
| updated_at | 最后变动 |
表:stock_ledgers
| 字段 | 说明 |
|---|---|
| id | 主键 |
| warehouse_id | 仓库 |
| sku_id | SKU |
| unit | 包装单位 |
| direction | in / out |
| quantity | 变动件数(正数) |
| weight_kg | 变动重量(正数,kg) |
| type | 见 14 流水类型全集 |
| stock_document_id | 仅来源为 stock_documents 时填 |
| source_type | 必填 |
| source_id | 必填 |
| source_no | 必填 |
| occurred_at | 业务时间 |
| created_at | 入账时间 |
流水类型枚举以 14 为准(含 process_out、opening_in;无 in_transit_*)。
表:stock_documents
不承载采购、销售、加工、调拨、降级、盘点。
| 字段 | 说明 |
|---|---|
| id | 主键 |
| document_no | 单号(唯一) |
| warehouse_id | 仓库 |
| type | opening / loss / split / merge |
| status | draft / confirmed / cancelled |
| occurred_at | 业务时间 |
| operator_id | 操作人 |
| remark | 备注 |
| created_at / updated_at / deleted_at | 时间戳;软删除 |
stock_document_lines| 字段 | 说明 |
|---|---|
| id | 主键 |
| stock_document_id | 单据 |
| sku_id | SKU |
| unit | 包装单位 |
| direction | in / out |
| quantity | 件数 |
| weight_kg | 实重 kg |
| batch_no | 可空 |
| unit_price / amount | 报损等可填 |
| line_role | normal / source / target(拆合) |
| remark | 可空 |
状态机:draft → confirmed(见 14 矩阵);draft → cancelled。
表:stock_downgrades(线下库存等级变更)
| 字段 | 说明 |
|---|---|
| id | 主键 |
| downgrade_no | 唯一 |
| warehouse_id | 仓库 |
| from_sku_id / to_sku_id | 源 / 目标 SKU |
| from_unit / to_unit | 包装单位 |
| from_quantity / to_quantity | 件数 |
| weight_kg | 出入一致 |
| status | draft / confirmed / cancelled |
| occurred_at | 业务时间 |
| operator_id | 操作人 |
| remark | 可空 |
| created_at / updated_at / deleted_at | 时间戳;软删除 |
确认副作用:见 14「降级确认」。无 stock_document_id。
表:stock_transfers
| 字段 | 说明 |
|---|---|
| id | 主键 |
| transfer_no | 唯一 |
| from_warehouse_id / to_warehouse_id | 调出 / 调入 |
| status | draft / shipped / received / cancelled |
| shipped_at / received_at | 发出 / 收货 |
| operator_id | 操作人 |
| remark | 可空 |
| created_at / updated_at / deleted_at | 时间戳;软删除 |
stock_transfer_lines| 字段 | 说明 |
|---|---|
| id | 主键 |
| stock_transfer_id | 调拨单 |
| sku_id / unit | SKU / 单位 |
| quantity / weight_kg | 件数 / 实重 |
状态机:draft → shipped → received;draft → cancelled。发出/收货副作用见 14。
表:stock_checks;check_no 唯一。
| 字段 | 说明 |
|---|---|
| id | 主键 |
| check_no | 唯一 |
| warehouse_id | 仓库 |
| status | draft / confirmed / cancelled |
| occurred_at | 盘点时间 |
| operator_id | 操作人 |
| created_at / updated_at / deleted_at | 时间戳;软删除 |
stock_check_lines| 字段 | 说明 |
|---|---|
| id | 主键 |
| stock_check_id | 盘点单 |
| sku_id / unit | SKU / 单位 |
| location | 库位备注文本,可空(非 WMS) |
| book_quantity / book_weight_kg | 账面 |
| actual_quantity / actual_weight_kg | 实盘 |
| diff_quantity / diff_weight_kg | 差异 |
| remark | 可空 |
确认副作用:见 14「盘点确认」。
表:stock_in_transits
仅服务调拨(销售不做在途)。不写在途类流水。
| 字段 | 说明 |
|---|---|
| id | 主键 |
| stock_transfer_id | 调拨单 |
| from_warehouse_id / to_warehouse_id | 发出 / 目的 |
| sku_id / unit | SKU / 单位 |
| quantity / weight_kg | 件数 / 重量 |
| status | pending / arrived / cancelled |
| departed_at / arrived_at | 发出 / 到货 |
| created_at / updated_at | 时间戳 |
发出时插入 pending;收货改为 arrived。
表:stock_snapshots
唯一:(warehouse_id, sku_id, snapshot_date)。按 SKU 汇总件数与重量即可;不按单位拆行(V1)。
| 字段 | 说明 |
|---|---|
| id | 主键 |
| warehouse_id / sku_id | 仓库 / SKU |
| snapshot_date | 日期 |
| quantity / weight_kg | 合计 |
| created_at | 生成时间 |
stock_documents type=opening 确认。stock_snapshots。source_*。stock_documents 仅 opening/loss/split/merge。in_transit_* 流水。check_adjust。| V1 | 延后 |
|---|---|
| 上表能力 | 销售在途、按包装单位快照行、存货成本、WMS |