Source code for ticket.models.invoice

from __future__ import annotations

from decimal import Decimal
from onegov.pay import Invoice
from sqlalchemy.orm import relationship


from typing import Any, TYPE_CHECKING
if TYPE_CHECKING:
    import uuid
    from onegov.ticket import Ticket, TicketInvoiceItem


[docs] class TicketInvoice(Invoice): """ An invoice belonging to a specific ticket. """
[docs] __mapper_args__ = { 'polymorphic_identity': 'ticket' }
# NOTE: Currently each invoice belongs to a single ticket # but there are some potential use-cases for merging # the invoices of multiple related tickets, so this # might become a list later on. #: the ticket to which this invoice belongs to
[docs] ticket: relationship[Ticket | None] = relationship( 'Ticket', back_populates='invoice', uselist=False )
if TYPE_CHECKING:
[docs] items: relationship[list[TicketInvoiceItem]] # type: ignore[assignment]
[docs] def add( self, group: str, text: str, unit: Decimal, quantity: Decimal = Decimal('1'), *, submission_id: uuid.UUID | None = None, reservation_id: int | None = None, family: str | None = None, vat_rate: Decimal | None = None, tid: str | None = None, source: str | None = None, flush: bool = True, **kwargs: Any, ) -> TicketInvoiceItem: return super().add( # type: ignore[return-value] type='ticket', group=group, family=family, text=text, tid=tid, source=source, unit=unit, quantity=quantity, vat_rate=vat_rate, submission_id=submission_id, reservation_id=reservation_id, flush=flush, )