Wednesday, October 27, 2021

所得税を計算するスクリプトを作ってみた

 さて、会社を設立し、かつフリーランスとしてエンジニアをはじめてはや2ヶ月が経とうとしている。

細かいことはマネフォとかフリーでやれやって話だけど、でも、コマンドラインの住人としては、ちょっと、ざっくり所得税に当たりをつけられるような簡単なスクリプトを作りたかった。

そして、作った

#!/usr/bin/env python3.9

import re
import sys

help = """
taxcalc [売上額] [経費]
"""

if(len(sys.argv) < 3):
   print(help)
   sys.exit()

amount   = int(sys.argv[1])
expenses = int(sys.argv[2])
expense_rate = expenses / amount * 100 

def translate(amount):
   amount_str = ""
   counter=0
   for x in str(int(amount))[::-1]:
       amount_str += x
       counter = counter + 1
       if(counter == 4):
           amount_str += ","
           counter = 0
   amount_str = re.sub('\,$', '' ,amount_str)
   return amount_str[::-1]

print(f"\n売上:   {translate(amount)}")
print(f"経費:   {translate(expenses)}")
print(f"経費率: {translate(expense_rate)}%")

if(expense_rate > 60):
   print("================================")
   print("\nちょ、おま、脱税?\n")
   print("================================")

income_tax = 0

def calc(amount, rate, deduction_amount):
   return int(amount * rate / 100 - deduction_amount)

def calculate_income_tax(amount):
   if(amount < 1_950_000):  return calc(amount, 5,  0)
   if(amount < 3_300_000):  return calc(amount, 10, 97_500)
   if(amount < 6_950_000):  return calc(amount, 20, 427_500)
   if(amount < 9_000_000):  return calc(amount, 23, 636_000)
   if(amount < 18_000_000): return calc(amount, 33, 1_536_000)
   if(amount < 40_000_000): return calc(amount, 40, 2_790_000)
   return                          calc(amount, 45, 4_796_000)

print("所得税: " + translate(calculate_income_tax(amount - expenses)))
print("")

所得税は特定のレンジにレートをかけて、控除額を引けば出るように計算されているから、これで3ヶ月分の売り上げに対する所得税を計算してみたら20万くらいになった。

確定申告までにはだいたい70万ちょっとに膨れ上がるので、やっぱり経費は偉大だな〜と思いました・・・(経費は4割こえるとちょっと臭くなってきますが、そこまでいかなければ立派な節税になる、というのもこのスクリプトを動かしていて実際に思いました)

本当はRustとかelixirとかで作りたかったけどpythonで楽をしてしまうというぐうたらぶり・・・

次こそはがんばります・・・・

てなわけで!


漫画を描いています!

アマゾン:https://www.amazon.co.jp/dp/B092RCQTCG/ref=cm_sw_em_r_mt_dp_GG4ZNV74SYACTV1JWY0Z

ニコニコ漫画:https://seiga.nicovideo.jp/comic/53126

ツイッター: http://twitter.com/suganomanga


よしくうううううううううう

No comments:

Post a Comment