Wednesday, December 10, 2025
18 changes · saas-18.2
Enhancements to existing features
When partner records are created from imported UBL/CII electronic documents, they are now marked as companies by default. This helps keep customer and vendor data categorized correctly, improving record consistency for accounting workflows.
Original PR description
Ensure imported partner records are marked as companies when creating new partners. Task-5353923 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238793
Resolved issues and error corrections
The Hong Kong accounting setup now includes a dedicated Salaries & Wages Payable account. This corrects default payroll configuration so net salary amounts can be posted to the appropriate current liability account.
Original PR description
Adds a new Salaries & Wages Payable account of type current liabilities in order to use it in payroll for the NET rules and solve a misconfiguration in the default data. task-5042786 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237884
This update corrects a documentation string in the HTML editor's positioning component. It helps developers better understand the editor behavior without changing how users interact with Odoo.
Original PR description
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#239168
This update makes a website blog performance test produce consistent results by ensuring test blog posts are treated as already published. It reduces false failures in automated testing, helping releases proceed with fewer interruptions from unreliable test outcomes.
Original PR description
Some blog post are published with a post_date matching the time the test is run meaning that they are not considered published. We have multiple possibilities when _get_url_hot_query is called: - all call to /blog are executed before the publication date: 9 - some call to /blog are executed after the publication date: 11 - only the last call is executed after the publication date: ~40-50 Using freezetime after the publication date ensures a consistent result This can be easily reproduced by freezing the time on the first calls in _get_url_hot_query and not on the last one. Runbot error [55754](https://runbot.odoo.com/odoo/error/55754) Forward-Port-Of: odoo/odoo#239236
This update moves Mauritania tax report translations into the report configuration itself, helping the right wording appear consistently. It reduces the chance of missing or incorrect labels in localized accounting reports.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures the mail cleanup process only applies to actual sub-channels, avoiding unintended changes to regular channels. It helps keep users' pinned conversation settings stable and prevents unnecessary cleanup actions.
Original PR description
In [1], the `_gc_unpin_outdated_sub_channels` method was updated to avoid unpinning sub-channels multiple times. However, a condition is missing on `parent_channel_id` to restrict this gc to actual sub- channels. [1]: https://github.com/odoo/odoo/pull/238493 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#239248
This update makes an internal inventory test run consistently by ensuring two test records use the exact same timestamp. It reduces false test failures and helps keep quality checks stable without changing business features or user workflows.
Original PR description
In a previous fix in #174442, we ensured that the order of moves when freeing reservation would remain deterministic, even if move dates were the same. In the test however, we didn't make sure that both moves were created at the exact same time, meaning that in some case, a millisecond could pass between the two moves creation, making the later assert checking if both dates are the same wrong, and making the test irrelevant. Now freeze the time at an irrelevant date just to make sure the test always does what it was intended to do. runbot-233470 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239229
Confirmation dialog titles defined in button attributes will now be included in translation files. This ensures those messages can be translated and shown correctly to users in their selected language.
Original PR description
Description of the issue/feature this PR addresses: The texts from the "confirm-title" attribute of a tag are missing from the POT files. Current behavior before PR: In this line there is a text (the caption of the confirmation window): https://github.com/odoo/odoo/blob/19.0/addons/mass_mailing/views/mailing_mailing_views.xml#L66 "Ready to unleash emails?" - This text is missing from the POT file. Desired behavior after PR is merged: * These texts will apeear in POT files * Someone needs to translated them * It will show up as translated texts in UI --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239183 Forward-Port-Of: odoo/odoo#239034
Deleting a model now also removes its related reference records, preventing leftover data from causing later errors. This keeps the system's internal data more consistent and reduces the risk of issues after model removal.
Original PR description
When a model is unlinked, the `ir.model.data` related to that model wasn't cleaned up. This leaves dangling records that can generate issues. sentry-6938852090 Forward-Port-Of: odoo/odoo#236615
This fixes an issue that could prevent stock demo data from installing correctly when an existing company uses a currency other than US dollars, such as euros. It helps businesses set up test or demo environments more reliably across different country and currency configurations.
Original PR description
Currently in the `_merge_move_itemgetter` the system call `self.company_id.currency_id.decimal_places`. However the demo data of stock create a database with US currency and some `stock.move` in it. If we have an existing database with EUR for example. The upper call will return a `currency_id.decimal_places` since we have multiple currency. The best solution, would be to split `_action_confirm` to do a loop by company. But it would need a small refactoring and we will do a minimal diff to fix this issue. Using the smallest currency among all the company is not always correct but it's a super edge case and we should probably remove this code since it went to far. Close #230965, #234078 Forward-Port-Of: odoo/odoo#239273
Triple-clicking a checklist checkbox in the HTML editor no longer accidentally selects the full checklist item. This makes checklist interactions more reliable and avoids disrupting users while editing content.
Original PR description
**Current behavior before PR:** Currently, triple clicking on a checkbox in a checklist item ends up selecting the list content. This happens because in `selection_plugin` `onTripleClick` handler selects the whole list item. **Desired behavior after PR is merged:** This PR ensures that `onTripleClick` in `selection_plugin` does nothing if tripleclick is triggered when checking a box. task-5361579 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237690
This fix prevents parser settings from being changed after the parser has already been set up. It helps keep internal parsing behavior stable and avoids inconsistent results during normal system operation.
Original PR description
The parser rules cannot be modified once the parser has been instantiated. task-5091744 Forward-Port-Of: odoo/odoo#239046
Admins editing a course review will now reliably open their own review when using the main "Edit Review" button, instead of accidentally seeing the last review they edited for someone else. This prevents confusion and helps ensure review updates are saved to the intended user's feedback.
Original PR description
How to reproduce: - Log as Mitchell Admin - Edit Marc Demo review using the contextual edit button - Click on save to update the review - Click on the button "Edit Review" on the top The review modals opens with the message of Marc Demo instead of the message of Mitchell Admin. The fix ensures you always edit your review message when clicking on "Edit review" button. Note: this is only possible with admin user as other users cannot edit messages of other users. So unfortunately, we had to create a new tours as we can't add steps to test_course_reviews_elearning_officer (not running as admin). An alternative would have been to extend test_fullscreen_slide_text_highlights and rename it. Task-5170310 Forward-Port-Of: odoo/odoo#232696
Website editors now apply card image options only to the card being edited, not to cards nested inside it. This prevents confusing option displays and unintended changes to child card image ratios or positioning, making page editing more predictable.
Original PR description
This commit fixes three issues occurring when editing nested `s_card` snippets. **Problem 1 - Incorrect cover image detection** Issue: An `s_card` without a cover image displayed the cover image…
This commit fixes three issues occurring when editing nested `s_card` snippets. **Problem 1 - Incorrect cover image detection** Issue: An `s_card` without a cover image displayed the cover image option if it contained a child `s_card` with a cover image. Cause: The `querySelector` in `CardImageOption` could detect images inside child snippets. Fix: Now the `querySelector` only searches among direct children of the snippet root element. **Problem 2 - Ratio settings applied to all child cards** Issue: Changing the cover image ratio on an `s_card` applied the setting to all nested cards. Cause: The `we-select` in `s_card` options targeted `.o_card_img_wrapper`, causing the class to apply to all descendants. Fix: The selector is now `>.o_card_img_wrapper`, so the option acts only on the current snippet. **Problem 3 - Parent image positioning leaking to children** Issue: Adjusting the cover image position on a parent `s_card` affected the rendering of all child card images. Cause: CSS rules for `.o_card_img_horizontal` applied to all descendant elements matching `.o_card_img_wrapper`. Fix: The rules now apply only to direct children of `.o_card_img_horizontal`. The same correction was applied to `.o_card_img_ratio_custom`. task-5349540 Forward-Port-Of: odoo/odoo#237587
Installing the Turkish Nilvera localization now also updates translations for modules that were already installed. This ensures Turkish text is available in invoice-related views immediately after setup, avoiding missing translations for users working in Turkish.
Original PR description
### Issue: When installing "l10n_tr_nilvera" on a new DB the Turkish language is installed but the translation of previously installed modules are not updated. ### Steps to reproduce: - Install 'l10n_tr_nilvera' and switch to a Saudi company - Check the view "report_invoice_document" - Click the translation icon on the view - No Turkish translations are loaded ### Cause: When installing "l10n_gcc_invoice" the Arabic language is installed ([src](https://github.com/odoo/odoo/blob/70404624d7ea6f971182cbe4f4fe8fc064d2afd8/addons/l10n_gcc_invoice/__init__.py#L4-L5)). But the method [`_activate_lang()`](https://github.com/odoo/odoo/blob/70404624d7ea6f971182cbe4f4fe8fc064d2afd8/odoo/addons/base/models/res_lang.py#L161-L169) only activates the language, it does not update the translations. ### Solution: Create a new method that activate the language and calls `_update_translations()` on the installed modules. opw-5219783 Forward-Port-Of: odoo/odoo#237041
This update corrects a display issue on the Odoo portal where users were seeing outdated document counts. Now, the portal only shows users documents that are currently in their signing sequence, improving the user experience and preventing confusion. This ensures users are only notified of new documents when it's their turn to sign.
Original PR description
Version: - 18.0 Steps to reproduce: - Install sign - Upload document. - Add multiple signers - Set a sequential signing order Issue: - When documents require sequential signing, portal users see a banner saying there’s a new document to sign, even if it’s not yet their turn. Solution: - Update the counter to show only the documents that the user can currently sign. Impact: - Portal users now only see documents when it’s their turn to sign. Task-5226240 Forward-Port-Of: odoo/enterprise#98671
This update fixes an issue where multiple quality checks were being created for the same picking when adding additional products. The change ensures that only one quality check is generated per operation type (Receipts), streamlining the process and preventing data inconsistencies. This improves efficiency and accuracy in stock management.
Original PR description
Steps to reproduce: -------------------------- 1. Install the Quality module. 2. Create a Quality Control Point with: * Control per: Control on Operation. * Operation: Receipts (set in the Operations…
Steps to reproduce: -------------------------- 1. Install the Quality module. 2. Create a Quality Control Point with: * Control per: Control on Operation. * Operation: Receipts (set in the Operations field). 3. Create a Receipt containing one product. 4. Click the Mark as To Do button. 5. Add another product to the same Receipt and save it. Observation: -------------------------- Two quality checks are generated for the same picking, despite the tooltip indicating that only one check should be created per operation. Issue: -------------------------- No validation existed to verify whether an operation-based quality check had already been created for the picking when adding additional stock moves after confirmation. Solution: -------------------------- Add a check ensuring that if a quality check already exists for the same picking type and operation (with no product or category criteria), no additional operation-based quality checks are created. opw-5249233 Forward-Port-Of: odoo/enterprise#100118
This update corrects a translation issue within the Odoo Enterprise reports for Marathi-speaking users. The translations were previously stored in separate files, leading to inconsistencies. This change consolidates all necessary translations within the report XML files, ensuring accurate reporting in Marathi.