About Joint Calendar
Joint Calendar is an Odoo tool that combines different Odoo events in one or a few configurable super calendars. Odoo users often need to keep in mind a lot of details that are spread out among numerous interfaces. Switching between those is not comfortable and error-prone for planning. This tool solves the problem. The app allows to configure rules to join and share various document types on a single super calendar view but with easy-reachable source objects.
The tool might merge any Odoo document types on the same view: opportunities, meetings, phone calls, activities, sale or purchase orders, shipments and deliveries, tasks and tickets, and time offs, ...
Configure as many calendars as you need: for various functional areas or different user groups. Each joint calendar has its menu item.
Define on your own what to consider a joint event title, start or stop date, who are target attendees, etc. Have even the same document twice on the same calendar just with a different start.
Joint events and their source documents are interrelated. Update the former and the latter will be changed immediately. A reverse operation will be applied according to the system schedule.
Calendar configuration lets assign popups and email alarms. Thus, it is possible to have notification of any Odoo event or activity.
Regulate joint calendar access right on its form. Make it public or share it only for chosen user groups. Shared calendars are especially suitable for team interactions. Users might switch between document types and participants in a single click.
Joint events are updated regularly by the cron job. It is fast, especially if you apply time frames. Refreshing is also available from the calendar interface.
Any Odoo document on the same calendar
Reminders for any Odoo documents
Instant access to source details
Simple user rights administration
Configuring Odoo Shared Calendars
Joint Calendar Rules
To add a new document type for a shared interface you should set up a shared calendar rule. Rules define which Odoo objects should create events, which fields of that object should be used and shown, and whether any filtering should take place.
Define on your own what to consider a joint event title, start or stop date, who are target attendees, etc. Have even the same document twice on the same calendar just with a different start.
To create a rule:
1. Open the Events app and click Configurations > Rules in the systray
2. Click 'New'
3. Type the rule title
4. Choose a model (see Rules Fields)
5. Define a name field (see Rules Fields)
6. Select a start date field (see Rules Fields)
7. Choose an attendees field (see Rules Fields)
8. Optionally add a stop date field (see Rules Fields)
9. Optionally choose a description field (see Rules Fields)
10. Optionally select a contact links field (see Rules Fields)
11. Optionally add filters to specify events, that should be shown in a calendar with this rule (see Filters)

You can add a rule to a calendar while creating or editing it in the tab Rules by clicking 'Add a line'. To delete a rule from the calendar click on the cross by it.
You cannot add the same rule to one calendar twice. However, you can create a slightly different rule, with another title or fields used.

If the same object was found twice by different rules, an event will also be generated twice. It's because essential parameters like attendees, start time, and subjects may differ.

Setting up Joint Rule
Each field, that a rule has, serves a particular purpose. Below you can find the description of each setting.
Model - a target Odoo document, which defines what objects to scan: opportunities, tasks, orders, meetings, activities, and so on. You can choose your custom document type (including those created in Odoo Studio) as well. The mandatory field.
For example, if you choose the model 'Sales Order', then events will be created based on the existing Odoo quotations.
Name - a field of the target Odoo model, which defines what to use as a joint event name (also used as calendar event title). Usually, it is 'name', 'subject', or 'reference'. The mandatory field.
For example, if you create a rule for the model 'Sale Order' and choose the ‘Order reference’ for the Name Field, then, a joint even related to the quotation ‘S00001’ will be also named ‘S00001’.
Start date - a field of the target Odoo model, which defines when an event starts. For example, 'expecting closing' for opportunities or 'order date' for quotations. It may be any date or date with the time field of a source Odoo object. The mandatory field.
For example, if you create a rule for the model 'Sale Order' and choose the 'Order Date' for the Start date field, then the event will appear in the calendar on the same day for which the quotation is planned.
If the field, which was chosen as a start date isn't filled in related to the event document, then the event will not appear in the calendar.
Stop date - a field of the target Odoo model, which defines when an event is shown as finished on a calendar. The optional field.
For example, if you create a rule for the model 'Sale Order' and choose the 'Delivery Date' for the Stop date field, then the event will be shown in the events menu from the day for which this quotation is planned (Start Date field - Order Date) till the day of the product's delivery.
If you leave the field empty, then in the events menu, the event will be placed only on the day defined by the Start Date field.
Attendees - a field of the target Odoo model, which defines who are participants (responsible people, event owners). For instance, 'assigned to', 'sales person', or 'attendees'. You may use even document 'followers' since it's possible to apply both users and partners. The mandatory field.
For example, If you create a rule for the model 'Sale Order', and add choose the 'Salesperson' for the Attendees field, then joint even participants would include a quotation salesperson. Also, the event will be shown, if you sort events by this salesperson in the section attendees in the 'Events' menu (see Joint Calendar Interface).
Description - a field of the target Odoo model, which shows the notes, that the event has if there are any. Usually, the fields like 'internal notes' or 'comments' are used. The optional field.
For example, if you create a rule for the model 'Sale Order' and choose 'Terms and Conditions' for the Description field, then the related-to-order terms and conditions will be shown on the event's card.
If you leave the field empty, then the event's description field will be also empty.
Always Whole Day - an option, which can be turned on/off. When it is turned on, then all generated events created with the rule will last the whole day disregarding whether start or stop is defined with hours and minutes. Such an event will be shown at a special place on the calendar.
For example, if you create a rule for the model 'Sale Order', and turn on the option 'Always Whole Day', then the event will be placed on the daily and weekly super calendars above the timeline.
If you turn off the option, then, if the start or stop are defined with hours/minutes, the event will be placed at a particular time on the day's timeline and you will see the time before the event's title.
Whole Day - a special boolean field of the source object, which indicates that a related joint event may last the whole day. This setting is usually applied to standard Odoo calendar events which both might have definite time indicated or might be planned for a whole day. This optional field is available only if the setting 'Always Whole Day' is turned off.
For example, if we create a rule for the model 'Calendar Event' and choose 'All Day' as the Whole Day field, then, in case the event lasts all day, an event without the timing will be created. The event will be on the calendar the whole day and it will be placed above the timeline.
If you leave the field empty, then in case the calendar event has a definite time, it will be mentioned.
Contact Link - a field of the target Odoo model, which defines a specific partner, that is linked to the event. Usually, the fields like 'customer' or 'vendor' are used. The optional field.
For example, if we create a rule for the model 'Sale Order' and choose 'Customer' as the Contact Links field, then, the user from the field, will be written on the event template in the field 'Contact'.
If you leave the field empty, then the event will not be linked to the event.
Company field - a field of the target Odoo model, which defines to what company the object relates to. The optional field.
For example, if we create a rule for the model 'Sale Order' and choose 'Company' as the Company field, then, in case we assign a calendar to a particular company, the module will be able to distinguish to what company the object relates to, and, therefore will show only the related ones.
If you leave the field empty, then the module will not be able to distinguish the objects and will show the events related to all companies, even if the calendar relates to a particular company.
Domain - the Odoo filters' constructor to include only topical documents into a merged calendar. You might apply any storable attribute. For example, show only quotations without sales orders, or show opportunities only for this sales team.
Creating domains allows you to filter the records, which will be used to create the events. Only the ones, that match the specified conditions will be used. If you edit or delete an automatic rule, then the list of matching records will change.
You can apply filters by any storable field. For example, show only the sale orders of a particular salesperson or sales team, only tasks of a particular project, only opportunities of a particular customer, etc.
How to add a rule:
1. Start creating or editing a rule
2. Click '+Add Filter'
3. Choose an ID, by scrolling or typing the beginning in the search field and choose the filter options
For example, let's see some filters, which can be added to the model 'Sale Order'.
If you add a domain 'Salesperson contains Anita Oliver', then only based on orders related to Anita the events will be created.
If you introduce a filter 'Total >=50000', then only the orders with the total more or equal to 50000, will be considered for joint events.
If you add a filter 'Sales Team contains America', then only based on the matching records the events will be created, in this case only Sale Orders of the sales team America.
If the field is left empty, then all the records will be used to create events.
Rules Examples
Here are some examples of useful Joint Calendar rules:
As a model use 'Task'
As a name use 'Title'
As a start date field use 'Deadline'
As attendees fields use 'Assignees'
As a domain optionally you can set definite projects or stage name
As a model use 'Sales order'
As a name use 'Order Reference'
As a start date field use 'Order Date'
As attendees' fields use 'Salesperson'
As a contact link use customer
As a domain optionally restrict quotations by sales teams
As a model use 'Lead / Opportunity'
As a name use 'Opportunity'
As a start date field use 'Expecting Closing'
As attendees' fields use 'Salesperson'
As a contact link use customer
As a domain optionally restrict opportunities by sales teams
As a model use 'Activity'
As a name use 'Display Name'
As a start date field use 'Due Date'
As attendees fields use 'Assigned to'
As a domain optionally apply 'Summary is set'
As a model use 'Calendar Event'
As a name use 'Meeting Subject'
As a start date field use 'Start'
As a stop date field use 'Stop'
As attendees fields use 'Attendees'
As a whole day field 'All Day'
As a model use 'Time Off'
As a name use 'Description'
As a start date field use 'Start Date'
As attendees fields use 'User'
As a stop date field use 'End Date'
As a domain filter by status use 'Status = Approved' to show only approved leaves
Joint Calendar Interface
Users may access Joint Calendar through the interface events menu. Each super calendar has its own systray button. Thus, you can choose among the created calendars, which one to show.
By default, the first calendar is opened. You can change the calendar's order, by setting up their sequence in the settings tab, while creating or editing a calendar. The calendar with the smaller sequence goes first (see Creating Calendars).



