feat: billing for groups of deals

This commit is contained in:
2024-11-15 20:27:16 +04:00
parent bbe9832923
commit e2d35fb7c4
6 changed files with 145 additions and 31 deletions

View File

@@ -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)

View File

@@ -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(