Many users prefer simple lists to Odoo dynamic interfaces. Sometimes it is truly comfortable to open a set of documents and process them one by one without extra clicks. It is even better if the system prepares such a list for you regularly. Besides external partners usually do not have an access to objects, while certain statistics should be available and carefully shared. For such situations this tool serves. It let you configure automatic reminders for any Odoo document type in a form of lists, where each record will satisfy criteria you have chosen, will suit pre-defined time frames, and will contain only the data you would like to share.
The tool is compatible with both Odoo Enterprise and Odoo Community.
- The tool allows choosing an unlimited number of columns for this document. It might be any field of a target model of the following types: char, text, html, integer, float, selection, boolean, date, datetime and relations to other documents (many2one, one2many, many2many). The set includes even computed fields
- For relational fields you might 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
- It is possible to adapt column names. By default a field description is stated (on the language of this reminder), but users are allowed to change them
- Optionally attach an xlsx table for reminders. It would have the same columns as a reminder itself. It is also possible to exclude a list from email and leave only an xlsx table
- Include or exclude links to Odoo objects. References are great in case of internal reminders, but they are harmful in case of external ones
- Introduce any greeting text for a notification
- Choose reminders' language
- Do not change email template manually. It will break all styles. Look at the Configuration tab
- Restrict time frames by any date or datetime of a target document type. It might be deadline, create or close date, next activity day, etc.
- If you wish, apply a few periods based on different dates. For instance, select this month closed leads which have been opened the last year. Records should satisfy all of the criteria, however 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
- Periods are relative, so they are periods in comparison to today. E.g., 'this month', 'the last year', 'the next 5 weeks'
- Intervals may both define previous time frames ('the last') and forthcoming periods ('the next')
- As intervals select days, weeks, months, or years
- 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
- Test your settings according to a real-time-shown result below the table
- Filters are organized as a domain constructor: you may use the most of storable fields with any level of precision. The latter means, for example, you can filter sales orders by a related partner country or even by a state of a company of a related partner
- Use both 'AND' ('all') and 'OR' ('any') operators to achieve a desired result
- Check yourself by pressing the button 'Records': it would show all documents which at the moment satisfy your search criteria (and you have an access to)
- If you feel confident to prepare Reverse Polish Notation domains, turn on the debug mode, and apply more complex expressions such as, for instance, ' category is child_of all'
- Send a reminder every day, each 5 days, each 181 days
- Notify by exact weekdays, e.g. on Mondays and Thursdays
- For monthly reminders use:
- The first month day
- The last month day
- The exact date, e.g. the 16th
- A weekday, for instance, the first Monday, the last Friday, or the third Tuesday
- Prepare a yearly statistics on an exact year day, e.g. on the first of September
- To observe the reminders' menu and configure new notifications, select the right 'Lists Reminder Manager' in this user settings
- Make sure you trust such a person. This user would be able to send any data by a document type to which he/she has a read access. It means, that if a user might read leads in general, but do not have rights to read the exact lead 'XXX', he/she would be able to send the data by the lead 'XXX' using the reminder
- To configure a reminder by this document type, a user should have a read access to such a model. For example, an employee without the right 'Warehouse user' might not prepare a reminder by deliveries
- To send periodical statistics for managers
- To forward to-do lists for certain actions
- To plan forthcoming events and actions
- To notify customers or suppliers of done jobs.
Pipeline results --> to get leads closed the previous month for a team manager
- Choose Lead/Opportunity as a model
- Define a period as Closed Date in the last month
- Make a filter Sales Channel > Sales Channel contains 'Europe', where 'Europe' is your sales team
- As columns define Display Name, Salesperson > name, Salesperson > phone, Tags, Expected Revenue
- Subscribe a sales team manager for this reminder
- Send a list each month, on the first Monday.
Similar lists might be configured for sale orders, deliveries, purchase orders, manufacturing operations, etc.
Daily to-do list --> to get activities which should be done today or previously
- Choose Activity as a document type
- Define a period as Due Date in the last 10000 days including this (to get even the eldest activities)
- Make a filter Assigned to > Name contains 'John Brown', where 'John Brown' is a user to notify
- As columns apply Display name, Category, Due Date, Note
- Subscribe a John Brown for this reminder
- Send a list everyday.
Similar reminders are usually prepared for project tasks, opportunities, planned deliveries or incoming shipments, etc.
Planned events --> to get events which will happen in forthcoming periods
- Choose Event as an object for this reminder
- Define a period as Start Date the last week, including this (it would be 'this week'), or the next 3 weeks
- Make no filters
- As columns apply Event name, Location, Start Date, End Date
- Subscribe a John Brown for this reminder, where John Brown is an event department head
- Send a list on Mondays.
Similar reminders are Okay for activities, tasks, leads, deliveries, incoming shipments, etc.
Customer project statistics --> to notify customers about their tasks
- Choose Task as a target model
- Define a period as Create Date in the last year
- Make 2 filters: Customer > Parent name is 'Agrolait' or Customer name is 'Agrolait', where 'Agrolait' is project customer
- As columns apply Display name, Deadline, Description, Last Stage Update, Stage > display name
- Subscribe a John Brown for this reminder, where John Brown is a managing partner of Agrolait
- Send a list on the 10th of January each year.
Similar statistics is frequently forwarded by support tickets, paid invoices, done sale orders, etc.
To provide the feature of dynamic Excel table generation, install the Python library xlsxwriter:
pip install xlsxwriter
The basic reminder appearance should not be configured through Odoo email templates. In the debug mode go to:
- Settings > Technical > Email > Templates > Reminder
Do not change this template! Otherwise, its styles would be broken, and you would receive blank emails.
Do you break everything? Not a problem, remove this template and update the module. The email appearance will be recovered.
Scheduled job (cron)
By default Odoo checks whether any reminder should be sent on a daily basis. You can change a frequency or time of check. In the debug mode go to:
- Settings > Technical > Automation > Scheduled Actions > Lists Reminders
The situation for a higher frequency is when you have many reminders with a lot records to search. In that case the cron job might be not ready with all actions in time, and it is better to repeat the check. However, be cautious: do not make it too frequent. Otherwise, one job would not be fulfilled until another one, and Odoo would collapse until a reminder is sent.
The cron job interval should be bigger than your Odoo configured timeout. Sometimes it is required to increase a timeout, if a number of documents in a list accounts for a few thousands records.
The module is not aimed to export data from Odoo. Do not try to send everyday your whole database.
OdooTools is the team of developers and business analysts to help you extend Odoo potential. We have been communicating with end users to whom the software became the main business tool since 2012. As a result, we are proud of dozens of successful Odoo apps developed. We are open for new ideas and challenges to create the best Odoo tools for business needs all over the world.
This tool has been developed in cooperation with IT Libertas - one of the leading Odoo integrators in Russia.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.