|
|
|
|
@@ -10,8 +10,11 @@ from config import ATTENDANCE_SHEET_ID as SHEET_ID, JUNIOR_SHEET_GID
|
|
|
|
|
EXPORT_URL = f"https://docs.google.com/spreadsheets/d/{SHEET_ID}/export?format=csv&gid=0"
|
|
|
|
|
JUNIOR_EXPORT_URL = f"https://docs.google.com/spreadsheets/d/{SHEET_ID}/export?format=csv&gid={JUNIOR_SHEET_GID}"
|
|
|
|
|
|
|
|
|
|
FEE_FULL = 750 # CZK, for 2+ practices in a month
|
|
|
|
|
FEE_SINGLE = 200 # CZK, for exactly 1 practice in a month
|
|
|
|
|
ADULT_FEE_DEFAULT = 750 # CZK, for 2+ practices in a month
|
|
|
|
|
ADULT_FEE_SINGLE = 200 # CZK, for exactly 1 practice in a month
|
|
|
|
|
ADULT_FEE_MONTHLY_RATE = {
|
|
|
|
|
"2026-03": 350
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
JUNIOR_FEE_DEFAULT = 500 # CZK for 2+ practices
|
|
|
|
|
JUNIOR_MONTHLY_RATE = {
|
|
|
|
|
@@ -76,13 +79,13 @@ def group_by_month(dates: list[tuple[int, datetime]], merged_months: dict[str, s
|
|
|
|
|
return months
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def calculate_fee(attendance_count: int) -> int:
|
|
|
|
|
"""Apply fee rules: 0 → 0, 1 → 200, 2+ → 750."""
|
|
|
|
|
def calculate_fee(attendance_count: int, month_key: str) -> int:
|
|
|
|
|
"""Apply fee rules: 0 → 0, 1 → 200, 2+ → configured rate (default 750)."""
|
|
|
|
|
if attendance_count == 0:
|
|
|
|
|
return 0
|
|
|
|
|
if attendance_count == 1:
|
|
|
|
|
return FEE_SINGLE
|
|
|
|
|
return FEE_FULL
|
|
|
|
|
return ADULT_FEE_SINGLE
|
|
|
|
|
return ADULT_FEE_MONTHLY_RATE.get(month_key, ADULT_FEE_DEFAULT)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def calculate_junior_fee(attendance_count: int, month_key: str) -> str | int:
|
|
|
|
|
@@ -186,7 +189,7 @@ def get_members_with_fees() -> tuple[list[tuple[str, str, dict[str, int]]], list
|
|
|
|
|
for c in cols
|
|
|
|
|
if c < len(row) and row[c].strip().upper() == "TRUE"
|
|
|
|
|
)
|
|
|
|
|
fee = calculate_fee(count) if tier == "A" else 0
|
|
|
|
|
fee = calculate_fee(count, month_key) if tier == "A" else 0
|
|
|
|
|
month_fees[month_key] = (fee, count)
|
|
|
|
|
members.append((name, tier, month_fees))
|
|
|
|
|
|
|
|
|
|
|