负值或异常高的估值率几乎总是由某一笔错误的库存交易引起的,而不是估值方法本身的 bug。请在库存分类账中找到那笔交易,修正它,然后运行重新计算库存估值,这样之后的所有分录都会被重新计算。
你可能遇到了以下症状之一:
- 库存余额显示余额价值为负,而数量却是正数。
- 某个物料的估值率突然跳到正常成本的 10 倍或 1000 倍。
- 交货单或销售发票上的销货成本高得离谱,或者是负数。
- 物料清单或库存分录为某个原材料取到了一个意外的费率。
常见原因
估值率等于余额价值除以余额数量。所以当一笔价值以错误的费率入账,而剩余数量又很少时,费率就会被推得偏离很远。
| 原因 | 出了什么问题 | 你在库存分类账中看到什么 |
|---|---|---|
| 负库存 | 在库存设置中开启了允许负库存时,库存在收到之前就被发出了。出库分录使用了猜测的或旧的费率。当收货到达时,其费率不同,差额就留在了余额价值中。 | 余额数量降到零以下,然后一笔收货之后平均费率(余额库存)出现跳变,或者余额价值变为负数。 |
| 零费率收货 | 采购收货、物料收货或库存对账在保存时费率为 0(通常勾选了允许零估值率)。这会把平均值拉低。之后以旧费率出库时,取走的价值可能超过剩余的价值。 | 收货上的入库费率为 0,随后费率下降,之后余额价值变为负数。 |
| 倒填日期的分录 | 在已有分录之前过账的交易会改变之后每一笔分录的费率。如果重新计算还在排队或已失败,之后的分录会保留旧值。 | 倒填日期之后的分录对不上。该物料的重新计算库存估值记录显示为排队中或失败。 |
| 序列号物料 | 每个序列号都带有它收货时的费率。如果某个序列号以错误的费率(或 0)入库,那么它的每次转移和交货都会带着那个错误的费率。 | 物料转移或交货单上的入库费率与该物料的通常成本相差很大。 |
| 错误的计量单位换算 | 物料以一种计量单位采购(例如箱),但以另一种计量单位(个)入库。错误的计量单位换算系数会把金额分摊到过少或过多的单位上。 | 单据上的入库数量看起来不对,入库费率是预期费率的倍数(例如 12 倍)。 |
找到费率出错的那笔分录
库存分类账报表按顺序列出该物料的每一次移动,因此你可以看到费率出问题的确切凭证。
- 转到库存 > 报表 > 库存分类账。
- 设置公司、物料和仓库。将起始日期设置得足够早,以覆盖费率看起来正常的最后时间。
- 从上到下阅读以下列:
- 入库费率 —— 每笔收货的费率。查找 0,或远高于正常成本的费率。
- 余额数量 —— 查找任何降到零以下的行。
- 平均费率(余额库存) —— 每笔分录之后的估值率。找到第一次跳变或变为负数的行。
- 余额价值 —— 这应该接近余额数量 x 平均费率。数量为正而价值为负就标志着问题所在。
- 打开第一个错误行上凭证号对应的凭证,以及它前面的那笔收货。其中之一就是你的源头分录。
一次检查一个仓库。每个仓库都有自己的估值率,所以一个仓库的问题可能看起来像是转移到另一个仓库时的突然跳变。
要一次性找到所有受影响的物料,请使用库存分类账不变量检查和错误库存价值报表报表。同时检查重新计算库存估值列表中状态为失败的记录。
修正源头分录,然后重新计算
先修正源头分录。仅重新计算只会再次运行同样的错误数字。
1. 修正源头分录
| 如果原因是 | 这样做 |
|---|---|
| 负库存 | 过账缺失的收货,其过账日期和时间要早于第一次出库,这样库存就不会降到零以下。 |
| 零费率收货 | 取消并以正确的费率修改该收货。对于库存对账,以正确的估值率修改它。 |
| 采购收货上的错误费率 | 取消并修改它。如果只是缺少运费或关税,请改用到岸成本凭证。 |
| 错误的计量单位换算 | 修正物料计量单位表中的换算系数。然后取消并修改受影响的单据。 |
| 序列号以错误的费率入库 | 取消并修改该序列号的原始入库单。后续的调拨和发货在重新过账后会采用修正后的费率。 |
2. 运行库存重新估值
取消或修改倒填日期的分录通常会自动生成一次重新过账。如果没有生成,或者之前的重新过账失败了,就手动创建一次。
- 转到库存重新估值 > 新建。
- 设置基于:
- 物料和仓库 — 输入物料编码、仓库,以及源分录的过账日期和过账时间(或稍早一点的时间)。
- 交易 — 输入源分录的凭证类型和凭证编号。
- 保存并提交。重新过账会在后台运行。其状态会从排队中变为进行中,再到已完成。
- 如果状态为失败,请查看错误日志字段。它通常会指出一行你仍需修复的负库存记录。修复后点击重新开始。
- 再次运行库存台账,确认平均费率(结存库存)现在已恢复正常。
重新过账还会更新总账,因此库存和账目价值会再次匹配。可以在库存重新过账设置中将重新过账限制在特定时间段;如果没有任何反应,请检查那里的时间段设置。
为什么物料清单或销售发票的费率可能与库存台账不同
物料清单和销售发票中的费率是在不同的时间、或从不同的地方获取的,与库存台账不同。出现差异并不总是错误。
| 单据 | 其费率来源 | 为什么会有差异 |
|---|---|---|
| 物料清单 | 物料费率基于:估值费率、最近采购费率或价格表。使用估值费率时,它取各仓库的平均值(如果设置了源仓库,则取源仓库的值)。 | 成本在保存物料清单时就固定了。只有当你点击更新成本时,或者在制造设置中开启了自动更新物料清单成本时,它才会变化。而库存台账是按仓库、实时更新的。 |
| 销售发票 | 费率是来自价格表或定价规则的销售价格,不是成本。 | 销货成本由送货单入账,或者仅在勾选了更新库存时由发票入账。它使用过账日期和时间对应的估值费率。 |
| 送货单 / 库存分录 | 源仓库中过账日期和时间对应的估值费率。 | 之后倒填日期的分录会在单据提交后改变这个费率。重新过账会更新它,但打印副本仍保留旧值。 |
如果物料清单显示原材料成本有误,请先修正原材料的估值(见上文)。然后打开物料清单并点击更新成本。
预防措施
一旦关闭负库存并且每笔入库都带有真实费率,大多数这类问题就会消失。
- 保持负库存禁用。在库存设置中,不要勾选允许负库存。这样用户就无法在收货之前发出库存。
- 为每笔入库设置估值费率。除非物料确实是免费的(例如免费样品),否则不要勾选允许零估值费率。在物料主数据中为期初库存和免费物料设置估值费率。
- 在新计量单位首次采购之前,检查物料主数据上的计量单位换算系数。
- 限制倒填日期的分录。使用库存设置中的允许创建/编辑倒填日期交易的角色,这样只有少数用户才能过账这类分录。
- 关注重新过账队列。每周检查库存重新估值列表中的失败记录。在更多分录堆积之前逐一修复。
还需要帮助?
如果重新过账完成后费率仍然错误,请在 support.frappe.io 上提交工单。请附上:
- 物料编码和仓库
- 覆盖费率出错期间的库存台账导出文件
- 库存重新估值记录的名称,以及失败时的错误日志