feat: deposit deductions, booking payments persistence, minibar in release form

- Migrations 061 (booking_payments) + 062 (deposit_deduction_presets)
- Backend: booking payments CRUD (GET/POST/DELETE), auto-updates paid_amount on booking
- Backend: deposit deduction presets CRUD (GET/POST/PATCH/DELETE)
- Backend: GET /deposit/minibar endpoint returns minibar consumptions for booking
- Backend: release endpoint accepts items[] for itemized email to guest
- Frontend: payments loaded from API — persist across page reloads
- Frontend: deposit release form redesigned — preset buttons, minibar auto-fill, itemized list
- Frontend: onFocus select on all amount inputs (no more manual "0" removal)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-06 12:55:42 +03:00
parent 633625e7be
commit 1ab24dfe27
7 changed files with 478 additions and 87 deletions

View File

@@ -41,6 +41,7 @@ import ttlockRoutes from './routes/ttlock'
import checklistsRoutes from './routes/checklists'
import minibarRoutes from './routes/minibar'
import depositRoutes from './routes/deposit'
import paymentsRoutes from './routes/payments'
import { setupAgentWsRoute } from './agent-ws'
import { startJobs } from './jobs'
@@ -134,6 +135,7 @@ export async function buildApp() {
await fastify.register(checklistsRoutes)
await fastify.register(minibarRoutes)
await fastify.register(depositRoutes)
await fastify.register(paymentsRoutes)
await fastify.register(setupAgentWsRoute)
startJobs()