先进先出与移动平均计价方法
1. 概述
ERPNext 采用永续盘存制对库存进行计价:每一次库存移动(入库、出库、调拨、生产)都会通过库存分类账实时更新物料的数量和货币价值。计价方法决定了如何计算每个出库单位的价值,从而影响剩余库存的价值以及销售成本(COGS)。
ERPNext 支持三种计价方法:
- 先进先出(FIFO)
- 移动平均
- 标准成本 (在单独指南中介绍)
本指南将解释先进先出和移动平均——每种方法的工作原理、产生的会计分录、对回溯单据和重过账的处理方式,以及各自的优缺点,以便您为每个物料选择合适的方法。
设置位置: 计价方法可以在物料级别(物料主数据 → 计价方法)设置,也可以在公司级别设置默认值,或者在库存设置中全局设置。最具体的设置优先级最高(物料 → 公司 → 库存设置)。
2. 先进先出(FIFO)
2.1 工作原理
先进先出假设最先入库的库存最先被消耗。ERPNext 为每个物料-仓库组合维护一个 [quantity, rate] 层的先进先出队列。每次入库都会以其实际入库价格添加一个层;每次出库都会从队列的前端(最早入库的)消耗层,并使用它们原始的价格。
任何时刻报告的计价率是队列中当前剩余层的加权平均值,但每个出库单位的成本是根据其所消耗层的具体价格计算的。
2.2 示例
| 步骤 | 交易 | 之后队列 | 库存价值 |
|---|---|---|---|
| 1 | 入库 10 个 @ 100 | [10 @ 100] |
1,000 |
| 2 | 入库 10 个 @ 120 | [10 @ 100], [10 @ 120] |
2,200 |
| 3 | 出库 15 个 | [5 @ 120] |
600 |
在步骤 3 中,出库的 15 个单位成本计算为 10 个 @ 100 + 5 个 @ 120 = 1,600(最早入库的优先)。剩余的 5 个单位仍按其原始价格 120 计价。
2.3 会计影响
在永续盘存制的公司中,出库会以消耗单位的实际分层成本计入销售成本:
- 销售成本(步骤 3)= 1,600
- 库存减少 1,600;剩余库存资产 = 600。
由于出库成本反映了离开库存的特定单位的实际历史采购价格,先进先出法紧密追踪实际采购成本,并被广泛接受用于法定/税务报告。
2.4 优点
- 紧密匹配实际成本流 — 销售成本反映了所消耗特定单位的真实支付价格。
- 期末库存价值更真实 — 剩余库存按最近期的采购价格计价,因此资产负债表反映了接近当前重置成本的价值。
- 广泛接受 — 符合会计准则和税务机关要求;直观且可审计(可以追溯哪些层被消耗)。
- 适用于有保质期/批次轮换的物料(食品、药品、易腐品),因为实际中您也会优先发出最早入库的。
2.5 缺点
- 对回溯单据敏感 — 插入或编辑过去的交易会改变后续出库消耗的层,因此必须重新计算(重过账)每个后续的分类账条目。在长而密集的分类账上,这种重过账速度慢且资源消耗大。
- 在价格上涨环境中销售成本波动大 — 较早、较便宜的层先被费用化,这可能在通货膨胀期间低估销售成本并高估利润。
- 计算/存储量更大 — 必须为每个物料-仓库组合维护和序列化层队列。
- 重过账负担更重 — 当更正、取消或落地成本凭证触及历史条目时。
3. 移动平均
3.1 工作原理
移动平均为每个物料-仓库组合维护一个单一的混合平均价格。在每次入库时,重新计算平均值:
new average = (existing qty × existing avg rate + incoming qty × incoming rate)
──────────────────────────────────────────────────────────────
existing qty + incoming qty
出库按当前平均价格计价,并且不会改变平均值;只有入库(和重估)会改变它。
3.2 示例
| 步骤 | 交易 | 在手数量 | 平均价格 | 库存价值 |
|---|---|---|---|---|
| 1 | 入库 10 个 @ 100 | 10 | 100 | 1,000 |
| 2 | 入库 10 个 @ 120 | 20 | 110 | 2,200 |
| 3 | 出库 15 个 | 5 | 110 | 550 |
在第二步,平均成本变为 (10×100 + 10×120) / 20 = 110。第三步发出的 15 个单位,每个成本为 110 → 销售成本 = 1,650;剩余 5 个单位按 110 计价 = 550。
3.3 会计影响
- 销售成本(第三步)= 1,650(15 × 平均成本 110)。
- 库存减少 1,650;剩余库存资产 = 550。
与相同数据下的先进先出法相比,移动平均法 平滑 了成本:销售成本为 1,650,而先进先出法为 1,600,差额流入剩余库存的价值。
3.4 优点
- 平滑价格波动 — 单一混合费率减轻了采购价格波动的影响,使销售成本和利润率更加稳定。
- 更简单、更轻量 — 每个物料-仓库只需维护一个费率;无需存储或遍历批次队列。
- 更易于理解和核对 — “一种物料,一个当前成本” 对运营和报告来说直观易懂。
- 适用于同质、快消、商品化物料,其中个别批次无法区分(如散装紧固件、燃料、原材料化学品)。
3.5 缺点
- 回溯分录仍需重新过账 — 因为过去的收货会改变 所有后续 交易的移动平均成本,ERPNext 必须重新计算后续链条。与先进先出法一样,在长账本上可能很慢。
- 不跟踪实际批次成本 — 发出成本是混合的,因此可能与实际支付给特定发出单位的真实价格存在差异;对于可追溯批次或高价值物料来说不够精确。
- 平均成本可能滞后于现实 — 在价格快速变化的环境中,混合费率会落后于当前市场成本,这可能会歪曲个别销售的利润率。
- 审计追踪不够精细 — 无法指出“这些特定单位以这个特定成本发出”,只能知道当时的平均成本。
4. 先进先出法与移动平均法 — 概览
| 方面 | 先进先出法 | 移动平均法 |
|---|---|---|
| 发出成本基础 | 最旧剩余批次的实际费率 | 当前混合平均费率 |
| 跟踪实际批次成本? | 是(批次精确) | 否(混合) |
| 销售成本行为 | 首先反映最旧的价格 | 在所有收货中平滑 |
| 期末库存价值 | 按最近采购价格 | 按混合平均价格 |
| 维护的数据 | [qty, rate] 批次队列 |
单一平均费率 |
| 回溯分录 → 重新过账? | 是(重新计算后续链条) | 是(重新计算后续链条) |
| 计算成本 | 较高(遍历批次) | 较低(单一费率) |
| 最适合 | 易腐品、批次轮换、审计敏感物料 | 同质、高量、商品化物料 |
| 法定接受度 | 非常广泛接受 | 广泛接受 |
5. 共同限制:回溯分录触发重新过账
这是两种方法共有的最重要操作特性——也是与 标准成本 的关键区别。
对于 先进先出法和移动平均法,任何库存分类账分录的价值都取决于 其之前的条目(存在哪些批次,或移动平均成本是多少)。因此,当您:
- 插入一个 回溯 交易,
- 取消 或 修改 历史凭证,
- 对过去的收货应用 到岸成本凭证,或
- 更改过去的估价费率,
……ERPNext 必须 重新过账 — 重新计算该物料-仓库的 每个后续库存分类账分录 的数量、费率、价值和总账影响(即 重新过账物料估价 作业)。对于历史记录长且密集的物料,这 缓慢、消耗资源,并且会暂时改变您认为已确定的库存价值。
如果您的组织经常记录 回溯更正,并且这种重新过账成本令人困扰,请考虑 标准成本 方法(请参阅单独的 标准估价费率 指南),其中费率按日期已知,回溯分录 不会 触发重新过账。
6. 选择方法 — 建议
| 您的情况 | 推荐方法 |
|---|---|
| 易腐/保质期物料,物理上先发出最旧的 | 先进先出法 |
| 高价值或可追溯批次的物料,需要精确成本 | 先进先出法 |
| 法定/税务制度要求实际成本流动 | 先进先出法 |
| 同质、商品化、快消物料 | 移动平均法 |
| 您希望获得更平滑、更稳定的利润率 | 移动平均法 |
| 您希望将估价维护开销降至最低 | 移动平均法 |
| 您经常发布 回溯 分录且重新过账成本高 | 标准成本 (单独指南) | 您希望获得可预测的固定产品成本及隔离的价格差异 | 标准成本 (单独指南) |
最佳实践(两种方法)
- 在物料发生交易前设定方法。 在库存存在的情况下更改物料的计价方法会造成干扰,甚至可能被阻止。
- 启用永续盘存科目(仓库/库存、已收未票库存、销售成本、库存调整),以确保计价与总账保持同步。
- 批量处理历史更正,并在低流量时段运行,因为它们会触发重新过账。
- 收货后及时使用到岸成本凭证,以避免日后进行大规模追溯重估。
- 定期核对库存价值与总账(库存分类账/库存余额与库存科目对比),以便及早发现偏差。
- 保持每个物料类别的一致性,以便同类物料的报表和利润率具有可比性。
7. 总结
- 先进先出法 按 最旧剩余批次的实际成本 对出库库存进行计价——精确、便于审计,适用于易腐品和批次可追溯商品,但批次管理负担重且对重新过账敏感。
- 移动平均法 按 单一混合平均成本 对出库库存进行计价——简单、平滑,适用于大宗标准化商品,但精确度较低且仍对重新过账敏感。
- 两种方法 在历史数据变更时都会重新计算(重新过账)后续分类账。如果成本因素是决定性因素,标准成本 方法可完全避免此问题——请参阅《标准计价率指南》。