分析 P1 已上线 L0

进销存差异检查

理论期末对不平、三方比对按影响金额排序、负库存与异常单价全部列出来,缺的数不补 0

技能 sluginventory-diff-check
所属栏目分析 成本 / 预算 / 经营
交付阶段P1 P1 在建 · 形成数据-票证-记账-报表-资金-分析-底座的完整闭环
版权© 2026 律令科技(深圳)有限公司开发 · 财友云(caiyouyun.cn)发布
这个包已上线。复制到本地即可离线运行;正文与用法以下方随包 SKILL.md 为准。

技能正文(随包 SKILL.md)

> **本地运行,零网络、免 API Key、数据不出电脑。**
> 四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。

# 进销存差异检查

进销存最怕的不是有差异,是**差异被抹平了**:

出库没记账、系统期末填 0 凑一个"平"、
漏盘一行当没盘、
单价录错一位就把差异金额放大十倍,
表看着齐整,实际没人知道差在哪。

本包的原则:**差异必须落到具体编码上、带上金额、排好序给你**。
补不齐的(期初缺失、单价缺失)明确说"算不出 / 不可计算",
**绝不拿 0 去凑一张整齐的表**。

## 输入

两种给法,二选一:

**① 一张宽表**(最省事),一行一个存货,列名自动识别(下列顺序即识别优先级):

| 用途 | 可识别列名 |
|---|---|
| 存货编码 | 存货编码 / 物料编码 / 商品编码 / 存货代码 / 物料号 / 商品号 / 库存编码 / 编码 / 货号 |
| 存货名称 | 存货名称 / 物料名称 / 商品名称 / 品名 / 名称 / 规格型号 |
| 期初数量 | 期初数量 / 期初库存 / 期初结存 / 期初存货数量 / 上期期末 |
| 入库数量 | 入库数量 / 本期入库 / 入库 / 采购入库 / 收入数量 / 增加数量 |
| 出库数量 | 出库数量 / 本期出库 / 出库 / 销售出库 / 发出数量 / 减少数量 |
| 系统期末 | 系统期末 / 系统期末数量 / 期末数量 / 期末结存 / 账面期末 / 库存数量 / 结存数量 |
| 盘点数量 | 盘点数量 / 实盘数量 / 实际盘点 / 盘点结存 / 盘点库存 / 实存数量 |
| 单价 | 单价 / 存货单价 / 不含税单价 / 平均单价 / 单位成本 |

**② 五张表分开**,按「存货编码」join:

```bash
--open 期初表.xlsx   (需要:存货编码 + 期初数量)
--inbound 入库表.xlsx --outbound 出库表.xlsx
--sys-close 期末表.xlsx --count 盘点表.xlsx
--price-file 单价表.xlsx   (可选,价格也可写在宽表里)
```

一张宽表和五表参数**不能同时给**,给了直接拒绝。
五表参数必须一次给全,缺一张就拒绝——少了期末表就做不成三方比对。

## 输出四件套

| 文件 | 内容 |
|---|---|
| `inv_主表.csv` | 逐存货差异明细:编码 / 名称 / 期初 / 入库 / 出库 / 理论期末 / 系统期末 / 盘点数量 / 单价 / 期初金额 / 三路影响金额 / 影响金额合计 / 负库存 / 风险等级,**按影响金额降序** |
| `inv_异常表.csv` | 不可计算项 + 需人工复核项(带原始行号、风险等级) |
| `inv_校验表.csv` | 理论期末公式、守恒断言、三方比对口径、影响金额、负库存、异常单价阈值、参考价口径、字段容错 |
| `fin-log.jsonl` | 处理日志(追加) |

主表「期初金额」列逐行可核,`Σ 期初金额 = 主表 + 异常表`,
「守恒差异(入-主-异)」必须为 0,不为 0 直接报算不出。

## 用法

```bash
PY="<python 3.8+ 路径>"   # 纯标准库
"$PY" <skill目录>/scripts/inv_diff.py 进销存宽表.xlsx --execute
```

五表分开:

```bash
"$PY" inv_diff.py --open 期初.xlsx --inbound 入库.xlsx --outbound 出库.xlsx \
      --sys-close 期末.xlsx --count 盘点.xlsx --price-file 单价.xlsx --execute
```

调单价偏差阈值(默认 50%):

```bash
"$PY" inv_diff.py 宽表.xlsx --deviation 30 --operator 张三 --out-dir _out --execute
```

**默认不写盘**——不加 `--execute` 只打印预览,确认无误再真跑。

## 真实输出

```
方案:inv_宽表.xlsx | 存货 5 个编码 | 单价偏差阈值 50%

--- 差异明细(5 个编码,按影响金额降序)---
  C-04       丁材料        期初     300.0 入    100.0 出    600.0 理论期末     -200.0 系统        0.0 盘点        0.0 单价      6.0 影响金额      2400.0 高
  C-01       甲材料        期初    1000.0 入    500.0 出    400.0 理论期末     1100.0 系统     1100.0 盘点     1080.0 单价     12.5 影响金额       500.0 低
  C-03       丙材料        期初     800.0 入    300.0 出    900.0 理论期末      200.0 系统      200.0 盘点      220.0 单价     10.0 影响金额       400.0 低
  C-02       乙材料        期初    2000.0 入      0.0 出   1500.0 理论期末      500.0 系统      500.0 盘点      500.0 单价      8.0 影响金额           0 低
  C-05       戊材料        期初     500.0 入    200.0 出    100.0 理论期末      600.0 系统      600.0 盘点      600.0 单价      9.0 影响金额           0 低

--- 异常 / 口径提示(1 条)---
  [高] C-04:理论期末 -200.0 ≠ 系统期末 0.0,差 -200.0(期初 + 入库 − 出库 − 系统期末 ≠ 0);负库存:理论期末 -200.0 < 0;疑似漏填:系统期末为 0 却本期有入库 100.0 / 出库 600.0,系统期末八成没带上

合计:期初金额 42800.0 | 影响金额合计 3900.0
  守恒:期初金额 = 主表期初金额 + 异常表期初金额
--- 校验表 ---
  理论期末公式 | 理论期末 = 期初 + 入库 − 出库
  守恒断言 | 期初 + 入库 − 出库 − 系统期末 = 0;差异 > 0.01 进异常表并标出金额
  异常单价阈值 | 单价 ≤ 0,或 |单价 − 参考价| / 参考价 > 50%(--deviation 可调)
  字段容错 | 五表分开按「存货编码」join,或一张宽表;只出现在一边的编码显式列进异常表,绝不补 0
  主表行数 | 5
  异常行数 | 1
  输入编码数 | 5
  主表金额合计 | 42800.0
  守恒差异(入-主-异) | 0.0
```

## 拒绝权(什么情况下算不出)

**直接拒绝**(不给替代值、不按 0 算):

| 情况 | 处理 |
|---|---|
| 一张宽表和五表参数同时给 | **直接拒绝**:本包只认一种输入方式 |
| 五表参数没给全 | **直接拒绝**:缺哪张就报哪张 |
| 一张表里同一个存货编码出现两行 | **直接拒绝**:无法判断该取哪一行 |
| 表里找不到存货编码列 | **直接拒绝**,列出可识别的编码列名 |

**不拒绝,但进异常表说清楚**:

| 情况 | 处理 |
|---|---|
| 系统期末 = 0 却有入库 / 出库 | 进异常表(高)标「疑似漏填」 |
| 期初 = 0 却有出库 | 进异常表(高)标「疑似漏填期初」 |
| 理论期末 ≠ 系统期末(> 0.01) | 进异常表(高)标出差额 |
| 理论期末 < 0 或 系统期末 < 0 | 进异常表(高)标「负库存」 |
| 编码只出现在五表的一边 | 进异常表(高)说明缺哪一头,**未补 0** |
| 表里有这一列但值空 / 非数字 | 进异常表(高),不按 0 处理 |
| 单价 ≤ 0 | 进异常表(高),影响金额按 0 计但**显式标注不静默按 0** |
| 单价缺失 / 非数字 | 进异常表(高),影响金额标「不可计算」,**不填 0** |
| 单价偏离参考价 > 阈值 | 进异常表(中),影响金额按 0 计并显式标注 |

## 关键设计(容易踩的坑)

1. **理论期末守恒**:`期初 + 入库 − 出库 − 系统期末 = 0`,差 > 0.01 进异常表并标出金额。
   这条断言能挡住"漏记一笔出库"这类最容易发生、又最难自查的错误。
2. **三方比对**:账面(本包算的)/ 系统 / 盘点两两比,三路各算一次影响金额再取合计,
   主表按合计降序——**金额大的差异一定排在最上面**,不用你逐行找。
3. **不补 0**:某个编码只出现在五表的一边(比如只出现在盘点表),
   异常表里写明"另一端没有",绝不偷偷按 0 补齐。
4. **异常单价不静默按 0**:单价 ≤ 0 或偏离参考价时,影响金额记 0 并在异常表写明
   「按 0 计(不静默按 0)」——按 0 是为了不放大错误金额,
   但本包会明确告诉你"这个数被压成 0 了,需要人工确认后手工填列"。
5. **单价缺失 ≠ 单价为 0**:缺失时影响金额栏写「不可计算」,排序时排最后,
   并在校验表里累计"有几个编码因缺价而算不出金额"。
6. **参考价不是历史价**:本包没有历史价库,参考价依次取
   「该编码自身多个有效单价的均值 → 同存货名称其他行的单价均值」;
   没有可比对象时**不做偏差校验**(不硬凑一个参考价来吓唬你)。
   实测 70 元 / 12.5 元这种同名称下的极端价会被抓出来。
7. **疑似漏填不拒绝**:系统期末填 0 很可能是漏填而不是真的清库,
   本包照样算,但一定在异常表里标"疑似漏填"让你去核。
8. **同一张表重复编码直接拒**:同一个存货两行是最容易在搬数时发生的错,
   与其随便取一行糊过去,不如直接说清楚。

## 人工复核(必读)

- 「理论期末 ≠ 系统期末」的差额要追到具体凭证,别直接调期末数凑平
- 负库存 0 元差异可能是真负、也可能是出库未做入库红冲,需查明细
- 「疑似漏填」项必须回到源系统确认,不要在本表的输出上改数
- 单价异常的存货,其影响金额被压成 0,需人工确认实际单价后手工填列
- 参考价是本次输入的同类均价,不是历史成本价,偏差结论只作线索
- 盘点差异要考虑坏损、呆滞、寄销、在途等非标准状态,本包一律按数量差异处理
- 影响金额 = 数量差异 × 单价,若单价为含税价,三路金额口径需一致

## 相邻路线转交

| 用户要做的事 | 转交给 |
|---|---|
| 存货成本核算 / 移动加权平均单价 | `cost-allocation` |
| 库存周转率 / 呆滞分析 | `inventory-aging-analysis` |
| 盘点差异的责任认定与账务处理 | `inventory-adjust-voucher` |
| 采购入库单与应付账对账 | `ap-recon` |
| 销售出库与收入确认对账 | `revenue-recon` |
| 存货跌价准备测算 | `impairment-assessment` |

## 可直接复制的说法

```text
把这几笔存货的进销存差异查一遍:期初 + 入库 − 出库 要等于系统期末,
对不上的话把差额标出来,别给我一张凑得平的表。
账面、系统、盘点三方都要两两比,差异金额 = |差异数量| × 单价,
按影响金额从大到小排。
理论期末或系统期末是负的、单价是 0 或负的、单价明显偏离同类的,
都给我列到异常表里。数量缺的要说明缺哪一头,不要偷偷按 0 补。
单价没有的写「影响金额不可计算」,不要填 0。
期末为 0 但确实有出入库的,不要拒我,标个「疑似漏填」就行。
```

## 做完怎么算完成

- [ ] 每个编码的「期初 + 入库 − 出库 = 理论期末」已与系统期末逐条核对
- [ ] 三路差异(账面 / 系统 / 盘点)逐条追查,无"未说明原因的缺失"
- [ ] 负库存项已查明(是真负库存还是出库未入账)
- [ ] 「疑似漏填」项已回源系统核实,未在本包输出上改数
- [ ] 异常单价项已确认实际单价,被压成 0 的影响金额已手工填列或说明
- [ ] 只出现在一边的编码已确认是漏表还是确实无业务
- [ ] 期初金额守恒差异为 0,期初金额合计与账套一致
- [ ] 单价口径(含税 / 不含税)三个方向一致,已与成本核算口径对齐

---

本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。

版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。
本技能由律令科技(深圳)有限公司开发,**财友云(caiyouyun.cn)**发布与展示。

允许个人及企业内部免费使用、复制、修改,包括内部生产环境。
未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。
各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 `LICENSE.md`。

相邻技能

分析 规划中P1 在建 已上线

成本归集与分摊

按工时/产量/面积/收入等动因分摊,输出分摊过程表

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

多维度毛利分析

按产品/客户/区域/月份拆解毛利与贡献边际

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

应收账龄与坏账准备

账龄分段、坏账计提测算、客户风险排序

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

预算执行差异分析

预算 vs 实际的额差率差与预警清单

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

本量利与盈亏平衡

盈亏平衡点、安全边际、敏感性与情景测算

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

经营分析素材生成

月度经营分析的数字、结论与图表数据源一次产出

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

费用报销汇总

按部门/项目/费用类型三维汇总,本期-上期-变动额-变动率,未审批与缺发票不入正式汇总,超预算单列

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

部门费用与降本分析

按部门/项目/供应商汇总增长贡献,区分一次性与持续性费用,识别单价上涨/重复采购/供应商集中

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

管理层一页摘要

一句话结论+5 个核心指标+3 个关键变化+风险影响+待决策事项,事实/假设/建议三段分开,每个结论带数据依据

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

客户盈利分析

按客户算收入成本毛利毛利率,亏损客户与成本缺失单列标高风险,不按 0 成本算毛利

L0 · 成本 / 预算 / 经营
票证 规划中P0 计划 已上线

发票查重

按发票号码+代码+金额+日期组合查重,拦住重复报销与重复入账

L0 · 发票 / 票据
票证 规划中P0 计划 已上线

发票台账

进销项发票台账,按月/客户/税率汇总,导出 CSV

L0 · 发票 / 票据
本页内容由本地构建生成于 2026-09-27。技能正文以随包 SKILL.md 为准。