fix: 社会保険料の端数処理を四捨五入から切り捨てに変更 (健康保険・介護保険・厚生年金・雇用保険・子育て支援金)

This commit is contained in:
admin
2026-05-18 13:30:45 +09:00
parent b9f994b1e1
commit a071a11df3
2 changed files with 12 additions and 12 deletions

View File

@@ -4,7 +4,7 @@
import json
import os
import functools
from decimal import Decimal, ROUND_HALF_UP
from decimal import Decimal, ROUND_HALF_UP, ROUND_DOWN
from datetime import date
from typing import Dict, Any
from ...core.database import get_connection
@@ -203,7 +203,7 @@ class BonusCalculationService:
if health_insurance_rate:
health_insurance = (
health_standard_bonus * Decimal(str(health_insurance_rate["employee_rate"]))
).quantize(Decimal("1"), rounding=ROUND_HALF_UP)
).quantize(Decimal("1"), rounding=ROUND_DOWN)
# 介護保険40歳以上65歳未満が対象
care_insurance = Decimal("0")
@@ -212,7 +212,7 @@ class BonusCalculationService:
if care_insurance_rate:
care_insurance = (
health_standard_bonus * Decimal(str(care_insurance_rate["employee_rate"]))
).quantize(Decimal("1"), rounding=ROUND_HALF_UP)
).quantize(Decimal("1"), rounding=ROUND_DOWN)
# 厚生年金
pension_insurance_rate = BonusCalculationService.get_insurance_rate("厚生年金", payment_date)
@@ -220,7 +220,7 @@ class BonusCalculationService:
if pension_insurance_rate:
pension_insurance = (
pension_standard_bonus * Decimal(str(pension_insurance_rate["employee_rate"]))
).quantize(Decimal("1"), rounding=ROUND_HALF_UP)
).quantize(Decimal("1"), rounding=ROUND_DOWN)
# 雇用保険
employment_insurance_rate = BonusCalculationService.get_insurance_rate("雇用保険", payment_date)
@@ -228,7 +228,7 @@ class BonusCalculationService:
if employment_insurance_rate:
employment_insurance = (
total_bonus * Decimal(str(employment_insurance_rate["employee_rate"]))
).quantize(Decimal("1"), rounding=ROUND_HALF_UP)
).quantize(Decimal("1"), rounding=ROUND_DOWN)
# 子ども・子育て支援金令和8年5月支給分以降のみ適用
# 賞与は bonus_month でなく実際の支給日payment_dateで判定する
@@ -241,7 +241,7 @@ class BonusCalculationService:
if child_support_rate:
child_support = (
total_bonus * Decimal(str(child_support_rate["employee_rate"]))
).quantize(Decimal("1"), rounding=ROUND_HALF_UP)
).quantize(Decimal("1"), rounding=ROUND_DOWN)
print(f"[DEBUG] 賞与子育て支援金: 賞与総額={total_bonus} × 料率={child_support_rate['employee_rate']} = {child_support}")
# 所得税の計算(賞与特有の計算)