← All notes

Hotel Management

The night audit should be boring

If closing the day requires someone to be awake, click through a wizard, and hope nothing was mid-transaction, the close is not a process. It is a ritual.

  • Invexa Technologies
  • 2 min read

Every property management system has a night audit: roll the business date, post room and tax, produce the day’s reports. In older systems it is a modal process that locks the terminal, cannot be interrupted, and must be run by a person at 3am.

There is no technical reason for any of that.

The business date is data, not a global mode

The reason the old design locks everything is that it treats “which day is it” as system state, changed by the audit run. Every posting reads the current business date at write time, so nothing can be posted while the date is moving.

Put the date on the posting instead. Every folio posting, every inventory movement, every payment already carries its own business_date, assigned when it happens. Rolling the day becomes inserting a row in a business_days table, not mutating a global.

Now the audit does not need exclusive access, because nothing it does can be invalidated by concurrent writes.

Room and tax posting is idempotent or it is wrong

The audit posts one night of room charge per in-house reservation. If it half-completes and is rerun, it must not post twice.

Make the posting key deterministic — reservation id plus business date plus charge code — and unique. Rerunning does nothing for rows already written and completes the ones that were missed. The audit becomes safe to run repeatedly, which means it becomes safe to automate.

Then it does not need a human

A scheduled job at the property’s configured rollover time. It writes what it did to a run log, including anything it refused to post and why:

audit_runs
  business_date
  started_at, finished_at
  postings_written
  exceptions      -- reservations skipped and the reason
  status

The night manager reads a report in the morning instead of driving a wizard at 3am. If it failed, it failed loudly into that table, and rerunning is free.

What you keep

Nothing about this removes the controls. The day still closes, the reports still tie out, the trail is still complete — arguably more complete, because the run log is now a record rather than a memory of who clicked what. The only thing lost is the requirement that a person be awake for it.

Next step

Have a project in mind?

A 30-minute call is usually enough to know whether we are the right team for it. If we are not, we will say so.

Start a project

Replies within one working day