diff --git a/src/components/calendar/BookingCalendar.tsx b/src/components/calendar/BookingCalendar.tsx
index ab0763d..8d542b8 100644
--- a/src/components/calendar/BookingCalendar.tsx
+++ b/src/components/calendar/BookingCalendar.tsx
@@ -98,15 +98,24 @@ export function BookingCalendar({ rooms, bookings, onBookingCreate, onBookingUpd
const getBlockStyle = (booking: Booking) => {
const start = parseISO(booking.checkIn)
- const end = parseISO(booking.checkOut)
+ const end = parseISO(booking.checkOut)
+ const rawColStart = differenceInDays(start, startDate)
+ const rawColEnd = differenceInDays(end, startDate)
+ if (rawColStart >= visibleDays || rawColEnd <= 0) return null
- const colStart = Math.max(0, differenceInDays(start, startDate))
- const colEnd = Math.min(visibleDays, differenceInDays(end, startDate))
- if (colStart >= visibleDays || colEnd <= 0) return null
+ const INSET = Math.round(CELL_WIDTH / 3)
+ const isClippedLeft = rawColStart < 0
+ const isClippedRight = rawColEnd > visibleDays
+
+ const colStart = Math.max(0, rawColStart)
+ const colEnd = Math.min(visibleDays, rawColEnd)
+
+ const leftPx = colStart * CELL_WIDTH + (isClippedLeft ? 0 : INSET)
+ const rightPx = colEnd * CELL_WIDTH + (isClippedRight ? 0 : INSET)
return {
- left: colStart * CELL_WIDTH,
- width: (colEnd - colStart) * CELL_WIDTH - 4,
+ left: leftPx + 2,
+ width: Math.max(8, rightPx - leftPx - 4),
}
}
@@ -245,9 +254,13 @@ export function BookingCalendar({ rooms, bookings, onBookingCreate, onBookingUpd
+
+
+ {([
+ { id: 'cash' as const, label: 'Наличные', icon: Banknote },
+ { id: 'card' as const, label: 'Карта', icon: CreditCard },
+ { id: 'transfer' as const, label: 'Перевод', icon: Building2 },
+ ]).map(m => (
+
+ ))}
+
+
setPaidAmount(e.target.value)}
+ min="0"
+ max={totalAmount}
+ />
+ {paidAmount && parseFloat(paidAmount) > 0 && parseFloat(paidAmount) < totalAmount && (
+
+ Остаток: {(totalAmount - parseFloat(paidAmount)).toLocaleString('ru-RU')} ₽
+
+ )}
+