Friday, October 10, 2025
10 changes · 17.0
Enhancements to existing features
Peruvian customer records no longer require a ZIP code. This makes customer data entry easier and better reflects local addressing practices, where ZIP codes are not commonly used.
Original PR description
As ZIP codes are not widely used in Peru, the requirement for a ZIP code to be provided for a Peruvian customer should not be present. task-5012593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This fixes an error that could prevent users from opening equipment records when a completed maintenance request had missing repair dates due to customization or manual override. The system now handles those unusual missing values gracefully and keeps the equipment view accessible.
Original PR description
Using standard Odoo, `maintenance.request.close_date` should never be `False` when its `stage_id == 'done'`, but customizations/manual overrides allow users to force it to be `False` and block them…
Using standard Odoo, `maintenance.request.close_date` should never be `False` when its `stage_id == 'done'`, but customizations/manual overrides allow users to force it to be `False` and block them from opening equipment views that displayed fields that depended on it. Steps to reproduce: - Create new maintenance request for an equipment - Put maintenance request into a `maintenance.stage` where `done=True` (e.g. "Repaired") - Force `close_date` to not be `readonly` in form view + set it to `False` - Try to open the assigned equipment's form view Expected result: Form view opens without issue Actual result: `unsupported operand type(s) for -: 'bool' and 'datetime.date'` Issue was due to `mttr` calculation in `_compute_maintenance_request` not expecting `close_date` to be `False`. Since we want the request to still be considered for the rest of the compute, we count its "Time to Repair" as 0 in this case since we cannot use infinity in this case. Additionally, we also gracefully fail in the same way in case `request_date` is also forced to be `False` since it is not a mandatory field and can cause the same issue. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue in the website/editor tools where text converted into a button-style link did not visually keep the selected font size. Users can now format larger or smaller text as a button and see the expected size, improving consistency when editing content.
Original PR description
### Steps to reproduce: - Go to To-Do. - Type some text and increase its font size to 80. - Select the text and convert it into a button. - The font size appears as 80 in the toolbar but is not visually reflected. ### Description of the issue/feature this PR addresses: - Links with `.btn` class inside elements styled with font-size classes (e.g., display-3-fs) did not inherit the parent's font size. - The `.btn` class's own font-size definition overrode the expected styling. ### Desired behavior after PR is merged: - `.btn` links now use `font-size: inherit`, allowing them to respect and adopt their parent element’s font size. task-4731416 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Mexican DIOT reports now correctly identify United Kingdom suppliers using the proper country code. This prevents UK-related records from being grouped under “Other country,” improving accuracy in tax reporting.
Original PR description
The DIOT country adaptation map lacked the ISO 3-letter code for the UK, causing records with country 'GB' to be reported as 'ZZZ' ("Other country").
Added mapping 'GB' → 'GBR' to ensure correct DIOT country code generation.
Administrators can now retry or cancel SMS messages sent automatically by the system without being blocked by an access error. This ensures technical support and operations teams can resolve failed or unwanted SMS notifications from debug settings when they have the proper permissions.
Original PR description
## Issue: In debug mode, the administrator could not resend or cancel an SMS that was sent by the system (e.g. delivery confirmation) using the `Retry` / `Cancel` button in the Technical Settings An…
## Issue: In debug mode, the administrator could not resend or cancel an SMS that was sent by the system (e.g. delivery confirmation) using the `Retry` / `Cancel` button in the Technical Settings An Access Error was raised ## Cause: When using the `Retry` or `Cancel` button, the method `_update_sms_notifications()` is called and finds `mail.notifications` records to update However, `notifications.write()` triggers an Access Error because only the recipient of a `mail.notification` is allowed to modify it: https://github.com/odoo/odoo/blob/98610ea2a1369b84b10adb8913c5d7725a0fad67/addons/mail/security/mail_security.xml#L184-L192 This happens even when the user has the rights to resend or cancel the SMS ## Steps to reproduce: - Install an app like stock_sms to create blocking entries - Create and confirm a Delivery - Choose Send SMS - Enable developer mode - Search for the technical settings SMS - Retry sending the automatically sent SMS https://github.com/odoo/odoo/pull/230733 opw-4904157
This fixes an unreliable automated test in the mail app related to channel subscriptions. The change helps prevent false runbot failures, keeping validation of future changes more dependable without affecting end users.
Original PR description
Before this commit, the test was checking the channels that were subscribed to in the websocket by filtering on their name. This could cause a condition with the debounce of the update_channel in the websocket. Indeed, if waiting too much time (300 ms at the present) between the presences subscription and the channel subscription, the first one would yield an empty array of subscription since not a discuss channel subscription. This commit fixes the issue by just taking the subscription into account if any channel is in the list, otherwise we simply avoid the step in the test. fixes-runbot-161477 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a small issue that could prevent users from creating a new analytic distribution model when an expected text value was missing. The change adds a safeguard so the process continues normally without affecting other behavior.
Original PR description
Current behavior before PR: When trying to create a new analytic distribution model might fail because string might not be defined and substr() could fail. <img width="1139" height="435" alt="odoo" src="https://github.com/user-attachments/assets/2be5a35c-600e-4484-af72-91f778681bcf" /> Desired behavior after PR is merged: We could check if there is string before de substr method. That would solve the problem and will not affect anywhere else. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Building a website with only the Events option selected will no longer automatically install ecommerce features. This keeps the website setup aligned with the user's chosen purpose and avoids adding unnecessary sales functionality.
Original PR description
Steps to reproduce: 1. Install website module 2. Select events in configurator 3. Build website. => Ecommerce is installed, which should not as it does not make sense with only the events. After this commit: - Ecommerce will no longer be installed when the events is configured. task-4922600
Employee contracts in Swiss payroll now only allow selecting insurance records that belong to the relevant company. This prevents accidental cross-company selections and improves data accuracy in multi-company setups.
Original PR description
Currently, in a multi-company setup, you are able to select insurances from other companies on the employee contract task-5157106
This fix prevents access errors when checking transaction dates used for loyalty reward expiration. It ensures eligible loyalty transactions can be reviewed reliably, reducing disruption for sales teams and customers using loyalty programs.
Original PR description
Versions -------- - 17.0 - 18.0 - saas-18.2 Fixed in saas-18.3+ during forward porting. Issue ----- Checking transaction dates for loyalty expiration can lead to access errors. Cause ----- Transactions aren't checked using `sudo`. Solution -------- Use `sudo` to get the transaction dates. opw-4765873