feat: billing for groups of deals
This commit is contained in:
@@ -5,8 +5,9 @@ from sqlalchemy import ForeignKey
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from models import BaseModel
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from models import Deal
|
||||
from models import Deal, DealGroup
|
||||
|
||||
|
||||
class DealBillRequest(BaseModel):
|
||||
@@ -23,3 +24,19 @@ class DealBillRequest(BaseModel):
|
||||
|
||||
pdf_url: Mapped[str] = mapped_column(nullable=True)
|
||||
invoice_number: Mapped[str] = mapped_column(nullable=True)
|
||||
|
||||
|
||||
class GroupBillRequest(BaseModel):
|
||||
__tablename__ = 'group_bill_requests'
|
||||
|
||||
group_id: Mapped[int] = mapped_column(ForeignKey('deal_groups.id'),
|
||||
nullable=False,
|
||||
primary_key=True,
|
||||
unique=True)
|
||||
group: Mapped['DealGroup'] = relationship(back_populates='bill_request')
|
||||
|
||||
created_at: Mapped[datetime.datetime] = mapped_column(nullable=False)
|
||||
paid: Mapped[bool] = mapped_column(nullable=False, default=False)
|
||||
|
||||
pdf_url: Mapped[str] = mapped_column(nullable=True)
|
||||
invoice_number: Mapped[str] = mapped_column(nullable=True)
|
||||
|
||||
@@ -4,6 +4,7 @@ from sqlalchemy import ForeignKey, Table, Column
|
||||
from sqlalchemy.orm import mapped_column, Mapped, relationship
|
||||
|
||||
from models import BaseModel
|
||||
from models import GroupBillRequest
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from models import Deal
|
||||
@@ -24,6 +25,10 @@ class DealGroup(BaseModel):
|
||||
back_populates='group',
|
||||
secondary='deal_relations'
|
||||
)
|
||||
bill_request: Mapped[Optional['GroupBillRequest']] = relationship(
|
||||
back_populates='group',
|
||||
lazy='joined'
|
||||
)
|
||||
|
||||
|
||||
deal_relations = Table(
|
||||
|
||||
Reference in New Issue
Block a user