Non-Filament Company Admin: Hotel Reception Readiness Audit

๐Ÿ“„ General
โ† Back to Documentation
# Non-Filament Company Admin: Hotel Reception Readiness Audit **Scope:** the authenticated `company-admin` web panel in `routes/web.php`, its Blade views under `resources/views/company-admin`, and the controllers/models used by that panel. Filament resources, public booking pages, and API-only capabilities are excluded unless they are exposed in this panel. **Assessment date:** 2026-08-26 ## Executive conclusion The non-Filament company-admin panel is a substantial property-management system with enough implemented surface area for a small hotel's core booking-to-checkout flow. It is **not ready to be the sole operational system for a staffed hotel reception** yet. Core daily desk workflows exist, but important controls are missing and several discovered routes/workflows are incomplete or unsafe. Suggested readiness level: | Area | Readiness | |---|---| | Reservations, availability and rates | Strong, subject to availability fixes | | Arrival, stay and departure operations | Partial | | Guest registration and compliance | Partial | | Folios, payments and fiscal documents | Partial-to-strong | | Housekeeping and room status | Strong | | Night audit and front-desk control | Partial | | Front-office operating controls | Weak | | Security, tenant isolation and testing | Blocked / high risk | ## Current functional inventory ### Front-office core | Capability | Evidence in the non-Filament panel | Assessment | |---|---|---| | Reservations | Booking list, dashboard, calendar, create/edit/show, cancellation, email/SMS/payment links, QR code | Implemented | | Availability | Calendar plus `stays.available-venue-objects`; room availability and room-assignment code | Present, but needs regression testing | | Rates | Rate-plan CRUD, calendar and price calculation | Implemented | | Guest profiles | Client and guest directories, guest documents, nationality and ID-number fields | Implemented | | Pre-arrival | Pre-check-in list, guest details and send-link flow | Implemented | | Check-in | Booking check-in, QR-assisted check-in, stay creation, room assignments | Implemented, controls incomplete | | In-house stay | Stay list/detail/edit, add/remove guests, add services, extend/shorten, room change | Implemented | | Check-out | Folio review/approval/finalization, booking or stay checkout, post-checkout cleaning task | Implemented | | Room readiness | Room status, housekeeping tasks, inspections, maintenance, room blocks | Implemented | | Guest communication | Templates, guest messaging, internal messaging and notification preferences | Implemented | ### Financial, compliance and management | Capability | Evidence | Assessment | |---|---|---| | Payments | Payment CRUD, payment stages including deposit/check-in/check-out/refund, in-person Tremol payment | Implemented | | Folios | `Folio`, `FolioCharge`, `FolioPayment`, stay-modification and checkout-folio review flows | Implemented | | Invoices and receipts | Invoice CRUD/PDF/email, fiscal receipt download/reprint, settlement reports | Implemented | | Tax/fiscal | Fiscal device/receipt models and ESTI export | Present; needs country-specific acceptance testing | | Night audit | Audit list/create/complete/approve routes and views | Present, but not a full close-of-day control set | | Room blocks | Create/edit/delete room blocks and affected-booking counting | Implemented | | Housekeeping | Tasks, schedules, checklists, QR, staff tracking, inspections, maintenance, lost & found | Strong | | Reporting | Occupancy, revenue, forecasting, custom reports, statistics exports | Implemented | | Staff/RBAC | Users, roles, permission UI, attendance and employee schedules | Present; enforcement needs repair | ### Non-reception/back-office modules also in the panel Venues, rooms/venue objects, facilities, services, packages, products/inventory, documents, finance dashboards, subscriptions, B2B invoices, cancellation policy, company/workspace switching, profile and settings are all exposed by the panel. ## Reception-requirement gap matrix | Hotel reception requirement | Status | What is missing or insufficient | |---|---|---| | Reservation lifecycle and availability | Partial | No visible waitlist/oversell workflow, no walk-in-specific fast flow, and availability must be regression-tested against stays, blocks, housekeeping and concurrent users. | | Individual/group reservations | Partial | Room blocks are available, but there is no clear group master, rooming list, allotment, group billing or group check-in workflow. | | Guest registration | Partial | Guest identity fields and document uploads exist, but there is no finished registration-card/signature workflow, verified document/OCR pipeline, or clear mandatory-field compliance gate. | | Arrival desk | Partial | Check-in and room assignment exist; no operational arrivals queue, no clear early/late check-in policy control, and no key-card issue/reissue log. | | Key management | Missing | No key/key-card inventory, issuance, encoding, expiry, duplicate/revocation or lost-key charge workflow was found. | | In-house guest service | Partial | Messaging, service charges and room changes exist. No wake-up-call scheduler, concierge/task log, parcel handling, guest request/SLA queue, or clear internal service recovery workflow. | | Folio and billing | Partial | Folio charges/payments/refunds exist. No visible split-folio, routing rules (company vs guest), direct-bill account, transfer between folios, authorization/guarantee tracking, or controlled adjustment/void workflow. | | Payment desk control | Partial | Payment and fiscal flows exist. No cash drawer/float, paid-in/paid-out, cashier shift, variance, handover or end-of-shift reconciliation workflow was found. | | Departure | Partial | Folio review, checkout and cleaning trigger exist. Missing express checkout, departure queue, guaranteed late-checkout charging, key return control and settled/unsettled departure exceptions. | | Night audit | Partial | Audit records can be created, completed and approved. A production audit needs locked business-date control, mandatory audit checklist, cashier close, posting rollover, exception queue, rerun/reversal policy and immutable audit package. | | Housekeeping and maintenance | Strong | Tasking, room status, inspections, maintenance, lost/found and blocks are present. Verify status transitions are the single source of truth for front desk availability. | | Channel/OTA operations | Missing in panel | No channel manager, OTA reservation mapping, allotment sync, rate/availability sync, delivery queue, failure/retry view, or manual import/reconciliation was found. | | No-show and cancellation | Partial | Policies and a `Booking::markAsNoShow()` model method exist, but no company-admin route/action was found to mark a no-show, collect its fee, release inventory, or report exceptions. | | Privacy and security | Blocked | Cross-tenant access checks in `CompanyAdminController` were intentionally commented out while `withoutGlobalScopes()` is used. This makes an ID-guessing user able to access other tenants' records. | | Auditability and tests | Weak | Activity/audit models exist, but there are no feature tests for the core company-admin reception paths. Existing test coverage is mostly notifications. | ## Material implementation findings 1. **Tenant isolation must be repaired before operational use.** `CompanyAdminController` loads objects such as stays with `withoutGlobalScopes()` and comments out the company ownership denial. For example, see `showStay` around lines 3545-3555. The same pattern appears in booking, invoice, client, venue, facility and product operations. This is a cross-tenant data disclosure and mutation risk. 2. **The available-room endpoint is unreachable.** In `routes/web.php`, `GET /stays/{stayId}` is declared before `GET /stays/available-venue-objects` (lines 731 and 737). The latter is swallowed by the wildcard route and returns a stay-not-found response. 3. **Adding a guest to a stay has a model-binding mismatch.** The route uses `{stayId}` while `addGuestToStay(Request $request, Stay $stay)` expects the route value named `stay` (routes line 738; controller line 3669). The route parameter must be renamed or resolved explicitly. 4. **The B2B invoice UI is not routable end to end.** The controller and views implement create, store, edit, update, send, mark-paid and cancel. The route group only declares index and show (`routes/web.php` lines 950-953), so the visible action links refer to named routes that do not exist. 5. **Camera/QR scanning is not fully implemented.** The attendance screen explicitly says the camera scanner will be implemented, and the booking edit screen presents a โ€œComing Soonโ€ QR scanner. ID document capture is UI-side and should not be treated as a verified OCR/compliance flow. 6. **Room availability has high-risk edge cases.** `VenueObject::isBooked()` uses `actual_check_in`/`actual_check_out`; an active stay with a null checkout can fall outside its overlap predicate. This can incorrectly offer an occupied room. Back-to-back stays and blocks must also be tested as one consistent availability engine. 7. **The project cannot currently run Laravel verification locally.** PHP syntax linting passes, but Artisan aborts because installed PHP is 8.2.12 and Composer requires PHP 8.3 or later. No end-to-end route/feature suite could be executed in this workspace. ## Minimum go-live plan for a hotel front desk ### Gate 1 โ€” safety and correctness 1. Restore tenant authorization and enforce policies in all company-admin actions. 2. Fix route ordering/model binding and the B2B routes. 3. Make a single transactional availability service cover booking, stay, room blocks, maintenance and housekeeping states; add concurrency tests. 4. Run feature tests on PHP 8.3+ for booking, check-in, room change, checkout, payment/refund, room block, night audit and tenant separation. ### Gate 2 โ€” essential receptionist controls 1. Add a dedicated front-desk workboard: arrivals, departures, in-house guests, room-ready/dirty/out-of-order, balances due and exceptions. 2. Add walk-in, no-show and late/early arrival/departure workflows. 3. Add key-card issue/reissue/return/lost controls. 4. Add cashier shifts, opening float, cash movements, paid-outs and handover reconciliation. 5. Add an immutable nightly business-date close with explicit exceptions. ### Gate 3 โ€” commercial and service maturity 1. Group reservations, rooming lists, routing/split folios and direct billing. 2. Wake-up calls, guest requests/concierge log and parcel handling. 3. Channel-manager/OTA sync with monitoring and manual recovery. 4. Registration-card signatures, verified document ingestion and retention/access policies suitable for the jurisdictions served. ## Final verdict For a small property using manual key control and only direct reservations, the panel can become usable after Gate 1 and the Gate 2 desk controls are completed. For a multi-shift, multi-property, OTA-connected hotel, it is not ready yet: security isolation, reliable availability, cashier close, keys, operational night-audit controls and channel management are go-live requirements rather than nice-to-haves.