diff --git a/local_backend/main.py b/local_backend/main.py index 4fb9332..03d076d 100644 --- a/local_backend/main.py +++ b/local_backend/main.py @@ -218,6 +218,14 @@ def _run_migrations(): "INSERT OR IGNORE INTO pos_settings (key, value, updated_at) VALUES ('security.auto_lock_seconds', '300', CURRENT_TIMESTAMP)", "INSERT OR IGNORE INTO pos_settings (key, value, updated_at) VALUES ('security.auto_logout', 'false', CURRENT_TIMESTAMP)", "INSERT OR IGNORE INTO pos_settings (key, value, updated_at) VALUES ('security.auto_logout_seconds', '1800', CURRENT_TIMESTAMP)", + # Xenia Connect — digital menu fields on products + "ALTER TABLE products ADD COLUMN digital_visible INTEGER NOT NULL DEFAULT 1", + "ALTER TABLE products ADD COLUMN digital_available INTEGER NOT NULL DEFAULT 1", + "ALTER TABLE products ADD COLUMN digital_name VARCHAR", + "ALTER TABLE products ADD COLUMN digital_description VARCHAR", + "ALTER TABLE products ADD COLUMN digital_price REAL", + "ALTER TABLE products ADD COLUMN digital_discount REAL NOT NULL DEFAULT 0.0", + "ALTER TABLE products ADD COLUMN digital_image_url VARCHAR", ] for sql in migrations: try: diff --git a/local_backend/models/product.py b/local_backend/models/product.py index 29c5463..54edf3e 100644 --- a/local_backend/models/product.py +++ b/local_backend/models/product.py @@ -36,6 +36,15 @@ class Product(Base): image_url = Column(String, nullable=True) sort_order = Column(Integer, default=0, nullable=False) + # Xenia Connect — digital menu overrides + digital_visible = Column(Integer, default=1, nullable=False) + digital_available = Column(Integer, default=1, nullable=False) + digital_name = Column(String, nullable=True) + digital_description = Column(String, nullable=True) + digital_price = Column(Float, nullable=True) + digital_discount = Column(Float, default=0.0, nullable=False) + digital_image_url = Column(String, nullable=True) + category = relationship("Category", back_populates="products") printer_zone = relationship("Printer", back_populates="products") quick_options = relationship("ProductQuickOption", back_populates="product", cascade="all, delete-orphan") diff --git a/local_backend/schemas/product.py b/local_backend/schemas/product.py index a40ec99..24b1a6b 100644 --- a/local_backend/schemas/product.py +++ b/local_backend/schemas/product.py @@ -263,6 +263,14 @@ class ProductBase(BaseModel): lifecycle_status: str = "active" printer_zone_id: Optional[int] = None sort_order: int = 0 + # Xenia Connect — digital menu overrides + digital_visible: bool = True + digital_available: bool = True + digital_name: Optional[str] = None + digital_description: Optional[str] = None + digital_price: Optional[float] = None + digital_discount: float = 0.0 + digital_image_url: Optional[str] = None class ProductCreate(ProductBase): @@ -284,6 +292,14 @@ class ProductUpdate(BaseModel): options: Optional[List[ProductOptionCreate]] = None ingredients: Optional[List[ProductIngredientCreate]] = None preference_sets: Optional[List[PreferenceSetCreate]] = None + # Xenia Connect — digital menu overrides + digital_visible: Optional[bool] = None + digital_available: Optional[bool] = None + digital_name: Optional[str] = None + digital_description: Optional[str] = None + digital_price: Optional[float] = None + digital_discount: Optional[float] = None + digital_image_url: Optional[str] = None class ProductReorderItem(BaseModel):