Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
f60c0a5
[ADD] resource_booking: new app to manage bookings
Apr 27, 2021
b279df8
Translated using Weblate (Spanish)
Apr 30, 2021
eba1401
[IMP] resource_booking: filter/group by date
Apr 30, 2021
8c8a3d6
[FIX] resource_calendar: ignore past or unconfirmed bookings when upd…
May 6, 2021
a7cf80f
[FIX] resource_booking: always notify in resource TZ
Jun 8, 2021
227b83b
[FIX] resource_booking: Limit constraint only to future bookings
joao-p-marques Jun 18, 2021
2fd5954
[IMP] resource_booking: black, isort, prettier
Jul 13, 2021
4584c5d
[IMP] resource_booking: simplified time format
Jul 19, 2021
8d765cc
[MIG] resource_booking: migrate to v13
Jul 14, 2021
a9b3e36
[IMP] resource_booking: use duration field instead of stop
Jul 23, 2021
4da23e1
[IMP] resource_booking: configurable auto-assigned combination and lo…
Jul 23, 2021
a11df57
[FIX] resource_booking: "Involves me" filter
Jul 26, 2021
159b64d
[IMP] resource_booking: compatible with hr_holidays_public
Jul 26, 2021
e778025
[IMP] resource_booking: optional name propagated to meeting
Jul 27, 2021
65893f1
[FIX] resource_booking: error when recurrent meetings exist
Jul 28, 2021
6d4f477
[FIX] resource_booking: Proper calendar.event unlink signature
pedrobaeza Jul 28, 2021
b230b29
[FIX] resource_booking: access error on normal calendar
Jul 29, 2021
67675e5
[FIX] resource_booking: allow combination with other kind of leaves
Jul 29, 2021
2b3a1b1
[FIX] resource_booking: display location and duration on portal
Jul 29, 2021
c9c7d4b
[IMP] resource_booking: autoconfirm meeting attendees
Jul 29, 2021
c88729f
[IMP] resource_booking: improve auto-assignment readability
Jul 30, 2021
c91bd51
[IMP] resource_booking: add organizer
Jul 30, 2021
f411c68
[FIX] resource_booking: suggest involved partners as followers
Aug 2, 2021
f45c320
Added translation using Weblate (French (France))
abdawone Sep 24, 2021
2069c6b
Added translation using Weblate (French)
abdawone Sep 25, 2021
6e2f9c4
[FIX] resource_booking: autosubscribe resource partners
Sep 27, 2021
78ebe6f
[FIX] resource_booking: correct assignment message
Sep 28, 2021
4698970
[FIX] resource_booking: suggest requester to messaging
Oct 20, 2021
147ea52
[FIX] resource_booking: allow creating if type has categories
Oct 22, 2021
3378d80
[FIX] resource_booking: free meetings by default
Oct 26, 2021
d90c89c
[FIX]start_next_previous
jguenat Oct 30, 2021
d6727bb
[IMP] resource_booking: faster tests
Nov 5, 2021
d5868c8
[FIX] Avoid sending notifications when public user
Nov 8, 2021
14676f6
[FIX] resource_booking: performance
chienandalu Mar 14, 2022
71b9e9d
[IMP] resource_booking: pre-commit stuff
pedrobaeza Oct 23, 2022
2e9a7a8
[MIG] resource_booking: Migration to 14.0
pedrobaeza Oct 24, 2022
23fd701
[IMP] add description field to bookings
huguesdk Feb 17, 2023
e990485
[IMP] resource_booking: Create resource.is_available() convenience fu…
carmenbianca Feb 9, 2023
f9cc3f7
[IMP] resource_booking: Change the position of the description field …
victoralmau Feb 27, 2023
df51de7
[FIX] resource_booking: Don't fail with multiple internal attendees
pedrobaeza Mar 1, 2023
7e2a2a1
Added translation using Weblate (Catalan)
eugenichafer Mar 2, 2023
c9304e2
Translated using Weblate (Catalan)
eugenichafer Mar 2, 2023
76445c1
[FIX] resource_booking: Allow non RB users to handle calendar events
pedrobaeza Mar 6, 2023
2a61698
[IMP] resource_booking: Add description to calendar view card
carmenbianca Mar 30, 2023
4df674f
[FIX] resource_booking: Force to send calendar event author notification
victoralmau Mar 13, 2023
a4f959c
[MIG] resource_booking: Migration to 15.0
victoralmau Mar 3, 2023
0a906fc
[IMP] resource_booking: Use _prepare_home_portal_values() function.
victoralmau Apr 25, 2023
9a96ca0
[FIX] resource_booking: Change _default_company() to self.env.company…
victoralmau Apr 25, 2023
dc1cdb6
[IMP] resource_booking: Change t-esc directives to t-out according to…
victoralmau Apr 25, 2023
d443b0f
[IMP] resource_booking: Partial change from tour test to js
victoralmau Apr 25, 2023
d8be96b
[IMP] resource_booking: Allow a booking to span more than one calenda…
carmenbianca Jan 31, 2023
482fd43
[FIX] resource_booking: Add class to schedule page to show full dropd…
victoralmau Sep 26, 2023
1499e8f
[FIX] resource_booking: Don't fail on archived resource
pedrobaeza Sep 29, 2023
2290848
[15.0][ADD] resource_boooking: Add meeting url in resource booking
carolinafernandez-tecnativa Oct 20, 2023
b76dc0c
[IMP] resource_booking: Add multiples requesters in booking
carolinafernandez-tecnativa Nov 7, 2023
5f36445
[FIX] resource_booking: inverse partner
chienandalu Nov 29, 2023
4086aa1
[OU-FIX] resource_booking: Proper place for the script
pedrobaeza Nov 29, 2023
ee7b711
[OU-FIX] resource_booking: Proper openupgradelib method name
pedrobaeza Nov 29, 2023
7168ec2
[IMP] resource_booking: No create/unlink call if nothing to do
pedrobaeza Jan 5, 2024
e11e170
[IMP] resource_booking: New activity type for resource booking
carolinafernandez-tecnativa Jan 15, 2024
242aeac
[MIG] resource_booking: Migration to 16.0
norlinhenrik Aug 28, 2023
15f39b7
[FIX] resource_booking: Misc changes related to 16.0 migration
rrebollo Jan 25, 2024
4ace903
[MIG] resource_booking: Finish migration to 16.0
victoralmau Mar 11, 2024
f5cfd64
Added translation using Weblate (Portuguese (Brazil))
augustodinizl Apr 4, 2024
d58230b
Added translation using Weblate (Italian)
mymage May 3, 2024
cab5052
Translated using Weblate (Spanish)
berisoft-arg May 12, 2024
37f8ff6
[FIX] resource_booking: Add booking_count to portal values only if re…
victoralmau May 17, 2024
c45ef81
[16.0][FIX] resource_booking: Two fields with same label Activities
carolinafernandez-tecnativa May 18, 2024
ef8c341
[IMP] resource_booking: Add priority to portal_my_home view to preven…
victoralmau May 23, 2024
995ec1e
[FIX] resource_booking: Avoid the error if a message is written from …
victoralmau May 23, 2024
1ead44b
[IMP] resource_booking: Add support for mail_note subtype by default
victoralmau May 24, 2024
c1ad176
[IMP] resource_booking: Add support for mail_note subtype by default
victoralmau Jun 18, 2024
69d54c5
[FIX] resource_booking: Change combination_id mandatory when autoassi…
carolinafernandez-tecnativa Jun 26, 2024
444b27b
[IMP] resource_booking: Add search to partner_id field to prevent "wr…
victoralmau Jul 10, 2024
90ddf17
[IMP] resource_booking: Search by name in resource booking
carolinafernandez-tecnativa Jul 29, 2024
2f619db
Translated using Weblate (Italian)
mymage Jul 29, 2024
06c2da3
[IMP] resource_booking: Reduce and simplify code according to https:/…
victoralmau Sep 16, 2024
70ccfe4
Translated using Weblate (Italian)
mymage Oct 9, 2024
3fadcdc
Translated using Weblate (Italian)
primes2h Oct 21, 2024
4edd891
Translated using Weblate (Italian)
mymage Oct 24, 2024
1f39eec
[IMP] resource_booking: pre-commit auto fixes
victoralmau Nov 11, 2024
5d86fcf
[MIG] resource_booking: Migration to 17.0
victoralmau Nov 11, 2024
5c908ff
[UPD] Update resource_booking.pot
Jan 31, 2025
59ed5a1
[BOT] post-merge updates
OCA-git-bot Jan 31, 2025
7426e92
Update translation files
weblate Jan 31, 2025
5dabbf1
Translated using Weblate (Italian)
mymage Jan 31, 2025
394ba3c
Translated using Weblate (Italian)
mymage Feb 14, 2025
a61a2fd
Translated using Weblate (Italian)
mymage Feb 17, 2025
647f05f
[FIX] resource_booking: Uninstall hook args
pedrobaeza Mar 14, 2025
2065565
[BOT] post-merge updates
OCA-git-bot Mar 14, 2025
7870dec
[OU-FIX] resource_booking: Proper folder name for noupdate changes
pedrobaeza Apr 12, 2025
5750a7c
[IMP-FIX] resource_booking: Adapt the design following the same style…
pilarvargas-tecnativa Apr 20, 2025
ee04f5e
[BOT] post-merge updates
OCA-git-bot Apr 21, 2025
317f6de
Translated using Weblate (Italian)
mymage May 3, 2025
6b0ede8
[IMP] resource_booking: pre-commit auto fixes
carlos-lopez-tecnativa May 21, 2025
60beabc
[MIG] resource_booking: Migration to version 18.0
carlos-lopez-tecnativa May 22, 2025
f8a3f24
[UPD] Update resource_booking.pot
Jun 18, 2025
e414874
[BOT] post-merge updates
OCA-git-bot Jun 18, 2025
6c1d71d
[FIX] resource_booking: Change the close button of the availability a…
victoralmau Jun 26, 2025
aea89ef
[UPD] Update resource_booking.pot
Jun 27, 2025
11b5155
[BOT] post-merge updates
OCA-git-bot Jun 27, 2025
cf42d14
Update translation files
weblate Jun 27, 2025
c0d3ac3
Translated using Weblate (Italian)
mymage Jun 30, 2025
005408e
[FIX] resource_booking: avoid importing Form outside of tests
carlos-lopez-tecnativa Jul 1, 2025
016a8a3
[BOT] post-merge updates
OCA-git-bot Jul 1, 2025
ff42347
[18.0][IMP] calendar: new icon
FernandoRomera Aug 6, 2025
bb15357
Translated using Weblate (Spanish)
MRomeera Aug 7, 2025
e38677b
Translated using Weblate (Catalan)
MRomeera Aug 7, 2025
d53682f
Translated using Weblate (Italian)
mymage Sep 3, 2025
472c46e
[FIX] resource_booking: add display_name in test
carlos-lopez-tecnativa Oct 3, 2025
101d1b9
[BOT] post-merge updates
OCA-git-bot Oct 3, 2025
79bc38d
[FIX] resource_booking: use sudo() for booking searches to avoid perm…
carlos-lopez-tecnativa Oct 3, 2025
3781eab
[BOT] post-merge updates
OCA-git-bot Oct 3, 2025
37b5c4e
[BOT] post-merge updates
OCA-git-bot Oct 3, 2025
10d55b9
[FIX] resource_booking: display all slots in the same time zone corre…
carlos-lopez-tecnativa Aug 4, 2025
9aaed65
[BOT] post-merge updates
OCA-git-bot Oct 13, 2025
39b8856
[FIX] resource_booking: correct resource parameter in availability check
carlos-lopez-tecnativa Oct 27, 2025
82df443
[BOT] post-merge updates
OCA-git-bot Oct 27, 2025
b7becb8
[FIX] resource_booking: create the meeting with same tz as when sched…
christian-ramos-tecnativa Nov 5, 2025
7257a10
[BOT] post-merge updates
OCA-git-bot Nov 6, 2025
1428c77
[IMP] resource_booking: handle partner_ids safely
yessser Jan 21, 2026
af3d317
[BOT] post-merge updates
OCA-git-bot Jan 21, 2026
a839c07
[FIX] resource_booking: access error on normal calendar
victoralmau Mar 17, 2026
3752684
[BOT] post-merge updates
OCA-git-bot Mar 25, 2026
cd7ebb4
[FIX] resource_booking: Add description to meeting values only when t…
carlos-lopez-tecnativa May 13, 2026
2120c38
[BOT] post-merge updates
OCA-git-bot May 13, 2026
1f55ec6
[FIX] resource_booking: portal home and listing tolerate users withou…
dnplkndll May 16, 2026
714fc65
[FIX] resource_booking: honor all-day calendar events when computing …
dnplkndll May 16, 2026
e59655e
[IMP] resource_booking: tighten portal_my_bookings no-access path + t…
dnplkndll May 16, 2026
dc29f23
[BOT] post-merge updates
OCA-git-bot May 18, 2026
3a2f08e
[BOT] post-merge updates
OCA-git-bot May 19, 2026
4e20cb2
[IMP] resource_booking: pre-commit auto fixes
dnplkndll May 20, 2026
f8c5ec4
[MIG] resource_booking: Migration to 19.0
dnplkndll May 20, 2026
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
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# generated from manifests external_dependencies
cssselect
openupgradelib
234 changes: 234 additions & 0 deletions resource_booking/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

================
Resource booking
================

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

.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/license-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/19.0/resource_booking
:alt: OCA/calendar
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/calendar-19-0/calendar-19-0-resource_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=19.0
:alt: Try me on Runboat

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

This module adds a new app to allow you to book resource combinations in
given schedules.

Example use cases:

- Management of consultations in a clinic.
- Salesman appointments.
- Classroom and projector reservations.
- Hotel room booking.

Among the things you can do:

- Specify the type of booking, which includes a calendar of
availability.
- Specify which resources can be booked together. All of them must be
free to be booked.
- Place pending bookings, effectively giving permissions to someone to
see the availability calendar and choose one slot.
- Partners can do that from their portals.
- If a partner has no user, he can still do the same via a tokenized
URL.
- Backend users can also do that from the backend.
- Booking lifecycle with computed states.
- Automatic meeting creation and deletion.
- Automatic conflict detection.
- Deadline to block modifications.

**Table of contents**

.. contents::
:local:

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

To install this module, you need to install these dependencies:

1. `freezegun <https://github.com/spulec/freezegun>`__
2. `web_calendar_slot_duration <https://odoo-community.org/shop/product/calendar-slot-duration-6202>`__

When someone is a manager, he will have access to *Resource Bookings >
Configuration*, where he will be able to configure resources, leaves and
schedules. This menu is just provided as a shortcut. However, if you
want to manage that stuff more comfortably:

- To manage human resources, install
`hr <https://apps.odoo.com/app/employees>`__.
- To manage their leaves, install
`hr_holidays <https://apps.odoo.com/app/time-off>`__.
- To manage work centers, install
`mrp <https://apps.odoo.com/app/manufacturing>`__.

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

To let some backend user to book resources:

1. Go to *Settings > Users & Companies > Users*.
2. Pick or create one.
3. Assign *Resource Booking > User*.

To let some backend user to configure types and combinations, and to be
able to modify overdue bookings:

1. Go to *Settings > Users & Companies > Users*.
2. Pick or create one.
3. Assign *Resource Booking > Manager*.

To configure one booking type:

1. Go to *Resource Bookings > Types*.
2. Create one.
3. Give it a *name*.
4. Set the *Duration*, to know the time assigned to each calendar slot.
It will also be the default duration for each booking, although that
can be changed later if necessary.
5. Set the *Modifications Deadline*, to forbid non-managers to alter
dates of a booking when it's too late.
6. Choose one *Availability Calendar*. No bookings will exist outside
of it.
7. Under *Meeting defaults*, you will be able to fill some values that
will be used by default on calendar meetings. These will appear in
the global calendar when some booking is reserved.
8. Choose some *Available resource combinations*. All combinations in
the same line must be free to be booked together; otherwise the
booking will not be able to be scheduled. You can sort them.
9. Pick up one *Combination Assignment*. If you choose *Sorted*, then
the order of the combinations you chose will indicate the one that
is selected first. Of course, it must be free to be selected.
10. Save.

Usage
=====

This module installs a new app, "Resource bookings".

Bookings may involve you:

- Maybe because you requested to book something.
- Maybe because you are one of the booked resources, if a booking
represents some kind of appointment.

To see which bookings involve you:

1. Go to *Resource Bookings > Bookings*.
2. You can switch to the list view if you need to see also the pending
ones.
3. You can remove the "Involving me" filter if you want to see others'
bookings.

To book some resources:

1. Go to *Resource Bookings > Types*.
2. Pick the type of booking you want.
3. Click on *Booking Count*.
4. Click on a free slot.
5. Fill the *Requester*, which may or not be yourself.
6. Uncheck *Auto assign* and pick one *Resources combination*, in case
the one assigned automatically isn't the one you want.

To invite someone to book a resource combination from the portal:

1. Go to *Resource Bookings > Types*.
2. Pick the type of booking you want.
3. Click on *Booking Count*.
4. Click on the list view icon.
5. Click on *Create*.
6. Fill the *Requester*.
7. Uncheck *Auto assign* and pick one *Resources combination*, if you
want that the requester is assigned to that combination. Otherwise,
leave it empty, and some free combination will be assigned
automatically when the requester picks a free slot.
8. Choose the *duration*, in case it is different from the one
specified in the resource booking type.
9. Click on *Share > Send*.
10. The requester will receive an email to select a calendar slot from
his portal.

Known issues / Roadmap
======================

- Allow combination auto-assignment based on least used combination.
- Allow customer to choose combination.
- Some error messages would be a bit more helpful if they specify the
schedule impossibility reason, but that should be done without
affecting performance.
- Optimize ``_calendar_event_busy_intervals()`` to make it work in
batch.

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:%20resource_booking%0Aversion:%2019.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
-------

* Tecnativa

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

- Jairo Llopis <jairo.llopis@tecnativa.com> (https://www.tecnativa.com/)
- Henrik Norlin (https://ows.cloud)

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-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px
:target: https://github.com/pedrobaeza
:alt: pedrobaeza
.. |maintainer-ows-cloud| image:: https://github.com/ows-cloud.png?size=40px
:target: https://github.com/ows-cloud
:alt: ows-cloud

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

|maintainer-pedrobaeza| |maintainer-ows-cloud|

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

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 4 additions & 0 deletions resource_booking/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from . import models
from . import controllers
from . import wizard
from .hooks import uninstall_hook
60 changes: 60 additions & 0 deletions resource_booking/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Copyright 2021 Tecnativa - Jairo Llopis
# Copyright 2022 Tecnativa - Pedro M. Baeza
# Copyright 2024 Tecnativa - Carolina Fernandez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Resource booking",
"summary": "Manage appointments and resource booking",
"version": "19.0.1.0.0",
"development_status": "Production/Stable",
"category": "Appointments",
"website": "https://github.com/OCA/calendar",
"author": "Tecnativa, Odoo Community Association (OCA)",
"maintainers": ["pedrobaeza", "ows-cloud"],
"license": "AGPL-3",
"application": True,
"installable": True,
"uninstall_hook": "uninstall_hook",
"external_dependencies": {
"python": [
# Used implicitly
"cssselect",
],
},
"depends": [
"calendar",
"mail",
"portal",
"resource",
"web_calendar_slot_duration",
],
"data": [
"data/mail.xml",
"data/mail_data.xml",
"security/resource_booking_security.xml",
"security/ir.model.access.csv",
"templates/portal.xml",
"wizard/mail_activity_schedule_views.xml",
"views/calendar_event_views.xml",
"views/mail_activity_views.xml",
"views/res_partner_views.xml",
"views/resource_booking_combination_views.xml",
"views/resource_booking_type_views.xml",
"views/resource_booking_views.xml",
"views/menus.xml",
],
"assets": {
"web.assets_frontend": [
"resource_booking/static/src/js/**/*",
"resource_booking/static/src/scss/portal.scss",
],
"web.assets_tests": ["resource_booking/static/src/js/tours/**/*"],
},
"demo": [
"demo/res_users_demo.xml",
"demo/resource_resource_demo.xml",
"demo/resource_combination_demo.xml",
"demo/resource_booking_type_demo.xml",
],
}
1 change: 1 addition & 0 deletions resource_booking/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import portal
Loading
Loading