Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
169c396
[ADD] resource_booking: new app to manage bookings
Apr 27, 2021
94b3968
Translated using Weblate (Spanish)
Apr 30, 2021
ce45a07
[IMP] resource_booking: filter/group by date
Apr 30, 2021
f6ee992
[FIX] resource_calendar: ignore past or unconfirmed bookings when upd…
May 6, 2021
ebb90df
[FIX] resource_booking: always notify in resource TZ
Jun 8, 2021
9fd0e67
[FIX] resource_booking: Limit constraint only to future bookings
joao-p-marques Jun 18, 2021
49b7e58
[IMP] resource_booking: black, isort, prettier
Jul 13, 2021
3cc72b3
[IMP] resource_booking: simplified time format
Jul 19, 2021
063212c
[MIG] resource_booking: migrate to v13
Jul 14, 2021
a9eb6c6
[IMP] resource_booking: use duration field instead of stop
Jul 23, 2021
20cc009
[IMP] resource_booking: configurable auto-assigned combination and lo…
Jul 23, 2021
02c441a
[FIX] resource_booking: "Involves me" filter
Jul 26, 2021
a6f5aac
[IMP] resource_booking: compatible with hr_holidays_public
Jul 26, 2021
6ce183a
[IMP] resource_booking: optional name propagated to meeting
Jul 27, 2021
1fb8a6b
[FIX] resource_booking: error when recurrent meetings exist
Jul 28, 2021
a2230b1
[FIX] resource_booking: Proper calendar.event unlink signature
pedrobaeza Jul 28, 2021
a8ba61d
[FIX] resource_booking: access error on normal calendar
Jul 29, 2021
cfcf9a1
[FIX] resource_booking: allow combination with other kind of leaves
Jul 29, 2021
3ff67a6
[FIX] resource_booking: display location and duration on portal
Jul 29, 2021
f4224c9
[IMP] resource_booking: autoconfirm meeting attendees
Jul 29, 2021
1bcc33e
[IMP] resource_booking: improve auto-assignment readability
Jul 30, 2021
c9617be
[IMP] resource_booking: add organizer
Jul 30, 2021
d56859e
[FIX] resource_booking: suggest involved partners as followers
Aug 2, 2021
60bfc37
Added translation using Weblate (French (France))
abdawone Sep 24, 2021
7c83637
Added translation using Weblate (French)
abdawone Sep 25, 2021
1438f67
[FIX] resource_booking: autosubscribe resource partners
Sep 27, 2021
460dec5
[FIX] resource_booking: correct assignment message
Sep 28, 2021
5481360
[FIX] resource_booking: suggest requester to messaging
Oct 20, 2021
7058463
[FIX] resource_booking: allow creating if type has categories
Oct 22, 2021
900d68c
[FIX] resource_booking: free meetings by default
Oct 26, 2021
396c006
[FIX]start_next_previous
jguenat Oct 30, 2021
fc80235
[IMP] resource_booking: faster tests
Nov 5, 2021
f2531dc
[FIX] Avoid sending notifications when public user
Nov 8, 2021
89b581d
[FIX] resource_booking: performance
chienandalu Mar 14, 2022
fe8c1eb
[IMP] resource_booking: pre-commit stuff
pedrobaeza Oct 23, 2022
b213de4
[MIG] resource_booking: Migration to 14.0
pedrobaeza Oct 24, 2022
a63d89c
[IMP] add description field to bookings
huguesdk Feb 17, 2023
31ffcb1
[IMP] resource_booking: Create resource.is_available() convenience fu…
carmenbianca Feb 9, 2023
88ac042
[IMP] resource_booking: Change the position of the description field …
victoralmau Feb 27, 2023
48ab5d9
[FIX] resource_booking: Don't fail with multiple internal attendees
pedrobaeza Mar 1, 2023
d95257e
Added translation using Weblate (Catalan)
eugenichafer Mar 2, 2023
7f535ab
Translated using Weblate (Catalan)
eugenichafer Mar 2, 2023
099652f
[FIX] resource_booking: Allow non RB users to handle calendar events
pedrobaeza Mar 6, 2023
23ee2c3
[IMP] resource_booking: Add description to calendar view card
carmenbianca Mar 30, 2023
753705a
[FIX] resource_booking: Force to send calendar event author notification
victoralmau Mar 13, 2023
0564791
[MIG] resource_booking: Migration to 15.0
victoralmau Mar 3, 2023
a970b30
[IMP] resource_booking: Use _prepare_home_portal_values() function.
victoralmau Apr 25, 2023
50c139a
[FIX] resource_booking: Change _default_company() to self.env.company…
victoralmau Apr 25, 2023
d88f2f0
[IMP] resource_booking: Change t-esc directives to t-out according to…
victoralmau Apr 25, 2023
e631ef8
[IMP] resource_booking: Partial change from tour test to js
victoralmau Apr 25, 2023
67a8678
[IMP] resource_booking: Allow a booking to span more than one calenda…
carmenbianca Jan 31, 2023
ee87500
[FIX] resource_booking: Add class to schedule page to show full dropd…
victoralmau Sep 26, 2023
d2595cf
[FIX] resource_booking: Don't fail on archived resource
pedrobaeza Sep 29, 2023
eb24275
[15.0][ADD] resource_boooking: Add meeting url in resource booking
carolinafernandez-tecnativa Oct 20, 2023
6fde88b
[IMP] resource_booking: Add multiples requesters in booking
carolinafernandez-tecnativa Nov 7, 2023
8e854b1
[FIX] resource_booking: inverse partner
chienandalu Nov 29, 2023
c340742
[OU-FIX] resource_booking: Proper place for the script
pedrobaeza Nov 29, 2023
e133e21
[OU-FIX] resource_booking: Proper openupgradelib method name
pedrobaeza Nov 29, 2023
cce64bd
[IMP] resource_booking: No create/unlink call if nothing to do
pedrobaeza Jan 5, 2024
17a978d
[IMP] resource_booking: New activity type for resource booking
carolinafernandez-tecnativa Jan 15, 2024
5360d12
[MIG] resource_booking: Migration to 16.0
norlinhenrik Aug 28, 2023
770ca66
[FIX] resource_booking: Misc changes related to 16.0 migration
rrebollo Jan 25, 2024
c7c6d32
[MIG] resource_booking: Finish migration to 16.0
victoralmau Mar 11, 2024
ec461a0
Added translation using Weblate (Portuguese (Brazil))
augustodinizl Apr 4, 2024
206c067
Added translation using Weblate (Italian)
mymage May 3, 2024
e39eec8
Translated using Weblate (Spanish)
berisoft-arg May 12, 2024
2b22a62
[FIX] resource_booking: Add booking_count to portal values only if re…
victoralmau May 17, 2024
400dcd8
[16.0][FIX] resource_booking: Two fields with same label Activities
carolinafernandez-tecnativa May 18, 2024
c622d09
[IMP] resource_booking: Add priority to portal_my_home view to preven…
victoralmau May 23, 2024
a0b10ba
[FIX] resource_booking: Avoid the error if a message is written from …
victoralmau May 23, 2024
7d42b4a
[IMP] resource_booking: Add support for mail_note subtype by default
victoralmau May 24, 2024
c46d275
[IMP] resource_booking: Add support for mail_note subtype by default
victoralmau Jun 18, 2024
11905cc
[FIX] resource_booking: Change combination_id mandatory when autoassi…
carolinafernandez-tecnativa Jun 26, 2024
e02bc11
[IMP] resource_booking: Add search to partner_id field to prevent "wr…
victoralmau Jul 10, 2024
b51cfd0
[IMP] resource_booking: Search by name in resource booking
carolinafernandez-tecnativa Jul 29, 2024
a3a8f55
Translated using Weblate (Italian)
mymage Jul 29, 2024
c8aa8b2
[IMP] resource_booking: Reduce and simplify code according to https:/…
victoralmau Sep 16, 2024
9cb003f
Translated using Weblate (Italian)
mymage Oct 9, 2024
0f7aacc
Translated using Weblate (Italian)
primes2h Oct 21, 2024
5497acf
Translated using Weblate (Italian)
mymage Oct 24, 2024
1578b5d
[IMP] resource_booking: pre-commit auto fixes
victoralmau Nov 11, 2024
0867ad0
[MIG] resource_booking: Migration to 17.0
victoralmau Nov 11, 2024
39a94b3
Translated using Weblate (Italian)
mymage Jan 31, 2025
832c186
Translated using Weblate (Italian)
mymage Feb 14, 2025
0f22643
Translated using Weblate (Italian)
mymage Feb 17, 2025
c6d8fe5
[FIX] resource_booking: Uninstall hook args
pedrobaeza Mar 14, 2025
5682213
[OU-FIX] resource_booking: Proper folder name for noupdate changes
pedrobaeza Apr 12, 2025
91985f0
[IMP-FIX] resource_booking: Adapt the design following the same style…
pilarvargas-tecnativa Apr 20, 2025
ea00a6f
Translated using Weblate (Italian)
mymage May 3, 2025
ea288fa
[IMP] resource_booking: pre-commit auto fixes
carlos-lopez-tecnativa May 21, 2025
451c1f5
[MIG] resource_booking: Migration to version 18.0
carlos-lopez-tecnativa May 22, 2025
4939d33
[FIX] resource_booking: Change the close button of the availability a…
victoralmau Jun 26, 2025
7120e67
Translated using Weblate (Italian)
mymage Jun 30, 2025
a20aa3f
[FIX] resource_booking: avoid importing Form outside of tests
carlos-lopez-tecnativa Jul 1, 2025
316045d
[18.0][IMP] calendar: new icon
FernandoRomera Aug 6, 2025
98f58f0
Translated using Weblate (Spanish)
MRomeera Aug 7, 2025
208534c
Translated using Weblate (Catalan)
MRomeera Aug 7, 2025
82dfc6e
Translated using Weblate (Italian)
mymage Sep 3, 2025
57a6047
[FIX] resource_booking: add display_name in test
carlos-lopez-tecnativa Oct 3, 2025
a1c1ee5
[FIX] resource_booking: use sudo() for booking searches to avoid perm…
carlos-lopez-tecnativa Oct 3, 2025
3c084be
[FIX] resource_booking: display all slots in the same time zone corre…
carlos-lopez-tecnativa Aug 4, 2025
0e9f333
[FIX] resource_booking: correct resource parameter in availability check
carlos-lopez-tecnativa Oct 27, 2025
66be601
[FIX] resource_booking: create the meeting with same tz as when sched…
christian-ramos-tecnativa Nov 5, 2025
e96d29e
[IMP] resource_booking: handle partner_ids safely
yessser Jan 21, 2026
8b4c45f
[FIX] resource_booking: access error on normal calendar
victoralmau Mar 17, 2026
f1b9922
[FIX] resource_booking: Add description to meeting values only when t…
carlos-lopez-tecnativa May 13, 2026
605fa73
[FIX] resource_booking: portal home and listing tolerate users withou…
dnplkndll May 16, 2026
3cac087
[FIX] resource_booking: honor all-day calendar events when computing …
dnplkndll May 16, 2026
1895d9d
[IMP] resource_booking: tighten portal_my_bookings no-access path + t…
dnplkndll May 16, 2026
12ff1f5
[IMP] resource_booking: pre-commit auto fixes
dnplkndll May 20, 2026
0b271fd
[MIG] resource_booking: Migration to 19.0
dnplkndll May 28, 2026
7e90449
[FIX] resource_booking: forward-port #225 fix frontend tour loading
dnplkndll May 28, 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
231 changes: 231 additions & 0 deletions resource_booking/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
================
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/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/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