Daily updates from Odoo
Saturday, July 19, 2025
4 changes · saas-18.4
Resolved issues and error corrections
Scheduled messages from the chatter now send when the user requested instead of being delayed until a later email queue run. This improves reliability for planned customer or internal communications that depend on precise timing.
Original PR description
**Steps to reproduce:** - Go to the chatter of any record - Click on `Send message` - Click on `Full composer` icon on the bottom right - Prepare an email with custom subject / body - Click on `Send…
**Steps to reproduce:**
- Go to the chatter of any record
- Click on `Send message`
- Click on `Full composer` icon on the bottom right
- Prepare an email with custom subject / body
- Click on `Send Later` and set the scheduled time
- Mail is not sent on scheduled time
**Issue:**
For the timing issue, as the mail is sent by a cron job it obtains a context with `mail_notify_force_send` set to `False` due to the function `_get_eval_context` of `ir.actions.server`.
```
""" Override the method giving the evaluation context but also the
context used in all subsequent calls. Add the mail_notify_force_send
key set to False in the context. This way all notification emails linked
to the currently executed action will be set in the queue instead of
sent directly. This will avoid possible break in transactions. """
```
This context override the `force_send` value used when sending emails notifications. Everything is created properly but the mail is not sent directly and goes to the email queue manager (where it needs to wait until the next execution). This means that the time given previously is not explicitly used to send the mail and the mail is delayed (which doesn't seem to be the expected behavior).
```
if force_send := self.env.context.get('mail_notify_force_send', force_send):
force_send_limit = int(self.env['ir.config_parameter'].sudo().get_param('mail.mail.force.send.limit', 100))
force_send = len(emails) < force_send_limit
if force_send and (not self.pool._init or test_mode):
# unless asked specifically, send emails after the transaction to
# avoid side effects due to emails being sent while the transaction fails
if not test_mode and send_after_commit:
emails.send_after_commit()
else:
emails.send()
```
**Fix:**
Overwrite `mail_notify_force_send` value when posting the scheduled message in the cron job.
related: https://github.com/odoo/odoo/commit/df18d5257cef737f3e1d245a8b85769e1fe1a032
opw-4700253
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#219475
Forward-Port-Of: odoo/odoo#211515This fix ensures point of sale startup data is saved correctly even when background processes continue running. It helps prevent missing or incomplete offline data, improving reliability for stores using the point of sale system.
Original PR description
Prior to this commit, when sending an object to `synchronizeServerDataInIndexedDB` without waiting for the method to return. If the object is modified later in the process, certain data is not saved. We now make a copy of the object in question before the asynchronous event to ensure that all data is saved. Forward-Port-Of: odoo/odoo#219428
This fix restores the ability to enable or disable the user quick login feature through the intended configuration. It gives administrators proper control over whether quick login is available, preventing the feature from staying active when it should be disabled.
Original PR description
This commit adds a missing parameter, allowing to disable this feature. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219611 Forward-Port-Of: odoo/odoo#219030
Suspense accounts in several local accounting packages are now classified as current assets instead of current liabilities. This keeps financial totals from being artificially inflated before bank statement lines are reconciled and ensures the default suspense account can be reselected on bank journals when needed.
Original PR description
Since V14, suspense accounts are classified as current assets. They were previously classified as current liabilities while the liquidity accounts were current assets. It would artificially inflates the current assets and current liabilities as long as the bank statements lines weren't reconciled. We noticed that the belgian default suspense account is still classified as current liability. On the bank Journal, there is a domain so only current assets type can be set as default suspense account. There is no issue at the package installation but if the suspense account is removed from the journal, it can't be added back afterwards. task-4829826 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219550 Forward-Port-Of: odoo/odoo#212935