Daily updates from Odoo
Saturday, November 1, 2025
6 changes · 19.0
Resolved issues and error corrections
The Planning app now shows the recurrence banner only after recurring shifts have actually been generated. This prevents users from seeing a misleading message before the recurrence is active and actionable.
Original PR description
**Steps to reproduce:** --------- 1. Create a shift. 2. Save the shift. 3. Open the shift and enable the recurrence. 4. Observe that the recurrence banner is immediately displayed. **Issue:** ----- The recurrence banner is shown as soon as a shift is marked recurring, even though no recurring shifts have been generated yet. This is misleading since the banner has no effect until the actual recurrence slots exist. **Cause:** ------- The banner visibility was based on repeat and id, so it appeared too early, before any recurring shifts were actually created. **Fix:** -------- Update the banner visibility condition to check for both repeat and recurrency. Now, the recurrence banner only appears once the recurrence record exists and recurring shifts are generated: task-5163851 Forward-Port-Of: odoo/enterprise#97245
Downloading folders from Documents now handles file names containing slashes more safely. Slashes are replaced with underscores so extracted ZIP files keep the expected flat file structure instead of creating unintended folders.
Original PR description
Bug === If you download a folder that has documents in it, with `/` in their names, then after extracting the zip, it will create folders for the part on the left of `/`. To solve that issue, we replace the `/` with `_`. Task-5109681 Forward-Port-Of: odoo/enterprise#96087
Ingenico payment terminals no longer trigger an error caused by repeated status updates when nothing has changed. The fix reduces unnecessary database requests and keeps payment processing stable, while also updating a deprecated internal call.
Original PR description
Currently when paying with ingenco there is an error: "Uncaught (in promise) TypeError: can't access property "payment_method", line is undefined." This is due to the fact that Ingenco sends requests to the database every second even when the status of the driver didn't change since the last payment. This PR fixes the issue by only sending requests to the database if a) THe driver status has changed b) A payment is being processed It also fixes the deprecation warning for isSet() replaced by is_set(). opw-5166439 opw-5181429 opw-5164612 opw-5170658 Forward-Port-Of: odoo/enterprise#98059 Forward-Port-Of: odoo/enterprise#97945
Adding contacts to an email marketing list through the bulk wizard now records the subscription properly. This ensures users can see when each contact was added, improving list history accuracy and consistency with manual additions.
Original PR description
Steps to reproduce: ------------------------- 1. Install Email Marketing Module 2. Create a new Mail List 3. Go to Mailing List Contacts 4. Select multiple contacts from list and click on Add to List…
Steps to reproduce: ------------------------- 1. Install Email Marketing Module 2. Create a new Mail List 3. Go to Mailing List Contacts 4. Select multiple contacts from list and click on Add to List button 5. From wizard select the newly created list and click on Add button 6. Open one of the contact added in step 4 Observation: ------------------------- In the Mailing Lists tab of the contact, the newly added list does not show a Subscription Date. However, if we add the same through Add a line, the subscription date is shown correctly. Issue: ------------------------- When adding contacts to a mailing list through the wizard, the code https://github.com/odoo/odoo/blob/1e6ba783fcd898875dadb47924147688685707cf/addons/mass_mailing/wizard/mailing_contact_to_list.py#L34-L39 adds the contact using a direct database operation. This bypasses the ORM record creation for `mailing.subscription`, so the `create_date` (subscription date) is never set. Solution: ------------------------- Use `Command.create` on the `subscription_ids` field to properly create the `mailing.subscription` records and ensure the Subscription Date is set. opw-5055372 Forward-Port-Of: odoo/odoo#230284
This fixes an intermittent automated test failure by ensuring the test environment includes the required HR data models alongside messaging and live chat models. The change helps keep validation runs reliable without changing business features or user-facing behavior.
Original PR description
*: hr, web Follow-up of https://github.com/odoo/enterprise/pull/98481 PR above added a new HOOT test in test_discuss_full_enterprise that is duplicate of a livechat tests, to cover good working of…
*: hr, web Follow-up of https://github.com/odoo/enterprise/pull/98481 PR above added a new HOOT test in test_discuss_full_enterprise that is duplicate of a livechat tests, to cover good working of feature when overrides like `ai` module are applied in code. It replaced a `defineHrModels()` into a `defineTestDiscussFullEnterprise()`, which is shortcut for the test helper `defineWebsiteHelpdeskLivechatModels`. This is because the new test needs livechat models, and it's hard to combine defineModels for odoo modules that do not strictly patch on top of each other. While it doesn't look like it, the test "can handle command and disable mentions in AI composer" sometimes asks for hr models and can fail non-deterministically because of that. This commit fixes the issue by adding hr models in the helper of `test_discuss_full_enterprise`. To combine same models together with ease, instead of defining subclasses for extension, the models are instead patched. Since the patch is made in place, they combine nicely without puzzling with combining models in the right order, something that even the actual models in python don't have to care about. Fixes https://runbot.odoo.com/runbot/build/92414152
This fixes an intermittent failure in an automated test for Enterprise discussion and live chat features. The change improves test reliability by ensuring the needed HR-related test data is consistently available, reducing false failures in validation pipelines.
Original PR description
*: test_discuss_full_enterprise Follow-up of https://github.com/odoo/enterprise/pull/98481 PR above added a new HOOT test in test_discuss_full_enterprise that is duplicate of a livechat tests, to…
*: test_discuss_full_enterprise Follow-up of https://github.com/odoo/enterprise/pull/98481 PR above added a new HOOT test in test_discuss_full_enterprise that is duplicate of a livechat tests, to cover good working of feature when overrides like `ai` module are applied in code. It replaced a `defineHrModels()` into a `defineTestDiscussFullEnterprise()`, which is shortcut for the test helper `defineWebsiteHelpdeskLivechatModels`. This is because the new test needs livechat models, and it's hard to combine defineModels for odoo modules that do not strictly patch on top of each other. While it doesn't look like it, the test "can handle command and disable mentions in AI composer" sometimes asks for hr models and can fail non-deterministically because of that. This commit fixes the issue by adding hr models in the helper of `test_discuss_full_enterprise`. To combine same models together with ease, instead of defining subclasses for extension, the models are instead patched. Since the patch is made in place, they combine nicely without puzzling with combining models in the right order, something that even the actual models in python don't have to care about. Fixes https://runbot.odoo.com/runbot/build/92414152