diff --git a/client/src/components/Planner/ReservationsPanel.tsx b/client/src/components/Planner/ReservationsPanel.tsx
index 990d9928..ff98434a 100644
--- a/client/src/components/Planner/ReservationsPanel.tsx
+++ b/client/src/components/Planner/ReservationsPanel.tsx
@@ -112,17 +112,30 @@ function ReservationCard({ r, tripId, onEdit, onDelete, files = [], onNavigateTo
const TRANSPORT_TYPES_SET = new Set(['flight', 'train', 'bus', 'car', 'cruise'])
const isTransportType = TRANSPORT_TYPES_SET.has(r.type)
- const startDay = r.day_id ? days.find(d => d.id === r.day_id) : undefined
- const endDay = r.end_day_id ? days.find(d => d.id === r.end_day_id) : undefined
- const dayLabel = (day: typeof startDay): string => {
- if (!day) return ''
- const base = day.title || t('dayplan.dayN', { n: day.day_number })
- if (day.date) {
- const d = new Date(day.date + 'T00:00:00Z')
- const dateStr = d.toLocaleDateString(locale, { day: 'numeric', month: 'short', timeZone: 'UTC' })
- return `${base} · ${dateStr}`
- }
- return base
+ const isHotel = r.type === 'hotel'
+ const startDay = r.day_id ? days.find(d => d.id === r.day_id)
+ : (isHotel && r.accommodation_start_day_id) ? days.find(d => d.id === r.accommodation_start_day_id)
+ : undefined
+ const endDay = r.end_day_id ? days.find(d => d.id === r.end_day_id)
+ : (isHotel && r.accommodation_end_day_id) ? days.find(d => d.id === r.accommodation_end_day_id)
+ : undefined
+ const DayLabel = ({ day }: { day: typeof startDay }) => {
+ if (!day) return null
+ const name = day.title || t('dayplan.dayN', { n: day.day_number })
+ const badge = day.date
+ ? new Date(day.date + 'T00:00:00Z').toLocaleDateString(locale, { day: 'numeric', month: 'short', timeZone: 'UTC' })
+ : null
+ return (
+
+ {name}
+ {badge && (
+ {badge}
+ )}
+
+ )
}
return (
@@ -202,12 +215,15 @@ function ReservationCard({ r, tripId, onEdit, onDelete, files = [], onNavigateTo
{/* Body */}
- {/* Day label for transport reservations linked to a day */}
- {isTransportType && startDay && (
+ {/* Day label for transport/hotel reservations linked to days */}
+ {(isTransportType || isHotel) && startDay && (
{t('reservations.date')}
-
- {dayLabel(startDay)}{endDay && endDay.id !== startDay.id ? ` – ${dayLabel(endDay)}` : ''}
+
+
+ {endDay && endDay.id !== startDay.id && (
+ <>–>
+ )}
)}
diff --git a/client/src/types.ts b/client/src/types.ts
index 69a06189..5701597a 100644
--- a/client/src/types.ts
+++ b/client/src/types.ts
@@ -171,6 +171,8 @@ export interface Reservation {
place_id?: number | null
assignment_id?: number | null
accommodation_id?: number | null
+ accommodation_start_day_id?: number | null
+ accommodation_end_day_id?: number | null
day_plan_position?: number | null
metadata?: Record
| string | null
needs_review?: number
diff --git a/server/src/services/reservationService.ts b/server/src/services/reservationService.ts
index af5c0851..0be86264 100644
--- a/server/src/services/reservationService.ts
+++ b/server/src/services/reservationService.ts
@@ -57,7 +57,8 @@ const saveEndpoints = db.transaction((reservationId: number, endpoints: Endpoint
export function listReservations(tripId: string | number) {
const reservations = db.prepare(`
SELECT r.*, d.day_number, p.name as place_name, r.assignment_id,
- ap.place_id as accommodation_place_id, acc_p.name as accommodation_name
+ ap.place_id as accommodation_place_id, acc_p.name as accommodation_name,
+ ap.start_day_id as accommodation_start_day_id, ap.end_day_id as accommodation_end_day_id
FROM reservations r
LEFT JOIN days d ON r.day_id = d.id
LEFT JOIN places p ON r.place_id = p.id
@@ -93,7 +94,8 @@ export function listReservations(tripId: string | number) {
export function getReservationWithJoins(id: string | number) {
const row = db.prepare(`
SELECT r.*, d.day_number, p.name as place_name, r.assignment_id,
- ap.place_id as accommodation_place_id, acc_p.name as accommodation_name
+ ap.place_id as accommodation_place_id, acc_p.name as accommodation_name,
+ ap.start_day_id as accommodation_start_day_id, ap.end_day_id as accommodation_end_day_id
FROM reservations r
LEFT JOIN days d ON r.day_id = d.id
LEFT JOIN places p ON r.place_id = p.id