diff --git a/scripts/gen-deelnemers.py b/scripts/gen-deelnemers.py new file mode 100755 index 0000000..a72e0f1 --- /dev/null +++ b/scripts/gen-deelnemers.py @@ -0,0 +1,53 @@ +#!/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))