StabisoDocs

Purchasing and stock

Hospitality: a hotel's rooms, rates and guests

The hospitality pack runs a hotel's front desk in the books: the room types and their nightly prices, seasons, what a stay costs, reservations, check-in and check-out, and the stay's invoice, drafted the moment the guests check out (ADR-0104). It is built on capacity: a room type's rooms are capacity sold by the night, so a night is never let twice. Find it under Sales → Hotel.

Room types

  • A room type (POST /v1/room-types, or Hotel → Add room type) is a product let by the night: its name on invoices (Double room), how many rooms of it there are, how many guests one room sleeps (default 2) and the price of a night outside any season (the product's list price, from today or a day named). The code is optional: the system gives the next product number.
  • Its VAT rate type is the one the company's VAT area has for accommodation on the day: the special rate in Switzerland (3.8 %), the reduced rate in Germany (7 %), Austria, France and Italy (10 %); standard where the area has none. Name another (rate_type) where it differs, or change it on the product.
  • Its rooms change (PATCH /v1/room-types/{product_id}, Change), never to fewer than are booked on a night from today on (capacity_booked); so does what a room sleeps. Its name and list price are the product's (products).

What a night costs

Each night is priced in the customer's currency, by the first of:

  1. the customer's own price for the room type from its price list;
  2. the season that covers the night (Hotel → Seasons, POST /v1/room-types/{product_id}/rates): a name, a first and a last night and a nightly price in one currency. The seasons of a room type in one currency never overlap (room_rate_overlaps); a season is never changed, it is removed (DELETE /v1/room-rates/{rate_id}, audited with its prices) and added again;
  3. the product's list price in force that night.

GET /v1/room-types/{product_id}/quote gives each night's price and the rooms free, the total and whether every night has the rooms free; the reservation dialog shows it before you save. A night without any price refuses the reservation (room_no_price).

Stays

  • A reservation (POST /v1/hotel-stays, Hotel → Reserve) names the room type, the customer who pays, the arrival and the departure (the day the guests leave), and optionally the rooms (default 1), the guests (default one a room, at most what the rooms sleep), the guest's name and the customer's reference (its order number, printed on the invoice). It gets a gap-free number per company and year of arrival (ST-2026-000001).
  • It books the rooms for every night from arrival to the night before departure; it is refused when a night has too few free (capacity_full, with the night). The booking is held by the stay: the capacity screen shows it with the stay's number, and only the stay cancels it (booking_held).
  • Each night's price is agreed when the stay is reserved and kept: a season or price changed later does not change it.
  • Check-in (POST /v1/hotel-stays/{stay_id}/check-in) is from the arrival day on (stay_not_arrived before), with the room numbers given.
  • Check-out (POST /v1/hotel-stays/{stay_id}/check-out) records the day the guests left: the reserved departure, or today when they leave early, which frees the nights they did not stay. A later day (they stayed on) books the extra nights if they are free and prices them as on the day. The day is after the arrival and never after today (stay_departure).
  • A reserved stay is cancelled (POST /v1/hotel-stays/{stay_id}/cancel, a no-show too), which frees its rooms. A stay is never deleted, and moves only forward: reserved, in house, checked out.

The invoice

Check-out drafts the stay's sales invoice in the same step, so no stay is out and forgotten:

  • one line per run of nights at one price, of the room type's product: its name with the days and the guest (Double room 15.11.2026 - 17.11.2026, Anna Muster), the rooms times the nights, the agreed price, at the product's VAT rate type (and the accommodation category where the rate type has several rates);
  • what else the guests had, by product code (Extras: breakfast, the minibar, parking), at the customer's or list price unless a price is given;
  • in the customer's currency, with the customer's reference; dated today.

It is an ordinary draft invoice: checked, posted (the approval policy applies) and sent like any other. A stay has one live invoice (stay_invoiced). When its invoice is rejected, Autopilot's Customers are invoiced drafts it again (Invoice again on the screen, or POST /v1/hotel-stays/{stay_id}/invoice, does it by hand).

The front desk

Sales → Hotel shows who is arriving (reserved from their arrival day: Check in), who is in house (Check out, with the day they left and the extras), the reservations ahead (Cancel stay), the stays of the last 30 days with their invoices, and the room types with their rooms, what a room sleeps, the price of a night, the seasons and the rooms free tonight.

Assistants

An assistant (over MCP) lists room types (list_room_types), adds and changes them (create_room_type, update_room_type), adds and removes seasons (add_room_rate, remove_room_rate), prices a stay (quote_stay), reserves (reserve_stay), lists stays (list_stays), checks guests in and out (check_in_stay, check_out_stay), cancels (cancel_stay) and drafts a rejected invoice again (invoice_stay), under the same rules. It asks the person what the guests had before checking out; the draft invoice is the person's to issue.

Demo

Demo AG's training centre in Zürich lets four single rooms (SGL, CHF 160, CHF 175 in the winter season) and two double rooms (DBL, CHF 210) to the people on its courses. A guest of Zürich Kunde AG has checked out with two breakfasts (the draft invoice waits to be issued), two guests are in house, the rollout team has two rooms reserved in two weeks and one reservation was cancelled.

Stabiso, the Enterprise System of Record · generated from the code and its guides · release 6f03a5e846b3