減価償却の金額を、年度単位で手動調整できる機能を追加した。四捨五入の1円ズレなど、実務上どうしても当年度だけ差し替えたいケースに対応するため。
きっかけは今の会計ソフトとの1円差異
本来、減価償却額のような計算で確定する数値は、ソフト側の算出にすべて任せるべきだと思っていた。手動で触れる余地を作ると、正しいはずの計算結果をユーザーが壊せてしまう。
ただ実際には、今使っている会計ソフトとSolerの実装とで、年の償却額の割り算の丸め方が1円違うケースが出てきた。この差異を確認するには、SolerのDepreciationEntry側の値を一時的に会計ソフト側の値に合わせて、突き合わせられるようにする必要があった。「算出に任せるべき」という原則と、「今使っている実データと突き合わせて検証したい」という要請がぶつかった形で、後者を優先して手動調整の入口を作ることにした。
結果としては、固定資産の償却を柔軟に扱えるようになったのはソフトとして良いことだったと思う。実務では端数処理の方針がソフトによって微妙に違うことがあり得るので、完全に計算任せにするより、必要なときに数値を握れる逃げ道があった方が使い勝手が良い。
DepreciationEntryを「確定した実績」として扱う
ここでの一番の設計判断は、DepreciationEntryを「確定した実績」として扱うようにスケジュール計算の意味を切り替えたこと。これまでは償却スケジュールを常に取得日から純粋に計算し直していたので、途中年度を手で1円直しても翌年度の期首残高にはまったく伝播しなかった。保存済みのEntryを「その年度に起きた事実」として扱い、そこから先はroll-forwardで計算する形に変えたことで、手動調整が自然に翌年度以降へ連鎖するようになった。
調整対象と自動再計算がバッティングしないようにis_manually_adjustedフラグを設け、記帳済み(transaction_idあり)のEntryと合わせて「実績として扱う」対象から自動再生成を除外している。
一覧と編集機能
固定資産一覧に償却予定(計算値)と調整済みの一覧を並べて表示し、期首残高・普通償却・割増償却・事業使用割合の編集機能も追加した。算出した金額と手動調整した金額を並べて見比べられるようにしたのは、今回のきっかけである「今の会計ソフトとの差異確認」をそのままやりやすくするため。調整して終わりではなく、「本来の計算値からどれだけ・なぜズレているか」を常に確認できる状態にしておきたかった。