LoginSignup
0
2

More than 5 years have passed since last update.

税金計算の計算スクリプト作ってみた

Posted at

法人を作ったので、税金計算のスクリプトを作ってみました。

収入と報酬と税金と

法人の収入にかかってくる費用は以下の通り

  1. 社会保険料(健康保険、厚生年金保険、介護保険、雇用保険、労災保険)
    1. 健康保険は支払う給与の9%を給与所得者と半分ずつ負担
    2. 厚生年金保険は支払う給与の18.3%を給与所得者と半分ずつ負担
    3. 雇用保険は支払う給与の9%を法人が全額負担
    4. 労災保険は支払う給与の2.5%を法人が全額負担
    5. 介護保険は、自分の場合は該当しなかったので未調査
  2. 収入-(上記の保険料 + 役員報酬 + 給料) * 37.4%

個人の収入にかかってくる費用は以下の通り

  1. 住民税
  2. 所得税
  3. 社会保険料(健康保険、厚生年金保険)

住民税の計算式

(所得 - 控除※) * 10 / 100
※33万円

所得税の計算式

課税所得によって決まってくる。
スクリーンショット 2019-05-01 16.56.10.png
国税庁HPより

課税所得の決まり方

課税所得 = 所得 - 社会保険料 - 基礎控除(※1) - 所得控除(※2)
(※1)38万円
(※2)の決まり方

給与収入額 所得控除額
360万円以下 給与収入 * 30 / 100 + 18万円
660万円以下 給与収入 * 20 / 100 + 54万円
1000万円以下 給与収入 * 10 / 100 + 120万円
それ以上 220万円

スクリプトにしてみた。

  • 入力
    • 収入額と、役員数、役員一人あたりの報酬額を指定
    • calc(収入額, 役員数, 役員一人あたり報酬額)
  • 出力
    • 指定された役員一人あたりの報酬額を10万円ずつ繰り上げて、それぞれの場合の 総資産, 法人の収入, 役員一人あたりの報酬額, 役員の税引き後収入を出力する。
    • カンマ区切りの値が以下のように出力されます。 revenue is 2000 総資産,法人の収入,個人の額面収入,個人の税引き後収入 1262.70608,406.38668000000007,360,285.4398 1261.65186,383.54080999999996,370,292.70368333333334 1258.51564,359.44294,380,299.6909 1256.8354199999999,335.97106999999994,390,306.95478333333335 1253.6992,311.8732,400,313.942 1252.64498,289.02733,410,321.2058833333333 1250.96476,265.55546000000004,420,328.46976666666666 1247.82854,241.45759000000004,430,335.4569833333333 1246.7743200000002,218.61172000000002,440,342.72086666666667 1245.0940999999998,195.13985000000002,450,349.98474999999996 1241.95788,171.04198000000002,460,356.9719666666667 1240.6638100000002,148.19611,470,364.15590000000003 1238.72104,124.72424000000001,480,371.33226666666667 1235.33227,100.62637000000001,490,378.23530000000005 1233.3895000000002,77.1545,500,385.4116666666667
def calc(revenue, manager_num, compensation)
  return if revenue < manager_num * compensation

  total_compensation = manager_num * compensation
  kenpo = total_compensation * 9 / 100
  nenkin = total_compensation * 18.3 / 100
  koyou_hoken = total_compensation * 9 / 100
  rousai = total_compensation * 2.5 / 100

  tax_for_comp = (kenpo / 2) + (nenkin / 2) + koyou_hoken + rousai
  tax_for_individual = (kenpo / 2) + (nenkin / 2)

  rev_for_comp = revenue - total_compensation - tax_for_comp
  tax_for_comp = rev_for_comp * 37.4 / 100
  rev_for_comp -= tax_for_comp

  compensation_after_social_tax = compensation - (tax_for_individual / manager_num)
  jumin_tax = (compensation_after_social_tax - 33) * 10 / 100

  kazei_shotoku = (compensation_after_social_tax -38)
  shotoku_koujo = if kazei_shotoku <= 360
                    kazei_shotoku * 0.3 + 18
                  elsif kazei_shotoku <= 660
                    kazei_shotoku * 0.2 + 54
                  elsif kazei_shotoku <= 1000
                    kazei_shotoku * 0.1 + 120
                  else
                    220
                  end
  kazei_shotoku -= shotoku_koujo

  shotoku_tax = if kazei_shotoku <= 330
                  ((kazei_shotoku - 195) * 0.1 + (195 * 0.05) - 9.75)
                elsif kazei_shotoku <= 695
                  ((kazei_shotoku - 330) * 0.2 + (300 * 0.1) + (195 * 0.05) - 42.75)
                elsif kazei_shotoku <= 900
                  ((kazei_shotoku - 695) * 0.23 + (695 - 330) * 0.2 + (300 * 0.1) + (195 * 0.05) - 63.6)
                elsif kazei_shotoku <= 1800
                  ((kazei_shotoku - 900) * 0.33 + (900 - 695) * 0.23 + (695 - 330) * 0.2 + (300 * 0.1) + (195 * 0.05) - 153.6)
                elsif kazei_shotoku <= 4000
                  ((kazei_shotoku - 1800) * 0.4 + (1800 - 900) * 0.33 + (900 - 695) * 0.23 + (695 - 330) * 0.2 + (300 * 0.1) + (195 * 0.05) - 153.6)
                else
                  ((kazei_shotoku - 4000) * 0.45 + (4000 - 1800) * 0.4 + (1800 - 900) * 0.33 + (900 - 695) * 0.23 + (695 - 330) * 0.2 + (300 * 0.1) + (195 * 0.05) - 153.6)
                end

  compensation_after_tax = compensation_after_social_tax - (jumin_tax + shotoku_tax)
  puts "#{rev_for_comp + (compensation_after_tax * manager_num)},#{rev_for_comp},#{compensation},#{compensation_after_tax}"

  calc(revenue, manager_num, compensation + 10)
end

puts "総資産,法人の収入,個人の額面収入,個人の税引き後収入"
calc(2000, 1, 360)
0
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2