#!/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))