Published Date : 2020年12月20日11:21

Pythonを使用した税金計算(日本の個人事業主)【Part 5】
Tax Calculation Using Python (Japanese Sole proprietor)【Part 5】


This blog has an English translation


YouTubeにアップした動画の説明記事です。

This is a blog post about a video I uploaded to YouTube.

細かい部分は動画を参考にしてください。

Please refer to the video for details.


目次

Table of Contents




① 動画の説明
① Video Description



警告:

今回説明する給与所得者と個人事業主等の所得税及び住民税を計算するアプリは、あくまで簡易的なお遊び用のアプリです。

正確な数値、計算方法は各自で調べて下さい。

このアプリは大雑把に大体の見積りを計算して楽しむ為のアプリです。

決して従業員の年末調整や個人の確定申告等に使用しないでください。

さらに、税金の計算方法は変更される場合があり、控除についても同様です。

また、控除や税金の計算方法が間違っている可能性もありますので、

あまり信用せずに、各自で調べてから実験してみてください。

このアプリを使って何かしらの損害が発生したとしても、私は一切の責任を負いません。

Warning:

​The app I'm going to show you for calculating income and residence taxes for salaried workers and Individual employers, etc. is just a simple application for playing.

​Please check the exact number and calculation method by yourself.

​This app is used to calculate rough estimates and enjoy them.

​Do not use for year-end adjustment of employees or for individual tax return.

In addition, the method of calculating taxes and deductions may change.

Also, there is a possibility that the deduction and tax calculation methods are incorrect.

Don't trust it too much, and test it yourself.

​I will not be liable for any damage caused by using this app.

続いて、views.pyを作成していきます。

Next, create views.py.

data/
static/
    bootstrap-4.5.3-dist/ 
        css/
        js/
    spjs/
    swjs/
taxCalc/
    front/
    salariedWorker/
    soloProprietor/
        ---------
        views.py
templates/
    salariedWorker/
    soloProprietor/
db.sqlite3
manage.py

必要となるモジュールとクラスファイル、パスの変数をインポートします。

Import the required modules, class files, and path variables.

taxCalc/taxCalc/soloProprietor/views.py
from django.shortcuts import render
from django.http import QueryDict
from django.http import HttpResponse

from json import dumps
import os
import math

from .taxCalc import TaxCalc
from .sdAndNhip import NHIP
from taxCalc.settings import TW_PATH

23区の名前のリストのテキストファイルを読み込み、HTMLで表示できるようにします。

Imports a text file of a list of names from the 23 boroughs so that it can be displayed in HTML.

taxCalc/taxCalc/soloProprietor/views.py
def application(request):
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    with open(TW_PATH, 'r', encoding='utf-8') as f:
        special_wards = f.readlines()

    ctx = {
        'description': description,
        'sp_btn': sp_btn,
        'sw_btn': sw_btn,
        'special_wards': special_wards,
    }

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

国民健康保険料を計算する関数を作成します。

Create a function to calculate national health insurance premiums.

taxCalc/taxCalc/soloProprietor/views.py
def calculate_nhip(request):
    if request.method == 'POST':
        dic = QueryDict(request.body, encoding='utf-8')
        nhip = NHIP(0)

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

POST通信されたリクエストを引数に受けとり、計算用のクラスファイルからオブジェクトを作成して、そのオブジェクトのメソッドを使って受け取った値から結果を表示させます。

It takes a POST request as an argument, creates an object from the computation class file, and uses the methods of that object to display the results from the values received.

続いて所得税等の税金を計算する関数を作成します。

Next, you create a function to calculate income and other taxes.

taxCalc/taxCalc/soloProprietor/views.py
def calculate_tax(request):
    if request.method == 'POST':
        dic = QueryDict(request.body, encoding='utf-8')
        try:
            input_revenue = int(dic.get('inputRevenue'))
            if input_revenue < 0:
                input_revenue = 0
        except:
            input_revenue = 10000000

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

内容は給与所得者用の税金計算アプリとほぼ同じで、経費や特別控除等の計算方法が多少違うだけです。

The content is almost the same as the tax calculation application for salaried workers, and the calculation method of expenses and special deductions is slightly different.

特別控除と国民年金保険料をクラスファイル全体に反映させる為、新たにベースとなるクラスファイルを作成します。

In order to reflect the special deduction and national pension premium in the whole class file, we will create a new class file as the base.

    data/
    static/
        bootstrap-4.5.3-dist/ 
            css/
            js/
        spjs/
        swjs/
    taxCalc/
        front/
        salariedWorker/
        soloProprietor/
            ---------
            special_deduction.py
            taxCalc.py
    templates/
        salariedWorker/
        soloProprietor/
    db.sqlite3
    manage.py

後は前回作成したtaxCalc.pyに国民年金保険料と特別控除と経費等のメソッドやプロパティを追加して、編集していくだけです。

All you have to do now is edit the taxCalc.py you created previously by adding methods and properties such as national pension premiums, special deductions, and expenses.

今度は国民健康保険料を計算するクラスファイルを新たに作成して、特別控除等が反映できるように、ベースのクラスファイルを継承させます。

Now we will create a new class file to calculate the National Health Insurance premium, and inherit the base class file so that special deductions can be reflected.

メソッドは引数としてブーリアン変数とキーワード引数を駆使して、特別控除の設定を維持したまま、返す値を変えるようにします。

The method takes as its arguments a boolean variable and a keyword argument, and changes the value returned while maintaining the special deduction setting.

それではmanage.pyを使ってサーバーを立ち上げて、アプリの挙動を確認してみましょう。

Let's start the server using manage.py and see how the app works.

python manage.py runserver

適当な値を入力して、アプリをテストしてみてください。

Enter an appropriate value to test the app.



以上です。お疲れ様です。

That's all. Thank you for your hard work.