Last active
May 29, 2017 13:51
-
-
Save tai2/7a7ce2d65b3c6782134fed42d707342a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# No.2260 所得税の税率 https://www.nta.go.jp/taxanswer/shotoku/2260.htm | |
# [平成28年4月1日現在法令等]に基づく | |
# | |
# 小規模企業法令 http://law.e-gov.go.jp/htmldata/S40/S40SE185.html | |
# | |
# 前提: | |
# - 簡単のため、納付月数は1年単位とする(納付月数=勤続年数 * 12) | |
# - 掛金固定 | |
# - 所得固定 | |
# - 一括受取 | |
# - 平成29年以降に加入 | |
# - 住民税の計算は東京都民の場合を想定 | |
# - 均等割など多少の違いはあるが、東京都以外でもほとんど変わらない模様 | |
# - 「利子割」、「配当割」、「株式等譲渡所得割」は無視 | |
# - 税額控除は無視する | |
# - 所得税と住民税の所得控除の違いは無視する | |
import math | |
掛金 = 70000 | |
勤続年数 = 24 | |
納付月数 = 勤続年数 * 12 | |
控除前所得 = 600 * 10000 # 小規模企業共済控除前の課税所得 | |
復興特別所得税率 = 0.021 | |
assert 掛金 % 500 == 0, '掛金は500の倍数' | |
# see: http://law.e-gov.go.jp/htmldata/S40/S40SE185.html | |
別表第一 = { | |
# 月数: [共済金A, 共済金B, 解約手当金], | |
# 解約手当金は、「法第十二条第四項第二号 イ」の場合の率 | |
36: [18370, 18250, 14888], | |
37: [18890, 18760, 15320], | |
38: [19420, 19280, 15752], | |
39: [19940, 19800, 16184], | |
40: [20470, 20320, 16624], | |
41: [20990, 20830, 17056], | |
42: [21520, 21350, 17488], | |
43: [22040, 21870, 17920], | |
44: [22570, 22390, 18360], | |
45: [23090, 22900, 18792], | |
46: [23620, 23420, 19224], | |
47: [24140, 23940, 19656], | |
48: [24670, 24460, 20096], | |
49: [25200, 24980, 20536], | |
50: [25730, 25500, 20984], | |
51: [26270, 26020, 21424], | |
52: [26800, 26550, 21872], | |
53: [27330, 27070, 22312], | |
54: [27870, 27590, 22760], | |
55: [28400, 28110, 23200], | |
56: [28930, 28640, 23648], | |
57: [29470, 29160, 24088], | |
58: [30000, 29680, 24536], | |
59: [30530, 30200, 24976], | |
60: [31070, 30730, 25424], | |
61: [31610, 31250, 25872], | |
62: [32150, 31780, 26328], | |
63: [32690, 32310, 26784], | |
64: [33230, 32840, 27240], | |
65: [33770, 33360, 27688], | |
66: [34320, 33890, 28144], | |
67: [34860, 34420, 28600], | |
68: [35400, 34950, 29056], | |
69: [35940, 35470, 29504], | |
70: [36480, 36000, 29960], | |
71: [37020, 36530, 30416], | |
72: [37570, 37060, 30872], | |
73: [38110, 37590, 31336], | |
74: [38660, 38120, 31800], | |
75: [39210, 38650, 32264], | |
76: [39760, 39190, 32736], | |
77: [40310, 39720, 33200], | |
78: [40860, 40250, 33664], | |
79: [41410, 40780, 34128], | |
80: [41960, 41320, 34600], | |
81: [42510, 41850, 35064], | |
82: [43060, 42380, 35528], | |
83: [43610, 42910, 35992], | |
84: [44160, 43450, 36464], | |
85: [44710, 43980, 36936], | |
86: [45270, 44520, 37416], | |
87: [45830, 45060, 37896], | |
88: [46390, 45600, 38368], | |
89: [46940, 46140, 38848], | |
90: [47500, 46680, 39328], | |
91: [48060, 47220, 39800], | |
92: [48620, 47760, 40280], | |
93: [49170, 48300, 40760], | |
94: [49730, 48840, 41232], | |
95: [50290, 49380, 41712], | |
96: [50850, 49920, 42192], | |
97: [51410, 50460, 42680], | |
98: [51980, 51000, 43168], | |
99: [52540, 51550, 43656], | |
100: [53110, 52090, 44144], | |
101: [53670, 52640, 44632], | |
102: [54240, 53180, 45120], | |
103: [54810, 53720, 45608], | |
104: [55370, 54270, 46096], | |
105: [55940, 54810, 46584], | |
106: [56500, 55360, 47072], | |
107: [57070, 55900, 47560], | |
108: [57640, 56450, 48056], | |
109: [58210, 56990, 48552], | |
110: [58780, 57540, 49056], | |
111: [59360, 58090, 49552], | |
112: [59930, 58640, 50056], | |
113: [60510, 59190, 50552], | |
114: [61080, 59740, 51056], | |
115: [61650, 60290, 51560], | |
116: [62230, 60840, 52056], | |
117: [62800, 61390, 52560], | |
118: [63380, 61940, 53056], | |
119: [63950, 62490, 53560], | |
120: [64530, 63040, 54064], | |
121: [65110, 63590, 54576], | |
122: [65690, 64150, 55088], | |
123: [66270, 64700, 55600], | |
124: [66860, 65260, 56112], | |
125: [67440, 65810, 56624], | |
126: [68020, 66370, 57136], | |
127: [68600, 66920, 57648], | |
128: [69190, 67480, 58160], | |
129: [69770, 68030, 58672], | |
130: [70350, 68590, 59184], | |
131: [70930, 69140, 59696], | |
132: [71520, 69700, 60216], | |
133: [72110, 70260, 60736], | |
134: [72700, 70820, 61264], | |
135: [73290, 71380, 61784], | |
136: [73880, 71940, 62312], | |
137: [74470, 72500, 62832], | |
138: [75070, 73060, 63360], | |
139: [75660, 73620, 63888], | |
140: [76250, 74180, 64408], | |
141: [76840, 74740, 64936], | |
142: [77430, 75300, 65456], | |
143: [78020, 75860, 65984], | |
144: [78620, 76430, 66512], | |
145: [79220, 76990, 67048], | |
146: [79820, 77560, 67584], | |
147: [80420, 78130, 68120], | |
148: [81020, 78690, 68664], | |
149: [81620, 79260, 69200], | |
150: [82220, 79830, 69736], | |
151: [82820, 80390, 70272], | |
152: [83420, 80960, 70816], | |
153: [84020, 81530, 71352], | |
154: [84620, 82090, 71888], | |
155: [85220, 82660, 72424], | |
156: [85820, 83230, 72968], | |
157: [86420, 83800, 73512], | |
158: [87030, 84370, 74064], | |
159: [87640, 84940, 74616], | |
160: [88250, 85510, 75168], | |
161: [88860, 86080, 75712], | |
162: [89470, 86660, 76264], | |
163: [90080, 87230, 76816], | |
164: [90690, 87800, 77368], | |
165: [91300, 88370, 77912], | |
166: [91910, 88940, 78464], | |
167: [92520, 89510, 79016], | |
168: [93130, 90090, 79568], | |
169: [93740, 90660, 80128], | |
170: [94360, 91240, 80696], | |
171: [94980, 91820, 81256], | |
172: [95600, 92400, 81824], | |
173: [96220, 92970, 82384], | |
174: [96840, 93550, 82952], | |
175: [97450, 94130, 83512], | |
176: [98070, 94710, 84080], | |
177: [98690, 95280, 84640], | |
178: [99310, 95860, 85208], | |
179: [99930, 96440, 85768], | |
180: [100550, 97020, 86336], | |
181: [101170, 97600, 86912], | |
182: [101800, 98190, 87496], | |
183: [102430, 98770, 88080], | |
184: [103060, 99360, 88664], | |
185: [103680, 99940, 89248], | |
186: [104310, 100530, 89832], | |
187: [104940, 101120, 90416], | |
188: [105570, 101700, 91000], | |
189: [106190, 102290, 91584], | |
190: [106820, 102870, 92168], | |
191: [107450, 103460, 92752], | |
192: [108080, 104050, 93336], | |
193: [108710, 104640, 93928], | |
194: [109350, 105230, 94528], | |
195: [109990, 105820, 95128], | |
196: [110620, 106420, 95728], | |
197: [111260, 107010, 96320], | |
198: [111900, 107600, 96920], | |
199: [112530, 108190, 97520], | |
200: [113170, 108790, 98120], | |
201: [113810, 109380, 98712], | |
202: [114440, 109970, 99312], | |
203: [115080, 110560, 99912], | |
204: [115720, 111160, 100512], | |
205: [116360, 111750, 101120], | |
206: [117010, 112350, 101736], | |
207: [117650, 112950, 102344], | |
208: [118300, 113550, 102960], | |
209: [118940, 114150, 103568], | |
210: [119590, 114750, 104184], | |
211: [120240, 115350, 104800], | |
212: [120880, 115950, 105408], | |
213: [121530, 116550, 106024], | |
214: [122170, 117150, 106607], | |
215: [122820, 117750, 107153], | |
216: [123470, 118350, 107699], | |
217: [124120, 118950, 108245], | |
218: [124780, 119550, 108791], | |
219: [125430, 120160, 109346], | |
220: [126090, 120760, 109892], | |
221: [126740, 121370, 110447], | |
222: [127400, 121970, 110993], | |
223: [128060, 122570, 111539], | |
224: [128710, 123180, 112094], | |
225: [129370, 123780, 112640], | |
226: [130020, 124390, 113195], | |
227: [130680, 124990, 113741], | |
228: [131340, 125600, 114296], | |
229: [132000, 126210, 114851], | |
230: [132670, 126820, 115406], | |
231: [133330, 127430, 115961], | |
232: [134000, 128040, 116516], | |
233: [134660, 128650, 117072], | |
234: [135330, 129270, 117636], | |
235: [135990, 129880, 118191], | |
236: [136660, 130490, 118746], | |
237: [137320, 131100, 119301], | |
238: [137990, 131710, 119856], | |
239: [138650, 132320, 120411], | |
240: [139320, 132940, 120975], | |
241: [139990, 133550, 121531], | |
242: [140670, 134170, 122095], | |
243: [141340, 134790, 122659], | |
244: [142020, 135400, 123214], | |
245: [142690, 136020, 123778], | |
246: [143370, 136640, 124342], | |
247: [144040, 137250, 124898], | |
248: [144720, 137870, 125462], | |
249: [145390, 138490, 126026], | |
250: [146070, 139100, 126581], | |
251: [146740, 139720, 127145], | |
252: [147420, 140340, 127709], | |
253: [148100, 140960, 128274], | |
254: [148780, 141580, 128838], | |
255: [149470, 142210, 129411], | |
256: [150150, 142830, 129975], | |
257: [150840, 143460, 130549], | |
258: [151520, 144080, 131113], | |
259: [152200, 144700, 131677], | |
260: [152890, 145330, 132250], | |
261: [153570, 145950, 132815], | |
262: [154260, 146580, 133388], | |
263: [154940, 147200, 133952], | |
264: [155630, 147830, 134525], | |
265: [156320, 148460, 135099], | |
266: [157020, 149090, 135672], | |
267: [157710, 149720, 136245], | |
268: [158410, 150350, 136819], | |
269: [159100, 150980, 137392], | |
270: [159800, 151610, 137965], | |
271: [160490, 152240, 138538], | |
272: [161190, 152870, 139112], | |
273: [161880, 153500, 139685], | |
274: [162580, 154130, 140258], | |
275: [163270, 154760, 140832], | |
276: [163970, 155390, 141405], | |
277: [164670, 156020, 141978], | |
278: [165380, 156660, 142561], | |
279: [166080, 157300, 143143], | |
280: [166790, 157940, 143725], | |
281: [167490, 158570, 144299], | |
282: [168200, 159210, 144881], | |
283: [168900, 159850, 145464], | |
284: [169610, 160490, 146046], | |
285: [170310, 161120, 146619], | |
286: [171020, 161760, 147202], | |
287: [171720, 162400, 147784], | |
288: [172430, 163040, 148366], | |
289: [173140, 163680, 148949], | |
290: [173860, 164320, 149531], | |
291: [174570, 164970, 150123], | |
292: [175290, 165610, 150705], | |
293: [176000, 166250, 151288], | |
294: [176720, 166900, 151879], | |
295: [177430, 167540, 152461], | |
296: [178150, 168180, 153044], | |
297: [178860, 168830, 153635], | |
298: [179580, 169470, 154218], | |
299: [180290, 170110, 154800], | |
300: [181010, 170760, 155392], | |
301: [181710, 171410, 155983], | |
302: [182410, 172060, 156575], | |
303: [183120, 172710, 157166], | |
304: [183820, 173360, 157758], | |
305: [184520, 174010, 158349], | |
306: [185230, 174660, 158941], | |
307: [185930, 175310, 159532], | |
308: [186630, 175960, 160124], | |
309: [187340, 176610, 160715], | |
310: [188040, 177260, 161307], | |
311: [188740, 177910, 161898], | |
312: [189450, 178560, 162490], | |
313: [190110, 179210, 163081], | |
314: [190780, 179870, 163682], | |
315: [191450, 180530, 164282], | |
316: [192120, 181180, 164874], | |
317: [192790, 181840, 165474], | |
318: [193460, 182500, 166075], | |
319: [194130, 183150, 166667], | |
320: [194800, 183810, 167267], | |
321: [195470, 184470, 167868], | |
322: [196140, 185120, 168459], | |
323: [196810, 185780, 169060], | |
324: [197480, 186440, 169660], | |
325: [198050, 187100, 170261], | |
326: [198630, 187760, 170862], | |
327: [199210, 188430, 171471], | |
328: [199790, 189090, 172072], | |
329: [200360, 189760, 172682], | |
330: [200940, 190420, 173282], | |
331: [201520, 191080, 173883], | |
332: [202100, 191750, 174493], | |
333: [202670, 192410, 175093], | |
334: [203250, 193080, 175703], | |
335: [203830, 193740, 176303], | |
336: [204410, 194410, 176913], | |
337: [204950, 195080, 177523], | |
338: [205490, 195750, 178133], | |
339: [206040, 196420, 178742], | |
340: [206580, 197090, 179352], | |
341: [207120, 197760, 179962], | |
342: [207670, 198430, 180571], | |
343: [208210, 199100, 181181], | |
344: [208750, 199770, 181791], | |
345: [209300, 200440, 182400], | |
346: [209840, 201110, 183010], | |
347: [210380, 201780, 183620], | |
348: [210930, 202460, 184239], | |
349: [211460, 203130, 184848], | |
350: [212000, 203810, 185467], | |
351: [212540, 204490, 186086], | |
352: [213080, 205170, 186705], | |
353: [213620, 205840, 187314], | |
354: [214160, 206520, 187933], | |
355: [214700, 207200, 188552], | |
356: [215240, 207880, 189171], | |
357: [215780, 208550, 189781], | |
358: [216320, 209230, 190399], | |
359: [216860, 209910, 191018], | |
360: [217400, 210590, 191637], | |
361: [217940, 211270, 192256], | |
362: [218490, 211960, 192884], | |
363: [219030, 212640, 193502], | |
364: [219580, 213330, 194130], | |
365: [220120, 214010, 194749], | |
366: [220670, 214700, 195377], | |
367: [221220, 215380, 195996], | |
368: [221760, 216070, 196624], | |
369: [222310, 216750, 197243], | |
370: [222850, 217440, 197870], | |
371: [223400, 218120, 198489], | |
372: [223950, 218810, 199117], | |
373: [224490, 219500, 199745], | |
374: [225040, 220190, 200373], | |
375: [225590, 220880, 201001], | |
376: [226130, 221570, 201629], | |
377: [226680, 222260, 202257], | |
378: [227230, 222960, 202894], | |
379: [227770, 223650, 203522], | |
380: [228320, 224340, 204149], | |
381: [228870, 225030, 204777], | |
382: [229410, 225720, 205405], | |
383: [229960, 226410, 206033], | |
384: [230510, 227110, 206670], | |
385: [231060, 227800, 207298], | |
386: [231620, 228500, 207935], | |
387: [232180, 229200, 208572], | |
388: [232740, 229900, 209209], | |
389: [233300, 230600, 209846], | |
390: [233860, 231300, 210483], | |
391: [234410, 232000, 211120], | |
392: [234970, 232700, 211757], | |
393: [235530, 233400, 212394], | |
394: [236090, 234100, 213031], | |
395: [236650, 234800, 213668], | |
396: [237210, 235500, 214305], | |
397: [237820, 236200, 214942], | |
398: [238430, 236910, 215588], | |
399: [239040, 237610, 216225], | |
400: [239650, 238320, 216871], | |
401: [240260, 239020, 217508], | |
402: [240880, 239730, 218154], | |
403: [241490, 240440, 218800], | |
404: [242100, 241140, 219437], | |
405: [242710, 241850, 220084], | |
406: [243320, 242550, 220721], | |
407: [243930, 243260, 221367], | |
408: [244550, 243970, 222013], | |
409: [245210, 244680, 222659], | |
410: [245880, 245390, 223305], | |
411: [246540, 246110, 223960], | |
412: [247210, 246820, 224606], | |
413: [247870, 247540, 225261], | |
414: [248540, 248250, 225908], | |
415: [249210, 248960, 226554], | |
416: [249870, 249680, 227209], | |
417: [250540, 250390, 227855], | |
418: [251200, 251110, 228510], | |
419: [251870, 251820, 229156], | |
420: [252540, 252540, 229811], | |
421: [253250, 253250, 230458], | |
422: [253970, 253970, 231113], | |
423: [254690, 254690, 231768], | |
424: [255410, 255410, 232423], | |
425: [256130, 256130, 233078], | |
426: [256850, 256850, 233734], | |
427: [257570, 257570, 234389], | |
428: [258290, 258290, 235044], | |
429: [259010, 259010, 235699], | |
430: [259730, 259730, 236354], | |
431: [260450, 260450, 237010], | |
432: [261170, 261170, 237665], | |
433: [261890, 261890, 238320], | |
434: [262620, 262620, 238984], | |
435: [263350, 263350, 239649], | |
436: [264070, 264070, 240304], | |
437: [264800, 264800, 240968], | |
438: [265530, 265530, 241632], | |
439: [266250, 266250, 242288], | |
440: [266980, 266980, 242952], | |
441: [267710, 267710, 243616], | |
442: [268430, 268430, 244271], | |
443: [269160, 269160, 244936], | |
444: [269890, 269890, 245600], | |
445: [270620, 270620, 246264], | |
446: [271350, 271350, 246929], | |
447: [272090, 272090, 247602], | |
448: [272820, 272820, 248266], | |
449: [273560, 273560, 248940], | |
450: [274290, 274290, 249604], | |
451: [275020, 275020, 250268], | |
452: [275760, 275760, 250942], | |
453: [276490, 276490, 251606], | |
454: [277230, 277230, 252279], | |
455: [277960, 277960, 252944], | |
456: [278700, 278700, 253617], | |
457: [279440, 279440, 254290], | |
458: [280180, 280180, 254964], | |
459: [280920, 280920, 255637], | |
460: [281660, 281660, 256311], | |
461: [282400, 282400, 256984], | |
462: [283150, 283150, 257667], | |
463: [283890, 283890, 258340], | |
464: [284630, 284630, 259013], | |
465: [285370, 285370, 259687], | |
466: [286110, 286110, 260360], | |
467: [286850, 286850, 261034], | |
468: [287600, 287600, 261716], | |
469: [288350, 288350, 262399], | |
470: [289100, 289100, 263081], | |
471: [289850, 289850, 263764], | |
472: [290600, 290600, 264446], | |
473: [291350, 291350, 265129], | |
474: [292100, 292100, 265811], | |
475: [292850, 292850, 266494], | |
476: [293600, 293600, 267176], | |
477: [294350, 294350, 267859], | |
478: [295100, 295100, 268541], | |
479: [295850, 295850, 269224], | |
480: [296600, 296600, 269906], | |
} | |
def 共済金A(掛金, 月数): | |
count = 掛金 // 500 | |
if 月数 < 36: | |
return 掛金 * 月数 | |
elif 月数 <= 480: | |
return 別表第一[月数][0] * count | |
else: | |
return 別表第一[480][0] * count + (月数 - 480) * 750 | |
def 百円以下切捨(num): | |
return int(math.floor(num - num % 100)) | |
def 所得税(所得): | |
if 所得 <= 195 * 10000: | |
return 所得 * 0.05 | |
elif 所得 <= 330 * 10000: | |
return 所得 * 0.1 - 97500 | |
elif 所得 <= 695 * 10000: | |
return 所得 * 0.20 - 427500 | |
elif 所得 <= 900 * 10000: | |
return 所得 * 0.23 - 636000 | |
elif 所得 <= 1800 * 10000: | |
return 所得 * 0.33 - 1536000 | |
elif 所得 <= 4000 * 10000: | |
return 所得 * 0.4 - 2796000 | |
else: | |
return 所得 * 0.45 - 4796000 | |
# see: http://www.nta.go.jp/shiraberu/ippanjoho/pamph/shotoku/fukko_tokubetsu/ | |
def 復興特別所得税(所得): | |
return 所得税(所得) * 復興特別所得税率 | |
# see: https://www.nta.go.jp/taxanswer/shotoku/1420.htm | |
def 退職所得控除額(勤続年数): | |
if 勤続年数 <= 20: | |
return 勤続年数 * 40 * 10000 | |
else: | |
return 800 * 10000 + (勤続年数 - 20) * 70 * 10000 | |
def 退職所得税(退職金, 勤続年数): | |
return 百円以下切捨(所得税(max(0, (退職金 - 退職所得控除額(勤続年数))) * 0.5)) | |
# see: http://www.smrj.go.jp/skyosai/051303.html | |
def 解約手当金支給割合(納付月数): | |
if 納付月数 < 12: | |
return 0 | |
elif 納付月数 < 84: | |
return 0.8 | |
elif 納付月数 < 90: | |
return 0.805 | |
elif 納付月数 < 240: | |
return 0.8125 + 0.0075 * (納付月数 - 90) // 6 | |
else: | |
return min(1.2, 1.0 + 0.0025 * (納付月数 - 240) // 6) | |
def 解約手当金(掛金, 納付月数): | |
return int(掛金 * 納付月数 * 解約手当金支給割合(納付月数)) | |
# see: https://www.nta.go.jp/taxanswer/shotoku/1490.htm, | |
# http://www.smrj.go.jp/skyosai/qa/kyosaikin/050633.html | |
def 一時所得(総収入): | |
return max(0, 総収入 - 50 * 10000) | |
def 個人住民税所得割額(課税所得): | |
return 課税所得 * 0.1 | |
def 個人住民税均等割額(): | |
都民税額 = 1500 | |
区市町村民税額 = 3500 | |
防災対策費 = 500 | |
return 都民税額 + 区市町村民税額 + 防災対策費 * 2 | |
# see: http://www.tax.metro.tokyo.jp/shitsumon/sonota/index_j.htm | |
def 個人住民税(課税所得): | |
return int(個人住民税所得割額(課税所得) + 個人住民税均等割額()) | |
def 個人住民税退職所得分(退職所得, 勤続年数): | |
return int((退職所得 - 退職所得控除額(勤続年数)) * 0.5 * 0.1) | |
def 共済金Aを受け取る場合の結果(): | |
掛金合計 = 掛金 * 納付月数 | |
課税所得 = 控除前所得 - 掛金 * 12 | |
所得合計 = 課税所得 * 勤続年数 | |
所得税合計 = 百円以下切捨((所得税(課税所得) + 復興特別所得税(課税所得))) * 勤続年数 | |
住民税合計 = 個人住民税(課税所得) * 勤続年数 - 個人住民税退職所得分(共済金A(掛金, 納付月数), 勤続年数) | |
総計 = 所得合計 + 共済金A(掛金, 納付月数) - 所得税合計 - 住民税合計 - 退職所得税(共済金A(掛金, 納付月数), 勤続年数) | |
result = { | |
'掛金': 掛金, | |
'納付月数': 納付月数, | |
'掛金合計': 掛金合計, | |
'所得合計': 所得合計, | |
'所得税合計': 所得税合計, | |
'住民税合計': 住民税合計, | |
'共済金A': 共済金A(掛金, 納付月数), | |
'解約手当金': 0, | |
'退職所得控除額': 退職所得控除額(勤続年数), | |
'退職所得税': 退職所得税(共済金A(掛金, 納付月数), 勤続年数), | |
'総計': 総計, | |
} | |
return result | |
def 共済未加入の場合の結果(): | |
掛金合計 = 0 | |
課税所得 = 控除前所得 | |
所得合計 = 課税所得 * 勤続年数 | |
所得税合計 = 百円以下切捨((所得税(課税所得) + 復興特別所得税(課税所得))) * 勤続年数 | |
住民税合計 = 個人住民税(課税所得) * 勤続年数 | |
総計 = 所得合計 - 所得税合計 - 住民税合計 | |
result = { | |
'掛金': 0, | |
'納付月数': 0, | |
'掛金合計': 0, | |
'所得合計': 所得合計, | |
'所得税合計': 所得税合計, | |
'住民税合計': 住民税合計, | |
'共済金A': 0, | |
'解約手当金': 0, | |
'退職所得控除額': 0, | |
'退職所得税': 0, | |
'総計': 総計, | |
} | |
return result | |
def 解約手当金を受け取る場合の結果(): | |
掛金合計 = 掛金 * 納付月数 | |
解約手当金一時所得 = 一時所得(解約手当金(掛金, 納付月数)) | |
課税所得 = 控除前所得 - 掛金 * 12 | |
所得合計 = 課税所得 * 勤続年数 + 解約手当金(掛金, 納付月数) | |
一時所得を含む所得税 = 百円以下切捨((所得税(課税所得 + 解約手当金一時所得 * 0.5) + 復興特別所得税(課税所得 + 解約手当金一時所得 * 0.5))) | |
所得税合計 = 百円以下切捨((所得税(課税所得) + 復興特別所得税(課税所得))) * (勤続年数 - 1) + 一時所得を含む所得税 | |
住民税合計 = 個人住民税(課税所得) * (勤続年数 - 1) + 個人住民税(課税所得 + 解約手当金一時所得) | |
総計 = 所得合計 - 所得税合計 - 住民税合計 | |
result = { | |
'掛金': 掛金, | |
'納付月数': 納付月数, | |
'掛金合計': 掛金合計, | |
'所得合計': 所得合計, | |
'所得税合計': 所得税合計, | |
'住民税合計': 住民税合計, | |
'共済金A': 0, | |
'解約手当金': 解約手当金(掛金, 納付月数), | |
'退職所得控除額': 0, | |
'退職所得税': 0, | |
'総計': 総計, | |
} | |
return result | |
def print_result(result): | |
print('掛金: {:>16,}'.format(result['掛金'])) | |
print('納付月数: {:>16,}'.format(result['納付月数'])) | |
print('掛金合計: {:>16,}'.format(result['掛金合計'])) | |
print('所得合計: {:>16,}'.format(result['所得合計'])) | |
print('所得税合計: {:>16,}'.format(result['所得税合計'])) | |
print('住民税合計: {:>16,}'.format(result['住民税合計'])) | |
print('共済金A: {:>16,}'.format(result['共済金A'])) | |
print('解約手当金: {:>16,}'.format(result['解約手当金'])) | |
print('退職所得控除額: {:>16,}'.format(result['退職所得控除額'])) | |
print('退職所得税: {:>16,}'.format(result['退職所得税'])) | |
print('総計: {:>16,}'.format(result['総計'])) | |
if __name__ == '__main__': | |
print('---- 共済加入(共済金A) ----') | |
print_result(共済金Aを受け取る場合の結果()) | |
print('---- 共済加入(解約手当金) ----') | |
print_result(解約手当金を受け取る場合の結果()) | |
print('---- 共済未加入 ----') | |
print_result(共済未加入の場合の結果()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment