Published Date : 2021年5月10日13:28

【Androidアプリ:パート17】個人事業主と給与所得者の所得税と住民税を計算するAndroidアプリ
【Android app:Part 17】Android App Calculates Income and Resident Taxes for sole proprietors and 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 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.

個人事業主と給与所得者の所得税と住民税を計算するAndroidアプリパート17。

Android App Calculates Income and Resident Taxes for sole proprietors and salaried workers, Part 17.

前回の続きです。

Continued from last time.

今回もゆっくりと動画を再生させます。時間が無い方は6倍速くらいで見たほうが丁度いいかもしれません。

I will play the video slowly again this time. If you don't have time, it might be just right to watch at 6 times speed.

計算結果を表示させるメソッドの中身のコードです。

Code in the method whose result is to be displayed.


Responsive image

しかし、コードの内容自体は前回の動画シリーズで作成したものとほぼ一緒なので、おさらい程度に見ていてください。

However, the code itself is pretty much the same as the one you created in the previous video series, so please watch the video with the intention of reviewing.


Responsive image

所得税、住民税、手取り額、それぞれの計算をするメソッドからMap型アレイを取り出し、テキストビューにセットしていくだけです。

All you have to do is take a Map array from the income tax, resident tax, and take-home pay methods and set it in a text view.


Responsive image

今回もゆっくりと動画を再生させます。時間が無い方は6倍速くらいで見たほうが丁度いいかもしれません。

I will play the video slowly again this time. If you don't have time, it might be just right to watch at 6 times speed.

完成してあるアプリを基に、それぞれの機能がどの部分に対応するか見ていきましょう。

Based on the finished app, let's look at where each feature fits to.


Responsive image

青色申告と白色申告の場合で、税金額にどの程度差があるかが一目で分かるように、別の表示用のアクティビティを用意しました。

In the case of a blue return and a white return, a separate display activity is provided so that the difference in tax amounts can be seen at a glance.


Responsive image

国民健康保険料の算出が終わるとそのアクティビティへ変移できるボタンが表示されます。

Once the National Health Insurance premium calculation is complete, a button will appear to allow the user to move to the activity.


Responsive image

クリアファンクションの実際の中身です。こちらも前回のアプリの時とコードの内容は変化ありません。

The actual contents of the clear function. The content of the code is the same as the previous application.

public void clearfunc(GridLayout gl) {
    for (int i = 0; i < gl.getChildCount(); i++) {
        if(gl.getChildAt(i) instanceof EditText) {
            EditText et = (EditText) gl.getChildAt(i);
            et.getText().clear();
        }
        if(gl.getChildAt(i) instanceof TextView) {
            TextView tv = (TextView) gl.getChildAt(i);
            if (tv.getId() != -1 && !(tv instanceof CheckBox)) {
                tv.setText("");
            }
        }
    }
}

チェックボックスがチェックされた時に発動されるメソッドです。こちらも前回の動画の時とコードの内容は変化ありません。

Method invoked when the check box is checked. The contents of the code are the same as in the previous video.

public void spCalcOnAgeCheckBoxCliked(View view) {
    boolean ageChecked = ((CheckBox) view).isChecked();
    if (ageChecked) {
        if (view.getId() == spCalcThirtyNineYOorLessCheckBox.getId()) {
            spCalcFortyYOorMoreCheckBox.setChecked(false);
        }
        else {
            spCalcThirtyNineYOorLessCheckBox.setChecked(false);
        }
        spCalculateSpSi();
        toShowingComparisonActivity();
    } else {
        spCalcThirtyNineYOorLessCheckBox.setChecked(false);
        spCalcFortyYOorMoreCheckBox.setChecked(false);
        spDisplayTotalAmountNhipText.setText("");
        spDisplayTotalAmountMonthlyNhipText.setText("");
        spBrDisplayTotalAmountNhipText.setText("");
        spBrDisplayTotalAmountMonthlyNhipText.setText("");
    }
}

国民健康保険料を実際に計算するメソッド。こちらも前回の動画の時とコードの内容は変化ありません。

The method of actually calculating the national health insurance premium. The contents of the code are the same as in the previous video.

public void spCalculateSpSi() {
    String spSiIncomeText = spGrossBusinessIncomeText.getText().toString().replace(",", "");
    if (spCalcThirtyNineYOorLessCheckBox.isChecked()) {
        spCalcSelectedAge = 1;
    }
    else if (spCalcFortyYOorMoreCheckBox.isChecked()) {
        spCalcSelectedAge = 2;
    }
    else {
        spCalcSelectedAge = 0;
    }
    if (spCalcSelectedAge != 0 && !(spSiIncomeText.isEmpty())) {
        List<String> spsIPremiumList = spCalcCsvDriver.getSpSIPremiumList().get(spCalcSelectOfYourWardSpinner.getSelectedItemPosition());
        Map<String, String> spSipNHIPResults = spCalcActivityNhip.calcSpNHIP(spsIPremiumList, Integer.parseInt(spSiIncomeText), spCalcSelectedAge);

        spDisplayTotalAmountNhipText.setText(spSipNHIPResults.get("国民健康保険料"));
        spDisplayTotalAmountMonthlyNhipText.setText(spSipNHIPResults.get("国民健康保険料(月額)"));

        spBrDisplayTotalAmountNhipText.setText(spSipNHIPResults.get("国民健康保険料(青色)"));
        spBrDisplayTotalAmountMonthlyNhipText.setText(spSipNHIPResults.get("国民健康保険料月額(青色)"));

        spCalcDisplayNPPremiumText.setText(spSipNHIPResults.get("国民年金保険料年額"));
        spDisplayMonthlyNPPremiumText.setText(spSipNHIPResults.get("国民年金保険料月額"));

        spTotalSiPText.setText(spSipNHIPResults.get("社会保険料年間総額年額"));
        spTotalMonthlySiPText.setText(spSipNHIPResults.get("社会保険料年間総額月額"));

        spBrTotalSiPText.setText(spSipNHIPResults.get("社会保険料年間総額年額(青色)"));
        spBrTotalMonthlySiPText.setText(spSipNHIPResults.get("社会保険料年間総額月額(青色)"));

    } else {
        String text = "収入を入力して、所得を出してね!";
        spCreateToast(text, Toast.LENGTH_SHORT);
    }
}

青色申告と白色申告の場合においての税金額の比較を表示するアクティビティへ計算結果を渡す為のメソッドのコードを書いていきましょう。

Let's write the code of the method to pass the calculation result to the activity which shows the comparison of tax amount in case of blue return and white return.

putExtraメソッドを使用してアクティビティへ値を渡します。

Use the putExtra method to pass values to the activity.

ユーザーをメイン画面へ変移させる為のボタンが押された時に発動するメソッド。

Method invoked when the button is pressed that allows the user to return to the main screen.

青色申告と白色申告の場合においての税金額の比較を表示するアクティビティのレイアウトとロジックのコードを書いていきましょう。

Let's write the code for the layout and logic for the activity that displays the comparison of tax amounts for blue and white returns.

完成してあるアプリを基に、それぞれの機能がどの部分に対応するか見ていきましょう。

Based on the finished app, let's look at where each feature fits to.

パート18へ続く。

Continue to Part 18.



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

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