================ Resource booking ================ .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:c9c94fe5f0781ebe30b15603ca61481b52714b5274677b4e0eb7c1d919831921 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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/14.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-14-0/calendar-14-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=14.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: #. `freezegun `__ #. `web_calendar_slot_duration `__ 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 `__. * To manage their leaves, install `hr_holidays `__. * To manage work centers, install `mrp `__. Configuration ============= To let some backend user to book resources: #. Go to *Settings > Users & Companies > Users*. #. Pick or create one. #. Assign *Resource Booking > User*. To let some backend user to configure types and combinations, and to be able to modify overdue bookings: #. Go to *Settings > Users & Companies > Users*. #. Pick or create one. #. Assign *Resource Booking > Manager*. To configure one booking type: #. Go to *Resource Bookings > Types*. #. Create one. #. Give it a *name*. #. 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. #. Set the *Modifications Deadline*, to forbid non-managers to alter dates of a booking when it's too late. #. Choose one *Availability Calendar*. No bookings will exist outside of it. #. 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. #. 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. #. 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. #. 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: #. Go to *Resource Bookings > Bookings*. #. You can switch to the list view if you need to see also the pending ones. #. You can remove the "Involving me" filter if you want to see others' bookings. To book some resources: #. Go to *Resource Bookings > Types*. #. Pick the type of booking you want. #. Click on *Booking Count*. #. Click on a free slot. #. Fill the *Requester*, which may or not be yourself. #. 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: #. Go to *Resource Bookings > Types*. #. Pick the type of booking you want. #. Click on *Booking Count*. #. Click on the list view icon. #. Click on *Create*. #. Fill the *Requester*. #. 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. #. Choose the *duration*, in case it is different from the one specified in the resource booking type. #. Click on *Share > Send*. #. 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. Changelog ========= 14.0.1.3.2 (2023-08-28) ~~~~~~~~~~~~~~~~~~~~~~~ **Features** - Bookings can now span more than one calendar day. (`#77 `_) Bug Tracker =========== Bugs are tracked on `GitHub 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 `_. Do not contact contributors directly about support or help with technical issues. Credits ======= Authors ~~~~~~~ * Tecnativa Contributors ~~~~~~~~~~~~ * Jairo Llopis (https://www.tecnativa.com/) 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 Current `maintainer `__: |maintainer-pedrobaeza| This module is part of the `OCA/calendar `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.