修正
This commit is contained in:
128
backend/debug_care_insurance.py
Normal file
128
backend/debug_care_insurance.py
Normal file
@@ -0,0 +1,128 @@
|
||||
"""
|
||||
介護保険計算のデバッグスクリプト
|
||||
"""
|
||||
from datetime import date
|
||||
from app.core.database import get_connection
|
||||
|
||||
# 従業員20190001の情報を確認
|
||||
employee_code = "20190001"
|
||||
payment_date = date(2025, 12, 31)
|
||||
|
||||
print("=" * 60)
|
||||
print(f"従業員コード: {employee_code}")
|
||||
print(f"支給日: {payment_date}")
|
||||
print("=" * 60)
|
||||
|
||||
with get_connection() as conn:
|
||||
with conn.cursor() as cur:
|
||||
# 従業員情報を取得
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT employee_id, employee_code, name, birth_date
|
||||
FROM employees
|
||||
WHERE employee_code = %s
|
||||
""",
|
||||
(employee_code,)
|
||||
)
|
||||
employee = cur.fetchone()
|
||||
|
||||
if not employee:
|
||||
print("従業員が見つかりません")
|
||||
exit(1)
|
||||
|
||||
print(f"\n【従業員情報】")
|
||||
print(f" ID: {employee['employee_id']}")
|
||||
print(f" コード: {employee['employee_code']}")
|
||||
print(f" 氏名: {employee['name']}")
|
||||
print(f" 生年月日: {employee['birth_date']}")
|
||||
|
||||
# 年齢を計算
|
||||
if employee['birth_date']:
|
||||
birth_date = employee['birth_date']
|
||||
age = payment_date.year - birth_date.year
|
||||
if (payment_date.month, payment_date.day) < (birth_date.month, birth_date.day):
|
||||
age -= 1
|
||||
print(f" 年齢({payment_date}時点): {age}歳")
|
||||
print(f" 介護保険対象: {'はい (40-64歳)' if 40 <= age < 65 else 'いいえ'}")
|
||||
else:
|
||||
print(f" 生年月日が未設定です")
|
||||
age = 0
|
||||
|
||||
# 介護保険料率を確認(2025年)
|
||||
print(f"\n【介護保険料率 - 2025年】")
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT * FROM insurance_rates
|
||||
WHERE rate_type = '介護保険'
|
||||
AND rate_year = 2025
|
||||
ORDER BY rate_id
|
||||
"""
|
||||
)
|
||||
rates_2025 = cur.fetchall()
|
||||
|
||||
if rates_2025:
|
||||
for rate in rates_2025:
|
||||
print(f" ID: {rate['rate_id']}")
|
||||
print(f" 計算対象: {rate['calculation_target']}")
|
||||
print(f" 都道府県: {rate['prefecture']}")
|
||||
print(f" 従業員負担率: {float(rate['employee_rate']) * 100:.3f}%")
|
||||
print(f" 会社負担率: {float(rate['employer_rate']) * 100:.3f}%")
|
||||
print(f" 年齢下限: {rate['care_insurance_age_threshold']}歳以上")
|
||||
print(f" 備考: {rate['notes']}")
|
||||
print()
|
||||
else:
|
||||
print(" ⚠️ 2025年の介護保険料率が見つかりません!")
|
||||
|
||||
# 介護保険料率を確認(2026年)
|
||||
print(f"【介護保険料率 - 2026年】")
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT * FROM insurance_rates
|
||||
WHERE rate_type = '介護保険'
|
||||
AND rate_year = 2026
|
||||
ORDER BY rate_id
|
||||
"""
|
||||
)
|
||||
rates_2026 = cur.fetchall()
|
||||
|
||||
if rates_2026:
|
||||
for rate in rates_2026:
|
||||
print(f" ID: {rate['rate_id']}")
|
||||
print(f" 計算対象: {rate['calculation_target']}")
|
||||
print(f" 都道府県: {rate['prefecture']}")
|
||||
print(f" 従業員負担率: {float(rate['employee_rate']) * 100:.3f}%")
|
||||
print(f" 会社負担率: {float(rate['employer_rate']) * 100:.3f}%")
|
||||
print(f" 年齢下限: {rate['care_insurance_age_threshold']}歳以上")
|
||||
print()
|
||||
else:
|
||||
print(" 2026年の介護保険料率が見つかりません")
|
||||
|
||||
# 2025年12月の給与計算データを確認
|
||||
print(f"\n【2025年12月の給与計算】")
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT * FROM monthly_payroll
|
||||
WHERE employee_id = %s
|
||||
AND payroll_year = 2025
|
||||
AND payroll_month = 12
|
||||
ORDER BY payroll_id DESC
|
||||
LIMIT 1
|
||||
""",
|
||||
(employee['employee_id'],)
|
||||
)
|
||||
payroll = cur.fetchone()
|
||||
|
||||
if payroll:
|
||||
print(f" Payroll ID: {payroll['payroll_id']}")
|
||||
print(f" 基本給: ¥{float(payroll['base_salary']):,.0f}")
|
||||
print(f" 健康保険: ¥{float(payroll['health_insurance']):,.0f}")
|
||||
print(f" 介護保険: ¥{float(payroll['care_insurance']):,.0f}")
|
||||
print(f" 厚生年金: ¥{float(payroll['pension_insurance']):,.0f}")
|
||||
print(f" 雇用保険: ¥{float(payroll['employment_insurance']):,.0f}")
|
||||
print(f" 計算日: {payroll['created_at']}")
|
||||
else:
|
||||
print(" 給与計算データが見つかりません")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("診断完了")
|
||||
print("=" * 60)
|
||||
Reference in New Issue
Block a user