Now sending an actually unique parameter so matching in the future is simpler

This commit is contained in:
Jonas Linter
2025-11-19 11:40:41 +01:00
parent 90f68bfd26
commit c0e5c3c4db
2 changed files with 11 additions and 8 deletions

View File

@@ -814,10 +814,10 @@ class ConversionService:
advertising_partner: str | None,
session: AsyncSession | None = None,
) -> Reservation | None:
"""Match reservation by advertising tracking data (fbclid/gclid/utm_campaign).
"""Match reservation by advertising tracking data (fbclid/gclid/md5_unique_id).
Args:
advertising_campagne: Truncated tracking ID
advertising_campagne: Tracking ID from PMS (could be truncated click_id or md5_unique_id)
hotel_id: Hotel ID for filtering
guest_first_name: Guest first name for disambiguation
guest_last_name: Guest last name for disambiguation
@@ -831,12 +831,14 @@ class ConversionService:
"""
if session is None:
session = self.session
# Find reservations where fbclid or gclid starts with the truncated value
# Find reservations where:
# - fbclid/gclid starts with the advertising_campagne value, OR
# - md5_unique_id matches exactly (for direct ID matching)
query = select(Reservation).where(
or_(
Reservation.fbclid.like(f"{advertising_campagne}%"),
Reservation.gclid.like(f"{advertising_campagne}%"),
Reservation.utm_campaign.like(f"{advertising_campagne}%"),
Reservation.md5_unique_id == advertising_campagne,
)
)