Daily updates from Odoo
Sunday, August 16, 2026
3 changes · master
Resolved issues and error corrections
The timesheet assistant now preserves a project that a user manually selects on the timesheet form, even when they switch to another suggestion linked to a different project. This prevents accidental overwriting and helps users avoid incorrect project entries before saving.
Original PR description
Steps to reproduce: - Select an unmatched suggestion. - Select Project A on the timesheet form (do not save it yet). - Select another suggestion matched to Project B. Observed behavior: Project A is overridden by Project B. Expected behavior: Project A remains selected on the timesheet. By initializing `project_id` with the current record's data, we prevent the suggestion loop from overwriting the user's manual selection. task-6410844 Forward-Port-Of: odoo/enterprise#127423 Forward-Port-Of: odoo/enterprise#126450
The Timesheet Assistant can now correctly detect activity in Google Sheets and Google Slides when suggesting timesheet entries. This fixes missed suggestions caused by different spacing characters in application names, helping users capture work more reliably.
Original PR description
## Behavior Before Commit : Due to the fact that the Timesheet Assistant rule on Google Slides & Google Sheets was missing or broken, the Assistant was unable to generate suggestions based on the use of these applications. The reason why the Assistant rule is broken for Google Sheets and Google Slides is because the regex rules assume the character between "Google" and "Slides" or between "Google" and "Sheets" is a "normal" space character, which is not the case. ## New Expected Behavior After this Commit : The updated rules now expect a generic space character between "Google" and "Slides" and between "Google" and "Sheets". This is done through the '\s' character in regex. task-[6445752](https://www.odoo.com/odoo/project/4105/tasks/6445752)
This fix prevents new Helpdesk tickets from being incorrectly shown as having already met their SLA. SLA completion is now marked only when the ticket reaches the required stage, while late completion remains tracked separately.
Original PR description
### Steps to Reproduce: 1. Go to Helpdesk and create an SLA 2. Create a new Ticket 3. Use Studio to add the field `sla_reached` 4. Apply the SLA 5. Notice that the field is True ### Description of…
### Steps to Reproduce: 1. Go to Helpdesk and create an SLA 2. Create a new Ticket 3. Use Studio to add the field `sla_reached` 4. Apply the SLA 5. Notice that the field is True ### Description of the issue/feature this PR addresses: **Issue:** The `_compute_sla_reached` method in on `helpdesk_ticket.py` determines whether an SLA has been reached by checking if `exceeded_hours` is less than 0 on its `helpdesk.sla.status` records. Since every newly assigned SLA has a future deadline, `exceeded_hours` starts as negative (AKA <0), so the ticket is immediately flagged as `sla_reached = True` before any progress has been made. Conversely, a ticket that reaches its target stage after the deadline has `exceeded_hours >= 0`, so it's incorrectly flagged as `sla_reached = False` even though the SLA target was genuinely reached (it was just late). **Solution:** Change the domain in `_compute_sla_reached` to check `reached_datetime != False` instead of `exceeded_hours < 0`, matching the field already listed in the method's `@api.depends` and the same field `_sla_reach()` sets when a ticket enters its target stage. This makes `sla_reached` reflect actual stage progression rather than a time-remaining calculation. ### Current behavior before PR: A newly created ticket with a pending SLA shows `sla_reached = True` and `sla_success = True` immediately upon creation, before the ticket has moved to any target stage. SImilarly, a ticket that reaches its target stage after the SLA deadline is incorrectly marked `sla_reached = False`. ### Desired behavior after PR: `sla_reached` is False on ticket creation and only becomes True once the ticket actually enters the SLA's target stage. Lateness continues to be tracked separately and correctly via `sla_reached_late` opw-6361851 Forward-Port-Of: odoo/enterprise#127309 Forward-Port-Of: odoo/enterprise#126432