夜行録 - 酔歩.net

日暮れて道遠し さらに夜道を行く もって夜行録と名付く

gnucash 続き

懸案だった gnucash への csv import の続き。
あるアカウントに対する transaction として csv ファイルを読み込めて、日付、説明、入出金額は読み込めているのだが、相手アカウントの渡し方がどうにも不明

Grisbi という別の複式簿記アプリも見つけて、こちらは gnucash よりちょっといい感じなのだが、やはり import が不完全…。 gnucash と違って export もできていい感じだったんだがなぁ。ってデータの export ができない gnucash が問題すぎる気がするが。

結局あれこれ弄っているうちに csv ではなく qif を吐くように python のコードを直してしまったわけだが…。
それでも gnucash ではちゃんと読めたが、 Grisbi だと transfer を transfer として読んでくれなかった。

手元の pda で過去10年分ちかい家計簿が見れると、日記、予定表と並んで 何をやっていたのはいつだったかの非常に重要なデータになるので、この参照性は 確保したいなぁ

そんな訳で、手修正も含めて、とりあえず今年1月からの分は gnucash に取り込んだが…。もっと古い方はどうするかな…。 gnucash に取り込んでも export できないんじゃ行き止まりだなぁ…。

gnucash で import する csv ファイルに必要なカラム
日付、説明はそのままの意味、入金、出金はそれぞれ額を書く(入金はその額が入り、出金はその額が出る)。 適用するアカウント(勘定科目)はcolumnを割り付けた後に指定するが、 入金・出金の相手は指定できない(全部貸借不一致になる=資金移動の項がない)。 balance と番号は使い道不明

銀行のデータを10行程度とりこんで手で修正するような用途向けだろうか? 全データ取り込みにはaccount毎に出金を集計する必要がある。資金移動は全部手修正?

Format: 日付,出金,説明 (CB2Gris2.py のamountを入金と読めばそのままでよし)

結局 qif を吐く script を書く…
とりあえず UTF-8 じゃないと駄目っぽい (csvはshift_jis可)。 後述の Grisbi の吐いたものと突き合わせてみると…、opening balance必須か?

片や Grisbi の csv import
gnucash 同様、account 毎に出金を集計したcsvを用意。 csv には移送先を渡す余地はあり、読み込みにも成功するが実際には transfer になっていないので手修正が必要。 カテゴリの扱いも要注意(sub categoryを与えないと変になるのでcategory:categoryにしておく)。 読み込む都度適宜新アカウントを作らせればよい。 bank と cash の区別が不明

Format: Date, Payee, Balance(?), Note, Category, Sub-Category

上記 gnucash 用 qif はちゃんと読める。 YY/MM/DD だと DD/MM/YY と読み間違えるので YYYY/ にする。 transfer はやはり扱えない?

palm cashbook の吐いた csv 出力を account 毎に分けて QIF に変換する python script。
かなり個人的な処理(外食費を食費のサブカテゴリに戻すとか)も含んでいる

  1. #! /usr/bin/python
  2. # -*- coding: shift_jis -*-
  3. "rb""税金等", "光熱費・水道", "通信""カテゴリ""資産""その他""外食費""食費""NHK""光熱費・水道""/")
  4. DATE="20"+D[0]+"-"+D[1]+"-"# format is: date, payee, category, balanse, notes
  5. "自分の財布", "立て替え""●●銀行", "△△銀行""CCard""CBdata"".qif"
  6. #OUTNAME="CBdata"+str(N)+A+".csv"
  7. "w")
  8. # QIF format
  9. "Cash""Bank"
  10. CB.write("!Type:""\n")
  11. CB.write("D""\n")
  12. CB.write("T0\n")
  13. CB.write("CX\n")
  14. CB.write("POpening Balance\n")
  15. CB.write("L["+A+"]\n")
  16. CB.write("^\n""D"+L2[0]+"\n")
  17. CB.write("T"+"-"+L2[4]+"\n")
  18. CB.write("P"+L2[5]+"\n")
  19. CB.write("L"+L2[2]+":"+L2[3]+"\n")
  20. CB.write("^\n"
2011年05月05日 (Thu) - 23:13:00 - その他雑記 - 5203x - permalink
Karma points: 2. Do you like this article? [yes/no]