89 lines
3.3 KiB
Python
89 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
所得税表の確認スクリプト
|
||
ユーザーが提供したデータ:
|
||
- 月収(控除後): 356,600円
|
||
- 扶養人数: 3人
|
||
- 期待される所得税: 5,840円
|
||
"""
|
||
|
||
import sys
|
||
import os
|
||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backend'))
|
||
|
||
from decimal import Decimal
|
||
from datetime import date
|
||
from app.core.database import get_connection
|
||
|
||
def check_income_tax():
|
||
"""所得税テーブルを確認"""
|
||
|
||
monthly_income = Decimal("356600")
|
||
dependents_count = 3
|
||
target_date = date(2025, 1, 22)
|
||
|
||
print(f"検索条件:")
|
||
print(f" 月収: {monthly_income}円")
|
||
print(f" 扶養人数: {dependents_count}人")
|
||
print(f" 適用日: {target_date}")
|
||
print()
|
||
|
||
with get_connection() as conn:
|
||
with conn.cursor() as cur:
|
||
# 全てのデータを確認
|
||
print("=== 3人扶養の全データ ===")
|
||
cur.execute(
|
||
"""
|
||
SELECT * FROM income_tax_table
|
||
WHERE dependents_count = %s
|
||
ORDER BY monthly_income_from
|
||
""",
|
||
(dependents_count,)
|
||
)
|
||
|
||
results = cur.fetchall()
|
||
print(f"総件数: {len(results)}")
|
||
|
||
# 月収356,600円が属する範囲を探す
|
||
for row in results:
|
||
if (row["monthly_income_from"] <= monthly_income <= row["monthly_income_to"]):
|
||
print(f"\n✓ 月収 {monthly_income} が属する範囲:")
|
||
print(f" From: {row['monthly_income_from']}")
|
||
print(f" To: {row['monthly_income_to']}")
|
||
print(f" 税額: {row['tax_amount']}円")
|
||
print(f" 有効期間: {row['valid_from']} ~ {row['valid_to']}")
|
||
break
|
||
else:
|
||
print(f"\n✗ 月収 {monthly_income} が属する範囲が見つかりません")
|
||
print("\n該当の近い範囲:")
|
||
for row in results[-5:]:
|
||
print(f" {row['monthly_income_from']} ~ {row['monthly_income_to']}: {row['tax_amount']}円")
|
||
|
||
# 現在の年度で検索(元の検索ロジックをシミュレート)
|
||
print("\n=== 元の検索ロジック(valid_from/toで検索)===")
|
||
cur.execute(
|
||
"""
|
||
SELECT * FROM income_tax_table
|
||
WHERE valid_from <= %s
|
||
AND (valid_to IS NULL OR valid_to >= %s)
|
||
AND dependents_count = %s
|
||
AND monthly_income_from <= %s
|
||
AND monthly_income_to >= %s
|
||
ORDER BY valid_from DESC
|
||
LIMIT 1
|
||
""",
|
||
(target_date, target_date, dependents_count, monthly_income, monthly_income)
|
||
)
|
||
result = cur.fetchone()
|
||
|
||
if result:
|
||
print(f"検索結果:")
|
||
print(f" 月収範囲: {result['monthly_income_from']} ~ {result['monthly_income_to']}")
|
||
print(f" 税額: {result['tax_amount']}円")
|
||
print(f" 有効期間: {result['valid_from']} ~ {result['valid_to']}")
|
||
else:
|
||
print("検索結果: なし")
|
||
|
||
if __name__ == "__main__":
|
||
check_income_tax()
|