Sunday, September 13, 2026
10 changes · master
Enhancements to existing features
Online payment screens now reflect when a payment is under audit in OdooFin, so users can see why online payment options may be unavailable. This helps avoid confusion by hiding or disabling payment actions that cannot be used during the audit process.
Original PR description
Sometimes payments can be in audit on odoofin, in this case the payment online option is disabled. This commit connects the audit status on Odoofin and display or hides some elements on the interface according to thse audit status. task-6495163
Belgian payroll now uses clearer establishment unit wording and adds checks to prevent payroll issues when employee contracts fall outside an establishment unit's valid location period. It also streamlines setup by auto-filling competences from working addresses and making employee access from establishment units easier.
Original PR description
1. Renamed DMFA work locations into Establishment unit 2. Added checks to make sure employees don't start their contract before the location period of an establishment unit 3. Added a warning on Payroll, blocking payslips if the establishment unit location date isn't correct 4. Added automatic completion for competences: when selecting a working address, the competence is filled automatically. 5. Added a smart button 'Employee' on Establishment unit. __ task-6432041
Belgian payroll now uses clearer establishment unit naming and adds stronger checks around employee contract dates and work locations. This helps prevent payroll processing errors, improves automatic data completion, and makes it easier to find employees linked to each establishment unit.
Original PR description
1. Renamed DMFA work locations into Establishment unit 2. Added checks to make sure employees don't start their contract before the location period of an establishment unit 3. Added a warning on Payroll, blocking payslips if the establishment unit location date isn't correct 4. Added automatic completion for competences: when selecting a working address, the competence is filled automatically. 5. Added a smart button 'Employee' on Establishment unit. 6. Added address_id as required field. 7. Prevent autofill on l10n_be_hr_payroll when there are multiple establishment units for the same company. __ task-6432041
Expense report PDFs are now generated in grouped batches where possible instead of separately for each expense. This preserves the previous expense sheet reporting behavior and should make report generation more efficient and consistent for users handling multiple expenses.
Original PR description
Since 704a5a19, the reports would be rendered once per expense. We actually want to group expenses as much as possible and keep the logic of the late expense sheet PDF generation. task-5951683 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
Expense reports linked to payroll are now grouped together where possible instead of being generated one expense at a time. This keeps the previous expense sheet reporting behavior and should make payroll expense report handling more efficient and consistent.
Original PR description
Since odoo/odoo@704a5a19, the reports would be rendered once per expense. We actually want to group expenses as much as possible and keep the logic of the late expense sheet (RIP) PDF generation. task-5951683
Bank statement lines can now automatically reconcile installment-based accounting entries when the system is confident they are linked. When multiple installments are involved, the earliest installment is processed first, helping reduce manual reconciliation work and improve consistency.
Original PR description
Moves with installments should be auto reconciled if we're sure the move is linked to the statement line. If we are sure that the installments are linked to the statement line then the installment with the lowest id should be reconciled first. task-6285410 Forward-Port-Of: odoo/enterprise#131304 Forward-Port-Of: odoo/enterprise#119891
Users can now point the website AI assistant to a specific page element instead of describing it in words. This makes edit requests clearer on complex pages and helps the assistant understand targets, references, and insertion points more reliably.
Original PR description
## Element Selection Tool Pointing at an element is much fast than describing it, and text description get ambiguous once a page has repeated or nested structures. Users can now attach an element to a request, whether as the target to edit, a visual reference, or the spot to insert relative to.
Discuss call recordings are now connected to Odoo's AI transcription flow, making transcripts available alongside the recorded media. This helps users review calls more easily, find key discussion points, and follow up without replaying the full recording.
Original PR description
Connect Discuss recordings to the existing AI transcription pipeline so users can review transcripts alongside recorded media. Co-authored-by: ThanhDodeurOdoo <tso@odoo.com> related to: https://github.com/odoo/odoo/pull/234505 https://github.com/odoo/sfu/pull/27 [task-3725174](https://www.odoo.com/odoo/project.task/3725174)
Luxembourg payroll calculations have been updated with the 2026 rule parameters. This helps employers keep payroll contributions, employer rules, general settings, and tax credits aligned with the latest requirements.
Original PR description
Update Luxembourg payroll rule parameters for 2026. Task-6481735 Forward-Port-Of: odoo/enterprise#130123
Resolved issues and error corrections
Embedded livechat visitors can now download files sent from Odoo when the chat widget is used on an external website. This fixes a browser blocking issue caused by cross-origin download handling, improving the reliability of customer conversations that include attachments.
Original PR description
**Steps to reproduce:** - Install `im_livechat` module - Copy the code from the livechat channel's widget tab - Paste it in an external website `<head>` (e.g., local python webserver on `0.0.0.0`) -…
**Steps to reproduce:**
- Install `im_livechat` module
- Copy the code from the livechat channel's widget tab
- Paste it in an external website `<head>` (e.g., local python webserver on `0.0.0.0`)
- Start a conversation and send a file from odoo
- Try to download it from the external website
- POST request is sent for the download
- Download fails: `CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.`
- Also when the file is a PDF the preview won't open: `404 (File not found)`
**Issue:**
Mix of multiple issues:
- The download is triggered using a POST request instead of a GET request
(see similar issue for the file viewer [1])
- The file route does not provide the required CORS headers, so requests
originating from the external website are blocked by the browser
- PDF files are rooted to the related path of the `pdfjs` fileviewer
(e.g. `http://0.0.0.0:8000/web/static/lib/pdfjs/web/viewer.html?file=...`)
```xml
<!--
Template rendering all the scripts required to execute the Livechat from an external page (which not contain Odoo)
-->
<template id="external_loader" name="Livechat : external_script field of livechat channel">
<!-- the loader -->
<script defer="defer" t-attf-src="{{url}}/im_livechat/loader/{{channel_id}}" type="text/javascript"/>
<!-- js of all the required lib (internal and external) -->
<script defer="defer" t-attf-src="{{url}}/im_livechat/assets_embed.js" type="text/javascript" />
</template>
```
**Fix:**
Make the `downloadFile` helper handle cross-origin URLs by falling back to a native `<a download>` click (like before) when the target route has the same origin as the embedded script. Could use `session.origin` or `new URL(document.currentScript.src).origin` for this. This is done to avoid allowing CORS on the file content route.
The file viewer issue is handled separately by [1].
For the PDF issue we could manually add the origin to the full url everywhere (but we get some `SecurityError` error from the library due to the cross-origin iframe), add the libjs library in the `assets_embed` (not sure it's possible in `im_livechat.assets_embed_external`), or block external PDF preview for now.
[1] https://github.com/odoo/odoo/pull/281330
opw-6444167
Forward-Port-Of: odoo/odoo#287846
Forward-Port-Of: odoo/odoo#286180