Fix: Sale category was not opening as product query error of sorting on menu category without a join

This commit is contained in:
2025-07-10 10:56:30 +00:00
parent 0dbec4784b
commit d80d097c0e
2 changed files with 19 additions and 4 deletions

View File

@ -334,12 +334,13 @@ def show_term(
date_: date = Depends(effective_date),
current_user: UserToken = Depends(get_user),
):
print(f"Fetching products for MenuCategory: {mc}, SaleCategory: {sc}, Date: {date_}")
list_ = []
query = select(ProductVersion)
if mc is not None:
query = query.join(ProductVersion.menu_category)
if sc is not None:
query = query.join(ProductVersion.sale_category).join(SaleCategory.tax)
query = query.join(ProductVersion.menu_category).join(ProductVersion.sale_category).join(SaleCategory.tax)
query = query.where(
and_(
or_(
@ -364,6 +365,7 @@ def show_term(
if sc is not None:
query = query.options(
contains_eager(ProductVersion.sale_category).contains_eager(SaleCategory.tax),
contains_eager(ProductVersion.menu_category),
)
if mc is not None:
@ -451,7 +453,7 @@ def show_id(
)
.order_by(ProductVersion.sort_order, ProductVersion.name)
.options(
contains_eager(ProductVersion.sale_category).contains_eager(ProductVersion.sale_category),
contains_eager(ProductVersion.sale_category),
)
).scalar_one()
return product_info(item)

View File

@ -5,6 +5,7 @@ from decimal import Decimal
from fastapi import APIRouter, Depends, HTTPException, Security, status
from sqlalchemy import select
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import contains_eager
from sqlalchemy.sql.functions import count
from ..core.security import get_current_active_user as get_user
@ -86,7 +87,14 @@ def show_list(user: UserToken = Depends(get_user)) -> list[schemas.SaleCategory]
with SessionFuture() as db:
return [
sale_category_info(item)
for item in db.execute(select(SaleCategory).order_by(SaleCategory.name)).scalars().all()
for item in db.execute(
select(SaleCategory)
.join(SaleCategory.tax)
.order_by(SaleCategory.name)
.options(contains_eager(SaleCategory.tax))
)
.scalars()
.all()
]
@ -96,7 +104,12 @@ def show_id(
user: UserToken = Security(get_user, scopes=["products"]),
) -> schemas.SaleCategory:
with SessionFuture() as db:
item: SaleCategory = db.execute(select(SaleCategory).where(SaleCategory.id == id_)).scalar_one()
item: SaleCategory = db.execute(
select(SaleCategory)
.join(SaleCategory.tax)
.where(SaleCategory.id == id_)
.options(contains_eager(SaleCategory.tax))
).scalar_one()
return sale_category_info(item)