diff --git a/app/modules/loyalty/services/card_service.py b/app/modules/loyalty/services/card_service.py index c01ece46..b5c35626 100644 --- a/app/modules/loyalty/services/card_service.py +++ b/app/modules/loyalty/services/card_service.py @@ -393,12 +393,14 @@ class CardService: query = query.filter(LoyaltyCard.is_active == is_active) if search: + from sqlalchemy import func + # Normalize search term for card number matching search_normalized = search.replace("-", "").replace(" ", "") # Use relationship-based join to avoid direct Customer model import CustomerModel = LoyaltyCard.customer.property.mapper.class_ query = query.join(LoyaltyCard.customer).filter( - (LoyaltyCard.card_number.replace("-", "").ilike(f"%{search_normalized}%")) + (func.replace(LoyaltyCard.card_number, "-", "").ilike(f"%{search_normalized}%")) | (CustomerModel.email.ilike(f"%{search}%")) | (CustomerModel.first_name.ilike(f"%{search}%")) | (CustomerModel.last_name.ilike(f"%{search}%"))