固定资产模块最容易被低估。很多团队以为它只是“定时生成折旧分录”,但企业版真正难的是:资产在生命周期中途被改值、暂停、出售或处置时,原来的折旧计划怎么安全地续接? account_asset 的重点就落在这里。
主要参考:
enterprise/account_asset/models/account_asset.pyenterprise/account_asset/wizard/asset_modify.pyenterprise/account_asset/views/account_asset_views.xml
一、折旧板不是静态表,而是资产状态机的结果
AccountAsset 上的状态有 draft / open / paused / close / cancelled。这说明折旧不是一个离线计算器,而是跟资产状态紧密绑定的对象。资产一旦从草稿转成运行中,再到暂停或关闭,折旧板都可能跟着重算。
理解这一点很重要:折旧板不是“先算好就永远不变”,而是资产经营事实变化后的投影。
二、修改资产时,系统先防错,再允许重算
asset.modify 向导在 create() 和 modify() 里做了很多前置保护。例如:
- 如果未来日期已经有 posted depreciation,必须先反转;
- 如果修改日期早于 fiscal lock date,直接拒绝;
- 恢复暂停时,恢复日期不能早于暂停日期。
这些限制看上去麻烦,实则是在保护会计闭环。因为一旦允许用户在锁账前改资产、在已入账未来折旧之上再改计划,最终坏掉的不是折旧板,而是总账可信度。
三、改值不是改一行金额,而是重建未来折旧逻辑
modify() 会记录旧值,再把新的期限、期间、残值和相关科目写回资产,然后触发未来折旧重算。若是增值场景,系统甚至可能创建 gross increase 资产,而不是简单覆盖原资产。
这背后的会计含义很清楚:资产改值是新的经营事实进入旧资产生命周期,不能靠“把剩余金额改掉”敷衍过去。
四、出售与处置时,系统会明确区分 gain / loss / neutralize
向导里的 gain_or_loss 和 informational_text 很值得看。企业版不只是关闭资产,而是先估算该笔处置是收益还是损失,再决定处置分录如何落到 gain/loss account。若是销售场景,还会中和原始收入,再把出售结果转成最终损益。
这说明系统把“资产结束生命周期”看成一笔完整会计事件,而不是单纯把状态改成 close。
五、新手最容易踩的坑
- 以为处置资产就是把残值清零。实际上还涉及损益、对冲和可能的销售发票。
- 以为暂停后恢复只是改回 open。企业版还要补 paused days 与后续折旧节奏。
- 以为未来折旧已经生成也可以直接改值。源码明确要求先反转未来已过账分录。
六、实战建议
- 资产改值、出售、暂停都建议走标准向导,不要手工改字段。
- 月结前先清理未来误过账折旧,否则后续修改会被锁住。
- 培训财务时,把“重算折旧板”理解成“重算未来会计事实”,而不是单纯刷新界面。
七、结论
account_asset 的成熟之处,在于它不把固定资产当作一张静态卡片,而是当作一条会不断被经营事实打断、再被会计规则重新接续的生命周期。先重算,再关账,正是为了让这条生命周期始终可解释、可复核。
DISCUSSION
评论区