53 lines
1.5 KiB
Python
Executable file
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))
|