Monday, September 28, 2026
5 changes · 19.0
Resolved issues and error corrections
The Sales Analysis report now displays actual eCommerce category names instead of generic record counts. This makes the optional eCommerce Categories column easier to read and more useful for sales reporting.
Original PR description
Steps to reproduce: - Go to Sales > Reporting > Sales Analysis, switch to list view. - Enable the optional "eCommerce Categories" column. Before this fix: - The column showed a generic "No records"/"1 record"/"N records" count instead of the actual category names, because the many2many field had no widget and fell back to the web client's default x2many column renderer. After this fix: - The column now shows the eCommerce category names as tags via `widget="many2many_tags"`, consistent with how other reports render many2many columns. opw-6580658 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update removes an unnecessary default value from a core test method parameter. It helps keep the code aligned with quality checks and reduces the chance of confusing behavior in internal testing tools.
Original PR description
[RUF077](https://docs.astral.sh/ruff/rules/method-receiver-default/#method-receiver-default-ruf077) specifies that method receiver parameters, such as `self` and `cls`, should not have default values. The reasoning is because these parameters are usually bound by the method binding protocol, so a default value on a receiver parameter is almost certainly a mistake and can lead to confusing behavior or runtime errors. This method seems to not reference self, and this should not cause errors, but it is best practice to not do this. runbot-[947144](https://runbot.odoo.com/odoo/error/947144) Forward-Port-Of: odoo/odoo#290616
The Mexican e-invoicing demo certificate information now shows the correct VAT number after the demo certificates were replaced. This keeps demo and test data consistent, helping avoid confusion when validating electronic invoicing or payroll stamping scenarios.
Original PR description
In 32f177b0450, the demo certificates were replaced to use a company that can also sign payslips, but the VAT in the file describing them was not updated.
Project sharing users with edit access can now create tasks in shared field service projects without being blocked by a customer access error. The customer field is correctly protected from changes by users who are not allowed to edit it, improving reliability for shared project collaboration.
Original PR description
Steps to Reproduce: - Install Project. - Share a project with a project sharing user having Edit or Edit with limited access permissions. - Log in as that shared user. - Open the shared project and create a task from the list or kanban view. - Observe that creating the task fails with an AccessError on Contact. Issue - Creating the task fails with an AccessError on the Customer (`partner_id`). Cause - The customer field is editable for project sharing users who should not be allowed to modify it. As a result, `partner_id` is included during task creation and triggers an access error. Solution - Correct the readonly condition on the customer field so unauthorized users cannot modify it. task-5075150
Canceled appointment bookings no longer prevent staff from lowering a resource's capacity. This avoids an unnecessary error after a booking has been canceled, making resource management smoother and more reliable.
Original PR description
Steps to reproduce: 1. Install `appointment` 2. Create an appointment type using resources 3. Create a resource with capacity `4` 4. Book an appointment on that resource with reserved capacity `4` 5.…
Steps to reproduce: 1. Install `appointment` 2. Create an appointment type using resources 3. Create a resource with capacity `4` 4. Book an appointment on that resource with reserved capacity `4` 5. Try to reduce the resource capacity 6. Cancel the appointment 7. Try again to reduce the resource capacity Current behavior: - Reducing the resource capacity raises: `The capacity used can not be lesser than the capacity reserved` Issue: - Canceled appointments still prevent lowering the resource capacity, even though the booking is no longer active. Cause: - Canceling an appointment only archives the related `calendar.event`, it does not remove the corresponding `appointment.booking.line`. That booking line keeps its previous `capacity_reserved` value, while `capacity_used` is a stored computed field depending on the resource capacity. When the resource capacity is reduced after cancellation, the archived booking line is recomputed with the new lower resource capacity and this violates the SQL constraint Solution: - For inactive booking lines: Set `capacity_used = capacity_reserved` opw-6036053 Forward-Port-Of: odoo/enterprise#123106 Forward-Port-Of: odoo/enterprise#112485