Improve the frontend and fix TODOs
This commit is contained in:
@@ -419,15 +419,36 @@ class InventoryService:
|
||||
) -> List[StockMovementResponse]:
|
||||
"""Get stock movements with filtering"""
|
||||
logger.info("📈 Getting stock movements",
|
||||
tenant_id=tenant_id,
|
||||
ingredient_id=ingredient_id,
|
||||
tenant_id=str(tenant_id),
|
||||
ingredient_id=str(ingredient_id) if ingredient_id else None,
|
||||
skip=skip,
|
||||
limit=limit)
|
||||
limit=limit,
|
||||
movement_type=movement_type)
|
||||
try:
|
||||
async with get_db_transaction() as db:
|
||||
movement_repo = StockMovementRepository(db)
|
||||
ingredient_repo = IngredientRepository(db)
|
||||
|
||||
# Validate ingredient exists if filtering by ingredient
|
||||
if ingredient_id:
|
||||
ingredient = await ingredient_repo.get_by_id(ingredient_id)
|
||||
if not ingredient:
|
||||
logger.warning("Ingredient not found for movements query",
|
||||
ingredient_id=str(ingredient_id),
|
||||
tenant_id=str(tenant_id))
|
||||
raise ValueError(f"Ingredient {ingredient_id} not found")
|
||||
|
||||
if ingredient.tenant_id != tenant_id:
|
||||
logger.error("Ingredient does not belong to tenant",
|
||||
ingredient_id=str(ingredient_id),
|
||||
ingredient_tenant=str(ingredient.tenant_id),
|
||||
requested_tenant=str(tenant_id))
|
||||
raise ValueError(f"Ingredient {ingredient_id} does not belong to tenant {tenant_id}")
|
||||
|
||||
logger.info("Ingredient validated for movements query",
|
||||
ingredient_name=ingredient.name,
|
||||
ingredient_id=str(ingredient_id))
|
||||
|
||||
# Get filtered movements
|
||||
movements = await movement_repo.get_movements(
|
||||
tenant_id=tenant_id,
|
||||
@@ -454,8 +475,14 @@ class InventoryService:
|
||||
logger.info("✅ Returning movements", response_count=len(responses))
|
||||
return responses
|
||||
|
||||
except ValueError:
|
||||
# Re-raise validation errors as-is
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error("❌ Failed to get stock movements", error=str(e), tenant_id=tenant_id)
|
||||
logger.error("❌ Failed to get stock movements",
|
||||
error=str(e),
|
||||
error_type=type(e).__name__,
|
||||
tenant_id=str(tenant_id))
|
||||
raise
|
||||
|
||||
# ===== ALERTS AND NOTIFICATIONS =====
|
||||
@@ -577,7 +604,7 @@ class InventoryService:
|
||||
low_stock_alerts=len(low_stock_items),
|
||||
expiring_soon_items=len(expiring_items),
|
||||
expired_items=len(expired_items),
|
||||
out_of_stock_items=0, # TODO: Calculate this
|
||||
out_of_stock_items=stock_summary.get('out_of_stock_count', 0),
|
||||
stock_by_category=stock_by_category,
|
||||
recent_movements=recent_activity.get('total_movements', 0),
|
||||
recent_purchases=recent_activity.get('purchase', {}).get('count', 0),
|
||||
|
||||
Reference in New Issue
Block a user