ai_giga_tcg/app/schemas/transaction.py

49 lines
1.3 KiB
Python

from typing import List, Optional
from pydantic import BaseModel
from datetime import datetime
class PurchaseItem(BaseModel):
product_id: int
unit_price: float
quantity: int
is_case: bool
num_boxes: Optional[int] = None
# TODO: remove is_case and num_boxes, should derive from product_id
class SaleItem(BaseModel):
inventory_item_id: int
unit_price: float
class PurchaseTransactionCreate(BaseModel):
vendor_id: int
transaction_date: datetime
items: List[PurchaseItem]
transaction_notes: Optional[str] = None
class SaleTransactionCreate(BaseModel):
customer_id: int
marketplace_id: Optional[int] = None
transaction_date: datetime
items: List[SaleItem]
transaction_notes: Optional[str] = None
class TransactionItemResponse(BaseModel):
id: int
transaction_id: int
physical_item_id: int
unit_price: float
created_at: datetime
updated_at: datetime
class TransactionResponse(BaseModel):
id: int
vendor_id: Optional[int] = None
customer_id: Optional[int] = None
marketplace_id: Optional[int] = None
transaction_type: str
transaction_date: datetime
transaction_total_amount: float
transaction_notes: Optional[str] = None
created_at: datetime
updated_at: datetime
transaction_items: List[TransactionItemResponse]