About Periodic Reporting and Reminders
Periodic Reporting and Reminders is a tool to configure automatic reports for any Odoo document type in a form of lists, where each record will satisfy the criteria you have chosen, will suit pre-defined time frames, and will contain only the data you would like to share.
Configure the tool to send periodic reports and reminders for any Odoo documents including custom ones: sale orders, opportunities, warehouse transfers, requests for quotations, tasks, MRP operations, etc.
Choose data columns to include. Attach the report as an electronic table (xlsx), or/and as a PDF file, or/and as a table right in the email body. Apply aggregation (average, sum) for numeric columns. Introduce email greetings. Show or hide links.
Include in the report only those objects which suit your period requirements. It is possible to filter by any date and datetime fields of a target Odoo model.
Apply any kind of filters by stored fields to include only documents which are of interest. Filter by a chosen partner or responsible user. Sort table lines by any searchable model field.
Send lists with any periodicity: every day, each last Friday of a month, on a definite date of the year, and so on. Make reports reflect company calendars.
Any partner might be one of the reminder recipients: internal or portal users, customers, suppliers.
Reports by any Odoo object
Filter records to include only topical ones
Periodic reports for external and internal use
Managing Lists Reminders
The app assumes generating a table of records related to a certain model and filtered according to your rules (including dates). It is up to you what records to include in the report, with what periodicity to send it, and whom to send. This way, you can configure various list reminders, that then would be sent regularly to different partners: internal or portal users, customers, suppliers.
To create a list reminder:
1. Go to Lists Reminders
2. Click 'Create'
3. Introduce the reminder's title
4. Choose the related model
5. Choose the format in which the reminder will be presented. For that, tick one or several options: 'List in Mail Body', 'Attach Excel Table', 'Attach PDF version' (see Report Format)
6. Optionally, tick the option 'Provide links' to have the reference for the source Odoo record (see Report Recipients)
7. Choose the language in which the report will be generated (should be installed in the instance) (see Report Appearance)
8. Choose the responsible person (see Filtering Records for the Report)
9. Choose a partner, to easily distinguish different list reminders (see Filtering Records for the Report)
10. In the field 'Email from', choose the author of the email. Otherwise, the user (usually the Odoo bot) who sends the reminder would be its author. Please, take into account that the setting does not influence the reply-to address. Here, the app will use the standard Odoo catchall address as it is done for any other threads
11. In the tab 'Periods', choose the dates, so only related to this period records, would be added to the reminder (see Filtering Records for the Report)
12. Optionally, add some filters and/or filter by chosen responsible/partner (see Filtering Records for the Report)
13. Optionally, in the tab 'Reminder view', write the introduction to the reminder. It will be included at the beginning of the report (see Report Appearance)
14. Optionally, choose the sorting field to order the found records. Otherwise, standard sorting will be applied (see Report Appearance)
15. Choose the columns, that will be presented in the report one by one by clicking on the button 'Add a line' and specify their labels (see Report Appearance)
16. In the tab 'Recurrence', specify the frequency of sending the report (see Periodicity of Reports)
17. Click 'Save'.
As a result, you would have an email with the table of all found records and/or an excel/pdf file attached to such email.
The module provides a convenient menu 'Lists Reminders', where you can create and manage related reminders. You can distinguish the created reminders by their reference and the related model.
Navigate around list reminders conveniently with the help of the searchbar, filters, and grouping options. You can search for reminders by their reference and related partner. Filter the records, that are under your responsibility and group them by a model, responsible, or partner.
Duplicate reminders, to quickly create similar ones, with just a few changes. For that, open any reminder click on the actions button, and then 'Duplicate'.
You can archive one or several reminders, that you no longer need. For that, open any reminder, click on the actions button, and then 'Archive'. Or, in the lists reminders menu, select several ones, by ticking the box by them, click on the actions button, and then 'Archive'.
Filtering Records for the Report
As we choose a certain model, all its records are considered to be presented in the list reminder. In case, there are a lot of records, it might not be a good idea to show them all in the report. For example, in case you prepare a list reminder for the model 'Sale Order', sending the list of sale orders for the whole time is hardly convenient. The module allows filtering records, so only the relevant, up-to-date records will be added to the list reminder. For that, filters by relative periods, filters by document details, and filters by responsible/partner were introduced.
Filtering by relative periods allows limiting the records by dates, so only the ones for the time you need were added to the list reminder. For example, instead of adding sale orders for the whole time, you can configure the report to show you only the sale orders for the last month. This way, you will not have to look through the whole list of sale orders to find the ones you need.
Filtering by document details allows adding only the records, that match your conditions to the list reminder. For example, you can configure the report to show only the sale orders in the statuses 'Sent Quotation' and 'Sale Order'.
Filtering by responsible/partner allows showing only the records related to a certain responsible user or customer/vendor. For example, you can configure the report to show only the sale orders of the customer Gemini Furniture, where the salesperson is Jack Green.
Filters by periods, relative fields, and responsible/partner can be combined. This way, if you prepare a list reminder for the model 'Sale Order', you can include only the sale orders for the last month, that are in the status 'Sent Quotation', of the customer Gemini Furniture, where the salesperson is Jack Green.
If you want to create similar list reminders, with slightly different filters, it will be useful to duplicate an existing reminder and change the filters, that should be different.
Filters by Relative Periods
Filters by periods are added in the tab 'Periods' as you create or edit a list reminder. It is possible to restrict report time frames by any kept date or datetime fields of a target document type: deadline, create or close date, next activity day, etc. As intervals select days, weeks, months, or years.
You can apply a few periods based on different dates: e.g. select this month's closed leads that have been opened the last year. Records should satisfy each criterion, but if you selected the same date twice, records should be within any of those periods. For example, a deadline should be within the last 2 months OR the next month AND a close date should be within the last year.
Intervals may both define previous time frames ('the last') and forthcoming periods ('the next'). Periods are relative, so they are compared to today. For example, 'this month', 'the last year', or 'the next 5 weeks'.
Exclude or include a current period. For example, you might send a reminder on the first day of a month for a previous one. Vice versa, forward a list on the last day of this month for a current one.
To add a filter by period:
1. Click 'Add a line'
2. Choose the date field, which will be considered by the module
3. In the column 'In' choose if the date should be in the future or in the past
4. In the column 'Interval Type', choose the type of the period, that should be considered
5. In the column 'Interval' set the number of 'Interval types' that should be considered
6. Tick the box in the column 'Including current', to consider the records of the current 'Interval type' for the report.
For example, you can create a filter by relative period to show only the sale orders with the create date in the last 3 months including the current one.
Optionally, you can add another filter by relative period. If you added a few lines that relate to different fields, then the period restrictions are accumulated. It means that ALL period conditions should be satisfied. For example, if the delivery date should be within the last 2 months AND the creation date should be within the last year.
However, if you added the same date twice, then the condition should satisfy ANY of those criteria. For example, if the delivery date should be within the last 2 months OR the next month AND the creation date should be within the last year.
Keep in mind, that periods are calculated relative to today. So, to find out the exact period of time for which the records will be included in the list reminder, it is also important to take into consideration the moment when this reminder is sent (see Periodicity of Records).
For example, we have created a list reminder for sale orders. Then, we added two filters by relative periods: Delivery Date in the last 2 months and Delivery Date in the next 5 days. The reminder is set first Monday of each month. Today is 03/09/2022, meaning the 'last 2 months' are July and August. The 'next 5 days' are 04/09-08/09/2022.
Take into account that if a related date is not set for a document, such a document is considered as always outside periods.
If the 'Including Current' option is checked, then the current period is also included. For example, today is 25/09/2022, and we selected the period of 'last 2 months'. If the option 'Including current' is not ticked, then Odoo would consider July and August. If ticked, August and September.
To delete a filter by a relative period that you no longer need, tick the bin on the right side of the line with the period.
In the tab 'Periods', you will find the dynamic field 'If the reminder is sent today, the periods would be'. It shows the resulting period according to your periods' filters in real-time. This way, you can make sure, that you have set the correct period of time for the reminder.
Filters by Storable Fields
Another way to filter records is by stored fields. With their help you can use any document storable field, to distinguish the records that should be added. For example, adding all opportunities/leads to the report is not convenient. Instead, you can configure the report to show you only the opportunities/leads on a certain stage, i. e. 'Won'.
Filters by stored fields are added in the tab 'Filters' as you create or edit a list reminder. Filters are organized as a domain constructor: you may use the most of storable fields with any level of precision. For example, you can filter projects by a related partner country or even by a state of a company of a related partner.
To add a filter:
1. Click '+Add Filter'
2. Choose filter options, by scrolling or typing the beginning in the search field and choose the filter options
3. Optionally, Click on '+' on the right side of the rule you wrote to add one more line for another filter option
4. Now as you have more than one rule, you can choose ANY or ALL button above, so only records that match ANY of the rules or ALL rules will be added to the reminder
5. Click on '...' button, on the right side near '+' to add an even more complex rule
6. Here you can also choose to filter documents that match ALL or ANY rules
7. If you choose ALL or ANY both times, your rules will stand in one line and only one button will remain.
For example, let's add a complex rule for the model 'Sale Orders' to show only sent quotations of our sales team 'Europe'. For that we need to add two domains: Status = Sent Quotation, and Sales Team = 1 (where 1 is the id of the related sales team).
It is possible to check yourself by pressing the button 'Records'. In the pop-up window, you will see the list of records that satisfy your criteria (and you have an access to).
If you feel confident to prepare Reverse Polish Notation domains: turn on the developer mode, and apply more complex expressions such as, for instance, 'category is child_of all'.
Please, be careful while applying filters: make sure you are not forwarding confidential data to wrong partners. Be especially cautious in case of reminders for external contacts: make sure you filter documents by a related customer/vendor.
Filters by Responsible/Partner
The app lets quickly limit analysis for document owners. For that, special filters by a chosen partner or a responsible user were introduced. This way, you can filter documents by the related customer/vendor or responsible person.
To show only the records related to a particular customer/vendor in the report:
1. As you create or edit a list reminder, choose a particular customer/vendor in the field 'Partner'
2. In the tab 'Filters', find the section 'Filters by chosen responsible and/or partner (OPTIONAL)'
3. In the field 'Filter by partner' choose the field, from which the information will be analyzed.
For example, let's show only the sale orders, where the customer is Gemini Furniture. For that, in the field 'Partner' we choose Gemini Furniture, and in the field 'Filter by partner' in the tab 'Filters', we choose the field 'Customer'.
To show only the records related to a particular responsible person in the report:
1. As you create or edit a list reminder, choose a responsible person in the field 'Responsible'
2. In the tab 'Filters', find the section 'Filters by chosen responsible and/or partner (OPTIONAL)'
3. In the field 'Filter by responsible' choose the field, from which the information will be analyzed.
For example, let's add to the report only the sale orders, where the responsible user is Jack Green. For that, in the field 'Responsible' we choose Jack Green, and in the field 'Filter by responsible' in the tab 'Filters', we choose the field 'Salesperson'.
Periodicity of Reports
Flexibly set up the periodicity of the report sending. The module allows configuring the frequency of sending reports to fully reflect business calendars: by days, by weeks, by months, by years. It is even possible to choose the particular day of the week, to receive the report.
The periodicity of reports is set per each list reminder. As you start creating or editing a list reminder, in the tab 'Recurrence', in the line 'Repeat every' choose the frequency of sending the report by choosing the number and the period type (days, weeks, months, years).
Depending on the chosen type of period, the set of configurations may be different.
If you choose the periodicity by days, then you need to specify the number of days in which the report will be sent. This way, you can prepare a reminder to be sent every day, every 5 days, or every 181 days.
If you choose the periodicity by weeks, then it will be possible to choose a particular day/days of the week to send the report on. For that, just choose the days by checking the box by them. This way, you can send statistics each Monday, or once in 5 weeks on Thursday, etc.
If you choose the periodicity by month, you can also choose the day of the month, when the report will be sent. The available options are:
1. For the first or the last month's day (for example, the 1st or 31st of December)
2. For the exact date (for example, the 16th)
3. For a definite weekday (for instance, the first Monday, the last Friday, or the third Tuesday).
If you choose the periodicity by years, then you will also be able to select the exact date to send the report. For example, you can set the list reminder to be sent each year/5 year on the first of September.
If you set yearly or monthly reminders, please, make sure that the exact date exists. Otherwise, the last month's day will be applied. For example, if you set the reminder to be sent on the 30th of February, then as there is no 30th day, the report will be sent on the last day, so either on the 28th or 29th of February.
The app assumes sending auto emails based on the scheduled job 'Lists Reminders'. It is possible to change the period of checks and the time when the list reminders are sent if any. For example, you can configure the checks to be done once a day at 12 o'clock. For that:
1. In the General Settings, turn on the developer mode
2. Go to Technical Settings > Scheduled Actions
3. Find the scheduled job 'Lists Reminders'
4. Click 'Edit' and, in the field 'Execute every' specify the frequency with which the scheduled job should be launched. For that, choose the number and type of the period
5. Optionally, set the next execution date and time in the field 'Next Execution Date'
5. Click 'Save'.
For testing purposes, it is also possible to generate and send a list reminder manually. For that, use the button 'Notify' above the created record.
Keep in mind, that if you are a follower of the record and click on the button 'Notify', you will not receive the letter. You will receive it, only when someone else pushes the button or when the cron processes the scheduled action.
The report appearance can be flexibly configured. It is only up to you to decide what introduction to add, which fields to include in the list reminder, or which report format to sent. To customize the list reminder, it is possible to:
1. Introduce any greeting text for reminders. Such introduction is edited in a standard Odoo HTML editor
2. Define report language to make sure the correct translation is applied, where possible
3. Enter the email address which would be shown for reminder recipients. Otherwise, it would be the user who sends the report
4. Choose the format of the reminder. You can send a list reminder in the email body, or attach it as a pdf or xlsx file. Optionally, you can combine various formats. For example, attach both pdf and xlsx files to the email
5. Choose an unlimited number of columns for a list reminder
6. Set up table sorting for any document storable field. For instance, send a sales list ordered by a sales team, a country, a salesperson, etc.
7. Apply aggregation operators for columns to calculate sum or average per records' column (applicable for integer, float, and monetary fields)
8. Add references to the email, by including the links to the reminder's records.
The appearance of the report is set per each report separately in the tab 'Reminder View'.
As you generate a list reminder, above the generated table with records, you will see the model and the periods for which the report is sent. This information is also included in the subject of the email. For example, if you create a list reminder for the model sale orders and as a period set 'Created on' in the last month including current, then in case today is the 30th December 2022, the subject of the report will be 'Sale Orders: Creation Date: 2022-12-01 - 2022-12-31'.
It is possible to add introduction to the report. For that, just write the text in the field 'Message Introduction'. It will be added to the beginning of the report, or to the email body if you add the report as a pdf or xlsx file. Such an introduction is edited in a standard Odoo HTML editor.
Automatic notification sending goes exactly according to the planned work - by default from Odoo Bot, but you can change it in the field 'Scheduler user' on the related scheduled job form.
Optionally, in the field 'Email from' while creating or editing the reminder, you can set an email address, which will be shown for reminder recipients.
It is possible to launch the notification manually. In this case, the address of the sender is always taken from the user who starts the generation of the reminder. That is, from the user who clicks the button ('Notify').
Optionally, you can define report language to make sure the correct translation is applied. This way, where possible the translation will be applied. For that, in the field 'Language' on the form, choose the language that you need. Keep in mind, that the language should be installed on the instance.
There are several formats in which the report can be sent. It is possible to add the report in the body of the email or attach it as an XLSX/PDF file to the email.
To attach the report in the body of the email tick the option 'List in Mail Body' while creating or editing a list reminder.
To attach the report as an xlsx file tick the option 'Attach Excel Table' while creating or editing a list reminder.
To attach the report as a pdf file tick the option 'Attach PDF version' while creating or editing a list reminder. Please use only in case the number of columns suits the A4 width, otherwise. the table may not look well.
It is also possible to choose several or all options at once. For example, if we tick the options 'List in Mail Body' and 'Attach Excel Table', then in the email, we will see the report in the email body and the xlsx file will be attached to the email.
Keep in mind, that if you don't choose at least one of the formats, the related email will contain only greetings, if any.
Choose the fields, that will be presented in the report, by clicking the button 'Add a line' and choosing the field. It is possible to choose an unlimited number of columns. Please, keep in mind, that with a large number of columns it is better to send the list reminder as an Excel file, while the table may not fit into the letter/printed form.
As a column it is possible to choose any field of the following types: char, text, html, integer, float, selection, boolean, date, datetime, and relations to other documents (many2one, one2many, many2many). The list of fields may be different according to the chosen model in the reminder. For example, if you create a list reminder for the model 'Sale order', you can choose the fields reference, creation date, and total and they will be shown in the report.
As you select a field, by default, a field description is used as a column name. Optionally, in the column 'Label', you can change the way the related column will be named in the table. For example, for the model 'Sale Order' add the field 'Display name' and in the column 'Label', change the title to the 'Order number'.
For the relational fields, you might also choose the second-level precision. For example, you might show a phone of a customer for a sales orders reminder or tags' colors for tasks. For that, in the column 'Complementary' choose the field, that should be added to the table. For example, if you add a field 'Customer' and choose its complementary field as 'Phone', then in the table the column related to the field 'Phone' will be added, and not the field 'Customer'.
For integer, float, and monetary fields, you can also choose what to show as a table total by applying aggregation operators for columns. The app lets calculate the sum or average per the records column. For that, in the field 'Total Operator', choose one of the options 'Sum' or 'Average'. For example, if we add a field 'Total' for the sale orders list reminder, and choose the option 'Sum' in the field 'Total Operator', then below the column we will see the sum of the total of the included to the reminder sale orders.
Set the sorting field in the field 'Sorting Field', which will be considered to decide the records placements in the table. And, choose the ascending or descending direction in the field 'Sort Direction'. This way, you can get the most convenient order of the records. For example, set to sort the sale orders by the 'Creation Date' in ascending order, then the order of orders will be shown from the oldest (created earlier) to the most recently created ones.
Optionally, change the order of chosen columns by dragging & dropping the fields, to make sure that the table looks exactly as you want.
Some of the chosen fields may be empty, or not particularly useful. In this case, it is possible to delete the fields, that you no longer need. For that, in the table click on the cross on the right side by it.
Only chosen fields will be presented in the table. If you don't choose any field, then the table will be empty or will contain only the list of links to the related records (if the option 'Provide Links' is turned on).
Optionally, you can decide to include or exclude links to Odoo objects. To include links to the list reminder, make sure, that the option 'Provide links' on the form is ticked. This way, you will be able to check out the linked objects for extra details.
Both internal and external users will be able to see the links in the table. However, if a user is external or doesn't have a right to a certain object, he shouldn't be able to open the link (see Report Recipients).
Be careful, when sending a list reminder to external users with the option turned on, to make sure, that no confidential information is shared.
You can flexibly set the recipients of the report. Any partner might be one of the reminder recipients: internal or portal users, customers, or suppliers.
To add a follower to a reminder: open any reminder, click on the ‘Person’ icon below the reminder and choose ‘Add followers’.
This way, the notification is received by all users specified as followers of the reminder.
If you have ticked the option 'Provide links' to have the reference for the source Odoo record while creating or editing a list reminder, the links to the related Odoo records will be included in each row of the table. However, the Odoo records will be accessible only to internal users. If you sent the list reminder to your partners, links would not be of any use to them. So, if they try to follow the link, they will be redirected to the login page (see Report Appearance).
For example, we have added our customer 'Azure Interior' as a follower of the list reminder 'Sale Orders', the links to Odoo records are included in the reminder. But, as Azure Interior clicks on the link, the customer is redirected to the login page or to the user's portal, if already logged in.
Typical Use Cases
The app is used to aggregate information by any Odoo document type: sale or purchase orders, leads or tasks, activities or meetings, deliveries, or manufacturing operations. So, generally, the app should be able to get the information from any model, which exists in the system.
Here you can find some examples of the typical use cases:
The goal: Receiving an email with the leads closed in the previous month by a team manager
Periods: Closed Date in the last month
Filters: Sales Team (e.g. to contain 'Europe')
Columns: Display Name, Salesperson - name, Salesperson - phone, Tags, Expected Revenue (as total operator - use average, for example)
Recurrence: Send a list each month, on the first Monday.
Subscribers: a sales team manager
Similar reminders can be prepared for sale orders, deliveries, purchase orders, manufacturing operations, etc.
The goal: Receiving an email with the activities which should be done today or earlier
Periods: Due Date in the last 10000 days including current (to get even the eldest activities)
Filters: Assigned to - Name contains 'Mitchell' (where 'Mitchell' is a user to notify)
Columns: Display name, Category, Due Date, Note
Recurrence: Send a list everyday
Subscribers: Mitchell Admin
Similar reminders can be prepared for project tasks, opportunities, planned deliveries or incoming shipments, etc.
To create the same reminder for another user quickly: duplicate this one, update the filter to another employee and subscribe him/her.
The goal: Receiving an email with the tasks which will happen in forthcoming periods
Periods: Start Date the last week, including current(it would be 'this week'), or the next 3 weeks
Columns: Display name, Start Date, Deadline, Status
Recurrence: Send a list on Mondays
Subscribers: John Brown (where John Brown is an event department head)
Similar reminders can be prepared for activities, events, leads, deliveries, incoming shipments, etc.
The goal: Notifying customers about their project tasks
Periods: Created on in the last year
Filters: Customer - Parent name is 'Azure Interior' or Customer name is 'Azure Interior' (where 'Azure Interior' is an Odoo project customer)
Columns: Display name, Next Activity Deadline, Description, Last Stage Update, Stage - display name
Recurrence: Send a list on the 10th of January each year
Subscribers: John Brown (where John Brown is a managing partner of Azure Interior)
Similar statistics is frequently forwarded for support tickets, paid invoices, done sale orders, etc.
Rights to administrate the lists reminders belong to 2 user roles: 'Lists Reminder: Only Own' and 'Lists Reminder Manager'. If you want a user to be able to see and list reminders, he or she should belong to one of those groups. If an internal user doesn't have one of the list reminder roles assigned, the related menu will be hidden for such a user.
The user with the role 'Lists Reminder: Only Own' will be able to see and manage list reminders, where he/she is a responsible user. To set a responsible user of the list reminder, choose the user in the field 'Responsible' and choose the field that will be considered for filtering, in the tab 'Filters', the field 'Filter by partner'.
The user with the role 'Lists Reminder Manager' will be able to see and manage all the list reminders, regardless of the responsible user, if any.
To assign one of the list reminder roles to a user:
1. Go to General Settings > Manage Users
2. Choose a particular user
3. Click 'Edit'
4. Scroll to the section 'Other'
5. In the field 'Lists Reminders' choose one of the roles
6. Click 'Save'
Keep in mind, that to configure a list reminder by a particular document type, a user should have at least read access to such a model. For example, an employee without the right 'Warehouse user' might not prepare a reminder for deliveries.
In most cases, reminders should be prepared by the Odoo administrators, since it is the only user, who has full rights for all models. Simultaneously, the tool lets you grant access to lists for any user.
Make sure you trust a person before assigning one of the roles as this user would be able to send any data by a document type to which he/she has read access. It means, that if a user can read leads in general, but does not have the right to read the exact lead 'Tables and chairs', he/she would still be able to send the data by the lead 'Tables and chairs' using lists reminders.