GnuCashにいくつかあるインポート機能の中に、CSVを用いた取引のインポートがある。 このCSVインポート時に、安全にしたいなら勘定科目コードをCSV中に記載する。 ただし、そのためには先に既存の勘定科目にコードを設定しておく必要がある。
この記事では、勘定科目コードの決め方についてGnuCashの推奨事項を考慮しつつ、自分にとって扱いやすいコードとなるよう設計する大枠の方針を残しておく。
設計方針
- 勘定科目科目コードに使う文字集合は[0-9a-z]
- 葉/末端の勘定科目コードは最下位の文字が非ゼロ
- 枝/親の勘定科目コードは最下位が0
- 勘定科目コードの桁数は最大の深さを持つ勘定科目に合わせて決める
- 雑益・雑損のような「その他」の性質を持つ勘定科目のコードは最下位の文字を
zにしておく。
CSVインポート時の手順と注意
CSVを用いた取引のインポート時、いくつかの列指定の方法がある。 ここでは元となるCSVファイルが作成しやすい「総勘定元帳」のような形式のものを想定する。
- メニューバーから「ファイル(F)」>「インポート(I)」 >「CSVから取引をインポート(T)...」をクリックする。
- ウィザードのウィンドウが開くから、読み込むファイルを選択した直後まで進める。
- ウィンドウ上部の「勘定科目」プルダウンでベースとなる つまり総勘定元帳の勘定科目を選択する。
- CSVファイルの中身がプレビューされている下部の表示では、反対の勘定科目コードを「資金移動先勘定科目」として指定する。
- 残りの必須の列「日付」、「金額(符号反転)/金額」、「説明」の列を指定する。
- 「進む(N)」ボタンでCSVファイルを処理させ、必要なら除外や調整をしてインポートをcommitする。
設計の根拠となるGnuCashの仕様と推奨事項
GnuCashに付属のマニュアル中の「Creating a Chart of Accounts」節には以下の記載がある。
ここで、英文中のaccountが異なる意味で使われていることに注意せよ。 1つ目の文中のaccountsは勘定科目を意味し、2つ目の文中のaccountsは銀行口座を意味する。
The best way to conceptualize a chart of accounts is as a tree. The main branches represent entire categories or groups, while the leaves of the tree denote individual bank accounts or expense categories.
ようは木構造となるようにコードを設計すべきだと言っている。 そして、より具体的なコードの付け方として以下の記載がある。
It’s customary to have the leaf accounts end in non-zero digits, while parent nodes have increasing numbers of zeros.
葉の勘定科目は非ゼロの数字で終わり、その親の勘定科目は末端が0のものが増えていくようにするのが慣例だと言っている。 例えば以下のように決めるのが慣例だと言っている。
300 費用 | +-- 310 新聞図書費 | | | +-- 311 書籍代 | +-- 320 水道光熱費 | | | +-- 321 ガス代 | | | +-- 322 水道代
そして最後に重要な仕様と制限について記載がある。
GnuCash does not prevent duplicate numbering, although we would encourage you to avoid this. Account codes are treated as numbers in base-36, thus, if you run out of numbers, you can use the letters, a through z.
なんとGnuCashは勘定科目コードの重複を禁止しない。 人間が気を付けて採番する必要がある。
勘定科目コードはBASE 36として扱われるから、葉の勘定科目が増えて数字が足りなくなったらaからzの文字を使うことができる。 別の言い方をすると、BASE 36で定義されている文字集合しか使えない。