Published Date : 2021年3月14日19:53

パート13: 給与所得者の所得税と住民税を計算するAndroidアプリ
Part 13: Android App Calculates Income and Resident Taxes for Salaried Workers


This blog has an English translation


ニコニコ動画にアップした動画のまとめ記事です。

This is a summary blog post about a video I uploaded to NicoNico.

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

Please refer to the video for details.


目次

Table of Contents




① 動画の説明
① Video Description



警告:

今回説明する給与所得者の所得税及び住民税を計算するツールは、あくまで簡易的なお遊び用のツールです。

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

このツールは大雑把に大体の見積りを計算して楽しむ為のツールです。

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

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

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

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

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

Warning:

​The tool I'm going to show you for calculating income and residence taxes for salaried workers is just a simple tool for playing.

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

​This tool 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 tool.

前回の続きです。

Continued from last time.


Responsive image

税金計算用のアクティビティへ戻ります。

Return to the activity for tax calculation.

各種控除額を入力した際の動作を記述します。

Write the action that occurs when you enter various deductions.

GridLayoutに含まれているビューをFor文を使って一つずつ取り出します。

Use the For statement to retrieve the views contained in the GridLayout one at a time.

for (int i = 0; i < variousDeductionsLayout.getChildCount(); i++) {

もしEditTextなら、入力のイベントリスナーを用意します。

If EditText, prepare an event listener for input.

if(variousDeductionsLayout.getChildAt(i) instanceof EditText) {
    EditText editText = (EditText) variousDeductionsLayout.getChildAt(i);
    editText.setOnEditorActionListener((v, actionId, event) -> {

EditTextがIME_ACTION_DONEに設定されていれば、フォーカスをクリアします。

Clears the focus if EditText is set to IME_ACTION_DONE.

if(actionId == EditorInfo.IME_ACTION_DONE){
    editText.clearFocus();

そして入力された値を取り出します。

The input value is then retrieved.

String vd = editText.getText().toString().replace(",", "");

空文字かどうか確認します。

Check for an empty string.

if (vd.isEmpty()) {
    vd = "0";
}

その値を使って、各種控除額を計算するメソッドを呼び出します。

It then calls a method that calculates the various deductions with the value.

            inputVariousDeductions(editText, vd);
            }
            return false;
        });
    }
}

各種控除額を計算するメソッドを作成しましょう。

Let's create a method to calculate various deductions.

Switch文を使ってEditText毎のIDに基づいて処理を分けます。

Use the Switch statement to separate the processing based on the ID of each EditText.

IDが雑損控除額の時の処理です。

Processing when the ID is the casualty loss deduction amount.

各種控除額を計算するクラスのインスタンスのメソッドを使って計算結果を取り出します。

Use the methods of the class instance that calculates the various deductions to retrieve the result.

ではそのクラスファイルを作成しましょう。

Let's create the class file.

画面の指示に従って、クラスファイルを作成しましょう。

Follow the on-screen instructions to create the class file.

勿論、TaxCalcクラスが継承するクラスも変更します。

Of course, you will also change the classes that the TaxCalc class inherits.

各種控除額を計算するクラスに戻り、コンストラクタを作成します。

Return to the class that calculates the various deductions and create a constructor.

各種控除額を計算するメソッドを作成します。

Create methods to calculate various deductions.

public Map<String, String> vDcasualtyLossDeduction(int cld) {

雑損控除額の計算です。

It is the calculation of casualty loss deduction amount.

ひとまず返す値にゼロを入れてテストしましょう。

Let's test with zero as the return value for now.

Map<String, String> casualtyLossDeductionMap = new HashMap<String, String>() {
    {
        put("雑損控除_所得税", 0);
        put("雑損控除_住民税", 0);
    }
};
return casualtyLossDeductionMap;

税金計算用のアクティビティへ戻ると変更が反映されています。

Return to the activity for tax calculation to see the changes.

EditTextに入力された値をセットします。

Sets the value entered in EditText.

雑損控除額を表示するTextViewに計算結果のテキストをセットします。

Set the text of the calculation result to the TextView that displays the casualty loss deduction amount.

各種控除額を表示する複数のTextViewをインスタンス化していきましょう。

Let's instantiate several TextViews that display various deductions.

ここまで作成したアプリの挙動を確かめてみましょう。

Let's take a look at the behavior of the apps we've created so far.

各種控除額を計算するクラスに戻り、雑損控除額を計算するメソッドを完成させましょう。

Return to the class that calculates the various deductions and continue with the code for the method to calculate the casualty loss deduction.

メンバ変数とゲッターを作成します。

Create member variables and getters.

そして雑損控除額を計算するメソッドの作成の続きを行います。

We then continue with the creation of a method to calculate the casualty loss deduction.

詳しい計算方法は国税庁のサイトを参考にしてください。

Please refer to the website of the National Tax Agency for the detailed calculation method.

ここまで作成したアプリの挙動を確かめてみましょう。

Let's take a look at the behavior of the apps we've created so far.


Responsive image

パート14へ続く。

Continue to Part 14.



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

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