Daily updates from Odoo
Monday, August 11, 2025
9 changes · master
Enhancements to existing features
This update keeps the appointment website feature aligned with a recent platform change. It helps ensure appointment snippets continue working correctly without changing the customer-facing experience.
Original PR description
This PR updates the `_prepare_values` method to include the new `offset` argument, aligning with the updated super method in `WebsiteSnippetFilter` class. task-4236245
The bank reconciliation statement button has been moved to the right side of each statement line. This prevents it from overlapping with other actions on smaller screens, making the interface easier and safer to use.
Original PR description
This commit will move the statement button on the right of the statement line because when having a small screen the button was at the place of the other button of the statement line which could cause problems for the users to click on it task: 5004109 Forward-Port-Of: odoo/enterprise#91981
The subscription app's empty screen now uses a larger, more readable illustration. This improves the first-time or no-data experience by making the guidance visual easier to understand in both light and dark modes.
Original PR description
Before this commit, the empty screen image was too small and unreadable. This commit update the image with a more readable empty screen image. <details> <summary>Preview Changes</summary> | Before | After | |--------|--------| | <img width="1207" height="935" alt="old_light_mode" src="https://github.com/user-attachments/assets/4df6738e-dcc4-4de0-99ae-b8a33bda6f76" /> | <img width="1207" height="935" alt="new_light_mode" src="https://github.com/user-attachments/assets/a56bbe33-2db9-4c9e-b1b4-d3d8fc717bed" /> | | <img width="1207" height="935" alt="old_dark_mode" src="https://github.com/user-attachments/assets/20ae2350-c126-4eda-8c74-c1121dae53fc" /> | <img width="1207" height="935" alt="new_dark_mode" src="https://github.com/user-attachments/assets/d8ef0691-0d3f-4304-a9d2-60eb33ac40eb" /> | </details> task-4912109
The VoIP call list no longer offers a create option for adding call records from the backend. This keeps the list as an accurate log of calls made through the VoIP widget and reduces the risk of manual or misleading entries.
Original PR description
Purpose: Creating a new voip.call record from the backend should not be allowed. Since it is a log of the calls that are taking place via the widget. Specification: Removed the option to create records from call list view. Task-4988885
Contacts now show how many active subscriptions are linked to them when the Subscriptions app is installed. This gives teams a clearer view of customer activity alongside existing contact statistics, without affecting users who do not use subscriptions.
Original PR description
The PR adds a new statistics to contacts when the subscription app is installed. Together with the number of sales on each contact and any other stat defined by other modules installed, the number of subscriptions is now shown in the Stat field of the contacts that have any active subs. This happens only if the subscription module is installed. Task-4934773
Resolved issues and error corrections
Confirming a rental order with plannable products now continues creating all possible planning shifts even if one line has no available resource. This prevents incomplete planning from being generated and helps teams avoid missing scheduled rental work.
Original PR description
Before this commit, when rental order containing a plannable rental product is confirmed, some shifts will be generated according to the rental order lines with such product. The problem is when there is no available resource, the method in which we expect to return vals list of planning.slot model will return vals because it will break the loop instead of continuing to the next iteration. This commit makes sure the `_planning_slot_vals_list` always return list of vals. Forward-Port-Of: odoo/enterprise#92030
The Swedish SIE4 import now avoids creating accounting entries when the source file contains no usable transaction lines. This prevents empty journal entries from being added to Odoo, keeping imported accounting data cleaner and more reliable.
Original PR description
The aim of this commit is making sure that we don't import move without transaction in it. In SIE4, we can have moves with BTRANS and RTRANS tags that we are ignoring. It means that we could have move without any move lines. It's not an expected behavior in Odoo. This commit checks that the move data are created only if we have lines for that move. no task id Forward-Port-Of: odoo/enterprise#91783
Recruitment users can now rename salary offers without the title reverting after saving. This ensures offer records reflect the intended names and reduces confusion when managing applications.
Original PR description
Steps to produce: - Navigate to Recruitment > Job Positions > Applications> Offers - Select an offer and try to edit the title and save Issues: - When the title is edited and saved, the title reverts back to previous name. Fix: - Change the field attribute in model by making it store=True task-4787302
This fix prevents original list prices from being exposed in hidden page elements for rental products that are not available for sale at zero price. It helps keep website pricing behavior consistent for visitors and avoids search engines or page inspection revealing prices that should not be shown.
Original PR description
Versions
--------
- 17.0+
Steps
-----
1. Create a pricelist setting product prices to zero;
2. configure website to make zero-priced products unavailable for sale;
3. go to /shop as a public user;
4. open the product page of a zero-priced product;
5. open the browser console;
6. use `document.querySelector('.css_non_editable_mode_hidden .oe_currency_value')`
Issue
-----
The query returns an element with the product's original list price.
Cause
-----
In `website_sale`, this element is part of a `t-if` that only gets rendered when `editable` is `True`. A `website_sale_renting` override changes the conditional to `not combination_info.get('is_rental')`.
Solution
--------
Instead of replacing the `t-if` attribute in the override, add `and not combination_info.get('is_rental')` to it, ensuring it remains hidden outside of editable mode.
opw-4865141
Forward-Port-Of: odoo/enterprise#91826
Forward-Port-Of: odoo/enterprise#91112