複式簿記システムの構築
[STEP 1] Google SpreadSheets に蓄積した仕訳を SQLite + Python で処理するシステムの確立
個人的に青色申告による複式簿記が必要なので、そのための必要十分なシステムを構築する。
(市販の会計ソフトは決して「必要十分」ではなく、単なる「十分」(つまり不必要な余計な要素を過剰に備えている)ので、論外。)
おおまかなイメージとしては:
- 逐次発生する会計イベントは人手によって「仕訳」してデータを入力し、1 年を通じてデータベース(仕訳帳)に蓄積する
- 年間の蓄積された仕訳帳に基く年度末の「総勘定元帳の集計」と「決算整理仕訳」と「損益計算書の作成」は、Python プログラムで自動化する。
具体的には:
- 仕訳帳は Google SpreadSheets を利用して家族で共有
- 集計・決算整理・損益計算は、Google SpreadSheets から TSV をダウンロードして、SQLite にインポートし、Python で SQL を駆動してそれらの定型化された作業を行い、結果を複数の TSV としてアウトプットする。最後にそれら TSV を単一の .xlsx ファイルにマージして一つの総勘定元帳として得る。
仕訳帳のスキーマ(Google SpreadSheets)
create table Journal (
id integer primary key,
parent_id integer,
date date,
amount integer,
debit text,
credit text,
description text
);
ID は Google SpreadSheets 上では、単に「行番号+1」の計算式を使っただけのもの。
親IDは、借方 or 貸方が諸口(複数科目)となる場合の「一対多」または「多対多」の仕訳のために用意した要素。グルーピングするエントリーのIDを親ID として指し示す。
- 通常の一対一の仕訳
- 「ID」「日付」「金額」「借方科目」「貸方科目」を示し、「親ID」は NULL
- 一対多(または多対多)の仕訳の親エントリー
- 「ID」「日付」を示し、「親ID」は NULL
「金額」「借方科目」「貸方科目」は両方とも「諸口」の場合は NULL だが、片方が単一の場合は、そのままその科目と金額を使い、一方だけ諸口扱いの NULL とすればよい。 - 一対多(または多対多)の仕訳の子エントリー
- 「ID」「親ID」「金額」「借方科目」「貸方科目」のみを示し、「日付」は NULL
プロトタイプから完成版へ
- Google SpreadSheets からは手動で journal.tsv をダウンロードする。
- pptsv.py で TSV をプリプロセスする(日付や金額のフォーマットの修正)。
- macOS 標準の sqlite3 コマンドを使って、accounting.sqlite ファイルに table を新規作成し、プリプロセスした journal.pp.tsv をインポートする。
.mode tabs
.import journal.pp.tsv Journal - Python 経由で上記データベースを処理して、決算整理仕分けを行ってデータベースをアップデートし、各勘定科目に分け、.tsv でエクスポートする(accounting.py)。
- 勘定科目別にエクスポートされた .tsv を merge2xlsx.py で単一の 総勘定元帳.xls にマージする。
Update
上記プロトタイプで、各処理を確立できたので、最終的に、accounting.py のみで TSV のプリプロセス以降(2 ~ 5)の処理を一挙に行えるようにコーディングし直して、一応の完成を見た。
- Google SpreadSheets からは手動で journal.tsv をダウンロードする。
- 上記ファイルを Python(accounting.py)で内部 SQLite データベースにインポートして処理し、決算整理仕分けを行ってデータベースをアップデートし、各勘定科目に分け、.tsv で一時ファイルにエクスポートし、それらの勘定科目別にエクスポートされた .tsv を merge2xlsx.py で単一の 総勘定元帳.xls にマージする(また、以下で「今後の課題」として挙げた減価償却資産に関する処理と出力 .tsv も、今ではマージできるようになっている)。
つまり、現時点(2021-02-13)において、残っている課題は Google SpreadSheets からのダウンロード作業(1 の部分)もプログラムに組み込むことくらいしか残っていない。
今後の課題
毎年の確定申告に困らない程度のシステムの構築には至ったが、損益計算書までであり、資産に関する処理(貸借対照表)は未対応である。特に減価償却費が自動化できていないと、損益計算書も本当の意味で完成したとは言えないので、せめて減価償却資産については、対応できるようにしておきたい。👉 STEP 2 へ
[STEP 2] 減価償却資産に関する機能の追加
STEP 2 では、減価償却資産とそこから減価償却費を算出するためのシステムの構築について考える。スキーマ的にはこんな感じで十分か。
create table Depreciable_Assets (
id integer primary key,
name text,
date date,
value integer,
depreciation_years integer,
apportion real,
description text
);
上を基にして Google Spreadsheets の表を作ってみた。仕訳帳と違って適宜更新するようなものではないので、Google Spreadsheets にする必要もなく、直接 TSV を作っても違いはない。
この表を基にして、その年度での減価償却費用を算出し、決算整理仕訳の処理の一環として組み込めばいいわけだ(→ 実装完了済)。
確定申告的には、上の処理は国税庁側のシステムが行うので、自前で用意したとしても二度手間になり、どうしても必要というほどのものでもないかもしれない。
コメント
コメントを投稿