تخطي للذهاب إلى المحتوى
Hashem.sa
  • الرئيسية
  • Services
  • Odoo Notes
  • About
  • تواصل معنا
  • 0
  • 0
  • ebraheem@brioche.me
  • الْعَرَبيّة English (US)
  • تسجيل الدخول
  • تواصل معنا
Hashem.sa
  • 0
  • 0
    • الرئيسية
    • Services
    • Odoo Notes
    • About
    • تواصل معنا
  • ebraheem@brioche.me
  • الْعَرَبيّة English (US)
  • تسجيل الدخول
  • تواصل معنا

One Odoo Digest Email for All Your Companies

Why multi-company digests return zeros, and how to get a combined total.
  • كافة المدونات
  • Odoo Notes
  • One Odoo Digest Email for All Your Companies
  • 18 أغسطس 2026 بواسطة
    One Odoo Digest Email for All Your Companies
    Ebraheem Hashem

    If you run more than one company in one Odoo database, the digest email does not do what you want. Each digest covers a single company, so a group director gets one email per entity and no total — or, more often, sets up two digests and receives two emails carrying suspiciously identical numbers.

    Those identical numbers are a real defect, and it is still present in Odoo 19. Odoo computes each KPI with the company forced through with_company(), and then reads the result back for digest.company_id — the digest record's own company, which was never changed. Every company other than the digest's own comes back as zero. Multi-Company Digest Emails fixes that read-back and uses it: one email, a KPI block per company, and a combined total at the bottom.

    STOCK ODOOCo A → emailCo B → emailCo C → emailno total · zeros on thecompanies that are not its ownWITH THE MODULECo A KPIsCo B KPIsCo C KPIsCombined total
    One email, one section per company, and the group number in the same place as the entity numbers.

    What Odoo's digest actually does

    digest.digest carries a single company_id, defaulting to the current company. When the mail is sent, _action_send_to_user() computes kpi_data for the recipient's company — one company, the recipient's. Even the subject line is assembled as the company name followed by the digest name. The official Odoo 19 documentation for digest emails covers periodicity, KPI selection, recipients and adding custom KPIs, and never mentions companies at all. There is no per-company section and no consolidated view, by design and by omission.

    The failure mode is worse than “not supported”, because it looks like it works. Create a digest, set its company, add recipients, and the mail arrives. It just quietly contains zeros — or numbers from the wrong entity.

    Here is the mechanism, precisely. _compute_kpis() does the right thing: it forces the company per column with with_company(company). But _calculate_company_based_kpi() finishes by mapping aggregated values per company and then selecting with digest.company_id or self.env.company. Since the digest record has an explicit company_id by default, the forced company is ignored and the lookup misses, returning 0. And _get_kpi_compute_parameters() builds its company set from self.company_id too, so the underlying _read_group never queries the forced company's records to begin with. Two independent places, same assumption.

    This has been publicly reported as an open issue since December 2021: two digests for two companies, identical numbers in both emails. It is still open. The matching question on the Odoo forum — two companies, one of them showing no data at all for All Sales, Opportunities Won and Bank & Cash Moves — drew generic configuration advice that does not address the cause.

    Why the obvious workarounds fail

    One digest per company. This is what everybody tries first. You get N emails instead of one, none of them totals anything, and thanks to the defect above the numbers may be wrong anyway. For a group director with six entities, six emails at 07:00 is not a report — it is a filing exercise.

    A scheduled action that emails a report. You can build one, and you then maintain a custom mail template, custom KPI queries, custom trend arithmetic and a custom schedule, all outside the digest framework that already does exactly that for one company.

    A BI dashboard instead. Different product for a different job. A dashboard is a place you go. A digest is something that arrives whether or not you remember to look, which is the entire reason digests work.

    Overriding _calculate_company_based_kpi yourself. Correct instinct, genuinely small patch, and it fixes the zeros — but it does not give you per-company sections or a combined total, and you now own an override of a private method inside digest through every upgrade.

    What the module does

    A Multi-Company Digest toggle and a company selector. Enable it on any digest and pick the companies to include. Everything else about the digest — periodicity, KPI selection, recipients — stays where it is.

    A KPI section per company. Each selected company gets its own block containing every enabled KPI, over the standard Last 24h / Last 7 Days / Last 30 Days columns, including the trend margins. Custom KPIs you have added are included; the module changes which companies the KPIs are computed for, not what the KPIs are.

    A combined-total section. A final Combined Total — All Companies block sums each KPI across the selected companies, so the group number is in the same email as the entity numbers rather than in someone's spreadsheet.

    The Odoo 19 read-back fix, scoped. The module overrides the read-back so each company section shows its own real figures — and applies that override only while rendering a multi-company digest. Nothing else in your database changes behaviour.

    Standard digests are untouched. Digests without the flag behave exactly as stock Odoo, tips and preference links included. Turn the toggle off and you are back to standard.

    What it does not do

    It does not convert currencies. Monetary totals in the combined section are formatted in the digest company's currency and the companies are assumed to share one. If your entities report in different currencies, use the per-company sections and skip the combined block — a summed figure across mixed currencies would be worse than no figure.

    The combined total is an indicator, not a ledger figure. It is assembled from the same values the per-company blocks display, which Odoo abbreviates for readability — so a KPI rendered as “12.3k” contributes 12,300 to the sum. For a morning read of where the group is, that is exactly right. For anything you would put in front of a board or an auditor, use the accounting reports, not a digest email. The combined block also shows no trend margin; the arrows and percentages appear on the per-company sections.

    It does not add new KPIs, change how any KPI is defined, or alter the digest's design language. It does not give different recipients different company subsets within one digest — the company set belongs to the digest, so create a second digest for a different audience.

    It does not fix every company-related quirk in Odoo's digest. The “Messages Sent” KPI, for instance, applies no company filter at all in standard Odoo and is database-wide; that is Odoo's behaviour and this module does not change it.

    Requirements: Odoo 19.0, Community or Enterprise, with the digest module — which installs with mail by default, so you almost certainly already have it. Published for the 17.0, 18.0 and 19.0 series.

    How to use it

    1. Install the module and update the apps list.
    2. Go to Settings → Technical → Email → Digest Emails and open a digest (or create one).
    3. Enable Multi-Company Digest and pick the companies in the Companies selector.
    4. Confirm the KPIs and recipients, then use Send Now to check the mail before trusting the schedule.

    Send it to yourself first. The per-company blocks make it immediately obvious whether the numbers are the ones you expect — which, if you have been receiving zeros for a while, is worth five minutes.

    Where it sits against the alternatives

    There is one paid module on 19.0 marketing cross-company KPI emails, at around $39, and it is a parallel system rather than an extension of Odoo's digest: its own KPI list, heavy dependencies across stock, accounting, POS, purchase, sales and website, and no Last-24h/7d/30d trend structure. It also does not fix the underlying read-back defect, because it never uses digest.digest.

    At $39 this one extends what you already have. Same digest records, same KPIs, same schedule, same email design — with companies added and the zeros fixed.

    FAQ

    Why do my Odoo digest emails show zeros or the same numbers for every company?

    Because of how the KPI value is read back. Odoo computes each KPI column with the company forced via with_company(), but _calculate_company_based_kpi() then reads the result back for digest.company_id — the digest record's own company, which never changed. Any company other than the digest's own returns zero. Compounding it, the compute parameters build the company set from the digest record too, so the underlying query never looks at the forced company in the first place.

    Can one Odoo digest email cover several companies out of the box?

    No. digest.digest has a single company_id, the mail is rendered for the recipient's own company, and even the subject line is built as the company name followed by the digest name. Odoo's digest documentation covers periodicity, KPIs and recipients, and does not mention companies at all.

    Is the multi-company digest problem a known Odoo issue?

    Yes. It has been reported publicly as an open issue since December 2021 — the reporter created two digests for two companies and got identical numbers in both emails. It remains unresolved, and the equivalent Odoo forum question was answered with generic configuration advice that does not fix it.

    How are combined totals calculated across companies?

    Each KPI is summed across the selected companies from the same values the per-company blocks display, which Odoo abbreviates for readability — so a KPI shown as 12.3k contributes 12,300. Treat the combined figure as an indicator for a morning read, not as a ledger number. Monetary totals are formatted in the digest company's currency, the companies are assumed to share a single currency, and no conversion is performed. The combined block carries no trend margin.

    Will my existing digests change?

    No. Digests without the Multi-Company Digest flag behave exactly as standard Odoo, including tips and the preference links. The KPI read-back fix is applied only while rendering a multi-company digest.

    Which KPIs are supported?

    Every KPI enabled on the digest, including custom ones you have added, over the standard Last 24h, Last 7 Days and Last 30 Days columns — with their trend margins in the per-company sections.

    Get it

    Multi-Company Digest Emails — Per-Company KPIs & Combined Totals — $39 USD, one-time, on the Odoo Apps Store: apps.odoo.com/apps/modules/19.0/eh_digest_multicompany

    Available for the 17.0, 18.0 and 19.0 series, Community or Enterprise. Licensed OPL-1. Includes 90 days of support by email at ebraheem@brioche.me — questions answered within 24 hours. One purchase covers one Odoo major version.

    Built for a group running fourteen companies in one Odoo 19 database, where one email a morning beat fourteen.

    Multi-Company Digest Emails

    $39 USD — one-time, on the Odoo Apps Store

    Odoo 17.0, 18.0 and 19.0 · Licensed OPL-1 · 90 days of support included · One purchase covers one Odoo major version.

    Get it on the Odoo Apps StoreAsk a question first

    Need this fitted to your business, not just installed?

    EHC takes on consultancy, projects and ongoing services — Odoo implementation, process and controls design, data migration, and custom development like the module above.

    What EHC doesEmail Ebraheem
    في Odoo Notes
    How to Generate a Saudi WPS File from Odoo
    Every bank wants the wage file slightly differently. That is by design.

    Have a system that is not telling you the truth?

    Let's look at it together.

    Email

    ebraheem@brioche.me

    What EHC does

    Services, consultancy and projects

    Written work

    Odoo Notes

    EHC · hashem.sa
    • الرئيسية
    • •
    • Services
    • •
    • Odoo Notes
    • •
    • About
    • •
    • Contact
    • •
    • Privacy Policy
    Copyright © EHC · Ibrahim Mahmoud Hashim Trading One Person Company · Unified no. 7037243677
    الْعَرَبيّة | English (US)
    مشغل بواسطة أودو - رقم واحد التجارة الإلكترونية مفتوحة المصدر