进销存系统多仓库调拨与库存分配
多仓库管理的业务场景
对于规模较大的企业,通常会设立多个仓库来缩短配送时间、降低物流成本。多仓库管理涉及库存的合理分配、仓库间的调拨协同、库存可视化等核心功能,需要系统具备完善的仓库网络的支撑能力。
仓库网络规划
| 仓库类型 | 功能定位 | 库存策略 |
|---|---|---|
| 中心仓 | 总仓储、配送中心 | 安全库存最高 |
| 区域仓 | 区域内配送 | 覆盖区域需求 |
| 前置仓 | 快速配送 | 小批量高频补货 |
| 门店仓 | 门店销售 | 根据销量动态调整 |
调拨单业务流程
- 调拨申请:由需求仓库发起调拨申请,填写商品、数量、目的仓库
- 调拨审批:根据调拨金额或数量级别人工或自动审批
- 库存锁定:审批通过后锁定源仓库库存,防止超卖
- 出库确认:源仓库扫码出库,生成出库记录
- 在途管理:跟踪物流状态,记录在途数量
- 入库确认:目的仓库扫码入库,完成调拨闭环
调拨单数据结构
-- 调拨单主表
CREATE TABLE transfer_order (
order_id VARCHAR(50) PRIMARY KEY,
from_warehouse_id VARCHAR(50), -- 源仓库
to_warehouse_id VARCHAR(50), -- 目标仓库
transfer_status VARCHAR(20), -- 状态:待审核/已审核/已出库/运输中/已完成
total_quantity DECIMAL(18,2),
total_amount DECIMAL(18,2),
apply_user VARCHAR(50),
apply_date TIMESTAMP,
approve_user VARCHAR(50),
approve_date TIMESTAMP,
remark TEXT
);
-- 调拨单明细
CREATE TABLE transfer_order_detail (
detail_id SERIAL PRIMARY KEY,
order_id VARCHAR(50),
product_id VARCHAR(50),
quantity DECIMAL(18,2),
unit_price DECIMAL(18,4),
batch_no VARCHAR(50), -- 批次号
FOREIGN KEY (order_id) REFERENCES transfer_order(order_id)
);
库存智能分配
当订单下达时,系统需要智能选择最合适的仓库发货:
- 距离优先:选择距离收货地址最近的仓库
- 库存充足:优先选择库存充足的仓库
- 成本最低:综合物流成本选择最优仓库
- 效期优先:对临期商品优先分配出库
- 库存均衡:避免某个仓库库存过高或过低
在途库存管理
调拨过程中的库存属于在途状态,需要特别处理:
| 阶段 | 库存状态 | 可用判断 |
|---|---|---|
| 已出库 | 源仓库-1,在途+1 | 不可用 |
| 运输中 | 在途库存 | 不可用 |
| 已入库 | 目标仓库+1,在途-1 | 可用 |
调拨报表分析
- 调拨频次统计:各仓库间调拨次数和数量
- 调拨时效分析:从出库到入库的平均时长
- 调拨成本分析:物流费用、运输损耗统计
- 库存周转分析:各仓库库存周转率对比