from __future__ import annotations
from onegov.core.orm.types import UUID
from onegov.pay import InvoiceItem
from sqlalchemy import Column
from sqlalchemy import ForeignKey
from sqlalchemy import Text
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import uuid
from onegov.activity.models import BookingPeriodInvoice
from sqlalchemy.orm import relationship
[docs]
class ActivityInvoiceItem(InvoiceItem):
"""
An invoice item related to an activity.
Could also just be a donation or manual invoice item unrelated
to a specific activity.
"""
[docs]
__mapper_args__ = {
'polymorphic_identity': 'activity'
}
#: the attendee, if the item is connected to an attendee
[docs]
attendee_id: Column[uuid.UUID | None] = Column(
UUID, # type:ignore[arg-type]
ForeignKey('attendees.id'),
nullable=True
)
#: organizer (if the item is an activity)
[docs]
organizer: Column[str | None] = Column(Text, nullable=True)
if TYPE_CHECKING:
[docs]
invoice: relationship[BookingPeriodInvoice]