5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

交通系ICから抜き出したcsvをFreeeのアップロード形式に変換

Last updated at Posted at 2018-02-10

嫁がフリーランサーですが数字がクソみたいに苦手なので私が代わりにFreeeを使って事務処理してます。私が商業高校出身という意地もありますけどw

会計処理やってる人はわかってもらえると思いますけど、交通費精算は少額な割に発生頻度が多いので、鬼のように面倒。
交通系ICカードならまだ券売機で履歴を出力できますが、それでも印字可能なのは直近20件だけな上に、出力されるデータは下記のフォーマットです。

No 項目 備考
1 月日 mmdd形式
2 種別(入場) 通常なら「入」
電車以外は「バス等」
ノーラッチで定期券外へ出た場合は「定」
現金チャージは「現金」等
3 利用駅(入場) 入場駅名・バス路線名・チャージした駅
4 種別(出場) 通常なら「出」
ノーラッチで定期券内へ入った場合は「定」
窓口から出た場合は「窓」等
5 利用駅(出場) 出場駅名
6 残高 利用後・チャージ後のIC残高

1行前の記録から残高を引かないといくら引かれたのか・チャージされたのかがわかりません。一旦すべてExcelに入力して額を求めてFreeeに手打ちで入力をしていましたが、この作業が面倒で仕方なかったので、PaSoRiを使って履歴をCSVとして管理することにしました。

#使ったもの

  • MacBook Pro(2011 Early OS: HighSierra)
  • PaSoRi SONY RC-S320(メルカリで700円で購入)
  • Reciept Keeper (App Storeから360円で購入)
  • Python3 + Pandas

手順

MacBookにPaSoRiを接続しReciept Keeperを起動。サイドバーのデバイスにPaSoRiが認識されていることを確認してから、PaSoRiに嫁のPASMOを載せると、Reciept Keeperにデータが吸い出されます。
recieptkeeper.png

※最初の吸い出しは20件ですが、2回目以降は差分のみ吸い出します。
続いて、メニューの「レシート」→「レシートを書き出す」からCSVファイルをエクスポートします。

変換方法

こんなコードを書きました。私初のPythonです。
https://github.com/Akagire/RecieptKeeperCSV2Freee

#実行

$ python3 rkc2f.py 
入力するRecieptKeeper出力のCSVを指定してください:
pasmo.csv #入力ファイルを指定
交通系ICへチャージする際に使用する口座を入力してください:
現金 #ICカードへチャージする口座名
交通系ICの口座を入力してください:
PASMO #ICカードの口座名。現金と分けていない場合は「現金」で良いです
1:乗車
2:乗車
3:乗車
4:チャージ
5:乗車
6:乗車
7:乗車
8:乗車
9:乗車
10:乗車
11:乗車
12:乗車
13:乗車
done!

# 出力

  • 支払.csv
    • ICカード1行分の乗車履歴です(実行結果で「乗車」となった分)
    • 勘定科目は「旅費交通費」です。部門には電車なら「電車」、バスなら「バス」と表示するようにしています(実験中)
  • 振替.csv
    • ICカード1行分のチャージ履歴です(実行結果で「チャージ」となった分)
    • 指定したチャージ元口座からICカード口座への振替情報です。
    • ICカード用の口座を切っていない場合はこのファイルは不要です。

# Freeeへのインポート
支払.csvは「取引」として、振替.csvは「口座振替」としてアップロードしてください。
ICカード用の口座を切っていない人は口座振替のアップロード処理は不要です。

利用する画面は、「取引の一覧・登録」画面の「その他機能」の「取引のインポート」です。詳細はFreeeのヘルプを参照。

ちょこっと解説

  • PandasにCSVを取り込んだ際、からのデータがNaNになってしまうので、比較が楽なようにブランクへ置換してます。
import Pandas as pd
import numpy as np

tlog = pd.read_csv(filePath, encoding="utf-8")
tlog = tlog.replace(np.nan, '', regex = True)
  • 出力したCSVをExcelで見たかったので、出力はShift-JISです。Freeeへの入力はUTF-8でもいけます。
df.to_csv("支払.csv", index = False, encoding = "shift_jis")

#ちなみに
現金から仕事用のICカードにチャージした分の領収書をつけるだけでも問題はないです。税務署からの問い合わせが発生した祭には明細を提出する必要があるので、私は毎回記帳することにしています。

今後

この記事を参考にして、Reciept Keeperを使わないでも行けるようにしてみたいなあと考え中。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?