Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 148 additions & 0 deletions website_appointment_booking/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
===========================
Website Appointment Booking
===========================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a6976acc808171b36c3dec72efe7ca27cb200a425579c9a390c2e78bb5898810
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcalendar-lightgray.png?logo=github
:target: https://github.com/OCA/calendar/tree/18.0/website_appointment_booking
:alt: OCA/calendar
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/calendar-18-0/calendar-18-0-website_appointment_booking
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/calendar&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module adds public appointment booking pages to the website,
powered by the OCA ``resource_booking`` module.

Booking types can be published on the website with a customizable URL
slug. Visitors can browse available time slots on a monthly calendar and
book an appointment without logging in.

Key features:

- Public booking page at ``/book/<slug>`` for each published booking
type
- Monthly calendar showing available time slots based on resource
availability
- Server-rendered slot data -- no extra AJAX calls needed
- Automatic partner creation or reuse based on visitor email
- Calendar invitation sent to both parties upon confirmation
- Race condition handling when two visitors try to book the same slot

**Table of contents**

.. contents::
:local:

Installation
============

This module requires the ``resource_booking`` and ``website`` modules to
be installed. The ``resource_booking`` module is available from the OCA
Calendar repository.

Configuration
=============

Before publishing a booking type, ensure you have configured the
``resource_booking`` module:

1. Create at least one **Resource** and **Resource Calendar** under
**Resource Bookings > Configuration**.
2. Create one or more **Resource Combinations** under **Resource
Bookings > Combinations**, linking resources to calendars.
3. Create a **Booking Type** under **Resource Bookings > Types** and
assign the combinations to it.

To publish a booking type on the website:

4. Open the booking type you want to publish.
5. In the **Website** section, check **Published on Website**.
6. Optionally customize the **Website Slug** (auto-generated from the
name).
7. Optionally add a **Website Description** that will appear on the
booking page.
8. The booking page is now accessible at ``/book/<slug>``.

Usage
=====

Once a booking type is published:

1. Share the URL ``/book/<slug>`` with your clients or embed it on your
website.
2. Visitors see a monthly calendar with available days highlighted.
3. Clicking a day reveals the available time slots for that day.
4. Clicking a time slot shows a simple form asking for name and email.
5. Upon confirmation, a ``resource.booking`` record is created and
confirmed automatically, and calendar invitations are sent to both
parties.
6. If a slot is no longer available (race condition), the visitor is
redirected back to the calendar with an informative error message.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/calendar/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/calendar/issues/new?body=module:%20website_appointment_booking%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Ledo Enterprises LLC

Contributors
------------

- `Ledo Enterprises LLC <https://ledoweb.com>`__:

- Don Kendall

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-dnplkndll| image:: https://github.com/dnplkndll.png?size=40px
:target: https://github.com/dnplkndll
:alt: dnplkndll

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-dnplkndll|

This module is part of the `OCA/calendar <https://github.com/OCA/calendar/tree/18.0/website_appointment_booking>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
5 changes: 5 additions & 0 deletions website_appointment_booking/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright 2025 Ledo Enterprises LLC - Don Kendall
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import controllers
from . import models
33 changes: 33 additions & 0 deletions website_appointment_booking/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Copyright 2025 Ledo Enterprises LLC - Don Kendall
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Website Appointment Booking",
"summary": "Public appointment booking pages for resource booking types",
"version": "18.0.1.0.0",
"development_status": "Beta",
"category": "Appointments",
"website": "https://github.com/OCA/calendar",
"author": "Ledo Enterprises LLC, Odoo Community Association (OCA)",
"maintainers": ["dnplkndll"],
"license": "AGPL-3",
"installable": True,
"depends": [
"resource_booking",
"website",
"crm",
"mail",
],
"data": [
"security/ir.model.access.csv",
"data/mail_templates.xml",
"templates/booking.xml",
"views/resource_booking_type_views.xml",
],
"assets": {
"web.assets_frontend": [
"website_appointment_booking/static/src/scss/booking.scss",
"website_appointment_booking/static/src/js/booking_page.esm.js",
],
},
}
4 changes: 4 additions & 0 deletions website_appointment_booking/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright 2025 Ledo Enterprises LLC - Don Kendall
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import main
Loading
Loading