68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
所得税テーブルの詳細確認スクリプト
|
||
月収356,600円で対応する所得税を確認
|
||
"""
|
||
import sys
|
||
import os
|
||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backend'))
|
||
|
||
from decimal import Decimal
|
||
from datetime import date
|
||
|
||
# テスト用の簡単なクエリシミュレーション
|
||
sample_rows_3 = [
|
||
# (From, To, 扶養3人の税額)
|
||
(350000, 355000, 5600),
|
||
(355000, 360000, 5840), # ← 356,600はここに該当するはず
|
||
(360000, 365000, 6080),
|
||
(365000, 370000, 6320),
|
||
]
|
||
|
||
monthly_income = 356600
|
||
dependents_count = 3
|
||
|
||
print("=== テスト: 月収 356,600円、扶養3人の所得税 ===\n")
|
||
|
||
# ケース1: monthly_income_to > monthly_income 条件
|
||
print("[ケース1] WHERE monthly_income_from <= %s AND monthly_income_to > %s")
|
||
print(f"条件: {monthly_income} >= From AND {monthly_income} < To\n")
|
||
|
||
found = False
|
||
for from_val, to_val, tax in sample_rows_3:
|
||
match = from_val <= monthly_income < to_val
|
||
status = "✓ MATCH" if match else "✗ NO"
|
||
print(f" {from_val:,} ~ {to_val:,}: {status} (tax={tax})")
|
||
if match:
|
||
found = True
|
||
result = tax
|
||
|
||
if found:
|
||
print(f"\n✓ 見つかりました: ¥{result}")
|
||
else:
|
||
print(f"\n✗ 見つかりませんでした")
|
||
|
||
# ケース2: monthly_income_to >= monthly_income 条件(元の間違ったロジック)
|
||
print("\n[ケース2(元のバグ)] WHERE monthly_income_from <= %s AND monthly_income_to >= %s")
|
||
print(f"条件: {monthly_income} >= From AND {monthly_income} <= To\n")
|
||
|
||
matches = []
|
||
for from_val, to_val, tax in sample_rows_3:
|
||
match = from_val <= monthly_income <= to_val
|
||
status = "✓ MATCH" if match else "✗ NO"
|
||
print(f" {from_val:,} ~ {to_val:,}: {status} (tax={tax})")
|
||
if match:
|
||
matches.append(tax)
|
||
|
||
if matches:
|
||
print(f"\n✓ 見つかりました: {len(matches)}件")
|
||
for i, tax in enumerate(matches, 1):
|
||
print(f" {i}. ¥{tax}")
|
||
else:
|
||
print(f"\n✗ 見つかりませんでした")
|
||
|
||
print("\n=== 比較 ===")
|
||
print("正しいロジック (To > income): 5,840円")
|
||
print("バグロジック (To >= income): 複数マッチまたはマッチなし")
|
||
print(f"実際の計算結果: 7,450円 ← これはどこから来ているのか?")
|