Monday, September 22, 2025
15 changes · 19.0
Enhancements to existing features
Users can now add SEO-related link settings such as nofollow, noreferrer, noopener, and sponsored when creating or editing links. This helps businesses better manage search engine behavior, paid-link disclosure, referral privacy, and safer external links from edited content.
Original PR description
Before this commit:- Users could not add any SEO-related attributes when creating a link in the HTML editor. After this commit: Users can now add SEO-optimized attributes while creating or editing a link. The available attributes meaning are: nofollow: Instructs search engines not to follow the link. noopener: Improves security and performance by preventing the new page from accessing the original window. noreferrer: Hides referrer information sent to the target site. sponsored: Marks the link as sponsored or paid content. This improvement makes link creation more SEO-friendly and secure. task-4896906
Portal users can now get emoji suggestions while typing in chatter conversations, making messages quicker and more expressive. This improves the customer-facing communication experience in portal discussions and live chat interactions.
Original PR description
* = im_livechat This commit enables emoji suggestions in the portal chatters. task-4661468
Australian payroll has been updated to apply the latest ATO Schedule 8 student and training support loan withholding rates and calculation flow. This helps employers calculate compliant payslips for the September 2025 mid-year tax table update.
Original PR description
This commit updates the Schedule 8 witholding flow and rate for mid year update as per ATO guidelines effective from 24-09-2024. https://softwaredevelopers.ato.gov.au/2025-pay-you-go-payg-withholding-tax-tables Task: 5088270 Forward-Port-Of: odoo/enterprise#95083
XML imports now create one clear, consistently formatted message instead of several disordered chatter entries. The message also includes the imported XML, making invoice reception and Peppol import history easier to review and audit.
Original PR description
Previously, the import of an XML was doing many consecutive logs into the chatter in a weird order. We now have one single log that formats the import in a reliable way. We also display the XML itself into the chatter. **Before:** <img width="717" height="597" alt="image" src="https://github.com/user-attachments/assets/f65d75a1-c79e-4597-8134-a82e42a22701" /> **After:** - Regular XML import <img width="719" height="266" alt="image" src="https://github.com/user-attachments/assets/5e58a81c-e89e-4a74-95ae-8af0021097fa" /> - Peppol reception <img width="533" height="264" alt="image" src="https://github.com/user-attachments/assets/0249c061-85e3-4664-a6bd-e7a57c90f581" /> task-none (feedback from AL + DLE)
Resolved issues and error corrections
Fixed an issue where Saudi Arabia invoice PDFs could omit the company logo when another localization module was installed. This ensures printed invoices display the correct company branding for customers and compliance documents.
Original PR description
steps to reproduce: ------------------- 1. Install `l10n_sa_edi` and `l10n_latam_invoice_document` 2. Create and confirm an invoice. 3. Print the invoice PDF issue: ------ The company logo is not…
steps to reproduce:
-------------------
1. Install `l10n_sa_edi` and `l10n_latam_invoice_document`
2. Create and confirm an invoice.
3. Print the invoice PDF
issue:
------
The company logo is not printed on the invoice PDF.
cause of the issue:
-------------------
The `l10n_latam_invoice_document` hides the standard company logo if
`company_header` is set to true:
https://github.com/odoo/odoo/blob/0f6cb037e05db86e808682659a12442464b2cdd2/addons/l10n_latam_invoice_document/views/report_templates.xml#L6-L8
In the case of `l10n_sa`, the custom_header value is set because of this condition:
https://github.com/odoo/odoo/blob/0f6cb037e05db86e808682659a12442464b2cdd2/addons/l10n_sa/views/report_invoice.xml#L23
However, the condition in `l10n_latam_invoice_documnet` expects
a callable record instead of static XML data, which is incorrect:
https://github.com/odoo/odoo/blob/022fcbcf40a28afa56010f6130c26bb0503d5467/addons/l10n_latam_invoice_document/views/report_templates.xml#L9-L14
solution:
---------
Renaming the variable to `custom_header_sa` resolves the issue.
<details>
<summary>Click here to see:</summary>
Before:
<img src="https://github.com/user-attachments/assets/f4606a44-10ce-4038-92a3-2c8ec2a69edf"/>
After:
<img src="https://github.com/user-attachments/assets/70055155-63f2-4fec-aaf6-3bf5587f5591"/>
</details>
opw-4977422
Forward-Port-Of: odoo/odoo#225476This fixes bus notifications so users receive updates through both their direct groups and any groups they inherit. Administrators and other users with implied group membership will now see relevant Discuss channel updates immediately without needing to reload.
Original PR description
To target users of a group, bus notifications are sent on group records. To do so, user groups are added to its bus subscription. However, since odoo/odoo#179354, only explicit groups are added, not every implied group. It's incorrect. For example, sending on the user channel doesn't notify administrators while it should. Steps to reproduce (note that the steps are only working for admin): - Click the gear button on the sidebar in discuss page to navigate to the channel kanban view as admin - Click the `New` button and create a channel with an internal users group as `Auto Subscribe Groups` - Go back to the discuss main page. The new channel will not be pinned unless you reload the page See: https://github.com/odoo/odoo/pull/179354/files#r1954163704 Forward-Port-Of: odoo/odoo#217543
Bookkeeper and related accounting users can now open India tax returns without access errors on document summary lines. This keeps tax return review and navigation smooth for permitted users.
Original PR description
Before: - Bookkeeper users (`group_account_user`) encountered an access error of gstr document summary line when opening tax returns. - The error occurred because access rights were missing for the given model. Fix: - Added access rights for readonly, basic and accounting users. - Bookkeeper users can now view and navigate their permitted tax return records without errors. Impact: - Ensures smooth access to tax returns for Bookkeeper role.
This fixes an issue where changing an employee's check-in or check-out time could incorrectly reset approved extra hours to zero. Extra hours now recalculate when attendance times change, unless the user has intentionally edited the extra-hours value themselves.
Original PR description
**Steps to reproduce** - Automatically approved attendances. - Create an attendance and save it. - Note the "Extra hours" displayed. - From the form view, change the check in or check out and save…
**Steps to reproduce** - Automatically approved attendances. - Create an attendance and save it. - Note the "Extra hours" displayed. - From the form view, change the check in or check out and save it. - Issue: "Extra hours" are 0. Expected: they should be the same as "Worked extra hours", as the user has not manually modified the field. **Cause** Issue since cc81bb59f87540cf4dd8da65510417d8023ef65b The problem is that a 0 value for `overtime_hours` was computed for the `NewId` record used during edition in the interface. This meant `validated_overtime_hours` was also set to this value https://github.com/odoo/odoo/blob/cc81bb59f87540cf4dd8da65510417d8023ef65b/addons/hr_attendance/models/hr_attendance.py#L171 and sent on save, which meant the value was not further recomputed in `_update_overtime`. https://github.com/odoo/odoo/blob/cc81bb59f87540cf4dd8da65510417d8023ef65b/addons/hr_attendance/models/hr_attendance.py#L408 **Change** We avoid a recomputation of `validated_overtime_hours` in the interface (which wasn't useful anyway, it was set to 0) to avoid it being interpreted as a manual change by the user. opw-5003488 Forward-Port-Of: odoo/odoo#226393 Forward-Port-Of: odoo/odoo#222689
Duplicate records can now be found and merged in single-company databases even when their company value differs. This helps teams clean up data more reliably without needing multi-company settings or workarounds.
Original PR description
**Issue** In single company databases, it wasn't possible to find duplicate records with different `company_id` values to merge them (in multi company databases, it is possible to enable the "Cross-Company" option on the deduplication rule). **Change** Always ignore the company field in single company databases. opw-4794408 Forward-Port-Of: odoo/enterprise#94797 Forward-Port-Of: odoo/enterprise#93184
The Spanish Mod347 tax report now includes withholding tax lines when calculating report amounts. This prevents understated totals for affected customer or vendor transactions, helping businesses file more accurate Spanish tax reports.
Original PR description
Withholding taxes should be taken into account in mod347 tax report. Steps: - Create a bill for a spanish customer - Set the amount of 40000, tax 21% and 15% withholding tax - Go to mod347 tax report -> Line "B - Sales of goods and services greater than 3.005,06 €" is showing 42,400.00 instead of 48,400.00 (same goes for other lines with similar configuration) Before this commit, custom engines domains were only including aml with payable or receivable account. With this commit, we include tax lines that are of type 'retencion' in the custom engines domains. opw-4448662 Forward-Port-Of: odoo/enterprise#95066 Forward-Port-Of: odoo/enterprise#94338
This pull request resolves several user-facing issues, including payment checkout errors, invoice tax handling problems, and website editing layout glitches. It improves reliability for businesses using online payments, Indonesian e-Faktur invoicing, point of sale, events emails, and website snippets.
Customers using self-ordering will no longer see time slots that are already full or have passed. This prevents invalid selections and makes the ordering experience clearer and more reliable.
Original PR description
When selecting a preset in pos_Self_order the slots were not filtered. Issues: - Full slots were still displayed - Slots in the past were still displayed
This fix stops the Point of Sale restaurant flow from treating every product category as needing preparation when no kitchen printer or preparation display category is configured. Staff can now add and pay for orders without seeing an unnecessary “send to preparation” prompt, reducing confusion during checkout.
Original PR description
Steps to reproduce: - Open a pos restaurant config that has no prep printer/display. - Add an orderline. - The order button appear and if you try to pay the popup ask for send to preparation is shown. Issue: If there is no preparationCategories for a config getOrderChanges consider that all the available categories are the preparationCategories. Fix: If there is no preparationCategories, set the orderline uiState hasChange to false. Note: When no preparation printer category is defined, no categories is to be return by default. For the preparation display, if no preparation categories is selected preparationCategories will return all the available categories. Task-5016231 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#222950
The Danish minimal balance sheet and profit and loss reports were corrected so report formulas no longer include extra signs that could produce wrong values. Report line names and translations were also cleaned up for clearer presentation and consistency.
Original PR description
In the minimal reports of l10n_dk, it appears that some expression ended with a sign and the report engine was given wrong value. This commit will remove the extra sign to correct the report and also remove the letter or number before the name. This commit will remove the extra sign to correct the report and also remove the letter or number before the name. This commit will change the translation accordingly to the other commits task-4949062 Forward-Port-Of: odoo/enterprise#94350 Forward-Port-Of: odoo/enterprise#91135
Searching from the Help page now completes reliably instead of triggering an error. This prevents users from seeing a traceback and keeps the help experience smooth when looking for support content.
Original PR description
Steps to reproduce: 1. Navigate to the Help menu. 2. Search for any term in the search bar. - A traceback occurs. Issue: The search method did not wait for the RPC call to complete and returned a promise prematurely, leading to an unhandled traceback. Fix: Ensure the method properly awaits the RPC call before returning the result.