Customer Reservation Portal
The /booking page is where customers book a schedule, pay the deposit, see their reservations, and move their schedule without an admin. Share the link with your customers.
How Customers Open the Page
- From the app: menu Sales & POS → Customer Reservation Portal. The page opens in a new tab and its address can be copied to share.
- On the subscription service (SaaS) the address must carry the tenant code: /booking?tenantId=TENANT-CODE. Without it the page does not know which business is meant. On a self-hosted server the app address followed by /booking is enough; if the app address uses #, the form is .../#/booking.
- The page is public: no role and no ERP login are needed. A role only decides whether the menu entry is visible in the drawer; granting it to the visitor or administrator role is in docs/sql-menu-booking-portal.sql.
- The page opens without the ERP menu. Customers can only book and see their own reservations.
- Customers must log in. The account is the same as the Online Shop account: ID, email, or mobile number with a password. A new customer chooses Register new account and fills in name, email, mobile number, and a password of at least 4 characters.
- The page title follows the Unit Name: "Reservasi Lapangan" when every type uses the same name, or "Reservasi" when the names are mixed.
How To Book
- On the Available schedule tab choose the Reservation type, Date, and Duration, then choose Search slots. The duration choices are 1 to 4 times the slot length of that type. For a type rented per night, month, or year, the fields become Check-in date (or Start date) and Number of nights (months, years).
- The list shows the time or period, the price, and the units left ("3 courts left") with an Available label, or Full and Taken when no unit is free. The customer does not choose the unit: the system places the reservation on the first free unit, and the price shown is that unit price. A schedule that is full, blocked, running at the cashier, or already in the past shows Full.
- Press the cart icon (Order this slot) on the wanted schedule. The chosen one gets a thick border and the page scrolls to the Confirm reservation card, which shows the type, the schedule, and the total.
- If the type has a deposit: choose an online payment method and fill in a note if needed, then choose Create reservation. If the Minimum Deposit is 0%: the button is Save Reservation and the reservation is Confirmed immediately without paying.
- The Deposit payment card scrolls into view and shows the reservation number, the minimum amount, the deadline, and a large pay button labelled with the amount and payment type. Press it; the gateway page appears in place and you finish paying there. If no gateway is active for this business, a warning appears instead of the button. After payment the page returns to the top and the reservation shows Confirmed in My Reservations.
The minimum deposit is shown under the type selector (a percentage of the total), together with the check-in and check-out hours for rental per night. If it is not paid within 15 minutes the reservation expires and the schedule is released for other customers. The name of the assigned unit shows in My Reservations.
My Reservations
| Shown | Meaning |
|---|---|
| Awaiting payment | The deposit has not arrived. The Pay deposit button reopens the payment while the deadline has not passed. |
| Confirmed | The schedule belongs to the customer on the unit shown. The Reschedule button appears while the schedule has not started. |
| In use | The customer has checked in on site. |
| Completed | The customer has checked out. |
| No-show | The schedule started and an admin recorded that the customer did not arrive. The schedule is released; the deposit follows the admin decision (kept as a balance or returned). |
| Expired | The deposit did not arrive in time and the schedule was released. |
| Late payment | Payment arrived after the reservation expired. The money is returned manually by an admin. |
| Cancelled | Cancelled by an admin. |
| Manual refund: amount | The amount an admin will return. The return is not automatic. |
Rescheduling
- On a Confirmed reservation, choose Reschedule. Pick the target schedule the same way as when booking; the length follows the old reservation if not changed.
- Choose Review reschedule. The app recalculates the price for the new schedule and shows the new total.
- If the new deposit is larger than what was paid, the customer must pay the difference first through the gateway. The new schedule is applied after the payment is confirmed.
- If the new deposit is smaller, the schedule is moved immediately and the difference goes to a manual refund. If the customer later moves again to a more expensive schedule before that refund is returned, the refund is cancelled and the money is used as deposit again.
- Choose Move schedule. The customer receives an email notice.
Rescheduling is only possible before the old schedule starts, with no limit on the number of moves. The old unit is tried first; if it is not free, another unit of the same type is used. For a per-slot type the target must be inside opening hours. Customers cannot cancel a reservation.
If a Customer Runs Into Trouble
| Symptom | Cause |
|---|---|
| A message that the customer session is not valid | The login session ended. Log in again. |
| Login is rejected repeatedly | Too many failed attempts; wait a few minutes and try again. |
| This schedule was just booked by another customer | Two people chose the same schedule at the same time and the last unit is taken. Pick another schedule. |
| The Create reservation button is disabled | No payment method is chosen, or the admin has not activated a sales advance payment type. |
| This payment method is not available for self-service transactions | The chosen payment type needs a cashier. Pick another method. |
| The type being looked for is not in the choices | The type is not open for reservations, or has no unit that can be booked. Contact the admin. |
Menu Location
- Sales & POS / Customer Reservation Portal
/booking