boekhouding-beancount/scripts/gen-deelnemers.py
2025-06-29 15:46:20 +02:00

53 lines
1.5 KiB
Python
Executable file

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