Friday, October 17, 2025
14 changes · saas-18.2
Enhancements to existing features
Adds automated test coverage for Indian export invoices without LUT when prices include tax. This helps ensure the invoice base amount matches the total, reducing the risk of incorrect electronic invoicing data.
Original PR description
Add test for export without LUT and price included tax, but base should be equal to invoice total. Forward-Port-Of: odoo/odoo#231614
Opening the Point of Sale configuration page on tablets and phones no longer automatically opens the on-screen keyboard. This makes the page less disruptive and easier to browse on touch devices.
Original PR description
Task: [#5016943](https://www.odoo.com/odoo/project/1737/tasks/5016943)
---
On tablets and phones, the search bar was autofocus when opening the POS config kanban view. This was causing the keyboard to open automatically, which was not a good user experience.
Now the search bar is not autofocus on touch devices for the POS config kanban view ('view_pos_config_kanban').
Forward-Port-Of: odoo/odoo#231045Resolved issues and error corrections
Odoo now ignores archived bank account records when checking whether a contact shares a bank account with another partner. This prevents misleading duplicate-account banners from appearing on contact pages after old or inactive bank details have been archived.
Original PR description
If a res_partner_bank record shares an acc_number with other res_partner_bank records, even archived ones, the field duplicate_bank_partner_ids still includes partners from those archived records. As…
If a res_partner_bank record shares an acc_number with other res_partner_bank records, even archived ones, the field duplicate_bank_partner_ids still includes partners from those archived records. As a result, the contact page shows a banner indicating other partners use the same bank account, even though those res_partner_bank records have been archived. Steps to reproduce the issue: 1. Create a new bank account which has the same bank account number as another bank account already associated to a partner 2. Assign this new bank account to another partner 3. Archive this new bank account 4. Go to the contact page of the partner (from step 1) which has a bank account with the same bank account number as the new bank account just created 5. A banner will pop up at the top of the contact saying that this partner uses the same bank account as the partner you set on the bank account in step 2 Solution: Add a condition to the JOIN clause that checks “other.active = TRUE” to ensure that other res_partner_bank records to search for that have the same account number are active. Also add a condition to the WHERE clause that checks “this.active = TRUE” to ensure that the current res_partner_bank record doing the search is active itself. opw-4967083 Forward-Port-Of: odoo/odoo#231585
Sent mass mailings now keep dynamic placeholders in the same line where users placed them. This prevents unexpected line breaks in readonly mailing content, preserving the intended email layout after sending.
Original PR description
In editable fields, the Web Editor currently adds the data-oe-t-inline attribute to items that are identified as needing to be displayed inline However, this attribute is added by the editor and removed on save. As a result, if the previously-editable field is ever set to readonly (for example: a mailing that is sent no longer allows users to edit its body), then the inline property appears to be lost: an inline dynamic attribute suddenly looks like it's on its own line. Steps to reproduce: - Create a mailing - Add a dynamic attribute in the middle of a line - Send the mailing - You will see a carriage return directly before and after the dynamic attribute Fix: The mass_mailing html field now applies the current inlining logic to readonly HTML. task-4852246 Forward-Port-Of: odoo/odoo#227651
Administrators can now resend or cancel SMS messages generated by the system without encountering an access error. This helps support and operations teams resolve failed or unwanted automated SMS messages directly from technical settings.
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 opw-4904157 Forward-Port-Of: odoo/odoo#230733
This fixes an eLearning display issue where highlighted text in course articles appeared correctly in the normal view but disappeared in fullscreen mode. Learners now see the same formatted content in both views, improving consistency during course consumption.
Original PR description
**Steps to reproduce:** - Go to eLearning course on the website - Edit an article - Add the highlighting effect on the text - Save the changes - The text is properly displayed in normal article - Go to the fullscreen version - The highlighting is not present in this version **Issue:** This is an ordering issue caused by the dynamic rendering of fullscreen slides. When in normal mode, the content is initialized and then the `TextHighlight` widget is started. But the rendering of the slides in fullscreen mode is delayed and occurs after the widget is applied. **Fix:** Recreate and restart the widget on `_renderSlide` in the `slides_course_fullscreen_player`` opw-4978798 related: https://github.com/odoo/odoo/commit/f64c9f27f1a9106bc009ad2f696845f2c5c58066 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230240 Forward-Port-Of: odoo/odoo#225150
This fix keeps certain document-related attachments stored locally instead of automatically uploading them to cloud storage. This helps avoid disruptions where business processes expect those attachments to remain available as document attachments.
Original PR description
Some models' attachments will automatically become document attachments which may be used in business code of documents. This commit avoids uploading these attachments to the cloud storage. 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 Forward-Port-Of: odoo/odoo#231628
The website team section now applies avatar sizing only to team member photos, not to other images added in descriptions. This prevents description images from being unexpectedly resized on mobile pages, improving page presentation for visitors.
Original PR description
Scenario:
- Add s_company_team snippet ("Meet our team" with avatar side by side
with description)
- Add an image in the description (small or big)
- See the page with mobile
Result: all images in the description get a fixed 50% max-width (from
18.0 a 8rem height) which was only meant for the avatar image.
Fix: be more specific with the selector to target only the avatar. The
selector .row.s_col_no_resize > .o_not_editable img.o_editable_media
should only target the intended avatar.
opw-4997932
Forward-Port-Of: odoo/odoo#231793
Forward-Port-Of: odoo/odoo#225412The table selection popup in POS self-ordering now lists tables consistently by floor and table number. This makes it easier for customers or staff to find the right table and reduces confusion during ordering.
Original PR description
Task [#4991803](https://www.odoo.com/odoo/my-tasks/4991803) Runbot: https://runbot.odoo.com/runbot/bundle/18-0-incremental-order-table-pop-pos-self-order-ltra-391429 --- When selecting a table in the POS self-order, we sort the tables by `floor_id` and then by `table_number` in ascending order. This ensures a consistent and user-friendly experience when choosing a table. Forward-Port-Of: odoo/odoo#222421
The help text for employee access settings in Point of Sale HR now matches how the setting actually works. This reduces confusion for administrators configuring employee permissions, with no change to business behavior.
Original PR description
Before this commit, the help text of the advanced_employee_ids field was inconsistent with its behavior, as it was not possible to keep it empty. This commit updates the help to reflect the actual behavior. opw-5112862 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228612
A broken Export Payslip action in Payroll is disabled because it led users to a Page Not Found error. This prevents confusion when viewing payslips, especially in debug or superuser mode, without affecting normal payroll processing.
Original PR description
Steps to reproduce: ------------------------- 1. Install `hr_payroll` module 2. Enable debug mode and click on Become Superuser 3. Go to All Payslips and open any payslip record 4. Click on the…
Steps to reproduce: ------------------------- 1. Install `hr_payroll` module 2. Enable debug mode and click on Become Superuser 3. Go to All Payslips and open any payslip record 4. Click on the Export Payslip button Observation: ------------------------- A 404 (Page Not Found) error appears when clicking the Export Payslip button Issue: ------------------------- The button triggers the route `/debug/payslip/<id>`, which was removed in the following commit https://github.com/odoo/enterprise/commit/57969bcaf876a13c36794adeb47e0da938e297ad#diff-0105b1a6a9e742e7eeaf7cc727745ebd3932177378d46332d4ca854f931b3359 The route was never reintroduced afterward, but the Export Payslip button remained in the view. As a result, clicking it leads to a 404 error Solution: ------------------------- 1. Temporarily bypass the `action_export_payslip` function. 2. Remove the Export Payslip button from the XML in the master forward port branch, as doing so does not impact any existing customizations relying on that button opw-5115946 Forward-Port-Of: odoo/enterprise#97361 Forward-Port-Of: odoo/enterprise#96359
Error messages for US payroll and payment processing now use the same bank field label that users see on the form. This helps users quickly identify the missing or incorrect bank information needed to complete payroll or NACHA payments.
Original PR description
The label shown in the res.partner.bank form view depends on the show_aba_routing field. If we don't show the correct label in these error messages it's not clear to the user what field they have to fill. task-5052996
Project sharing pages now show tags using the same light styling as the rest of the page. This fixes a visual inconsistency that could make shared project views look mismatched or harder to read.
Original PR description
Before this commit, the project sharing was using the dark style for tags even though the rest of the views are in light mode. Removing the tags_list.dark.scss file from the imported file in the manifest fixes this issue. task-5130176 Forward-Port-Of: odoo/enterprise#96751
This update makes IoT payment terminal logs more complete and consistent. Businesses and support teams will be able to trace each step of a transaction more easily, helping diagnose payment issues faster.
Original PR description
This PR improves the logging of terminals used with iot box. We will now get a log for every step of a transaction along with some information identifying the transaction Forward-Port-Of: odoo/enterprise#97216