from sqlalchemy import Column, String, Integer, Numeric, DateTime, ForeignKey from sqlalchemy.sql import func from sqlalchemy.orm import relationship from app.core.database.db_session import Base class PurchaseOrder(Base): __tablename__ = "purchase_orders" purchase_order_id = Column(String(26), primary_key=True) po_number = Column(String(50), unique=True, nullable=False) supplier_name = Column(String(255), nullable=False) status = Column(String(20), default="Draft") # Draft, Ordered, Received, Cancelled total_amount = Column(Numeric(10, 2), default=0.00) created_at = Column(DateTime, server_default=func.now()) items = relationship("PurchaseOrderItem", back_populates="purchase_order", cascade="all, delete-orphan") class PurchaseOrderItem(Base): __tablename__ = "purchase_order_items" id = Column(String(26), primary_key=True) purchase_order_id = Column(String(26), ForeignKey("purchase_orders.purchase_order_id", ondelete="CASCADE"), nullable=False) part_id = Column(String(26), ForeignKey("parts.part_id", ondelete="RESTRICT"), nullable=False) quantity_ordered = Column(Integer, nullable=False) quantity_received = Column(Integer, default=0) unit_price = Column(Numeric(10, 2), nullable=False) purchase_order = relationship("PurchaseOrder", back_populates="items") part = relationship("Part")