Daily updates from Odoo
Friday, August 22, 2025
15 changes · master
Enhancements to existing features
This update stores the specific translation method for fields instead of only whether translation is enabled. This helps Odoo preserve clearer translation behavior across upgrades and customizations, reducing ambiguity for multilingual business data.
Original PR description
https://github.com/odoo/odoo/pull/219406 https://github.com/odoo/upgrade/pull/8085 https://github.com/odoo/upgrade-util/pull/296
The CRM pipeline dashboard has been refreshed to align with recent improvements to carousel titles. This provides a more consistent and polished dashboard experience for users reviewing sales pipeline information.
Original PR description
This commit updates the pipeline dashboard following the improvements on the carousel title. Task: 5030334
The VoIP call screen has been visually refined so call statuses look more consistent across regular and AI-assisted calls. This improves clarity for users during calls and creates a more polished, unified experience.
Original PR description
This commit refines the design of the call statuses to ensure consistency across them. task-5026907 Requires: - https://github.com/odoo/odoo/pull/223557 | Before | After | |--------|--------| | <img width="403" height="656" alt="Capture d’écran 2025-08-21 à 09 01 23" src="https://github.com/user-attachments/assets/fec26d4a-f373-4635-a57e-9fd5786350d4" /> | <img width="406" height="660" alt="Capture d’écran 2025-08-21 à 09 00 19" src="https://github.com/user-attachments/assets/dd4cb653-1650-4386-90d5-1e71b182816c" /> |
Resolved issues and error corrections
This fix ensures booking updates sent through Google Reserve keep all existing slot information while adding the party size. This helps Google receive correctly formatted booking details and reduces the risk of failed or inaccurate appointment updates.
Original PR description
The controller incorrectly modified the given "slot" to only contain the party size key. Instead, it should update the information to add this key next to the existing ones, and in turn return a properly formatted slot to Google. Task-3083812 Forward-Port-Of: odoo/enterprise#92839
The Denmark RSU module name was updated to align with the naming used by other Denmark-related modules. This makes the module easier to recognize and keeps naming consistent for users and administrators.
Original PR description
This commit will edit the name of the module to be consistent with the other denmark modules no task id Forward-Port-Of: odoo/enterprise#92759
This update fixes an unreliable payroll test related to employee departure notices in Belgium. By setting a fixed test date, the notice duration is calculated consistently, helping prevent false test failures and improving confidence in payroll updates.
Original PR description
In this PR, we fixed the failed test realted to employee departure notice. The main reason, is that the time is not freezed in the test, which will affect the caclulated notice duration for departure. As a fix, we freezed the test time. Related task: 5030553.
Fixed an issue where the email editor in Documents could appear too short, making it harder for users to write messages comfortably. The editor now keeps its intended height when Documents is installed, improving usability without changing workflows.
Original PR description
Previously, the mail composer editor size was only a few lines long if documents was installed. This is because the mail composer override widget implemented in documents caused a CSS class matching the overriden widget to be removed, neutralizing the "min-height" attribute of the editor. This commit readds the overriden widget's CSS class alongside the override, allowing the editor to regain its appropriate height. (This is one of two propositions to fix this bug; please refer to the community PR for the other proposition.) task-5010871
This update corrects an automated payroll test flow related to Belgian employee job changes. It helps keep payroll contract validation reliable by aligning the test with current salary configuration behavior and required employee information.
Original PR description
This commit fixes multiple issues with the hr_contract_salary_tour_job_change tour: - The date version was updated to 2020 to avoid failure with rule parameters only available from this year - As the link was removed in 18.5, the test needed adaptations to get the correct link to go on the salary configurator page - With the version modification, the personnal information (stored on the version) need to be specified as we are using a contract template task-5028648
FedEx shipping requests now send province or state codes in the format FedEx expects, without an added country prefix. This helps prevent delivery label or rate requests from failing for countries where regional codes normally include the country code, such as Sweden.
Original PR description
Before this commit: The province code for some countries includes the country code too. FedEx expects a two letter code in the request. For example, the standard code for Stockholms lan is "SE-AB" and the code FedEx expects is "AB". After this commit: The country code is excluded from the province code. opw-4984662 Forward-Port-Of: odoo/enterprise#92650
This fixes test validation for Brazilian AvaTax requests so expectations match whether the related EDI module is installed. It helps keep automated checks stable without changing customer-facing tax behavior.
Original PR description
The PR #90703 introduced a mocking system for tests in the br modules, however, there was an issue with this in the expected requests validation. l10n_br_edi extends…
The PR #90703 introduced a mocking system for tests in the br modules, however, there was an issue with this in the expected requests validation. l10n_br_edi extends `_prepare_l10n_br_avatax_document_line_service_call` to always include the `itemCode` key in the Avatax or Edi request, as such this causes test cases to fail depending on module installation state. If _edi is installed, it expects the request to contain itemCode, if it isn't installed, the request is expected to not contain this key. A fix for this is to check the state of the current database and see if the module is installed, and include or remove that key from the json as necessary. This fix appears to be the smallest in terms of diff to solve the issue, one of the other options is to override test cases in l10n_br_edi to support the new key but that means that any new test cases that uses this in the future will need to duplicate their code to _edi as well. We may readdress this in the future with different approach but this solves the nightly runbot issues from single app test. runbot-230967
This update fixes an automated Planning test by removing an extra shift created during the test flow. It helps keep the test aligned with the intended scenario, reducing false failures and improving confidence in future Planning changes.
Original PR description
In this commit, we remove additionnal shift when it is created because we don't need it in this tour.
This update fixes an automated test related to batch payments so it works reliably in Python 3.13. It helps keep accounting quality checks stable across newer technology environments without changing user-facing behavior.
Original PR description
**Issue:** "test_partner_account_batch_payments_with_journal_entry" is failing when executed in a Python 3.13 env. **Cause:** Sorting the account move lines on a tuple doesn't necessarily result in the same order between version 3.13 and previous ones. runbot-230794 Forward-Port-Of: odoo/enterprise#92357
Products that are neither sellable nor rentable no longer appear as selectable items when creating a standard sales order. This prevents sales teams from accidentally adding unavailable products and adds test coverage to protect the behavior.
Original PR description
This PR adds a test for the explained case which was solved by: - PR https://github.com/odoo/enterprise/pull/91701 - Commit…
This PR adds a test for the explained case which was solved by: - PR https://github.com/odoo/enterprise/pull/91701 - Commit https://github.com/odoo/enterprise/commit/a2bbf33f5e787420389f1550d8e66b7b6995dc75 #### Issue: Not rentable product were displayed in sale order product dropdown list whether they were salable or not #### Step to reproduce: - install Sale, Rental, - create a product no Sales, no Rental - create a new sale order #### Current behavior: - your product appears in the dropdown list to add a product #### Expected behavior: - your product shouldn't appear in the dropdown list to add a product #### Cause: - From the commit [d5f72c2](https://github.com/odoo/enterprise/commit/d5f72c201bf0642f2f47315f06468528268251a3) domain for rental are computed on back end. - sale_renting module override the `_domain_product_id()` method. It add a OR to the domain on `'rent_ok' = order_is_rental`. Therefore, if one create a sale order outside of the rental app, every not rentable product is displayed. #### Solution: - This domain should apply only if `order_is_rental` is enabled. Therefore add a AND to check if `order_is_rental` is enabled. opw-4966082 Forward-Port-Of: odoo/enterprise#91210
This fix ensures that file uploads are consistently recognized as being in progress across several Odoo Enterprise apps. It helps prevent timing-related errors when users add files to messages, comments, knowledge articles, helpdesk content, spreadsheets, or WhatsApp conversations.
Original PR description
\* = knowledge, test_mail_enterprise, test_spreadsheet_edition, website_helpdesk_knowledge, whatsapp Enterprise counter-part. https://runbot.odoo.com/odoo/error/230901 https://github.com/odoo/odoo/pull/223367 Forward-Port-Of: odoo/enterprise#92796 Forward-Port-Of: odoo/enterprise#92620
Bank statement labels are now handled more safely when matching reconciliation rules. This prevents special characters in payment references or descriptions from disrupting automated matching, helping reduce missed or incorrect matches.
Original PR description
This commit will change the way we normalise the label. We now firstly check that the label is a structure reference and if so we don't escape the numbers. Otherwise, we do an escape of the label and the numbers. Escaping the label will allow to avoid case where we use character like * or . that would mess up the match regex. Example: '+++344/0660/16938+++' will be \\+\\+\\+344\\/0660\\/16938\\+\\+\\+ 'This is a test' will be 'This\\ is\\ a\\ test' task-5023114 Forward-Port-Of: odoo/enterprise#92616