Monday, May 11, 2026
16 changes · 18.0
Enhancements to existing features
This update enhances the process for testing EDI files in Odoo's External Mode. It introduces a file validator that developers can use to ensure their XML files meet required standards, streamlining the development of EDI integrations and improving overall data quality. This supports a more robust and reliable External Mode environment.
Original PR description
There is a file validator running on the IAP server which validates different types of XML files using XSD and Schematron files. This commits allows for developers writing edi testcases to have their XML files validated by the file validator by running their tests in EXTERNAL_MODE. task-5955497
This update enhances the appearance of PDF Manager actions by removing an unnecessary styling class. Previously, action names had an awkward capitalization style. This change ensures a cleaner and more professional user experience when working with PDF documents within the Enterprise module.
Original PR description
Previously, pdf_manager actions used class "text-uppercase". Action names looked awkward. In this commit, we remove the class and properly display action names. task-6159317
Resolved issues and error corrections
This update resolves an issue where test emails sent through the Email Marketing app would incorrectly appear in contact records' chatter history. Previously, test emails were not properly removed after sending, leading to clutter. Now, test emails are automatically unlinked, ensuring a cleaner and more accurate chatter view.
Original PR description
**Steps to reproduce:** - Go to Email Marketing app - Create a mailing campaign - Set its recipients to Contact - Upload a file in Settings > Attach a file - Click on the test button to send a test mail to any mail - Go to the first contact record - Related attachment appears in the chatter **Issue:** Before 18.2, messages created for testing were ignored by the Chatter as they were empty (and not unlinked). But if an attachment was provided, it was linked to the test message and not deleted afterwards (which means it shows up in the record chatter). **Fix:** Ensure the related messages are unlinked at the same time as the test mail in `send_mail_test` by setting `is_notification` to False to trigger the `unlink` logic and remove the related attachments at the same time. backport of: https://github.com/odoo/odoo/commit/526b3d73886558315f2435714b2ed82fec313e78 opw-6168632 Forward-Port-Of: odoo/odoo#262152
Documentation and clarification updates
This pull request addresses a legal requirement by integrating a Corporate License Agreement (CLA) from BMyA and Blancomartin. This ensures compliance with Odoo's open-source licensing terms. The changes are related to documentation and legal processes.
Original PR description
New contributors from BMyA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261658
This update fixes an issue where contacts sharing common courses were incorrectly merged within Odoo. Now, attempts to merge these contacts will be blocked, preventing duplicate course information and ensuring data accuracy. This change improves data consistency and avoids potential confusion for users.
Original PR description
Expected Behaviour: Contacts enrolled in common courses should not be merged and the merge should fail. Steps to reproduce: 1- Go to one of the courses 2- Add two attendees to the course 3- Go to Contacts App 4- Select the two attendees you added to the course 5- Try merging the two contacts Actual Behaviour before the Fix: Contacts enrolled in common courses are getting merged and the common courses are kept in the destination contact. Behaviour with the Fix: Contacts enrolled in common courses are blocked from being merged and an error message is shown to the user saying that the reason the merge is blocked is a duplicate course. opw-5417223 Forward-Port-Of: odoo/odoo#244500
This update ensures that NSSF (National Social Security Fund) payroll deductions automatically stop for employees aged 60 or older. The change takes effect in the following month after the employee's 60th birthday, aligning with Kenyan regulations. A new test has been added to verify this functionality.
Original PR description
[IMP] l10n_ke_payroll: stop NSSF deductions after 60
When the user is creating a payslip and if the age of employee is >=60 the NSSF deductions must stop
(If the 60 years is finished in 10th of March -> it will stop in April (deduction stop starts from next month))
Test:
Unit test is written to check stopping NSSF deductions with dynamic birthday.
task - 6074658
Forward-Port-Of: odoo/enterprise#115236This update fixes a bug in the mobile version of the grid view, specifically the 'Add a line' feature. Previously, clicking this button on the first row of employees wouldn't work until scrolling down. The fix adjusts how elements are sized to ensure the button is always clickable on mobile devices.
Original PR description
**Steps to reproduce** On mobile: - Open a grid view (e.g. Timesheets > All timesheets) - Try to click on "Add a line" for the first employee - Issue: nothing happens. Notice that by scrolling down the list to employees at the bottom, it becomes possible to click on "Add a line". **Cause** `o_grid_cell_overlay` elements (with `h-100`) were taking more than the expected height in mobile, because the `o_grid_section_title` divs only have `position: sticky` on larger viewports. With the default `position: static`, the child element's height was exceeding its parent's height. opw-5853489 Forward-Port-Of: odoo/enterprise#113400
This update fixes a minor error in the Norwegian tax settings. The tax rate for code 32 was incorrectly set to 11.0. This change ensures that Odoo accurately reflects the latest official Norwegian tax rates, improving financial reporting accuracy.
Original PR description
The tax rate(`amount`) for code 32 was mistakenly set to '11.0'. To properly align with the official Norwegian tax rates, it needs to be updated to '11.11'. Related Enterprise PR: https://github.com/odoo/enterprise/pull/110792 task-6033027 Forward-Port-Of: odoo/odoo#258390
This update corrects a previous omission by adding the 'l10n_pl_bank_verification' module to the weblate.json file. This ensures that all translations for this new functionality are correctly included in the Odoo system, improving localization for Polish users.
Original PR description
[FIX] Add l10n_pl_bank_verification to weblate.json In a previous PR, we added the new module 'l10n_pl_bank_verification' but didn't added it in weblate.json. This PR fix it See odoo/odoo#262518
This update corrects a minor error in the account_edi_ubl_cii module that was causing an unnecessary conditional check when determining tax exemption reasons for Belgium (BE). This change ensures the system operates correctly and efficiently, improving data processing accuracy. The fix was implemented as a routine maintenance update.
Original PR description
When getting the tax exemption reason for BE, a redundant conditional was added by mistake related task-id-5905176
This update resolves a bug where users were incorrectly redirected after signing a document. The fix simplifies the redirection process by directing users back to their list of signatures on the portal, eliminating a confusing routing issue. This ensures a smoother user experience when completing and closing signature requests.
Original PR description
steps : - create a signature request with 2 roles, assign those to demo or portal user - create another one with a single signature role assigned to the demo or portal user - go on the portal and click on the second document to sign it - complete the document then click close on the thank you popup -> you are redirected on the portal view of the first document This happens because the redirect to /my/document is made using the sign_request id but the controller is using a sign_request_item id. Instead of adding a confusing controller route to be able to pass sign_request ids to reach the document's portal page, we simply redirect to the list of signatures on the portal instead. opw-6190390
This update corrects a bug in the Odoo portal that was preventing certain types of messages from being displayed to users. Previously, only 'internal notes' were hidden, but other non-internal message types were incorrectly excluded. This change ensures all non-internal messages are visible while still hiding internal notes as intended.
Original PR description
*: test_mail_full Since #138233, portal messages were strictly filtered by the `mt_comment` subtype. This was intended to hide internal notes, but it incorrectly excluded other non-internal message subtypes. Basically we want the share domain (`_get_search_domain_share()`) to apply to all users in the portal. This change ensures internal notes remain hidden while allowing all other non-internal non-comment subtypes to be visible. opw-6031571
This update addresses a technical issue related to Point of Sale sequences, specifically 'orphaned' sequences created when POS sessions are deleted. Cleaning these sequences prevents exceeding the database's limit of 10,000 sequences, which is crucial for performance on Odoo.sh. This ensures a stable and efficient Point of Sale experience.
Original PR description
The current vacuum only collects `ir_sequence` from closed sessions but doesn't take into account "orphaned" sequences, such as sequences which belongs to `pos.session` that have been deleted. We also need to clean those to avoid having too many Postgres sequences, especially since it's limited to 10K on Odoo.sh. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a problem preventing the import of Simplified Invoices (invoices without partner addresses). The issue stemmed from a change in the XML structure and was temporarily addressed in a separate branch. This fix ensures simplified invoices can now be correctly imported into the system.
Original PR description
After PR odoo/odoo#254505, support for Simplified Invoice (no address of the partner, different XML structure and XSD) is broken up to `saas-18.2`. Fixing it with a more relaxed reading of the XML structure, finding the nodes where they actually are. In `saas-18.3`, a newer test using a simplified invoice was breaking, so I'm backporting part of that. I've made the code more similar to the one in [`saas-18.3`](https://github.com/odoo/odoo/pull/263831) in the process. (See the `postal_address` required by the `_import_partner` function there)
This update eliminates redundant logging messages within the account_edi_ubl_cii module. Previously, similar log entries were repeated multiple times, which didn't provide valuable insights. Removing these duplicates streamlines logging and improves overall system performance.
Original PR description
Before this commit, we had repeated logs (n-times if we had similar lines) but this doesn't help too much. To avoid this we decided to remove duplicated messages Task-None --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures that the General Ledger export aligns with the search filters applied in the user interface. Previously, the export displayed a different set of accounts due to a mismatch in how search terms were processed. This change corrects the export functionality to accurately reflect the user's search criteria.
Original PR description
When applying a search filter in the General Ledger, the lines displayed in the UI differ from the ones exported. The discrepancy comes from the fact that the UI search bar filters lines using a simple "contains" logic on the displayed line name, while the backend export relies on the account model’s `_name_search` behavior, just as in the chart of accounts. For example, searching for "40" displays the accounts 400000, 400010, and 124000 but the last one (124000) is not is in the export results. task: 5917435 Forward-Port-Of: odoo/enterprise#107928