Friday, March 28, 2025
13 changes · 17.0
Enhancements to existing features
This update adjusts internal tests for Italy's LIPE VAT report export so they no longer get interrupted by an export wizard. It helps keep report-related quality checks stable after recent export workflow changes, with no expected change for day-to-day users.
Original PR description
With the new LIPE export, posting a closing entry opens an export wizard which breaks some tests. This PR implements a workaround to not open that wizard. --- Community PR: https://github.com/odoo/odoo/pull/195948 task-4507942
Resolved issues and error corrections
This fix prevents harmless socket timeout messages during automated testing from being reported as errors. It reduces noise in test results and makes real issues easier to spot, without affecting normal production behavior.
Original PR description
During post-install tests, run the following code in a python terminal: import socket, time with socket.create_connection(('127.0.0.1', 8069)): time.sleep(6) It opens a socket and connect to the…
During post-install tests, run the following code in a python terminal:
import socket, time
with socket.create_connection(('127.0.0.1', 8069)):
time.sleep(6)
It opens a socket and connect to the running odoo server, but does nothing. After 5 seconds the odoo server closes the socket with a timeout.
The timeout is only set during tests in ``RequestHandler.setup``, and it set to a hardcoded value of 5 seconds. Since Werkzeug 2.1.0[^1], it logs an error in the logs. We want to get rid of that error log.
Those errors can occur when the test chrome browser is killed while it was performing http requests. Chrome doesn't TCP RST the sockets and just let those sockets die.
The socket timeout error actually cannot occurs in production, as all traffic is routed via nginx, and nginx will only proxy the connection to Odoo once nginx has all the requests headers.
That error log is silly, it is now ignored.
[^1]: pallets/werkzeug:d062807
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-prMiscellaneous changes
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the two Purchase Orders have the same currency, but if there is more than one currency, the traceback will be displayed. **Steps to reproduce:** - Go to the purchase app and select two Purchase Orders that have different currencies (you can make a group by Currencies). - Click on Action then
Original PR description
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the…
Odoo now limits Peppol document fetching to users registered for Peppol, instead of also trying unrelated EDI users. This prevents unnecessary failed requests and keeps accounting logs cleaner during vendor bill processing.
Original PR description
Ensure only Peppol-type proxies are retrieved when performing Peppol operations. Steps to reproduce: - Install Peppol and IT EDI - Register Peppol and IT EDI users - In Accounting, on the Vendor Bill journal, click "Fetch from Peppol" Odoo will attempt requests for all users, including an invalid call to 'False/api/peppol/1/get_all_documents'. This is not an issue in V17 but causes problems in V18. This fix makes sense in both versions as it prevents unnecessary requests and avoids error messages in the logs. opw-4624633
The website shop product snippet now displays recently viewed products in the intended order instead of a random sequence. This makes the customer experience more predictable and helps shoppers more easily return to items they viewed most recently.
Original PR description
Before this commit:
The product snippet with filter "Latest Viewed Product" selected showed products in a random order. This was caused by a
`search([('id', 'in', ids)])` which does not enforce the order of `ids` in the returned set.
After this commit:
The order returned follows the intended "Last Viewed Product" order.
task-3916458
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prSubscription-related website templates will now load the right translations for visitors. This improves the experience for customers using the website in languages other than the default language.
Original PR description
The `sale_subscription` module defines a template used on the website, but it was not marked as being a frontend module. Therefore the translations were not loaded on the website and the template was never translated. In this commit we add this module to the frontend modules, so its templates displayed on the website are properly translated.
Editing a social media comment no longer changes special characters into HTML-style text. This preserves the original wording of comments and avoids confusion for users managing social interactions.
Original PR description
https://www.awesomescreenshot.com/image/53270541?key=2bf6f954c641f8dcfc8d0a524bb6e0e0 How to reproduce: - Make comment on any of the post under any social media. Just one condition, make sure to include any of the following characters (&, <, >, ', , `). - Post the comment. - Now try to edit the comment. - You will see that the special characters which I have mentioned above have been replaced with their HTML entities. Issue: - When we click on edit, we first `escape()` the contents of the message and then display it in the `textarea`. Fix: - We now display the comment through the value attribute of the `textarea` element, which by default displays the contents as plaintext. Hence, eliminating the need to escape it. Task-4184968
Account report users are now returned to the same scroll position when they come back via breadcrumbs, instead of being sent to the top of the report. This restores the previous behavior and makes reviewing long financial reports less disruptive.
Original PR description
Since 17.0, and before this commit, when the user navigates from an account report to another page and then comes back to the report through the breadcrumb, the user is brought to the top of the report. In 16.0, the user would be brought to the same position they were looking at. This commit brings this behavior back. task-4578468
This fixes a Planning test setup so automatic scheduling chooses the intended employee for a night shift with breaks. The change prevents unrelated appointment resources from interfering with the test, improving reliability without changing business behavior.
Original PR description
Before this commit, the test `test_auto_plan_employee_with_break_company_no_breaks` fails because the auto plan feature will plan the open shifts to a resource generated by appointment feature since those resources are always available according to their calendar. This commit adds a role on the open shift and the employee created in that test to be sure we will just fetch the resources with the role of the open shift since the test just makes sure the resource doing night shifts with breaks is correctly assigned to that shift. runbot-115194 task-4679959
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the two Purchase Orders have the same currency, but if there is more than one currency, the traceback will be displayed. **Steps to reproduce:** - Go to the purchase app and select two Purchase Orders that have different currencies (you can make a group by Currencies). - Click on Action then Accrued Expense Entry. - The traceback appears. **Cause of the issue:** https://github.com/odoo/odoo/blob/a07a8589a8cb391a801ef1ffd60e02d83fc963f8/addons/account/wizard/accrued_orders.py#L246 The currency is given as a parameter to a function that requires only one parameter. With this code, if there are multiple currencies in orders, all of them will be given, which creates a traceback. **Fix:** After checking with a PO, the multiple currency use case is not supported. Hence make sure that there is only one currency in the quotations we are trying to work with. If there is more than one, we throw an error telling the user to only pick quotations with the same currency. opw-4562933 Forward-Port-Of: odoo/odoo#202733
Description of the issue/feature this PR addresses: The system assigns 8 hours of leave to contractors by default. This applies even if their schedule is set to 0 hours per week. As a result, contractors may receive holiday pay like full-timers. For example, a snowplow contractor with 0 hours in summer could wrongly get a full day's holiday pay during that period.     Current behavior before PR: A employee with 0 Hours/Week Working Schedule will receive max hours of a time off allocation.  Desired behavior after PR is merged: A employee with 0 Hours/Week Working Schedule will not receive max hours of a time off allocation. And no time off allocation should be created. opw-4464317 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202610
When there are none or more than 1 partner that have the same subcontracting location setup, then any procurement made to this subcontracting location will be removed, even if another configuration is applicable. ## How to reproduce: https://drive.google.com/file/d/1jvT1pmCqY0JNAinvqmbonX0CDYYysoJz/view?usp=sharing - Activate Routes, Subcontracting, Dropshipping - Create custom subcontracting location - Create partners "Partner 1" & "Partner 2", with custom sub loc setup - Create cus
Original PR description
When there are none or more than 1 partner that have the same subcontracting location setup, then any procurement made to this subcontracting location will be removed, even if another configuration…
When there are none or more than 1 partner that have the same subcontracting location setup, then any procurement made to this subcontracting location will be removed, even if another configuration is applicable. ## How to reproduce: https://drive.google.com/file/d/1jvT1pmCqY0JNAinvqmbonX0CDYYysoJz/view?usp=sharing - Activate Routes, Subcontracting, Dropshipping - Create custom subcontracting location - Create partners "Partner 1" & "Partner 2", with custom sub loc setup - Create custom route 'Resupply Subcontractor', with rule: - action: Pull From - operation: delivery - source: Stock - dest: custom sub loc - method: take from stock - Partner Address: Partner 1 - Create product with reordering rule: - manual, min 0, max 0, custom sub loc, custom route - In Replenishment -> Find custom reordering rule -> set Order Qty to 1 -> Order Once - Created Transfer does not have any partner address - Cancel created transfer - Remove subcontracting loc for "Partner 2" - In Replenishment -> Find custom reordering rule -> set Order Qty to 1 -> Order Once - Created Transfer has the partner address OPW-4576260 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200169
This fix lowers the batch size to prevent timeouts, as the IAP server may take longer than the 30-second limit set in the proxy client to respond. Steps to reproduce: - Create 50 invoices in draft. - Validate them all at once. If the IAP server exceeds 30s to respond, all invoices will show an error banner: "The URL that this service requested returned an error.". However, the invoices were actually sent successfully. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4557948)
Original PR description
This fix lowers the batch size to prevent timeouts, as the IAP server may take longer than the 30-second limit set in the proxy client to respond. Steps to reproduce: - Create 50 invoices in draft. - Validate them all at once. If the IAP server exceeds 30s to respond, all invoices will show an error banner: "The URL that this service requested returned an error.". However, the invoices were actually sent successfully. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4557948) opw-4557948 Forward-Port-Of: odoo/odoo#203415
Commit https://github.com/odoo/enterprise/commit/0461225242188dd64b50a663d54fd9dcbf4a8bae removed the partial namespace, but it should only have been removed for `OsobaNiefizyczna`. Also fixed the `country_code` for foreign VAT companies with the VAT number that does not begin with the `country_code`. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4502550) opw-4502550 Forward-Port-Of: odoo/enterprise#81359
Original PR description
Commit https://github.com/odoo/enterprise/commit/0461225242188dd64b50a663d54fd9dcbf4a8bae removed the partial namespace, but it should only have been removed for `OsobaNiefizyczna`. Also fixed the `country_code` for foreign VAT companies with the VAT number that does not begin with the `country_code`. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4502550) opw-4502550 Forward-Port-Of: odoo/enterprise#81359