Wednesday, February 19, 2025
28 changes · saas-17.4
Resolved issues and error corrections
This fixes a website issue where SEO notifications could fail to appear after a page was created, published, edited, and saved without reloading. The change helps editors receive the right SEO guidance at the right time, while avoiding unnecessary notifications.
Original PR description
**Steps to Reproduce:** 1. Create a new page using the **"New"** button and save it. 2. Publish the page using the **"Publish/Unpublish"** button. 3. Enter **Edit** mode (without reloading the page), update the page content, and save. 4. The SEO notification does not appear. **Reason for Change:** This PR fixes an issue where SEO notifications were not displayed after creating, publishing, editing, and saving a page. The fix ensures SEO data includes the website's publish status, which was previously missing in [1](https://github.com/odoo/odoo/commit/45ea6e4a4a5c8e314b110a45198fbe3d57bb996e). This update guarantees that the notification appears only when necessary. task- 4046471
Installing the Field Service sales report module no longer fails if the default Field Service product was previously deleted. This avoids a blocking setup error and lets businesses add the reporting feature without restoring deleted sample or default product data first.
Original PR description
Currently a `ParseError` is arising when the user installs the `industry_fsm_sale_report` module after deleting `Field Service` product from the products.
Steps to reproduce:
---
- Install the `industry_fsm_sale` module
- Delete `Field Service` from products
- Now install `industry_fsm_sale_report` module
Traceback:
---
```
Exception: Cannot update missing record 'industry_fsm_sale.field_service_product'
ParseError: while parsing /home/odoo/src/enterprise/saas-18.1/industry_fsm_sale_report/data/product_product_data.xml:4, somewhere inside <record id="industry_fsm_sale.field_service_product" model="product.product">
<field name="worksheet_template_id" ref="industry_fsm_report.fsm_worksheet_template"/>
</record>
```
This commit solves the above issue by using `forcecreate="False"` to bypass record creation if it violates checks.
sentry-5731062091Payroll Officers can now see and use the "Report in Next Payslip" button on employee expenses. This fixes an access issue where only accountants could perform this payroll-related action, helping payroll teams process reimbursements without unnecessary handoffs.
Original PR description
Only the accountant was able to see and use the 'Report in Next Payslip' button, this commit enables the Payroll Officer to use it. task-4481091
Miscellaneous changes
### Steps to reproduce: - In the settings: - Add a second language say FR + Change the language - Enable Multi-step routes - Put your warehouse in receipt in 2-steps. - Create a storable product with a different FR name and a set vendor - Click on the "Reordering Rules" smart button of the product form - Create a reordering rule using the buy route for your product - Add a quantity to reorder > "Order Once" - Open the associated purchase order in a second window - Repeat the operation
Original PR description
### Steps to reproduce: - In the settings: - Add a second language say FR + Change the language - Enable Multi-step routes - Put your warehouse in receipt in 2-steps. - Create a storable product with…
### Steps to reproduce: - In the settings: - Add a second language say FR + Change the language - Enable Multi-step routes - Put your warehouse in receipt in 2-steps. - Create a storable product with a different FR name and a set vendor - Click on the "Reordering Rules" smart button of the product form - Create a reordering rule using the buy route for your product - Add a quantity to reorder > "Order Once" - Open the associated purchase order in a second window - Repeat the operation of adding a quantity to reorder > "Order Once" ** A new POL is created instead of being merged to the first one** ### Cause of the issue: Clicking on Order once will trigger a call of the `_run_pull`. At the end of this call, a stock move will be created and confirmed but the user of the env will be replaced by a SUPERUSER_ID for access rights purposes: https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/stock/models/stock_rule.py#L283-L286 However, while the move data's were correctly generated using the language of the user that clicked on order once: https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/stock/models/stock_rule.py#L278 https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/stock/models/stock_rule.py#L315 The language that will be used during the action confirm to compare with the picking description in the procurement values will be the language of the new user that is the SUPERUSER_ID in en_US: https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/stock/models/stock_move.py#L1451-L1456 This will lead to a set (and incorrect) `product_description_variants` on that procurement. However, this value will be used to determine in the `_run_buy` if an existing POL could absorb the newly created need: https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/purchase_stock/models/stock_rule.py#L131-L135 https://github.com/odoo/odoo/blob/39d7207aae187d055f19c7bce41df8110c045185/addons/purchase_stock/models/purchase_order_line.py#L341-L350 Since already existing POL will not be found to match the incorrect `product_description_variants` a new one will be created on that same PO. ### Fix: We do not rely on the language of the user in case it is the SUPERUSER_ID. opw-4397376 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195339 Forward-Port-Of: odoo/odoo#192751
Steps to reproduce: 1. Write anything in a searchbar 2. Navigate on togglable item 3. Press arrowleft 4. Hold arrowright -> It will spam name_search queries We fix this by checking that the "arrowright" event isn't held (repeat=false). Task: 4476832 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197502
Original PR description
Steps to reproduce: 1. Write anything in a searchbar 2. Navigate on togglable item 3. Press arrowleft 4. Hold arrowright -> It will spam name_search queries We fix this by checking that the "arrowright" event isn't held (repeat=false). Task: 4476832 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197502
Versions -------- - 16.0+ Steps ----- 1. Go to Settings / Website; 2. enable the following options: - Comparison Price; - Pricelists: Advanced price rules; - Prevent Sale of Zero Priced Product; 3. create a pricelist setting all prices to 0; 4. make pricelist selectable; 5. set pricelist's Discount Policy to Show public price & discount to customer; 6. go to `/shop`; 7. query the search bar. Issue ----- A strikethrough price is added, despite the item not being a
Original PR description
Versions
--------
- 16.0+
Steps
-----
1. Go to Settings / Website;
2. enable the following options:
- Comparison Price;
- Pricelists: Advanced price rules;
- Prevent Sale of Zero Priced Product;
3. create a pricelist setting all prices to 0;
4. make pricelist selectable;
5. set pricelist's Discount Policy to Show public price & discount to customer;
6. go to `/shop`;
7. query the search bar.
Issue
-----
A strikethrough price is added, despite the item not being available for sale.
Cause
-----
The `_search_render_results_prices` method still checks for `has_discounted_price` and `compare_list_price` after it already knows the product isn't available for sale.
Solution
--------
If `prevent_zero_price_sale` is given for the product, do an early return, disregarding the `has_discounted_price` and `compare_list_price` options.
opw-4263554
Forward-Port-Of: odoo/odoo#197336
Forward-Port-Of: odoo/odoo#195721Steps to reproduce: - In website, open the HTML/CSS Editor (Site > HTML/CSS Editor). - In the dropdown, select JS. - Uncomment the given example (about the "Hello World" dialog) and save. - Try to go in edit mode. => Traceback This happens since commit [1], which replaced the dialogs by OWL Dialog ones. Indeed, the call to `super` in the `init` function was forgotten, making the widget not being initialized correctly, and therefore not destroyed correctly either when going in edit mode.
Original PR description
Steps to reproduce: - In website, open the HTML/CSS Editor (Site > HTML/CSS Editor). - In the dropdown, select JS. - Uncomment the given example (about the "Hello World" dialog) and save. - Try to go in edit mode. => Traceback This happens since commit [1], which replaced the dialogs by OWL Dialog ones. Indeed, the call to `super` in the `init` function was forgotten, making the widget not being initialized correctly, and therefore not destroyed correctly either when going in edit mode. This commit adds this missing call. [1]: https://github.com/odoo/odoo/commit/57ed8bc0bf9d1ae2b7542d677a4d7e8fd1899ea2 opw-4243615 Forward-Port-Of: odoo/odoo#183401
To reproduce: Testing `test_ensure_correct_website_asset` with multiple website will consistently fail as the bundle from the biggest `website_id` is used whereas it compare the bundle to default website loaded, which looks to be the one with the smallest ID. Installing `test_themes` reproduce the issue consistently as the website with biggest and smallest ID will use different theme website with distinct bundle After this fix: As the website with smaller ID load by default, we use the
Original PR description
To reproduce: Testing `test_ensure_correct_website_asset` with multiple website will consistently fail as the bundle from the biggest `website_id` is used whereas it compare the bundle to default website loaded, which looks to be the one with the smallest ID. Installing `test_themes` reproduce the issue consistently as the website with biggest and smallest ID will use different theme website with distinct bundle After this fix: As the website with smaller ID load by default, we use the smallest existing website_id rather than the biggest one rb-65788 Forward-Port-Of: odoo/odoo#198006
In the survey stats, the number of votes for a multiple choice answer displayed the label "Votes" without it being translatable. This commit makes it translatable. [task-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/odoo#196982 Forward-Port-Of: odoo/odoo#196704
Original PR description
In the survey stats, the number of votes for a multiple choice answer displayed the label "Votes" without it being translatable. This commit makes it translatable. [task-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/odoo#196982 Forward-Port-Of: odoo/odoo#196704
Embedded files with direct paths in knowledge article templates cannot be viewed or downloaded. ### Steps to Reproduce 1. Install the `knowledge` module. 2. Open the default knowledge article (e.g., *Welcome Mitchel Admin*). 3. Scroll down to the *Odoo Survival Guide* PDF and attempt to view or download it. An error message appears stating that the file does not exist. ### Cause The `FileModelMixin` does not handle files without an `id`, meaning files that are not attachments fa
Original PR description
Embedded files with direct paths in knowledge article templates cannot be viewed or downloaded. ### Steps to Reproduce 1. Install the `knowledge` module. 2. Open the default knowledge article (e.g., *Welcome Mitchel Admin*). 3. Scroll down to the *Odoo Survival Guide* PDF and attempt to view or download it. An error message appears stating that the file does not exist. ### Cause The `FileModelMixin` does not handle files without an `id`, meaning files that are not attachments fail to resolve properly. opw-4380368 opw-4433248 Related enterprise PR: https://github.com/odoo/enterprise/pull/79209 Forward-Port-Of: odoo/odoo#197539
This commit fixes two pivot tests failing randomly by ensuring that we wait for the download to be completed before ending the test or asserting the steps. Runbot error-134572 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#198152 Forward-Port-Of: odoo/odoo#198098
Original PR description
This commit fixes two pivot tests failing randomly by ensuring that we wait for the download to be completed before ending the test or asserting the steps. Runbot error-134572 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#198152 Forward-Port-Of: odoo/odoo#198098
Nilvera requires the country name in the XML to be in Turkish. To achieve this, the Turkish language is now activated during installation, ensuring translated values are stored in the database and can be enforced in the XML output. task-4504454 Forward-Port-Of: odoo/odoo#197933
Original PR description
Nilvera requires the country name in the XML to be in Turkish. To achieve this, the Turkish language is now activated during installation, ensuring translated values are stored in the database and can be enforced in the XML output. task-4504454 Forward-Port-Of: odoo/odoo#197933
Forward-Port-Of: odoo/odoo#198125
Original PR description
Forward-Port-Of: odoo/odoo#198125
Description of the issue/feature this PR addresses: In the 'CONTRIBUTING.md' file , there is a list item with the text: > Use this **template** when reporting issues. Please search for duplicates first! The link named 'template' should point to a pull request template. Current behavior before PR: The link named 'template' is broken and give a 404 error. Desired behavior after PR is merged: The link named 'template' now target the 'Contributing' wiki page, section 'making-p
Original PR description
Description of the issue/feature this PR addresses: In the 'CONTRIBUTING.md' file , there is a list item with the text: > Use this **template** when reporting issues. Please search for duplicates first! The link named 'template' should point to a pull request template. Current behavior before PR: The link named 'template' is broken and give a 404 error. Desired behavior after PR is merged: The link named 'template' now target the 'Contributing' wiki page, section 'making-pull-request' that contains the desired template. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197547
Steps to reproduce: - Set up the editor with a link at the end of a line. - Refresh to start with fresh content. - Place the cursor at the end of the line with the link. - Notice that the cursor defaults inside the link, displaying the green overlay. - Attempt to type after the link—this requires pressing right arrow key to exit. Description of the issue/feature this PR addresses: - Clicking at the end or start of a line with a link placed the cursor inside the link by default, disp
Original PR description
Steps to reproduce: - Set up the editor with a link at the end of a line. - Refresh to start with fresh content. - Place the cursor at the end of the line with the link. - Notice that the cursor defaults inside the link, displaying the green overlay. - Attempt to type after the link—this requires pressing right arrow key to exit. Description of the issue/feature this PR addresses: - Clicking at the end or start of a line with a link placed the cursor inside the link by default, displaying the green overlay. - Typing outside the link required pressing the arrow key. Current behavior before PR: - Placing the cursor at the start or end of a line with a link now defaults to positioning it outside the link. - Green overlay is no longer shown, enabling direct text entry beside link. - Accessing the link requires an intentional left or right arrow key press. task-4089085 Forward-Port-Of: odoo/odoo#186213
**Behavior before PR:** When user edits link and inserts 3 or more digits, link url gets converted to telephone url. This happens because in sanitize.js `deduceURLfromText` method converts url to telephone url if label matches the regex. **Behavior after PR:** Now, inserting 3 or more digits will not convert existing url to telephone url directly. If current link is telephone url or label starts with `"tel:"` prefix then url will get converted to telephone url if label matches the `PHO
Original PR description
**Behavior before PR:** When user edits link and inserts 3 or more digits, link url gets converted to telephone url. This happens because in sanitize.js `deduceURLfromText` method converts url to telephone url if label matches the regex. **Behavior after PR:** Now, inserting 3 or more digits will not convert existing url to telephone url directly. If current link is telephone url or label starts with `"tel:"` prefix then url will get converted to telephone url if label matches the `PHONE_REGEX`. task-4173806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193420
The 'OU' (Organizational Unit) field is not required for valid certificates. Requiring it will result in a traceback even when a certificate is considered valid. This PR makes the 'OU' field optional. opw-4325514 Forward-Port-Of: odoo/odoo#190508
Original PR description
The 'OU' (Organizational Unit) field is not required for valid certificates. Requiring it will result in a traceback even when a certificate is considered valid. This PR makes the 'OU' field optional. opw-4325514 Forward-Port-Of: odoo/odoo#190508
Purpose of this commit: The command descriptions (canned responses, channel command) currently use an italic font style due to being wrapped in the emphasis tag, causing the text to appear cropped at the end of the sentence. This commit resolves the issue by replacing the emphasis tag with a span tag. task-4485553 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193915
Original PR description
Purpose of this commit: The command descriptions (canned responses, channel command) currently use an italic font style due to being wrapped in the emphasis tag, causing the text to appear cropped at the end of the sentence. This commit resolves the issue by replacing the emphasis tag with a span tag. task-4485553 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193915
In 50c62eab72678d51fb88c88fbeb81da2decca6f2, an override was done to attachments to disable deleting them, detaching them instead. As this is only required for German companies, a check can be added in the override to allow non-German companies to be able to delete their attachments. Also, another restriction was added for changing the fiscal country to make sure the flow for deleting German attachments cannot be bypassed. task-4500319 Forward-Port-Of: odoo/odoo#197006
Original PR description
In 50c62eab72678d51fb88c88fbeb81da2decca6f2, an override was done to attachments to disable deleting them, detaching them instead. As this is only required for German companies, a check can be added in the override to allow non-German companies to be able to delete their attachments. Also, another restriction was added for changing the fiscal country to make sure the flow for deleting German attachments cannot be bypassed. task-4500319 Forward-Port-Of: odoo/odoo#197006
Before this commit: The version set on an IoT box server side would never update as it was set only on creation. Also took the opportunity to refactor a bit this old part of the code to make it clearer and add some relevant logs to more easily investigate cases where it could be relevant After this commit: IoT version will now appear with the real value on the IoT app & beautiful relevant logs  *before this PR, the IoT would be stuck with the wrong version (here 18.0)*  *after this PR*  *logs example* opw-4502002 Forward-Port-Of: odoo/enterprise#79603
Forward-Port-Of: odoo/enterprise#79561
Original PR description
Forward-Port-Of: odoo/enterprise#79561
During the execution of the validation cron of the OCR, the IAP account selected could sometimes be incorrect. In the context of the validation cron, we need to know to which company the document belong in order to get the correct IAP account (i.e. the one from the company, if it exists). If we use the generic IAP account (i.e. the one that isn't linked to any company), the mismatch of accounts will cause the validation to be ignored by the OCR server. Related ticket [#4522628](https://
Original PR description
During the execution of the validation cron of the OCR, the IAP account selected could sometimes be incorrect. In the context of the validation cron, we need to know to which company the document belong in order to get the correct IAP account (i.e. the one from the company, if it exists). If we use the generic IAP account (i.e. the one that isn't linked to any company), the mismatch of accounts will cause the validation to be ignored by the OCR server. Related ticket [#4522628](https://www.odoo.com/odoo/project.task/4522628) Forward-Port-Of: odoo/enterprise#79550 Forward-Port-Of: odoo/enterprise#79525
See commits :-) Forward-Port-Of: odoo/enterprise#79264
Original PR description
See commits :-) Forward-Port-Of: odoo/enterprise#79264
Previously, in RTL mode, sidebar resizing calculations were incorrect, causing the sidebar to not follow the mouse properly resulted in incorrect resizing. This fix ensures accurate resizing behavior. Task-4571290 Forward-Port-Of: odoo/enterprise#79379
Original PR description
Previously, in RTL mode, sidebar resizing calculations were incorrect, causing the sidebar to not follow the mouse properly resulted in incorrect resizing. This fix ensures accurate resizing behavior. Task-4571290 Forward-Port-Of: odoo/enterprise#79379
The related community commit ensures that knowledge article templates correctly handle embedded static files. This commit adds a test for that behavior. opw-4380368 opw-4433248 Related Community PR: https://github.com/odoo/odoo/pull/197539 Forward-Port-Of: odoo/enterprise#79209
Original PR description
The related community commit ensures that knowledge article templates correctly handle embedded static files. This commit adds a test for that behavior. opw-4380368 opw-4433248 Related Community PR: https://github.com/odoo/odoo/pull/197539 Forward-Port-Of: odoo/enterprise#79209
This commit fix 2 columns in the Libro de IVA xlsx export file: 1. **expense_series_number**: before it was the move name, now it's the move ref 2. **reception_number**: before it was blank, now it's the move name task-4508992 Forward-Port-Of: odoo/enterprise#79459
Original PR description
This commit fix 2 columns in the Libro de IVA xlsx export file: 1. **expense_series_number**: before it was the move name, now it's the move ref 2. **reception_number**: before it was blank, now it's the move name task-4508992 Forward-Port-Of: odoo/enterprise#79459
This commit fixes a cohort test failing randomly by ensuring that we wait for the download to be completed before ending the test or asserting the steps. Runbot error-134572 Forward-Port-Of: odoo/enterprise#79574 Forward-Port-Of: odoo/enterprise#79555
Original PR description
This commit fixes a cohort test failing randomly by ensuring that we wait for the download to be completed before ending the test or asserting the steps. Runbot error-134572 Forward-Port-Of: odoo/enterprise#79574 Forward-Port-Of: odoo/enterprise#79555
Mod349 tax report in Spanish localization should report the total number of intra-community operators [1] However currently we count the number of operations Steps to reproduce: - With an ES company setup - Create 2 invoice to the same an EU partner - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operators is 2, but should be 1 [1] https://sede.agenciatributaria.gob.es/static_files/Sede/Proced
Original PR description
Mod349 tax report in Spanish localization should report the total number of intra-community operators [1] However currently we count the number of operations Steps to reproduce: - With an ES company setup - Create 2 invoice to the same an EU partner - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operators is 2, but should be 1 [1] https://sede.agenciatributaria.gob.es/static_files/Sede/Procedimiento_ayuda/GI28/instr_mod_349.pdf opw-4403287 Forward-Port-Of: odoo/enterprise#79522 Forward-Port-Of: odoo/enterprise#78588