Skip to content

Reservation ​

The Reservation page is used to create, manage, assign, and track restaurant reservations for each branch.

Use Reservations when staff need to:

  • record a booking for a guest
  • choose the branch, date, time, duration, and guest count
  • capture customer contact information
  • assign tables immediately, assign tables automatically, or leave assignment for later
  • check table availability against branch rules
  • track reservation status from pending through completion or cancellation
  • manage deposit requirements when branch deposit settings are enabled
  • review status history, assigned tables, notes, and payment context

Reservations are an internal admin workflow. They follow the branch Reservation Settings, seating-plan tables, table blocks, and system notification rules already configured in Forkiva.

Where to Find It ​

In the admin panel, open:

Reservations > Reservations

From there, staff can:

  • view all reservations
  • search, filter, sort, and export the reservation list
  • create a reservation
  • open the reservation details page
  • edit an editable reservation
  • open the calendar view
  • change reservation status from the details page
  • assign or auto-assign tables from the details page

What the Reservation Module Includes ​

The Reservation documentation currently covers:

  1. Reservation List
  2. Reservation Calendar
  3. Create Reservation
  4. Edit Reservation
  5. Reservation Details
  6. Status Actions
  7. Table Assignment
  8. Deposit Details
  9. Status History

Reservation Lifecycle ​

Reservations use operational statuses that control editing, table assignment, and status transitions.

Available Statuses ​

StatusMeaning
PendingThe reservation has been created but is not yet confirmed.
ConfirmedThe reservation is accepted and expected to happen.
ArrivedThe guest has arrived at the branch.
SeatedThe guest has been seated at assigned table(s).
CompletedThe reservation visit is finished.
CancelledThe reservation was cancelled.
RejectedThe reservation was rejected and will not proceed.
No-ShowThe guest did not arrive.
ExpiredThe reservation is no longer valid, usually because it remained pending too long.

Status Flow ​

Current StatusAllowed Next Statuses
PendingConfirmed, Cancelled, Rejected, or Expired by the system
ConfirmedArrived, Seated, Cancelled, No-Show
ArrivedSeated, Cancelled, No-Show
SeatedCompleted
CompletedNo further status changes
CancelledNo further status changes
RejectedNo further status changes
No-ShowNo further status changes
ExpiredNo further status changes

Status Behavior ​

  • Pending, Confirmed, and Arrived reservations can be edited.
  • Pending, Confirmed, and Arrived reservations can have table assignments changed.
  • Terminal statuses cannot be edited or changed again.
  • Expired is system-owned. Staff cannot select it from the Change Status action; automation applies it when the configured expiry rule is met.
  • Status changes are recorded in the reservation status history.
  • When a reservation is confirmed or arrived, assigned tables can be marked as reserved.
  • When a reservation is seated, assigned tables can be marked as occupied.
  • When a reservation is completed, cancelled, rejected, marked no-show, or expired, assigned tables can be released back to available.

Reservation List ​

The Reservation list page displays reservations in a data table for daily operations.

Main Columns ​

ColumnPurpose
Reservation NumberThe unique reservation reference generated by the system. Staff can use it to identify or search a reservation quickly.
BranchShows which branch owns the reservation. This may be hidden for users assigned to a single branch.
Customer NameShows the guest name stored on the reservation.
Customer PhoneShows the formatted phone number used for guest communication.
Reservation DateShows the booking date.
Start TimeShows when the reservation begins.
GuestsShows the total number of expected guests.
StatusShows the current reservation status with status color.
Table Assignment StatusShows whether tables are unassigned, assigned, partially assigned, or not required.
Created AtShows when the reservation record was created.

Search, Filter, and Sort ​

The list supports operational browsing through:

  • search in the table interface
  • filter by Branch
  • filter by Status
  • filter by Reservation Type
  • filter by From date
  • filter by To date
  • sort by reservation number
  • sort by branch
  • sort by customer name
  • sort by customer phone
  • sort by reservation date
  • sort by start time
  • sort by guest count
  • sort by status
  • sort by table assignment status
  • sort by created date

List Actions ​

Depending on permissions and reservation status, the list can expose these actions:

ActionPurpose
ShowOpens the reservation details page.
EditOpens the edit page when the reservation status allows editing.
DeleteDeletes the reservation when permission allows it.
CalendarOpens the reservation calendar using the same reservation list permission.
ExportExports reservation rows through the system export flow when export permission is available.

Row Click Behavior ​

Clicking a reservation row opens the details page only when the user has permission to view reservation details.

Reservation Calendar ​

The calendar view gives staff a month-based schedule for reservations.

Calendar Purpose ​

Use the calendar to:

  • view reservations by date
  • move between months
  • return quickly to the current month
  • see reservation start time, title, guest count, and status color
  • open a reservation details page from a calendar event when permitted
  • open a day dialog when a date has more reservations than the cell can show

Calendar Loading ​

The calendar loads reservations only for the visible month. When staff move to the previous or next month, the page requests reservations for that month’s date range.

Calendar Event Fields ​

Event FieldPurpose
TitleShows the reservation number and customer name.
Start TimeShows the reservation start time in the active locale format.
Guest CountShows how many guests are expected.
Status ColorUses the reservation status color as a visual marker.

Create and Edit Form ​

The create and edit pages use the same main form structure.

The form is organized into these sections:

  1. Reservation Information
  2. Customer Information
  3. Deposit
  4. Table Assignment

The Deposit section appears only when deposit rules are enabled for the selected branch.

When creating a reservation, branch selection appears if the current user is not already assigned to a branch. When editing, the branch is not intended to be changed.

Field-by-Field Explanation ​

Reservation Information ​

Branch ​

FieldPurpose
BranchSelects which branch owns the reservation. It controls the reservation settings, available tables, working hours, currency, deposit rules, and availability checks used for the booking.

Branch Notes ​

  • Branch is required when the current user is not assigned to a branch.
  • If the user is branch-assigned, the branch is taken from the user context.
  • On update, branch is not intended to be changed.

Reservation Type ​

FieldPurpose
Reservation TypeClassifies the reservation for staff and reporting.

Available types:

TypePurpose
StandardNormal planned reservation.
Walk-InGuest arrived or requested service without advance booking.
Large PartyHigher guest count reservation that may require stricter handling or a deposit.
Private RoomReservation intended for a private room or dedicated seating area.
EventReservation tied to a special event or larger arrangement.
VIPReservation that requires special attention or priority handling.

Walk-in reservations are only allowed when the branch settings allow walk-ins.

Status ​

FieldPurpose
StatusSets the initial operational status when creating a reservation.

The status field appears on create. On edit, status changes are handled from the details page using the Change Status dialog so the system can validate the transition and store history.

Reservation Date ​

FieldPurpose
Reservation DateThe date the guest is expected to come to the branch.

This field is required and must match the branch reservation settings:

  • reservations must be enabled for the branch
  • the date must be inside the allowed advance booking window
  • the day must be enabled in branch working hours

Start Time ​

FieldPurpose
Start TimeThe time the reservation begins.

The form can accept the admin time picker value, including 12-hour display. The backend normalizes it before validation and stores the operational time consistently.

Duration ​

FieldPurpose
DurationThe reservation length in minutes.

Duration affects:

  • calculated end time
  • availability checks
  • table overlap checks
  • buffer rules from Reservation Settings

The value must be at least one minute and cannot exceed one full day.

Guests ​

FieldPurpose
GuestsTotal number of expected guests.

This value is required and affects:

  • guest limit validation
  • table capacity checks
  • suggested table combinations
  • large-party deposit rules

Adults ​

FieldPurpose
AdultsOptional number of adult guests.

Use this when staff want more detail than the total guest count.

Children ​

FieldPurpose
ChildrenOptional number of child guests.

Use this for service planning, seating setup, or child-friendly preparation.

Customer Information ​

Customer Name ​

FieldPurpose
Customer NameStores the guest name used throughout the reservation list, calendar, and details page.

This field is required and is used even when the reservation is not linked to a saved customer account.

Customer Email ​

FieldPurpose
Customer EmailStores the guest email address when available.

This field is optional and useful for follow-up, notification routing, and audit context.

Phone Country ​

FieldPurpose
Phone CountryStores the ISO country code used to validate and format the customer phone number.

The selected country works together with Customer Phone so phone validation can be accurate.

Customer Phone ​

FieldPurpose
Customer PhoneStores the guest phone number used for operational communication.

This field is required and validated using the selected phone country.

Occasion ​

FieldPurpose
OccasionStores optional visit context such as birthday, anniversary, business dinner, or family event.

This helps staff prepare the correct service experience.

Special Requests ​

FieldPurpose
Special RequestsStores guest-facing requests such as seating preference, accessibility needs, celebration details, or service notes.

These notes are visible in reservation details and help staff prepare before the guest arrives.

Internal Notes ​

FieldPurpose
Internal NotesStores staff-only notes for handoff, operations, risk notes, or manager context.

Use this for information that should help the team but is not intended as a guest request.

Deposit ​

The Deposit card appears when Deposit Enabled is active in Reservation Settings for the selected branch.

Deposit Required ​

FieldPurpose
Deposit RequiredIndicates whether this reservation requires a deposit.

If the reservation qualifies for the branch large-party deposit rule, this field is applied automatically and cannot be cleared manually.

Deposit Amount ​

FieldPurpose
Deposit AmountThe fixed deposit amount required for the reservation.

The amount uses the selected branch currency. When the large-party deposit rule applies, the amount comes from the branch Reservation Settings.

Deposit Paid Amount ​

FieldPurpose
Deposit Paid AmountA read-only summary of deposit value recorded in the deposit ledger.

The form uses this value to calculate whether the deposit is unpaid, partially paid, paid, or overpaid. It cannot be entered or edited directly on the reservation form.

Deposit Summary ​

The Deposit card also shows:

Summary ItemPurpose
Deposit AmountShows the required amount formatted with currency.
Deposit Paid AmountShows how much has been recorded as paid.
Remaining AmountShows the unpaid difference when the paid amount is lower than the required amount.
Overpaid AmountShows the extra amount when the paid amount is greater than the required amount.
Payment StatusShows the computed reservation payment status.
Currency ContextShows the deposit currency and currency rate used by the reservation.

Recording a Deposit ​

Deposit money is recorded through the Reservation Deposit Transactions workflow, not by editing the reservation’s paid amount. This creates an append-only financial ledger and keeps the reservation payment summary in sync.

TransactionEffect on held depositWhen to use it
CollectionIncreasesRecord money collected from the guest. A tender method is required.
ApplicationDecreasesApply held deposit to an eligible order. An order is required.
RefundDecreasesReturn held deposit to the guest. A tender method is required.
ForfeitureDecreasesRecord a deposit retained under the business policy.
ReversalCompensates the original transactionCorrect an eligible posted deposit transaction without changing its original record.

Every deposit action requires a positive amount, an economic date that is not in the future, a note, and an idempotency key supplied by the application. Reversals require an economic date, reason, and idempotency key. Use the deposit transaction list and its detail view to audit the reservation, linked order, tender method, balance changes, and any reversal.

Table Assignment ​

Table Assignment controls how tables are connected to the reservation.

Assignment Modes ​

ModePurpose
Assign LaterSaves the reservation without selected tables. Staff can assign tables later from the details page.
Assign NowRequires staff to select one or more tables before saving.
Auto AssignLets the system choose the first available table combination that can fit the guest count.

Tables ​

FieldPurpose
TablesSelects one or more seating-plan tables for manual assignment.

This field is available only when Assign Now is selected.

Capacity Summary ​

The form shows selected table capacity and compares it with the guest count.

SummaryPurpose
GuestsShows the required capacity target.
Selected TablesShows how many tables are selected.
Selected CapacityShows the combined capacity of selected tables.
Capacity WarningWarns staff when selected tables do not have enough capacity.

Check Availability ​

The Check Availability action validates the selected date, time, duration, guest count, assignment mode, and selected tables.

Availability checks include:

  • branch reservation enablement
  • advance booking window
  • working hours
  • duration limits
  • guest limits
  • table capacity
  • table blocks
  • overlapping reservations
  • configured blocking statuses
  • pending capacity behavior from Reservation Settings

Suggested Tables ​

When availability can be checked, the system can return suggested table combinations. Staff can apply a suggested combination when using manual assignment.

Reservation Details Page ​

The details page organizes the reservation into professional cards so staff can review all important information quickly.

Details Cards ​

CardPurpose
Reservation InformationShows reservation number, branch, status, reservation type, table assignment status, and assignment mode.
Schedule DetailsShows reservation date, start time, end time, start/end timestamps, duration, and lifecycle timestamps.
Customer InformationShows guest contact details, guest counts, and occasion.
Table AssignmentShows assigned tables, table capacity, table status, assignment user, assignment time, and assignment actions when allowed.
Payment DetailsShows payment status, deposit requirement, deposit amounts, remaining or overpaid amount, currency, and currency rate.
NotesShows special requests, internal notes, cancellation reason, rejection reason, and no-show reason when available.
Status HistoryShows all recorded status changes with old status, new status, reason, note, changed by, and changed time.
System InformationShows external reference, created by, created at, and updated at.

Status Actions on Details Page ​

The details page uses a Change Status action. Clicking it opens a dialog where staff choose the next valid status and optionally enter a reason or note.

Status Reason Fields ​

FieldPurpose
StatusThe next status selected from the statuses allowed for the current reservation.
ReasonExplains why the status is being changed. Required for cancellation when branch settings require a cancellation reason.
NoteOptional internal note stored with the status log.

Status Validation Rules ​

  • Terminal reservations cannot change status.
  • Expired is created by system automation and is not available as a manual target status.
  • Invalid status jumps are rejected.
  • Cancellation must be allowed by branch settings.
  • Cancellation can be blocked after the configured cancellation deadline.
  • Cancellation reason is required when branch settings require it.
  • Confirming, arriving, or seating can require an assigned table depending on Reservation Settings.

Table Assignment on Details Page ​

If the reservation status allows table assignment, staff can update tables from the details page.

Assigned Tables ​

Each assigned table shows:

FieldPurpose
Table NameThe seating-plan table connected to the reservation.
CapacityThe capacity of the assigned table.
Table StatusThe current seating-plan table status.
Assigned ByThe staff user who assigned the table.
Assigned AtThe time the table was assigned.

Assignment Actions ​

ActionPurpose
SaveSaves the manually selected table assignment.
Auto AssignAsks the system to choose an available table combination.

Table assignment is not available for terminal statuses.

Deposit and Payment Statuses ​

Reservation payment status is calculated from the deposit requirement and deposit amounts unless a special status is already stored.

Payment StatusMeaning
Not RequiredNo deposit is required for this reservation.
UnpaidA deposit is required, but no amount has been paid.
Partially PaidA deposit is required and some amount has been paid, but it is below the required amount.
PaidThe paid amount is equal to or greater than the required deposit amount.
RefundedThe reservation deposit was marked as refunded by system workflow.
FailedThe reservation deposit workflow failed or was marked failed.

Validation Rules ​

The reservation form enforces these key rules:

FieldMain Rules
BranchRequired based on user branch context.
CustomerOptional existing customer link.
Phone CountryRequired and must be a supported country code.
Reservation TypeMust be one of the supported reservation types.
StatusMust be one of the supported reservation statuses when supplied.
Table Assignment ModeMust be Assign Later, Assign Now, or Auto Assign.
Reservation DateRequired and must use YYYY-MM-DD.
Start TimeRequired and normalized to HH:mm before backend validation.
DurationOptional integer from 1 to 1440.
GuestsRequired integer and must be at least 1.
AdultsOptional integer and cannot be negative.
ChildrenOptional integer and cannot be negative.
Customer NameRequired text from 2 to 255 characters.
Customer PhoneRequired and must be valid for the selected phone country.
Customer EmailOptional valid email up to 255 characters.
OccasionOptional text up to 255 characters.
Special RequestsOptional text up to 2000 characters.
Internal NotesOptional text up to 2000 characters.
TablesOptional array, but required when assignment mode is Assign Now.
Deposit RequiredOptional boolean.
Deposit AmountOptional numeric value and cannot be negative.
Deposit Paid AmountRead-only ledger summary; it is not submitted by the reservation form.
External ReferenceOptional text up to 255 characters.

Table Assignment Validation ​

  • Assign Now requires at least one table.
  • Assign Later must not submit table IDs.
  • Auto Assign must not submit table IDs.
  • Selected tables must exist and belong to the operational table flow.
  • Availability must pass before the reservation can be saved.

How Reservation Settings Affect Reservations ​

Reservation creation and updates are controlled by branch Reservation Settings.

Settings can affect:

  • whether reservations are enabled
  • whether walk-in reservations are allowed
  • default duration
  • minimum and maximum duration
  • minimum and maximum guest count
  • advance booking limits
  • working hours
  • buffer minutes
  • whether pending reservations block capacity
  • table requirement on create, confirm, arrival, or seating
  • auto-confirm behavior
  • cancellation allowance, deadline, and required reason
  • deposit enablement, amount, and large-party rules
  • reminder and no-show automation

For detailed branch policy configuration, see Reservation Settings.

For a normal staff workflow:

  1. Open Reservations > Reservations.
  2. Create a reservation or open an existing one.
  3. Select the branch, date, start time, duration, and guest count.
  4. Enter customer name and phone country/phone.
  5. Add email, occasion, special requests, or internal notes when useful.
  6. Choose the table assignment mode.
  7. Run availability checks when assigning tables.
  8. Save the reservation.
  9. Use the details page to change status as the guest moves through the visit.
  10. Review status history and assigned tables when auditing the reservation.

Practical Examples ​

Example 1: Standard Reservation ​

  • Type: Standard
  • Status: Pending or Confirmed
  • Assignment Mode: Assign Later
  • Deposit Required: No

This works when staff want to capture the booking first and assign seating closer to arrival.

Example 2: Confirmed Table Booking ​

  • Type: Standard
  • Status: Confirmed
  • Assignment Mode: Assign Now
  • Tables: selected manually

This works when staff already know where the guest should sit and want the table reserved immediately.

Example 3: Large Party With Deposit ​

  • Type: Large Party
  • Guest count reaches the branch large-party threshold
  • Deposit enabled in Reservation Settings
  • Deposit amount applied from the branch policy

This works for larger groups where the restaurant requires extra commitment before holding capacity.

Example 4: Walk-In ​

  • Type: Walk-In
  • Status: Arrived or Seated
  • Assignment Mode: Assign Now

This works for guests who arrive without advance booking, as long as walk-ins are allowed by branch settings.

Tenvoro