Skip to content

Instantly share code, notes, and snippets.

@takemikami
Last active December 4, 2021 13:18
Show Gist options
  • Save takemikami/f734457637b66f7ec6899b95fb7b08f8 to your computer and use it in GitHub Desktop.
Save takemikami/f734457637b66f7ec6899b95fb7b08f8 to your computer and use it in GitHub Desktop.
技術書典売上のMoneyForward会計用インポートファイル作成スクリプト
# 技術書典売上のMoneyForward会計用インポートファイル作成スクリプト
#
# 実行方法:
# 1. 技術書典サイトにログインし、マイページ→売上管理→確定売上
# 2. 「月別確定売上」を選択しExcel等にコピー、「sales.csv」という名称のCSV形式で出力
# 3. スクリプトを実行
# python techbookfest_mf_import.py
# 実行後「techbookfest_mf_import_年.csv」が出力されるので、MoneyForward会計の仕訳帳からインポートする
import csv
import re
import time
import datetime
import calendar
# 各種設定 - 消費税の課税事業者、補助科目の設定に応じて変更する
YEAR = 2021 # 対象年
TAX_TYPE_SALES = '対象外' # 消費税の種別(売上)
TAX_TYPE_COMMISSION = '対象外' # 消費税の種別(手数料)
URIAGE_SUBTYPE = '' # 売上高の補助科目
URIKAKE_SUBTYPE = '' # 売掛金の補助科目
journal_no = 0
rows = []
y = YEAR
today = datetime.datetime.today()
ym_matcher = re.compile('([0-9]*)年([0-9]*)月')
with open('sales.csv', encoding = "utf-8-sig") as csvf:
r = csv.reader(csvf, delimiter=',', quotechar='"')
h = None
for row in r:
if h is None:
h = row
continue
data = {}
for i, c in enumerate(h):
data[c] = row[i]
m = ym_matcher.search(str(data['期間']))
y = int(m.group(1))
m = int(m.group(2))
sales = int(data['売上'].replace('¥','').replace(',',''))
fee = int(data['手数料'].replace('¥','').replace(',',''))
if sales == 0 or y != YEAR:
continue
# 仕訳の作成
journal_no += 1
dt = datetime.datetime(y, m, calendar.monthrange(y, m)[1])
rows.append([
str(journal_no),
dt.strftime("%Y/%m/%d"),
'売掛金',
URIKAKE_SUBTYPE,
'対象外',
'',
sales - fee,
'',
'売上高',
URIAGE_SUBTYPE,
TAX_TYPE_SALES,
'',
sales,
'',
'技術書典売上 {}年{}月'.format(y, m),
'',
'',
'',
'',
today.strftime("%Y/%m/%d"),
today.strftime("%Y/%m/%d"),
])
rows.append([
str(journal_no),
dt.strftime("%Y/%m/%d"),
'支払手数料',
'',
TAX_TYPE_COMMISSION,
'',
fee,
'',
'',
'',
'',
'',
'',
'',
'販売手数料・発送手数料',
'',
'',
'',
'',
today.strftime("%Y/%m/%d"),
today.strftime("%Y/%m/%d"),
])
# インポートファイルの出力
HEADER_COLS = ['取引No',
'取引日',
'借方勘定科目',
'借方補助科目',
'借方税区分',
'借方部門',
'借方金額(円)',
'借方税額',
'貸方勘定科目',
'貸方補助科目',
'貸方税区分',
'貸方部門',
'貸方金額(円)',
'貸方税額',
'摘要',
'仕訳メモ',
'タグ',
'MF仕訳タイプ',
'決算整理仕訳',
'作成日時',
'最終更新日時']
with open('techbookfest_mf_import_{}.csv'.format(YEAR), mode='w') as f:
f.write(','.join(HEADER_COLS))
f.write('\n')
for r in rows:
f.write(','.join([str(v) if v is not None else '' for v in r]))
f.write('\n')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment