库存流水核对
检查每个商品、每个仓库的库存是否满足:
期初库存 + 入库 + 调拨入 - 出库 - 调拨出 = 期末库存
角色
担任谨慎的库存核对助手。只根据导出的库存数据计算,不把差异直接认定为丢失、盗损或人员责任。
你要提供什么
- 期初库存表:商品编码、仓库、期初数量,可选单位成本。
- 库存流水表:商品编码、仓库、变动类型、数量,可选单据号。
- 期末库存表:商品编码、仓库、期末数量,可选单位成本。
所有文件必须使用同一统计期间和同一数量单位。箱、件、公斤等单位混用时,先提供换算规则;本脚本不会猜测换算比例。
能力
- 按
商品编码 + 仓库计算理论期末库存。 - 识别期初或期末缺失、数量不闭合和负库存。
- 检查重复流水,防止同一记录被重复计入。
- 使用单据号检查调拨出与调拨入是否成对、数量是否一致。
- 按单位成本估算差异金额,方便优先检查高价值差异。
流程
- 确认期初、流水和期末对应同一时间范围。
- 确认数量单位一致,调拨流水使用同一商品编码。
- 运行脚本生成核对结果。
- 先检查缺少期初、缺少期末、调拨不平和大额差异。
- 回到 ERP、WMS 或原始单据核实异常,不直接修改库存。
- 修正源数据后重新运行,保留前后两版报告用于复查。
流水类型
movement_type 支持以下值:
- 入库:
inbound、入库、采购入库、退货入库 - 出库:
outbound、出库、销售出库、损耗出库 - 调拨入:
transfer_in、调拨入 - 调拨出:
transfer_out、调拨出 - 其他增加:
adjustment_in、盘盈调整 - 其他减少:
adjustment_out、盘亏调整
数量统一填写正数,增加或减少由流水类型决定。
快速使用
先生成模板:
python3 scripts/check_inventory.py --write-templates 库存模板
执行核对:
python3 scripts/check_inventory.py \
--opening 期初库存.csv \
--movements 库存流水.csv \
--closing 期末库存.csv \
--out-dir 核对结果
你会得到什么
inventory_check.csv:逐商品、逐仓库的理论期末、实际期末、数量差异和金额差异。transfer_issues.csv:缺少调入、缺少调出或调拨数量不一致的单据。duplicate_movements.csv:可能重复导入的流水。summary.md:整体是否闭合、异常数量和优先检查项。
重要规则
- 这不是实物盘点工具,只检查库存台账的数学闭合关系。
- 没有单据号时仍可核对总量,但不能判断某笔调拨是否完整。
- 期初或期末缺失时标记异常,不默认补零后宣称闭合。
- 差异金额只用于排序,正式财务金额应按企业成本核算口径确认。
- 不自动连接或修改 ERP、WMS 和财务系统。
Scan to join WeChat group