职责:仓库主数据、结存、流水;仓内加工;调拨 / 盘点;期初 / 报损(精简库存单据;拆合枚举可留但不新开)。
边界:不做库位/波次/WMS。采销出入库由业务单确认驱动,见 14。加工业务见 07;表结构以本文为准。降级走加工单,不设独立降级单。
产品:引用 products(见 03)。仓库与产品无关。重量存/录为斤(列名仍 weight_kg),列表按两/斤/吨展示。
线下报损/调拨低频(见 13),能力保留;盘点与仓内加工常用。
| 概念 | 约定 |
|---|---|
| 唯一键 | (warehouse_id, product_id, purchase_id, spec_name, grade, pack)(不含 unit)。purchase_id 必填 → purchases.id;界面展示 purchase_no。属性空值存 ''(避免 UNIQUE 对 NULL 不互斥)。unit 列可留,固定写 '' |
| 行属性 | spec_name / grade / pack(规格名 / 等级 / 包装),进唯一键,不同属性即不同结存堆 |
| 件数单价 | process_fee_unit_price / pack_fee_unit_price / overhead_unit_price(元/件),毛利预估参考,非存货成本层(规则 16)。各档加工确认后写到对应产出堆 |
| 重量 | weight_kg 语义为斤;1 斤 = 10 两;1 吨 = 2000 斤 |
行属性出现在:结存、流水,以及库存单据 / 调拨 / 盘点 / 在途明细;加工单用 from_* / to_*。确认入账写入流水;入库按属性命中或新建堆(product_id 不变,见 07)。
表:warehouses
| 字段 | 说明 |
|---|---|
| id | 主键 |
| name | 名称 |
| type | origin 产地仓 / sales 销地仓 |
| status | 启用 / 停用 |
| created_at / updated_at / deleted_at | 时间戳;软删除 |
地址:morphOne addresses(见 02),仅一条。
表:stocks
| 字段 | 说明 |
|---|---|
| id | 主键 |
| warehouse_id / product_id / unit / purchase_id | 见上「结存口径」;unit 废弃写空串 |
| spec_name / grade / pack | 行属性,可空 |
| quantity / weight_kg | 件数 / 实重(斤) |
| process_fee_unit_price / pack_fee_unit_price / overhead_unit_price | 加工费 / 包装费 / 隐形分摊件数单价,可空;各档加工确认后写到对应产出堆 |
| updated_at | 最后变动 |
列表须展示 purchase_no;可展示三费单价及 单价 × 件数 预估。
写入:
overhead_unit_price;加工费/包装费一般为空;行属性可从采购明细带入。process_fee / pack_fee 为金额真源(独立);写到对应产出结存堆的 process_fee_unit_price ≈ process_fee / to_quantity、pack_fee_unit_price ≈ pack_fee / to_quantity,及本档 overhead_unit_price。出库预估:单价 × 出库件数,界面标「参考,非实际成本」。
表:stock_ledgers
| 字段 | 说明 |
|---|---|
| id | 主键 |
| warehouse_id / product_id / unit / purchase_id | 与结存键一致(unit 写空串);purchase_id 必填 |
| spec_name / grade / pack | 行属性,可空;入账时写入 |
| direction | in / out |
| quantity / weight_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
不承载采购、销售、加工、调拨、盘点。后台新建仅暴露 opening / loss;split / merge 枚举可留兼容旧数据,不新开。
| 字段 | 说明 |
|---|---|
| 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 | 主键 / 单据 |
| product_id / unit / purchase_id | 产品 / 单位(空串) / 采购批(必填) |
| spec_name / grade / pack | 行属性,可空 |
| direction | in / out |
| quantity / weight_kg | 件数 / 实重(斤) |
| batch_no | 可空(车次等批注,非采购外键) |
| unit_price / amount | 报损等可填 |
| line_role | normal / source / target(遗留拆合) |
| remark | 可空 |
状态机:draft → confirmed(见 14);draft → cancelled。
对已入库结存做包装 / 分级 / 降级。确认写 process_out + process_in;loss_weight_kg > 0 时另记 loss_out。见 14、07。
一张 process_orders = 一条投入 → 一条产出(无子表)。多产出 = 多张单。
process_orders不设业务单号;流水 source_no 用 (string) id(冲销拼 -R,见 14)。
| 字段 | 说明 |
|---|---|
| id | 主键 |
| warehouse_id | 作业仓(投出、产出同一仓) |
| type | pack / grading / downgrade / other(筛选用,不参与库存算法) |
| purchase_id | 采购批,必填;投出与产出同一批 |
| from_product_id / from_unit / from_product_name | 投入产品、单位(空串)、名称快照 |
| from_spec_name / from_grade / from_pack | 投入行属性,可空 |
| from_quantity / from_weight_kg | 投入件数、实重(斤) |
| to_product_id / to_unit / to_product_name | 产出;to_product_id 必须 = from_product_id;to_unit 写空串 |
| to_spec_name / to_grade / to_pack | 产出行属性,可空(分级/改包装时常填;进结存键) |
| to_quantity / to_weight_kg | 产出件数、实重(斤) |
| loss_weight_kg | 损耗(斤),默认 0;> 0 时记 loss_out |
| process_fee | 本单加工费(元),默认 0;各档独立 |
| pack_fee | 本单包装费(元),默认 0;各档独立 |
| overhead_unit_price | 本档隐形分摊件数单价,可空(空则确认时继承投入结存) |
| status | draft / confirmed / cancelled |
| occurred_at / operator_id / remark | 业务时间 / 操作人 / 备注(外协等) |
| created_at / updated_at / deleted_at | 时间戳;软删除 |
不存:业务单号、双批次、独立厂商字段、business_date / confirmed_at。
约定:确认前投入结存充足(命中 (warehouse_id, from_product_id, purchase_id, from_spec_name, from_grade, from_pack));from_product_id = to_product_id;加工改 to_* 行属性或数量投出/产出。选产品时写名称快照;from_weight_kg ≈ to_weight_kg + loss_weight_kg;已确认不可改影响流水的字段,纠错走冲销。
draft → confirmed # process_out + process_in;损耗则 loss_out
draft → cancelled
表: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 | 主键 / 调拨单 |
| product_id / unit / purchase_id | 产品 / 单位 / 采购批(必填;发出与收货同批) |
| spec_name / grade / pack | 行属性,可空;带到在途与目的仓 |
| 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 | 主键 / 盘点单 |
| product_id / unit / purchase_id | 产品 / 单位 / 采购批(必填) |
| spec_name / grade / pack | 行属性,可空 |
| location | 库位备注,可空(非 WMS) |
| book* / actual / diff_ | 账面 / 实盘 / 差异(件数与重量) |
| remark | 可空 |
确认见 14「盘点确认」。
表:stock_in_transits
仅服务调拨;不写在途类流水。
| 字段 | 说明 |
|---|---|
| id / stock_transfer_id | 主键 / 调拨单 |
| from_warehouse_id / to_warehouse_id | 发出 / 目的 |
| product_id / unit / purchase_id | 与调拨明细一致 |
| spec_name / grade / pack | 行属性,可空;自明细带入 |
| quantity / weight_kg | 件数 / 重量 |
| status | pending / arrived / cancelled |
| departed_at / arrived_at | 发出 / 到货 |
| created_at / updated_at | 时间戳 |
发出插 pending;收货改 arrived。
表:stock_snapshots
唯一:(warehouse_id, product_id, snapshot_date)。P0 按产品汇总件数与重量;批明细以当日 stocks 为准。
| 字段 | 说明 |
|---|---|
| id | 主键 |
| warehouse_id / product_id / snapshot_date | 仓 / 产品 / 日期 |
| quantity / weight_kg | 合计 |
| created_at | 生成时间 |
stock_documents(opening,行上必填 purchase_id)确认。stock_snapshots。(warehouse_id, product_id, unit, purchase_id, spec_name, grade, pack);流水含完整 source_*;库存行 purchase_id 均对应已有采购。spec_name / grade / pack(进结存唯一键)。process_orders(无业务单号);确认产生 process_out/process_in(损耗可有 loss_out)。stock_documents 仅 opening/loss/split/merge。in_transit_* 流水。check_adjust;无独立降级单。| P0 | 延后 |
|---|---|
| 上表能力(含加工单、三费件数单价、行属性) | 销售在途、按单位快照行、存货成本入账层、WMS、加工 BOM |