Daily updates from Odoo
Wednesday, March 5, 2025
24 changes · master
Enhancements to existing features
This update simplifies how lists are written inside translated messages across several Odoo apps. It helps reduce translation complexity and supports more consistent wording for users in different languages, with no expected change to business workflows.
Original PR description
Following the related community commit, we can remove a lot of explicit list formatting in translated strings. [task-4533664](https://www.odoo.com/odoo/project.task/4533664) Related to https://github.com/odoo/odoo/pull/197702
Belgian payroll DMFA exports now remove special characters from code values and keep only the digits. This helps produce cleaner export files and reduces the risk of formatting issues when submitting or processing payroll data.
Original PR description
- extended `CSVExport` and `ExcelExport` controllers, and checked what model it is. - when it is our intended model (`l10n_be_hr_payroll`), `from_data` method will now remove the special characters from the DMFA code, and only export the digits as a Code. task-4502689
Resolved issues and error corrections
This fix prevents document uploads from crashing when a customized action creates or changes a token incorrectly. It makes the Documents app more reliable in environments with custom workflows, reducing interruptions for users handling file uploads.
Original PR description
Bug === Some custom actions might change the token for some reason, if that code is badly implemented, it will result in a crash when uploading on the request. Task-4492764
Miscellaneous changes
## [FIX] sign: set email address to admin user Before this commit, the test `/sign:TestUi.test_ui` fails in no demo because no email address is set on admin user. This commit fixes the issue by setting an email address inside the test before launching the tour. runbot-error-98514 ## [FIX] knowledge: make sure admin user has email set in no demo Before this commit, `/knowledge:TestKnowledgeEditorCommands.test_knowledge_article_commands_tour` fails because the admin user does not
Original PR description
## [FIX] sign: set email address to admin user Before this commit, the test `/sign:TestUi.test_ui` fails in no demo because no email address is set on admin user. This commit fixes the issue by setting an email address inside the test before launching the tour. runbot-error-98514 ## [FIX] knowledge: make sure admin user has email set in no demo Before this commit, `/knowledge:TestKnowledgeEditorCommands.test_knowledge_article_commands_tour` fails because the admin user does not have an email address set. This commit makes sure the email address is set on admin user before launching the tour to be sure the tour can be executed without any issue in no demo. Forward-Port-Of: odoo/enterprise#80742
Problem: When the user views the SLA tickets through the action, action_view_success_rate, they will only see successful SLA tickets after removing the 'SLA success' filter. Purpose: The user should be able to see all SLA tickets, successful and failed, after removing filters. Steps to Reproduce on Runbot: 1. Install Helpdesk 2. Navigate to Helpdesk and click on 'Success Rate' for Customer Care team 3. Remove filter 'SLA success' 4. Observe that failed SLA tickets doesn't display op
Original PR description
Problem: When the user views the SLA tickets through the action, action_view_success_rate, they will only see successful SLA tickets after removing the 'SLA success' filter. Purpose: The user should be able to see all SLA tickets, successful and failed, after removing filters. Steps to Reproduce on Runbot: 1. Install Helpdesk 2. Navigate to Helpdesk and click on 'Success Rate' for Customer Care team 3. Remove filter 'SLA success' 4. Observe that failed SLA tickets doesn't display opw-4601178 Forward-Port-Of: odoo/enterprise#80087
Purpose ======= Fix the display of the resource on the validation page when in 'time_auto_assign'. Specification ============= If the apt type setting is: - 'time_auto_assign' and 'no_picture': resource(s) not displayed - 'time_auto_assign' and 'picture': if one resource -> displayed on the right with its picture if more than one resource -> displayed in the validation details related commit: odoo/enterprise@9fe0c7ab9f3276e9a79ba79831660ee0d7787582 Task-4395325 Forward-Port-Of: o
Original PR description
Purpose ======= Fix the display of the resource on the validation page when in 'time_auto_assign'. Specification ============= If the apt type setting is: - 'time_auto_assign' and 'no_picture': resource(s) not displayed - 'time_auto_assign' and 'picture': if one resource -> displayed on the right with its picture if more than one resource -> displayed in the validation details related commit: odoo/enterprise@9fe0c7ab9f3276e9a79ba79831660ee0d7787582 Task-4395325 Forward-Port-Of: odoo/enterprise#75438
In this commit [e366986](https://github.com/odoo/enterprise/commit/e36698683d984d8a1761809b85b591084ff37ed9), we used a rpc call in a function, but as the rpc is no more a service but a function, this is broken in this version. This commit fix the rpc call to use it as a function and not a service. no-task Forward-Port-Of: odoo/enterprise#80596
Original PR description
In this commit [e366986](https://github.com/odoo/enterprise/commit/e36698683d984d8a1761809b85b591084ff37ed9), we used a rpc call in a function, but as the rpc is no more a service but a function, this is broken in this version. This commit fix the rpc call to use it as a function and not a service. no-task Forward-Port-Of: odoo/enterprise#80596
The way the queries were formatted was prone to create injections (though it didn't in this case). This commit makes proper use of the SQL formatter to avoid that and make the code more robust. Forward-Port-Of: odoo/enterprise#80620 Forward-Port-Of: odoo/enterprise#80493
Original PR description
The way the queries were formatted was prone to create injections (though it didn't in this case). This commit makes proper use of the SQL formatter to avoid that and make the code more robust. Forward-Port-Of: odoo/enterprise#80620 Forward-Port-Of: odoo/enterprise#80493
Steps to reproduce: 1) Configure 2 rental products (product1 and product2) 2) Add at least 1 pricing period to product2 3) Set product2 as accessory product to product1 4) Go to /shop page and add product1 5) Go to the cart and observe the broken layout of suggested accessories opw-4463981 Forward-Port-Of: odoo/enterprise#80385 See also: - https://github.com/odoo/odoo/pull/199815
Original PR description
Steps to reproduce:
1) Configure 2 rental products (product1 and product2)
2) Add at least 1 pricing period to product2
3) Set product2 as accessory product to product1
4) Go to /shop page and add product1
5) Go to the cart and observe the broken layout of suggested
accessories
opw-4463981
Forward-Port-Of: odoo/enterprise#80385
See also:
- https://github.com/odoo/odoo/pull/199815__Steps to reproduce:__ 1. Create a project (billable). 2. Give the user access to Company A + B, while the default is A 3. Add a task with a customer belonging to company B 4. Create a task and add products to it. __Description of the issue:__ - The **"Decrease"** button is disabled, with raised error message that the amount is delivered. - This happens because the domain fetching `stock.move` uses user’s default company instead of SO’s company which leads to the wrong default WH _
Original PR description
__Steps to reproduce:__ 1. Create a project (billable). 2. Give the user access to Company A + B, while the default is A 3. Add a task with a customer belonging to company B 4. Create a task and add products to it. __Description of the issue:__ - The **"Decrease"** button is disabled, with raised error message that the amount is delivered. - This happens because the domain fetching `stock.move` uses user’s default company instead of SO’s company which leads to the wrong default WH __Description of the solution:__ - Update warehouse logic to fetch the default warehouse using the SO’s company context, ensuring `stock.move` domain aligns with the sale order’s company - opw-4471366 Forward-Port-Of: odoo/enterprise#80007
- Positive-Negative total amounts were set to `''` instead of `'000000000000000'` when they were zero. - In the descriptive field there's now the reconciled moves name and not the batch payment name. - File import we use for troubleshooting used to read the field `creditor_sia_code` as `int` but it's `alnum`. - `negative_amount` amount was the sum of the payment amounts, and it has some rounding differences. Now I'm using the Batch Payment amount. - The total in the description field of each
Original PR description
- Positive-Negative total amounts were set to `''` instead of `'000000000000000'` when they were zero. - In the descriptive field there's now the reconciled moves name and not the batch payment name. - File import we use for troubleshooting used to read the field `creditor_sia_code` as `int` but it's `alnum`. - `negative_amount` amount was the sum of the payment amounts, and it has some rounding differences. Now I'm using the Batch Payment amount. - The total in the description field of each payment section is correct, but it was rounded incorrectly instead in another field on the first row of the section. - Now using ASCII instead of UTF8 - accents are changed to apostrophes as per the Company Registry in Italy - `payment_date` in record `14` should be `invoice_date_due` - Test has been adjusted. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4535559) opw-4535559 Forward-Port-Of: odoo/enterprise#80628 Forward-Port-Of: odoo/enterprise#78827
### Steps to reproduce: - Create a draft vendor bill - Go to Accounting > Reporting > General Ledger - Include draft entries in the report - Click the three dots on a posted entry and view the entry - Reset it to draft - Delete the name of the entry and save - Return to the General Ledger - Type something in the search bar - Error ### Cause: This flow automatically search on the lines but draft lines have no name (null) so it crashes on `const lineName = line.name.trim().toLowerCase
Original PR description
### Steps to reproduce: - Create a draft vendor bill - Go to Accounting > Reporting > General Ledger - Include draft entries in the report - Click the three dots on a posted entry and view the entry - Reset it to draft - Delete the name of the entry and save - Return to the General Ledger - Type something in the search bar - Error ### Cause: This flow automatically search on the lines but draft lines have no name (null) so it crashes on `const lineName = line.name.trim().toLowerCase();`. ### Solution: Ignore lines with no names when searching. opw-4589598 Forward-Port-Of: odoo/enterprise#80364
When an existing bike is selected when signing a new contract, the future driver is not set on the biked, so it is not reserved and can be taken by multiple people. Also when you unselect 'transport_mode_bike' on an existing contract, the bike_id is not removed (but invisible), which leads to prevent any person with this kind of contract to select a bike in an offer. (same behavior with new bike, the model is not removed) Forward-Port-Of: odoo/enterprise#80658
Original PR description
When an existing bike is selected when signing a new contract, the future driver is not set on the biked, so it is not reserved and can be taken by multiple people. Also when you unselect 'transport_mode_bike' on an existing contract, the bike_id is not removed (but invisible), which leads to prevent any person with this kind of contract to select a bike in an offer. (same behavior with new bike, the model is not removed) Forward-Port-Of: odoo/enterprise#80658
This PR will add new reports for the danish localisation. The new reports are a minimal version of what was already there since we received some comments that for a lot of companies the report has too much details. Also when doing the PR, we saw that some name in the old reports where not well formatted and so not consistent with the rest of the reports. This PR will also re-export the translation. Forward-Port-Of: odoo/enterprise#79722 Forward-Port-Of: odoo/enterprise#72879
Original PR description
This PR will add new reports for the danish localisation. The new reports are a minimal version of what was already there since we received some comments that for a lot of companies the report has too much details. Also when doing the PR, we saw that some name in the old reports where not well formatted and so not consistent with the rest of the reports. This PR will also re-export the translation. Forward-Port-Of: odoo/enterprise#79722 Forward-Port-Of: odoo/enterprise#72879
Problem ---------- Amendments to PAYE computation from 27 Dec 2024 Objective ---------- Correct the Kenya Payroll computation with the new rules from the 27 Dec 2024 Solution ---------- Adapt rules and parameters task-4457038 Forward-Port-Of: odoo/enterprise#80378
Original PR description
Problem ---------- Amendments to PAYE computation from 27 Dec 2024 Objective ---------- Correct the Kenya Payroll computation with the new rules from the 27 Dec 2024 Solution ---------- Adapt rules and parameters task-4457038 Forward-Port-Of: odoo/enterprise#80378
Recently, the Kenyan support team has been reporting a temporary increase in the number of timeouts when sending invoices to eTIMS, as well as associated issues (e.g. timed-out invoices turning out to be actually registered on eTIMS' side) which warrant further investigation. In order to reduce the number of timeouts and help diagnose (1) which API endpoints are timing out (which can tell us where we should implement retry mechanisms) and (2) whether the timed-out invoices are always or somet
Original PR description
Recently, the Kenyan support team has been reporting a temporary increase in the number of timeouts when sending invoices to eTIMS, as well as associated issues (e.g. timed-out invoices turning out to be actually registered on eTIMS' side) which warrant further investigation. In order to reduce the number of timeouts and help diagnose (1) which API endpoints are timing out (which can tell us where we should implement retry mechanisms) and (2) whether the timed-out invoices are always or sometimes registered on eTIMS' side, we: - Increase the timeout of eTIMS calls to 2 minutes; - Log every timeout in the server logs; and - Log every invoice timeout in the invoice chatter. task-4624257 Forward-Port-Of: odoo/enterprise#80726 Forward-Port-Of: odoo/enterprise#80672
Until 18.0 [1], test classes should not inherit from other test classes which themselves contain tests. When this happens, the tests of the parent class are run for every class that inherits from it. We fix occurrences of this for social marketing apps. A naive detection script is available on the pad of the related task. [1]: 6dc96811c24ec4c97b8fbd2489aef6d4f061ac03 task-3792478 Forward-Port-Of: odoo/enterprise#80654 Forward-Port-Of: odoo/enterprise#80034
Original PR description
Until 18.0 [1], test classes should not inherit from other test classes which themselves contain tests. When this happens, the tests of the parent class are run for every class that inherits from it. We fix occurrences of this for social marketing apps. A naive detection script is available on the pad of the related task. [1]: 6dc96811c24ec4c97b8fbd2489aef6d4f061ac03 task-3792478 Forward-Port-Of: odoo/enterprise#80654 Forward-Port-Of: odoo/enterprise#80034
ASP-ONE.FR is now a brand of Tessi Informatique and we have to update the information passed in the xml. task-4605970 Forward-Port-Of: odoo/enterprise#80609 Forward-Port-Of: odoo/enterprise#80219
Original PR description
ASP-ONE.FR is now a brand of Tessi Informatique and we have to update the information passed in the xml. task-4605970 Forward-Port-Of: odoo/enterprise#80609 Forward-Port-Of: odoo/enterprise#80219
Steps to reproduce: -Make multiple sales and assign a salesman to it in order to have a commission -Go to My Commissions -Add a Group By -The Achieved Rate column is displaying the sum of the achieved rates instead but it shouldn't display anything Problem: When making a group by on the commissions view and enabling the optional column achieved rate, the result of this group by would be the sum of all the achieved rate for this group, which is not correct. As it was decided that it made
Original PR description
Steps to reproduce: -Make multiple sales and assign a salesman to it in order to have a commission -Go to My Commissions -Add a Group By -The Achieved Rate column is displaying the sum of the achieved rates instead but it shouldn't display anything Problem: When making a group by on the commissions view and enabling the optional column achieved rate, the result of this group by would be the sum of all the achieved rate for this group, which is not correct. As it was decided that it made no sense, the total would not be displayed anymore. https://github.com/odoo/enterprise/blob/a0215115c13d5e32f1ba3c821f138b188083e76b/sale_commission/report/commission_report.py#L19 Fix: The aggregator parameter was used to prevent the total to be displayed. opw-4512739 Forward-Port-Of: odoo/enterprise#78537
This PR adapts access rights so that Worldline folder 'ctep' can be deleted by 'delete_iot_handlers' Forward-Port-Of: odoo/enterprise#80283
Original PR description
This PR adapts access rights so that Worldline folder 'ctep' can be deleted by 'delete_iot_handlers' Forward-Port-Of: odoo/enterprise#80283
This commit adds the missing neutralization necessary for the pos_tyro module introduced in 18.0 in [1] The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly
Original PR description
This commit adds the missing neutralization necessary for the pos_tyro module introduced in 18.0 in [1] The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. [1] https://github.com/odoo/enterprise/pull/79432 Forward-Port-Of: odoo/enterprise#80574
"Customs" was translated to "Pedimiento" instead of "Pedimento". Have also updated / re-exported the po and pot files to keep them in sync. opw-4507567 Forward-Port-Of: odoo/enterprise#80511 Forward-Port-Of: odoo/enterprise#78933
Original PR description
"Customs" was translated to "Pedimiento" instead of "Pedimento". Have also updated / re-exported the po and pot files to keep them in sync. opw-4507567 Forward-Port-Of: odoo/enterprise#80511 Forward-Port-Of: odoo/enterprise#78933
Mod349 tax report in Spanish localization should report the total number of intra-community operators and a following details of each operation type Currently if the user decide to unset the field l10n_es_reports_mod349_invoice_type on an intra-community invoice (because of a mistake or an exception) the Mod349 will still report the invoice in the total number of intra community operators but no operation will be reported in the following section Steps to reproduce: - With an ES company se
Original PR description
Mod349 tax report in Spanish localization should report the total number of intra-community operators and a following details of each operation type Currently if the user decide to unset the field l10n_es_reports_mod349_invoice_type on an intra-community invoice (because of a mistake or an exception) the Mod349 will still report the invoice in the total number of intra community operators but no operation will be reported in the following section Steps to reproduce: - With an ES company setup - Create 1 invoice to an EU partner - Make sure Mod349 Invoice Type is unset - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operators is 1, but no operation is shown opw-4403287 Forward-Port-Of: odoo/enterprise#80458 Forward-Port-Of: odoo/enterprise#80253
This PR aims to automatically set the status of a “Rejected” document to “Cancelled” while preserving the sequence number assigned by DGI (based on the CAE) to ensure all documents, including rejected ones, remain in the system with their original sequence. This is to maintain proper accounting records and provides visibility of all rejected documents. Forward-Port-Of: odoo/enterprise#80597 Forward-Port-Of: odoo/enterprise#76931
Original PR description
This PR aims to automatically set the status of a “Rejected” document to “Cancelled” while preserving the sequence number assigned by DGI (based on the CAE) to ensure all documents, including rejected ones, remain in the system with their original sequence. This is to maintain proper accounting records and provides visibility of all rejected documents. Forward-Port-Of: odoo/enterprise#80597 Forward-Port-Of: odoo/enterprise#76931