"""
Undocumented Invoice Controller

Erweitert die Standard-Invoice-Funktionen mit nicht-offiziell dokumentierten Features.
"""

from sevdesk.base.basecontroller import BaseController
from sevdesk.controllers.invoice_controller import InvoiceController as BaseInvoiceController
from sevdesk.models.invoice import Invoice
from sevdesk.models.invoiceresponse import InvoiceResponse


class InvoiceController(BaseInvoiceController):
    """
    Erweiterte Invoice-Controller mit zusaetzlichen Funktionen.

    Zusaetzliche Methoden:
    - createInvoice() - Direktes Erstellen von Rechnungen (nicht nur Factory)
    """

    @BaseController.post("/Invoice")
    def createInvoice(self, body: Invoice) -> InvoiceResponse:
        """
        Erstellt eine Rechnung direkt via POST /Invoice.

        Dies ist nicht offiziell dokumentiert, aber funktioniert und ist
        einfacher als die Factory-Methode.

        Args:
            body: Invoice-Model mit allen Rechnungsdaten

        Returns:
            InvoiceResponse mit der gespeicherten Rechnung
        """
        return (yield)
