Wednesday, January 14, 2026
17 changes · 18.0
Enhancements to existing features
This update adds three new fields to Odoo invoice PDFs – Buyer Reference, Contract Reference, and Purchase Order Reference – to ensure compliance with Chorus Pro requirements. These fields allow users to accurately document key purchase information directly on the invoice, streamlining the Chorus Pro process. This change improves data accuracy and reporting.
Original PR description
This commit: - Add three reference fields to invoice PDF for Chorus Pro compliance: Buyer Reference, Contract Reference, and Purchase Order Reference. These fields appear in the invoice header when set on the invoice. task-5410836 Forward-Port-Of: odoo/odoo#240494
This update optimizes the process of determining user permissions for documents, resulting in faster performance. This change enhances the overall responsiveness of the Enterprise application when working with documents. It's a performance improvement focused on the Documents module.
Original PR description
This commit is a backport of the improvement introduced in the following commit 706ee0c68c774f01b76802fe513aec52df16678c.
This update simplifies the process of generating UBL invoices for Colombia and Mexico by refactoring internal code and automating the customer/supplier swap for vendor bills. This change enhances the flexibility and maintainability of the UBL export functionality, ensuring compliance with local tax regulations.
Original PR description
For the Self-billing backport, we made two modifications which entail a small change in the l10n_co_dian and l10n_mx_edi code: - `_check_move_constrains` has been refactored to call a new `_get_move_constraints` method, which is more easily extensible. We perform the same modification in l10n_mx_edi. Note `_check_move_constrains` is still there, so any overrides will still work. - The customer and supplier are now swapped by default when exporting a vendor bill UBL, so it's no longer needed to do this specifically for the DIAN UBL. Community PR: https://github.com/odoo/odoo/pull/232548 Backport of https://github.com/odoo/enterprise/pull/92205 task-5153851
Resolved issues and error corrections
This update resolves a technical issue in the Odoo recruitment demo data. The system was incorrectly using user records instead of partner records, which caused errors. This fix ensures the demo data accurately reflects the expected data structure, improving the demo experience.
Original PR description
author_id expects a res.partner record. In this commit: Replace the user record with the corresponding partner record to avoid passing an incorrect recordset in demo data.
This update addresses a potential issue where deleted records could still be accessed within Odoo, particularly after cascade deletions. The changes add checks to ensure related records don't exist before accessing data, preventing errors and improving system stability. This ensures notifications and activities are handled correctly even when records are removed.
Original PR description
In order to be defensive we have to check records linked to messages, notifications or activities exist before checking related information like display_name, or even to skip them in various flows. This happens notably due to DB-level cascade deletion that does not remove side records linked through (model, res_id) pairs. It implies some additional exist queries. Task-5138556 Forward-Port-Of: odoo/enterprise#101300 Forward-Port-Of: odoo/enterprise#101185
This update resolves an issue where URLs were appearing twice in WhatsApp messages due to a formatting error in how the Odoo UI's markup was converted. The fix prevents the duplication of URLs, ensuring messages are clear and consistent for users. This improves the user experience when sharing links via WhatsApp.
Original PR description
Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises within the `_send_message` method, where we are taking the Markup body that we use within the Odoo UI to have a clickable URL, like `<a href="https://example.com">https://example.com</a>`. Then, the html2plaintext function duplicates by adding the footnote for the anchor tag, which "duplicates" the URL since the text within the anchor tag is the same as the URL itself. This results in a message body that contains the URL twice, leading to confusion for the user. Solution: This commit addresses the issue by backporting the solution to this problem introduced in odoo/odoo@a152910 and using the `include_references` parameter of the `html2plaintext` function to exclude footnotes from the conversion. opw-4936400
This update resolves an issue where incorrect credentials caused misleading error messages when sending invoices. The fix ensures a clearer and more accurate error display, preventing confusion and streamlining the invoice processing workflow. This improves the reliability of the HR EDI module.
Original PR description
Fixing incorrect error display that occurred while trying to send an invoice to MER with incorrect credentials set up. (no task/error ID) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where Odoo encountered errors when processing emails with attachment content types incorrectly identified as '*/*'. To ensure emails are processed smoothly, the system now defaults to treating these attachments as 'application/octet-stream'. This prevents processing failures and maintains email functionality.
Original PR description
In some rare cases it would seem that some systems construct emails with attachments reporting `*/*` as the Content-Type. While trying to parse such content in Odoo, it causes issues with the…
In some rare cases it would seem that some systems construct emails with attachments reporting `*/*` as the Content-Type. While trying to parse such content in Odoo, it causes issues with the standard CPython email library, as no standard handler exists for '*/*' content-types: Example error: ``` File "/usr/lib/python3.13/email/contentmanager.py", line 25, in get_content raise KeyError(content_type) KeyError: '*/*' ``` This is not compliant with valid MIME types defined in RFC2046/section-3, but in real life scenarios, blocking the processing of an incoming email in Odoo because of this might be excessive. While not a perfect solution, we will assume that attachments falsly reported as `*/*` are to be processed as 'application/octet-stream' content types. This should cover most use-cases, and if it still fails, we will consider that it's up to the original email sender to be RFC compliant. OPW-5425093 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242193
This update resolves a problem where Excel reports generated from accounting data would produce blank cells when zero values were present in the data. The fix ensures that zero values are correctly represented as '0.0' in the exported spreadsheets, improving data accuracy and report consistency. This change impacts the General Ledger reports.
Original PR description
Steps to reproduce: - activate debug mode - go to "Accounting / Configuration / Management / Accounting Reports" - Click on "General Ledger" - Go to "Columns" tab - Activate "Blank if Zero" for debit, credit or balance -> Traceback: ``` col['name'] += total_line['columns'][col_index]['name'] TypeError: unsupported operand type(s) for +=: 'float' and 'str' ``` This happens when computing the total from the totals of each account, if there are totals of 0 mixed with non-zero totals. The fix is to fallback to `0.0` if falsy value. opw-5490171 Forward-Port-Of: odoo/enterprise#104165
This update resolves an issue that previously prevented users from duplicating journal entries containing outdated accounts. Now, users can duplicate entries with deprecated accounts, correct the account in the draft, and successfully post the entry. The system validates only during the posting stage, preventing errors before the account is fixed.
Original PR description
Before this commit, duplicating a journal entry that contained a deprecated account raised a validation error immediately. This blocked the duplication process entirely, preventing users from using historical entries as templates. This commit changes the validation to be done in write function and post. Now, users can duplicate an entry with a deprecated account, correct the account in the draft, and post successfully. Validation only blocks the user if they attempt to post the entry without fixing the deprecated account. or if the user inserted a deprecating account while editing the move. task-5417810 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240230
This update ensures that when a customer clicks a link shared through Odoo's messaging system, the portal correctly records that the page has been viewed. Previously, the system wasn't accurately tracking these views, leading to incomplete customer activity data. This fix improves the accuracy of our portal analytics.
Original PR description
When a link to the portal is sent from the chatter via message or log note, the preview of the link triggers that the page was viewed by customer. As a solution a variable was added to the request headers coming from the previewer. opw-5237785 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243061
This update corrects a missing piece of information for Chilean SII (Service de Impuestos Internos) reporting within the Odoo Enterprise system. Specifically, the Regional Office for Alto Hospicio, located in the Taracapá region, has been added to ensure accurate tax compliance. This ensures correct reporting for businesses operating in that specific region.
Original PR description
Oficina Regional Alto Hospicio Comuna Alto Hospicio Región Taracapá
This update ensures the Odoo spreadsheet library is running the latest version (18.0.54). This improves the performance and stability of spreadsheet functionality within Odoo, addressing potential issues and enhancing the user experience. Multiple developers have collaborated on this update.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c0048a0b4 [REL] 18.0.54 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c0048a0b4 [REL] 18.0.54 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/de161dd1b [FIX] Pivots: Recompute measure on indirect dependency update [Task: 5349782](https://www.odoo.com/odoo/2328/tasks/5349782) https://github.com/odoo/o-spreadsheet/commit/af49eeb25 [FIX] demo: add import osheet [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/4080aaea2 [FIX] f&r: the searched range should follow the active sheet [Task: 5423885](https://www.odoo.com/odoo/2328/tasks/5423885) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update fixes an issue where website menu entries incorrectly pointed to the last created page when multiple pages with the same name were created. The change ensures menu entries are only updated with the new page ID when a new page is created, preventing duplicate page assignments and ensuring accurate website navigation.
Original PR description
With commit 19302cd40347065fcd937bd54e6dce27fe4940cc, when a page is created, menu entries with a url corresponding to the created page are updated to set their `page_id` to the new page. The update may also be triggered when creating several pages with the same name in a row. This commit updates a menu entry on page creation only if no page were already associated to the menu. Steps to reproduce: - Create a new page, call it "test" (will be available on `/test`) - Create a new page, call it "test" (will be available on `/test-1`) - Go to editor menu - Bug: both entries point to `/test-1` - Create a new page, call it "test" (will be available on `/test-2`) - Go to editor menu - Bug: the first one (and the new one) is pointing now to `/test-2` task-5186653 Forward-Port-Of: odoo/odoo#243312
This update resolves an issue where the original invoice linked to a reverse move was not displayed correctly in the invoice list. This fix ensures that the 'Source Document' field accurately reflects the original invoice when reversing a credit note, improving reporting and reconciliation accuracy. The issue was a regression introduced in a previous update.
Original PR description
### Issue: Reverse moves miss `invoice_origin` field. #### To reproduce: 1- Create a SO. 2- Create an invoice and confirm. 3- In invoice list view make the `Source Document` visible. 4- Create a credit note and reverse the move. From invoice list view, you can observe that `Source Document` is empty for reverse move. ### Cause: This is a regression introduced by #236656. opw-5362055 Forward-Port-Of: odoo/odoo#240439
This update ensures the website's product barcode lookup functionality accurately reflects a recent change in Odoo. Specifically, the test now correctly handles scenarios where products created through the website aren't automatically published if a category hasn't been selected, aligning with a community update.
Original PR description
Align barcodelookup website test with the community change where products created from the website are not auto-published when no category is selected. opw:5408903 SEE ALSO: Community PR:https://github.com/odoo/odoo/pull/242779
This update resolves an issue affecting compatibility with stable IoT Box devices. The system now correctly interprets data responses from these terminals, ensuring smoother and more reliable operation. This change enhances the overall stability of the Point of Sale (POS) system.
Original PR description
We now read data in result key if it exists to ensure readability of stable IoT Box responses. Forward-Port-Of: odoo/enterprise#104113