PythonでCSVファイルを読み込み 編集 CSVファイルに出力する 報酬自動支払制度

題材として選んだのは、(株)日税ビジネスサービスの報酬自動支払制度で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つ目のプログラムで

(仮受金)    (売掛金)

(仮払金)    (売掛金)

という仕訳を作成しています。

タイトルとURLをコピーしました