題材として選んだのは、(株)日税ビジネスサービスの報酬自動支払制度でe-NETを契約しているとダウンロードできるファイルです。
「seikyukakutei20200428(28日分).csv」といった名前のファイルです。
関与先番号、関与先名、請求種別、口座振替、振替結果コード、請求日、細目名、金額、消費税、源泉税、差引額、備考、基本項目1、基本項目2、基本項目3、基本項目4 の16個の項目が並んだデータになっています。
これをPythonで読み込んで、
- 売掛金を計上する仕訳
- 売掛金を回収する仕訳
のCSVファイルのデータを作成し、JDLIBEX出納帳に「CSV入力」で入力します。
前提は以下の通りです。
- 税理士業の人が自分の税理士業についてJDLIBEX出納帳を使用している
- 個人事業者で源泉徴収義務がある
- 顧問先を個別に売掛先に設定して売掛金の管理をしている
- e-NETで登録している「関与先番号」とJDLIBEX出納帳の売掛金の補助科目コードが一致している
- 消費税については免税事業者
売掛金を計上する仕訳のCSVファイルを作成するプログラムのコードは以下の通りです。
import csv
import shutil
val1 = input('Enter file name: ')
val2 = input('Enter accouting date: ')
val3 = input('Enter selected month: ')
with open(val1,encoding = 'cp932') as f:
reader = csv.reader(f)
#1行目のタイトルを飛ばして処理する
header = next(reader)
list = []
for row in reader:
#処理しないデータ
if row[6] == '未収分再振替' or row[7] == '0':
continue
#処理するデータ
else:
col_1 = '1000'
col_2 = '0'
col_3 = val2
col_4 = '152'
col_5 = '売掛金'
col_6 = '売掛金'
col_7 = row[0]
col_8 = row[1]
col_9 = ''
col_10 = ''
col_11 = ''
col_12 = int(row[7]) + int(row[8])
col_13 = '0'
col_14 = '612'
col_15 = '売上高'
col_16 = '売上高'
col_17 = ''
col_18 = ''
col_19 = ''
col_20 = ''
col_21 = ''
col_22 = int(row[7]) + int(row[8])
col_23 = '0'
if row[6] == '月決報酬':
col_24 = val3 + '月分顧問料'
elif row[6] == '決算書類作成報酬':
col_24 = '決算料'
elif row[6] == '消費税申告報酬':
col_24 = '消費税申告料'
else:
col_24 = row[11]
col_25 = ''
col_26 = ''
col_27 = '0'
col_28 = ''
col_29 = '0'
col_30 = ''
list.append([col_1,col_2,col_3,col_4,col_5 \
,col_6,col_7,col_8,col_9,col_10 \
,col_11,col_12,col_13,col_14,col_15 \
,col_16,col_17,col_18,col_19,col_20 \
,col_21,col_22,col_23,col_24,col_25 \
,col_26,col_27,col_28,col_29,col_30])
#CSV入力用のファイルは4行目までタイトル等が入っているので、
#タイトルのみが入っているファイルを元にコピーする
shutil.copyfile('org.csv','py_input_s.csv')
with open('py_input_s.csv','a',encoding = 'cp932',newline = '') as f:
writer = csv.writer(f)
writer.writerows(list)
事前にカレントディレクトリに準備しておくのは、このプログラムを記述した*.pyのファイルと、
- seikyukakutei20200428(28日分).csv のファイル
- org.csv(JDLIBEX出納帳の「CSV入力」形式のファイルで1行目から4行目までにタイトル等が入っていて、データ部分が空白になっているもの)
の2つです。
実行すると、「ファイル名」「処理日」「処理対象月」を聞かれるので、次のように入力して下さい。
Enter file name: seikyukakutei20200428(28日分).csv
Enter accouting date: 20200331
Enter selected month: 3
次に、売掛金を回収する仕訳のCSVファイルを作成するプログラムのコードは以下の通りです。
import csv
import shutil
val1 = input('Enter file name: ')
val2 = input('Enter accouting date: ')
with open(val1,encoding = 'cp932') as f:
reader = csv.reader(f)
#1行目のタイトルを飛ばして処理する
header = next(reader)
list = []
for row in reader:
if row[4] == '' or row[4] == '1' or row[4] == '4' or row[7] == '0':
continue
else:
col_1 = '1000'
col_2 = '0'
col_3 = val2
col_4 = '319'
col_5 = '仮受金'
col_6 = '仮受金'
col_7 = ''
col_8 =''
col_9 =''
col_10 =''
col_11 =''
col_12 = row[10]
col_13 = '0'
col_14 = '152'
col_15 = '売掛金'
col_16 = '売掛金'
col_17 = row[0]
col_18 =''
col_19 =''
col_20 =''
col_21 =''
col_22 = row[10]
col_23 = '0'
col_24 = '売掛金への振替 ' + row[1]
col_25 =''
col_26 =''
col_27 = '0'
col_28 =''
col_29 = '0'
col_30 =''
list.append([col_1,col_2,col_3,col_4,col_5 \
,col_6,col_7,col_8,col_9,col_10 \
,col_11,col_12,col_13,col_14,col_15 \
,col_16,col_17,col_18,col_19,col_20 \
,col_21,col_22,col_23,col_24,col_25 \
,col_26,col_27,col_28,col_29,col_30])
col_1 = '1000'
col_2 = '0'
col_3 = val2
col_4 = '183'
col_5 = '仮払金'
col_6 = '仮払金'
col_7 = ''
col_8 = ''
col_9 = ''
col_10 =''
col_11 =''
col_12 = row[9]
col_13 = '0'
col_14 = '152'
col_15 = '売掛金'
col_16 = '売掛金'
col_17 = row[0]
col_18 =''
col_19 =''
col_20 =''
col_21 =''
col_22 = row[9]
col_23 = '0'
col_24 = '源泉所得税'
col_25 =''
col_26 =''
col_27 = ''
col_28 =''
col_29 = ''
col_30 =''
list.append([col_1,col_2,col_3,col_4,col_5 \
,col_6,col_7,col_8,col_9,col_10 \
,col_11,col_12,col_13,col_14,col_15 \
,col_16,col_17,col_18,col_19,col_20 \
,col_21,col_22,col_23,col_24,col_25 \
,col_26,col_27,col_28,col_29,col_30])
#CSV入力用のファイルは4行目までタイトル等が入っているので、
#タイトルのみが入っているファイルを元にコピーする
shutil.copyfile('org.csv','py_input_f.csv')
with open('py_input_f.csv','a',encoding = 'cp932',newline = '') as f:
writer = csv.writer(f)
writer.writerows(list)
事前にカレントディレクトリに準備しておくのは、前述の売掛金を計上する仕訳のCSVファイルを作成するプログラムと同様です。
実行すると、「ファイル名」「処理日」を聞かれるので、次のように入力して下さい。
Enter file name: seikyukakutei20200428(28日分).csv
Enter accouting date: 20200428
1つ目のプログラムで
(売掛金) (売上高)
という仕訳を作成し、
入金があったときに
(預金) (仮受金)
という仕訳をしておいて、2つ目のプログラムで
(仮受金) (売掛金)
(仮払金) (売掛金)
という仕訳を作成しています。