Rental rates
Purpose
The Prix de location module sets the daily price of a room type, by period. That is how rate seasons are built: high season, low season, holiday periods.
Its particular feature is that it watches over rate coverage: it detects gaps — dates with no price defined at all — and refuses overlaps between periods.
A rate is not defined room by room but for an article matching a room type. The most direct route is the 🏷️ Tarifs button on a row in Room types, which opens this screen already positioned.
The module is visible to accounts holding the Hotel management right.
Access
- Menu: Hotel management → Rental rates
- Address:
/rent-price - Screen title: Prix de location
The Retour au tableau de bord link takes you back to Main Hotel.
Choosing what you are pricing
Two selectors govern the whole screen:
| Selector | Role |
|---|---|
| Article | The room type whose price you are setting. |
| Année | The year under examination. |
Everything that follows — coverage bar, alerts and table — applies to that pair.
Rate coverage
Below the selectors, a bar represents the whole year. Each segment corresponds to a period, with a colour code:
| Colour | Meaning |
|---|---|
| Période clôturée | A period with both a start date and an end date. |
| Tarif en cours (sans fin) | An open period, with no end date: it applies indefinitely. |
| Trou — aucun tarif défini | An interval with no price: those dates are not priced. |
Hover over a segment to read its bounds.
A booking covering an uncovered date has no applicable rate. That is the main risk on this screen, and the reason for the bar.
Below the bar, each gap detected is flagged explicitly — « Trou détecté du 01/07/2025 au 14/07/2025 » — with a Combler button that opens the creation window pre-filled with the gap's dates. Use it: it is the safest way not to leave an orphaned date.
The table of periods
| Column | Content |
|---|---|
| ID | The period identifier. |
| Début | The start date. |
| Fin | The end date, or — sans fin —. |
| Durée | The number of days, or En cours for an open period. |
| Prix / jour | The daily price, or non défini on a gap row. |
| État | Actif, Clôturée or Trou. |
| Actions | ✏️ Modifier and 🗑️ Supprimer — or Combler ce trou. |
Gaps appear as rows in the table, with a distinctive badge: coverage can therefore be read just as well from the bar as from the list.
The message « Aucune période tarifaire définie pour cet article en … » signals a year that is entirely empty.
Creating a period
Click the ➕ button, or Combler from a gap: the Nouvelle période tarifaire window opens.
| Field | Required | Description |
|---|---|---|
| Date de début | ✔ | The first day the rate applies. |
| Date de fin | — | The last day. Left empty, the period is sans fin. |
| Tarif en cours — sans date de fin | — | Box that makes the period open. |
| Prix journalier | ✔ | The price per day, positive or zero. |
Confirm with the save button, or give up with Annuler.
The two blocking checks
The application refuses to save in two cases:
Inconsistent dates — « La date de fin doit être postérieure ou égale à la date de début. »
Overlap — a box names the conflicting period, with its bounds, and states: « Les périodes ne peuvent pas se chevaucher. »
As soon as you enter the dates, the application compares the period with all the others and reports the conflict immediately. The save button stays greyed out as long as it remains.
To insert a rate into a range that is already covered, edit the existing period first so as to make room for it.
An open period covers every date from its start. It is the simplest way to avoid gaps at the end of the year: define your priced seasons, then leave an open period as the default rate.
Bear in mind: that period will block the creation of any later period, on the grounds of overlap. You will have to give it an end date before adding the next season.
Editing a period
Click the ✏️ icon on the row. The same date and overlap checks apply — the period being edited being excluded from the comparison.
Deleting a period
Click the 🗑️ icon, then confirm: « Supprimer le tarif de … à partir du … ? »
The dates it covered are no longer priced. After a deletion, read the bar again: a new gap has probably appeared.
Messages and troubleshooting
| Situation | Message | What to do |
|---|---|---|
| No period displayed | Aucune période tarifaire définie pour cet article en … | Create a first period, or change year. |
| Inconsistent dates | La date de fin doit être postérieure ou égale à la date de début. | Correct the dates. |
| Overlap detected | Chevauchement avec la période #… — Les périodes ne peuvent pas se chevaucher. | Adjust the bounds, or edit the conflicting period first. |
| The save button stays greyed out | — | Invalid dates, missing or negative price, or unresolved overlap. |
| A gap appears in the bar | Trou détecté du … au … | Click Combler to create the missing period. |
| No article offered | — | Create a room type in Room types. |
| A booking has no price | — | Check the rate coverage on the date concerned. |
| The session has expired | Automatic return to the sign-in screen | Sign in again; the entry in progress is lost. |
Known limitations in this version
- No success message confirms creation, editing or deletion.
- Coverage is examined year by year: there is no multi-year view.
- No differentiated rate by day of the week, by length of stay or by number of occupants: a single daily price per period.
- No copying of rates from one year to the next: every season is re-entered.
- No history of price changes.
- Rates are defined per room type, never per room or per hotel: two establishments sharing a type share its rate.
See also
- Room types — the categories priced, and the 🏷️ Tarifs shortcut.
- Booking options — the services charged on top.
- Rooms — the rooms attached to a type.
- Main Hotel — the bookings and the revenue.