Daily updates from Odoo
Wednesday, May 28, 2025
21 changes · master
Enhancements to existing features
The update tightens internal checks so certain business rule constraints must use clear, valid names. This helps prevent configuration or upgrade issues in HR and payroll-related modules without changing day-to-day user workflows.
Original PR description
odoo/odoo#211222
The Indian payroll payment advice report now shows the final total in words and includes the cheque date alongside the cheque number. The payment advice wording was also updated, making the report easier to read and reference for payroll and banking processes.
Original PR description
- Added final total in words on the advice report. - Included cheque date after the cheque number for better reference. - Updated advice sentence. task-4652034
Marc Demo's access rights have been restored across service-related demo data. This helps demo environments work as expected for helpdesk, field service, and planning scenarios.
Resolved issues and error corrections
This update keeps the AI assistant feature compatible with recent platform changes by using the new content-selection method. It helps avoid failures when users interact with selected page content through the AI tool.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/209228 The Community side of this PR removes `getTraversedNodes` and `getSelectedNodes` and replaces them with `getTargetedNodes`. This accordingly replaces a call to `getTraversedNodes` with one to `getTargetedNodes`. task-4809282
Features or functions removed from Odoo
An outdated rental configurator test module was removed because rental products no longer use this configurator. Existing tests in the main rental sales modules now cover the relevant behavior, reducing duplicate maintenance work without affecting users.
Original PR description
Rental doesn't have a configurator anymore since 17, there is no need for a specific module to test integration with other configurators. Furthermore, the refactorings of the configurators already introduced clean tests in `sale_renting` (and `website_sale_renting`) modules, so there is no need to keep the tour of this module.
Code cleanup and technical improvements
This update standardizes internal VoIP data field names so they match the naming used elsewhere in Odoo. It supports an underlying platform cleanup by removing reliance on an older renaming mechanism, with no intended change to daily VoIP behavior.
Original PR description
The discuss team maintaining the `Store` code is getting rid of the `rename` feature. So, this pr updates the code of the VoIP JS models to use the same naming convention as the python code. Task-4801651
This update tidies the internal setup files for Odoo Subscriptions by improving file organization, clarifying menu structure, and removing duplicate definitions. It should make future maintenance easier without changing day-to-day subscription workflows for users.
Miscellaneous changes
**Issue:** In a swiss company, when a user clicks on "Prepare Data" for a salary certificate rectification, an error occurs. **Steps to reproduce:** - make sure l10n_ch_hr_payroll_elm_transmission is installed and you're in a swiss company - Payroll > Transmission > Salary Certificate Rectification - create a new declaration and fill the form with a newly created previous declaration - click on "Prepare Data" A traceback is raised opw-4687938 Forward-Port-Of: odoo/enterprise#832
Original PR description
**Issue:** In a swiss company, when a user clicks on "Prepare Data" for a salary certificate rectification, an error occurs. **Steps to reproduce:** - make sure l10n_ch_hr_payroll_elm_transmission is installed and you're in a swiss company - Payroll > Transmission > Salary Certificate Rectification - create a new declaration and fill the form with a newly created previous declaration - click on "Prepare Data" A traceback is raised opw-4687938 Forward-Port-Of: odoo/enterprise#83261
Prior to this commit, the creator box used the old version of the app icon (with gradients). This commit updates this icon to use the last version. task-4709035 | Before | After | |--------|--------| |  |  | Forward-Port-Of: odoo/enterprise#861
Original PR description
Prior to this commit, the creator box used the old version of the app icon (with gradients). This commit updates this icon to use the last version. task-4709035 | Before | After | |--------|--------| |  |  | Forward-Port-Of: odoo/enterprise#86191 Forward-Port-Of: odoo/enterprise#83242
runbot-error-224154 Forward-Port-Of: odoo/enterprise#86536
Original PR description
runbot-error-224154 Forward-Port-Of: odoo/enterprise#86536
We have included deductible expense rates for Belgium - but the starting dates default to the module installation date. In most cases they should apply historically too. task-4813998 Forward-Port-Of: odoo/enterprise#86234
Original PR description
We have included deductible expense rates for Belgium - but the starting dates default to the module installation date. In most cases they should apply historically too. task-4813998 Forward-Port-Of: odoo/enterprise#86234
In https://github.com/odoo/odoo/commit/6d2bfc85bc0e387fbf4d3a64eb15b18ec59e9b47 we removed an explicit flush performed right after move creation. Because of this change, when fetching data for the sie import we might not see all the relevant lines. We need to ensure to flush any data left in cache before making a SQL query no opw Forward-Port-Of: odoo/enterprise#86107 Forward-Port-Of: odoo/enterprise#82292
Original PR description
In https://github.com/odoo/odoo/commit/6d2bfc85bc0e387fbf4d3a64eb15b18ec59e9b47 we removed an explicit flush performed right after move creation. Because of this change, when fetching data for the sie import we might not see all the relevant lines. We need to ensure to flush any data left in cache before making a SQL query no opw Forward-Port-Of: odoo/enterprise#86107 Forward-Port-Of: odoo/enterprise#82292
Versions -------- - 17.0+ Steps ----- 1. Go to Automation Rules; 2. create a new automation; 3. set model to `product.pricing`; 4. in one of the filters, check the record(s) that fit in the domain. Issue ----- > EvalError: Can not evaluate python expression: (bool(parent.product_variant_count < 2)) > Error: Name 'parent' is not defined Cause ----- `parent` is not defined because the `product_variant_ids` field in the view does not have a parent field to evaluate. Solution
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Go to Automation Rules; 2. create a new automation; 3. set model to `product.pricing`; 4. in one of the filters, check the record(s) that fit in the domain. Issue ----- > EvalError: Can not evaluate python expression: (bool(parent.product_variant_count < 2)) > Error: Name 'parent' is not defined Cause ----- `parent` is not defined because the `product_variant_ids` field in the view does not have a parent field to evaluate. Solution -------- Remove the `parent` checks. opw-4788215 Forward-Port-Of: odoo/enterprise#86384
…de for payslip display We increase the size of the external CH code to not impact payslip display Forward-Port-Of: odoo/enterprise#86299
Original PR description
…de for payslip display We increase the size of the external CH code to not impact payslip display Forward-Port-Of: odoo/enterprise#86299
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Refere
Original PR description
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Reference: [Reglas de Validación actualizado al 21/04/2025 (Nuevo)](https://cpe.sunat.gob.pe/sites/default/files/inline-files/AjustesValidacionesCPEv20250421.xlsx) Forward-Port-Of: odoo/enterprise#85917
The rental_cart_update_duration tour was failing due to a timeout while selecting for the .o_time_picker_select:eq(0) element. This change add a wait step was to ensure the rental options are fully loaded before proceeding. Avoiding flaky behavior caused by timing issues in the UI. build_error-161173 Forward-Port-Of: odoo/enterprise#85526 Forward-Port-Of: odoo/enterprise#85393
Original PR description
The rental_cart_update_duration tour was failing due to a timeout while selecting for the .o_time_picker_select:eq(0) element. This change add a wait step was to ensure the rental options are fully loaded before proceeding. Avoiding flaky behavior caused by timing issues in the UI. build_error-161173 Forward-Port-Of: odoo/enterprise#85526 Forward-Port-Of: odoo/enterprise#85393
Due to this commit: https://github.com/odoo/odoo/commit/420c64c9e9d4b3b0f3e51f1a41774587a04fbf2e (PR: https://github.com/odoo/odoo/pull/197868), create now only accepts list or tuples and this one raise because it was using dict_values. opw-4803277 Forward-Port-Of: odoo/enterprise#86283
Original PR description
Due to this commit: https://github.com/odoo/odoo/commit/420c64c9e9d4b3b0f3e51f1a41774587a04fbf2e (PR: https://github.com/odoo/odoo/pull/197868), create now only accepts list or tuples and this one raise because it was using dict_values. opw-4803277 Forward-Port-Of: odoo/enterprise#86283
* Previously, the domain only included payments in the "in_process" state, which is incorrect when only the Invoicing app is installed -paid payments should also be allowed-. * Test was failing with single app installed when accountant module was not installed. When only Invoicing, we can validate a batch payment even when payments are in paid state, so the Warning was not raised causing tests to fail. Forward-Port-Of: odoo/enterprise#86357 Forward-Port-Of: odoo/enterprise#86217
Original PR description
* Previously, the domain only included payments in the "in_process" state, which is incorrect when only the Invoicing app is installed -paid payments should also be allowed-. * Test was failing with single app installed when accountant module was not installed. When only Invoicing, we can validate a batch payment even when payments are in paid state, so the Warning was not raised causing tests to fail. Forward-Port-Of: odoo/enterprise#86357 Forward-Port-Of: odoo/enterprise#86217
Currently the SEPA mandate auto validation is done when the payment ref of the statement line is the same as the name of the payment transaction and that the partner id matches between SEPA mandate and statement line. Issue is that some flows (at least the bank synchronization handled through `account_online_synchronization` and odoofin) do not set the partner id on the bank statement line (until reconciliation) but provide it first through the `partner_name` field. To ensure those flows w
Original PR description
Currently the SEPA mandate auto validation is done when the payment ref of the statement line is the same as the name of the payment transaction and that the partner id matches between SEPA mandate and statement line. Issue is that some flows (at least the bank synchronization handled through `account_online_synchronization` and odoofin) do not set the partner id on the bank statement line (until reconciliation) but provide it first through the `partner_name` field. To ensure those flows work fine with SEPA, we should also match transactions and statement lines whose partners names match when there is no partner_id set on the bank statement line. opw-4536189 Forward-Port-Of: odoo/enterprise#85965
This reverts commit https://github.com/odoo/enterprise/commit/d77df0ea4d3b410d210307976f995d9abdc6c97b. Indeed, for security reasons, it is preferable to avoid calling safe_eval whenever possible. Note that in https://github.com/odoo/odoo/pull/208876 a new mechanism is introduced in order to block the creation of expressions in domain fields where we only want domains with litterals because they are evaluated with literal_eval. Forward-Port-Of: odoo/enterprise#85960 Forward-Port-Of: odoo/enter
Original PR description
This reverts commit https://github.com/odoo/enterprise/commit/d77df0ea4d3b410d210307976f995d9abdc6c97b. Indeed, for security reasons, it is preferable to avoid calling safe_eval whenever possible. Note that in https://github.com/odoo/odoo/pull/208876 a new mechanism is introduced in order to block the creation of expressions in domain fields where we only want domains with litterals because they are evaluated with literal_eval. Forward-Port-Of: odoo/enterprise#85960 Forward-Port-Of: odoo/enterprise#85298
Have esg_project installed Got to ESG => Act => Initiatives Check the url Before this commit, the url was /odoo/tasks. This posed a number of issues: - Copying this URL in another browser crashed because the context of this action was lost - Entering then leaving studio crashed too, for the same reason. After this commit, the path of the action is correct and reloading it in another browser works correctly. runbot-error-198568 Forward-Port-Of: odoo/enterprise#86402
Original PR description
Have esg_project installed Got to ESG => Act => Initiatives Check the url Before this commit, the url was /odoo/tasks. This posed a number of issues: - Copying this URL in another browser crashed because the context of this action was lost - Entering then leaving studio crashed too, for the same reason. After this commit, the path of the action is correct and reloading it in another browser works correctly. runbot-error-198568 Forward-Port-Of: odoo/enterprise#86402