// booking-drawer.jsx — Right-side drawer with booking detail
function BookingDrawer({ booking, onClose, onAction, onEdit, onOrder, onMarkOrderServed }) {
const data = window.HotelData;
const room = findRoom(data.rooms, booking.roomId);
const guest = booking.guestId ? findGuest(data.guests, booking.guestId) : booking._newGuest || null;
const t = computeBookingTotal(booking, data.rooms, data.serviceCatalog, data.inStayMenu);
const status = data.statuses.find(s => s.key === booking.status);
const balance = Math.max(0, t.total - (booking.paid || 0));
const isMaint = booking.status === 'maintenance';
const isCancelled = booking.status === 'cancelled';
const isActive = booking.checkedIn && !isMaint && !isCancelled;
const orders = (booking.orders || []).slice().sort((a, b) => new Date(b.orderedAt) - new Date(a.orderedAt));
const pendingOrders = orders.filter(o => o.status === 'pending').length;
// Activity log (synthetic)
const activity = [
{ h: 'Tạo đặt phòng', m: booking.createdBy + ' · ' + formatDateShort(window.HotelData.addDays(booking.checkIn, -3)) },
];
if (booking.paid > 0) activity.push({ h: 'Ghi nhận thanh toán', m: `${VND(booking.paid)} · ${booking.paymentMethod === 'card' ? 'Thẻ' : booking.paymentMethod === 'cash' ? 'Tiền mặt' : booking.paymentMethod === 'transfer' ? 'Chuyển khoản' : 'Khác'}` });
if (booking.checkedIn) activity.push({ h: 'Khách đã nhận phòng', m: 'Lễ tân Hà · ' + formatDateShort(booking.checkIn) + ' ' + booking.checkInTime });
return (
<>
>
);
}
window.BookingDrawer = BookingDrawer;