The report you rebuild every Monday
TechnoVision
Publication date pending · 5 min read
Somebody in your finance team has built the same filtered list four times. Filter to posted, filter to unpaid, sort by amount, add the due date column, group by customer. Export. Email. Next Monday, again.
They are not doing it because they enjoy it. They are doing it because there is nowhere to put the result that a colleague can also use.
Why saved filters do not solve it
Odoo has favourites, and they are genuinely useful. They are also personal, tied to one action, and invisible to anybody else unless shared - and even then they carry the filter, not the column layout, the ordering, or the intent.
What people actually want to save is the whole question: this model, this filter, these columns in this order, sorted like this, meaning this. And they want to hand it to somebody.
The part people pay for is not the building
Building the list once is a morning’s work either way. The thing that never gets done is having it arrive in the right inbox every Monday without anybody remembering.
A report nobody has to remember to run is worth ten that somebody does.
Then it becomes a permission question
The moment a report is shared, two problems appear that a personal filter never had.
First: when a colleague runs it, whose data do they see? The answer has to be "their own". A saved report is a saved question, not a saved answer - otherwise sharing a report becomes a way round an access rule, and nobody notices until it matters.
Second, and less obvious: when the scheduled version runs at seven in the morning, whose rights does it use? "The system’s" is the easy answer and the wrong one. It turns a schedule into a way of emailing data past a permission boundary once a week, in writing, to people who may not have asked for it.
Run as a named person
Things that decide whether it gets used
- A spreadsheet with numbers written as numbers. Formatted text cannot be summed, and the first thing anybody does with a report is sum a column.
- Column headings people chose. "Amount due" rather than amount_residual.
- Relations shown as names. "France", not 74.
- A truncation notice. A reader shown twelve rows will state twelve as a fact.
- Nothing sent when there is nothing to say - or the eighth email, the one that matters, goes to the same folder as the seven that said nothing.
And one thing to refuse
Expressions. The moment a saved definition can carry code, it becomes a way for one person to run something as another, and every permission argument above collapses. A column names a field. If you need a calculation, put it on the model where it can be tested and where access rules apply to it.