Skip to content

Instantly share code, notes, and snippets.

@iberianpig
Last active April 10, 2021 13:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iberianpig/7c11afea04c79d4e2e1b237d06df3f34 to your computer and use it in GitHub Desktop.
Save iberianpig/7c11afea04c79d4e2e1b237d06df3f34 to your computer and use it in GitHub Desktop.
MFの交通系ICカードリーダーで取得したCSVをFreeeで取り込める形式に変換する
require 'csv'
class Mf2Freee
FILE_NAME = "収入・支出詳細_2020"
def run
files = Dir.glob("./#{FILE_NAME}*.csv")
file = files.first
raise 'file not found' if file.nil?
## mf ##
# 計算対象 日付 内容 金額(円) 保有金融機関 大項目 中項目 メモ 振替 ID
## freee ##
# 収支区分 管理番号 発生日 支払期日 取引先 勘定科目 税区分 金額 税計算区分 税額 備考 品目 部門 メモタグ(複数指定可、カンマ区切り) 支払日 支払口座 支払金額
# 支出 2018/01/31 通信費 課対仕入8% 1838 内税 136 電話代 2018/01/31 JACCSカード 1838
output_csv = CSV.open("freee_#{FILE_NAME}.csv", 'w') do |freee_csv|
# import headers
freee_csv << [
'収支区分',
'管理番号',
'発生日',
'決済期日',
'取引先',
'勘定科目',
'税区分',
'金額',
'税計算区分',
'税額',
'備考',
'品目',
'部門',
'メモタグ(複数指定可、カンマ区切り)',
'セグメント1',
'セグメント2',
'セグメント3',
'決済日',
'決済口座',
'決済金額',
]
files.each do |file|
CSV.foreach(file, headers: true, encoding: 'Shift_JIS:UTF-8') do |mf_row|
計算対象 = mf_row[0]
日付 = mf_row[1]
内容 = mf_row[2]
金額(円) = mf_row[3]
保有金融機関 = mf_row[4]
大項目 = mf_row[5]
中項目 = mf_row[6]
メモ = mf_row[7]
振替 = mf_row[8]
_ID = mf_row[9]
金額 = (金額(円).to_i).abs
税額 = 金額 - (金額 / 1.08).floor.to_i
if 金額 == 0
next
end
if 大項目 == '収入' || 振替 == '1'
next
elsif 大項目 == '交通費'
勘定科目 = '旅費交通費'
if 中項目 == '電車'
品目 = '電車代'
else
品目 = ''
end
elsif 大項目 == '未分類'
if 金額 < 5000
勘定科目 = '会議費'
品目 = ''
else
勘定科目 = '交際費'
品目 = '飲食代'
end
else
require 'pry'; binding.pry
puts 'おかしい'
end
freee = []
freee[0] = '支出' # 収支区分
freee[1] = nil # 管理番号
freee[2] = 日付 # 発生日
freee[3] = nil # 決済期日
freee[4] = nil # 取引先
freee[5] = 勘定科目 # 勘定科目
freee[6] = '課対仕入8%' # 税区分
freee[7] = 金額 # 金額
freee[8] = '内税' # 税計算区分
freee[9] = 税額 # 税額
freee[10] = 内容 # 備考
freee[11] = 品目 # 品目
freee[12] = nil # 部門
freee[13] = nil # メモタグ(複数指定可、カンマ区切り)
freee[14] = nil # セグメント1
freee[15] = nil # セグメント2
freee[16] = nil # セグメント3
freee[17] = 日付 # 決済日
freee[18] = '事業主借' # 決済口座
freee[19] = 金額 # 決済金額
freee_csv << [
freee[0],
freee[1],
freee[2],
freee[3],
freee[4],
freee[5],
freee[6],
freee[7],
freee[8],
freee[9],
freee[10],
freee[11],
freee[12],
freee[13],
freee[14],
freee[15],
freee[16],
freee[17],
freee[18],
freee[19]
]
end
end
end
end
end
Mf2Freee.new.run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment