Teckids-Wiki

Leidwesen

Eingangsrechnungen

Ausgangsrechnungen

import datetime
import time
from typing import Union

from aleksis.core.celery import app
from aleksis.core.util.email import send_email
from aleksis.core.util.pdf import generate_pdf_from_template

from aleksis.apps.tezor.models.invoice import Invoice

tokens = []

# DATUM ANPASSEN!
for inv in Invoice.objects.filter(created__date__gt=datetime.date(2025, 7, 14)):
        tokens.append(inv.token)

while len(tokens) > 0:
    for token in tokens:
        context = {}
        invoice = Invoice.objects.get(token=token)
        context["invoice"] = invoice
        print(f"Generiere PDF von {invoice.number}")
        invoice_pdf, result = generate_pdf_from_template(invoice.group.template_name, context)
        done = False
        while not done:
            try:
                result.wait(timeout=600, disable_sync_subtasks=False)
                done = True
            except:
                time.sleep(10)
                invoice_pdf, result = generate_pdf_from_template(invoice.group.template_name, context)
        invoice_pdf.refresh_from_db()

        print(f"Sende E-Mail für {invoice.number}")
        send_email(
            template_name="invoice",
            from_email=invoice.group.client.email,
            recipient_list=['rg-eingang-buha@teckids.org'],
            context=context,
            attachments=[(f"{invoice.number}.pdf", invoice_pdf.file.read(), "application/pdf")],
        )
        tokens.remove(token)

Vollständigkeit prüfen