#!/usr/bin/env python3

import argparse
from datetime import date, datetime
from typing import Optional

from deelnemers import deelnemers


def main(*, after: Optional[date]):
    participants = deelnemers()

    for p in participants:
        if not p.is_actief():
            continue

        if after and p.datum_ingeschreven.date() < after:
            continue

        acc = f"Activa:Debiteuren:Deelnemers:{p.nickname.title().replace('_', '')}"
        openat = p.datum_ingeschreven.date()
        # Contributie start op de 1e van de volgende maand na inschrijving.
        contrib_start = date(
            openat.year + (openat.month + 1) // 12,
            openat.month % 12 + 1,
            1,
        )
        # Dit is wanneer we begonnen met Beancount.
        if contrib_start < date(2025, 1, 1):
            contrib_start = date(2025, 1, 1)

        print(f"""
{openat} open {acc} EUR
{contrib_start} * "Contributie"
  recur: "1000 Months /Monthly"
  Inkomsten:Contributie  -{p.maandbedrag:.2f} EUR
  {acc}""")


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        prog="bean-deelnemers",
        description="Maakt debiteuren van Bitlair deelnemers uit de administratie",
    )
    parser.register("type", "date", lambda s: datetime.strptime(s, "%Y-%m-%d").date())
    parser.add_argument(
        "--after",
        help="Deelnemers ingeschreven vanaf deze datum",
        type="date",
    )

    args = parser.parse_args()
    main(**vars(args))
