仕訳帳の直接入力・修正
これまで「売上」「経費」「仕入」「Transafer」経由でしか仕訳を作れなかったが、複式簿記の仕訳帳に直接1行ずつ入力するUIと、その修正機能を追加した。
「お金の移動」一覧
口座間の資金移動(Transfer)だけを集めた一覧ページと編集機能を追加した。売上・経費と違って損益に影響しない取引なので、別の一覧として切り出した方が使う側も読みやすい。
定期収入の実現機能
定期的に発生する売上(家賃収入など)をあらかじめ計画として登録しておき、実際に入金があったタイミングで正式なTransactionに変換する「実現」の仕組みを作った。登録画面、消費税率の変更、実現ロジック、実現UIと順番に積んでいった。
net+tax入力とtax_optionの扱いで行き来した
実現時の金額入力に、税込金額をそのまま入れる方式(gross)と、税抜金額と消費税額を別々に入れる方式(net+tax)の2通りを用意した。ここで、免税事業者にnet+tax入力を許すかどうかで一度判断がぶれた。
最初は「免税業者はnet+tax禁止、grossのみ」で作ったが、その後「免税業者・課税業者の制限を外す」と一度緩めた。しかし結局、免税事業者は消費税を扱わない以上net+tax入力自体が概念的に成立しないと考え直し、「免税業者はnet+taxの入力をさせない」に戻した。行ったり来たりしたのは、実装を先に進めてから業務ルールとして正しい形を確認したため。今回は影響範囲が小さかったので実装しながらの手戻りで済んだが、本来は先に業務ルールを確定させてから実装した方が早い。
あわせて、amount入力(grossモード)のときは税率の指定を必須にする調整と、源泉徴収額を手動で上書きできる機能も入れた。定期収入は毎回同じ条件で入金されるとは限らないので、実現時に例外的な源泉徴収額を反映できないと実用にならない。
取引相手管理とその他
取引相手(Counterparty)管理をLivewireコンポーネント化し、インボイス登録番号の正規化ヘルパーを追加した。ハイフンの有無や全角半角が混在しても同一の取引相手として扱えるようにするため。仕訳帳一覧はタイプ(売上・経費・振替など)によって色分けし、見た目からも取引の種類が分かるようにした。