Friday, February 20, 2026
8 changes · 18.0
Enhancements to existing features
This update simplifies invoice handling for Polish customers using KSeF (the Polish e-invoice system). Companies can now directly download invoices from KSeF, eliminating the need for traditional postal delivery. This ensures legally compliant invoice delivery and streamlines the accounting process.
Original PR description
If a company sell me something, they can send me an invoice. With KSeF, they do not have to send an invoice to me by post or mail - they can send it directly to KSeF. And it is legally delivered to me. Implement fetching bills from KSeF task-5405257 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves logging for the Codabox transaction process (_l10n_be_codabox_fetch_coda_transactions). These enhanced logs will assist the support team in quickly identifying and resolving any issues related to this integration, leading to faster problem resolution and improved service.
Original PR description
This commit will improve the logs of _l10n_be_codabox_fetch_coda_transactions to help the support team to debug possible problem. task-5436868
Resolved issues and error corrections
This update ensures that manually added analytic accounts on sales order lines are retained after a project is confirmed. Previously, confirming a sales order with a project would overwrite these manually set accounts. This change corrects a bug impacting accurate revenue tracking and reporting, specifically within the sale and purchase order modules.
Original PR description
To reproduce: 1. Create a product of type service that creates a project on confirmation 2. Create an Analytic Distribution Model for that same product 3. Create a Sales Order with the same product…
To reproduce: 1. Create a product of type service that creates a project on confirmation 2. Create an Analytic Distribution Model for that same product 3. Create a Sales Order with the same product 4. Add another analytic account on the same line 5. Confirm the Sales Order The manually added account (step 4) is no longer in the sale order line. Cause: When the project is added at confirmation, `_compute_analytic_distribution()` is triggered and leads to the existing analytic distribution to be overwritten, using only the accounts of the matching distribution models and the project account. Solution: Instead of calling `super()._compute_analytic_distribution()` whenever the order_id.project_id changes, now the call is only performed if there is no project set in the order. If there is a project, the existing distribution is kept, and the project account is added, if there is no account of the project plan. This means that if the project is added before any lines, the distribution model accounts won't be added. Also, if the project is removed after the lines have been added, the compute will be triggered, still leading to the overwrite of any analytic distribution manually added. The same happens in Purchase Orders with projects, so this commit also handles project_purchase. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an error that occurred when users quickly created picking types in Odoo, specifically in versions 19.1 and above. The change disables quick creation to avoid a required field issue, ensuring smoother receipt creation and preventing data inconsistencies.
Original PR description
Currently an error occurs when user quick creates a picking type and tries to create a receipt with it. **Steps to replicate (only in saas-19.1 and above):** - Install stock. - Go to Inventory >…
Currently an error occurs when user quick creates a picking type and tries to create a receipt with it. **Steps to replicate (only in saas-19.1 and above):** - Install stock. - Go to Inventory > Receipts and create a new receipt > Save it. - Clear the Operation Type field, type `test` and quick create it. - Save and the error will occur. **Error:** ``` UndefinedFunction: operator does not exist: integer = boolean LINE 1: SELECT number_next FROM ir_sequence WHERE id=false FOR UPDAT... ``` **Cause:** - As the user quick created the picking type, the `sequence_code` field was not set and when we try to get `next_number` to create the name for the current stock picking this error occurs. - In the versions before `saas-19.1` trying to quick create picking type will lead to a `Not-Null Violation` as `sequence_code` is a required field and then stock picking type form view will open up. - This error occurs only after `saas-19.1` and above versions because this [PR] made the `sequence_code` field into a related field so its required constraint was removed and hence quick create creates a new picking type. **Solution:** - Since Quick Create always opens the picking type form view (same behavior as `Create and edit` before saas-19.1), it should be disabled to avoid redundancy. - This also prevents the error in versions `saas-19.1` and above. [PR]: https://github.com/odoo/odoo/pull/190305/changes#diff-79cbc763115661182c02285c07320098510f5686700359ddee67443b4893dc30L32-R32 sentry-7203804886 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures shift start and end times automatically align with the selected shift template, even when employees have fixed schedules. Previously, shifts were incorrectly calculating hours based on employee schedules, leading to inaccurate shift durations. This change corrects this behavior, providing more reliable shift planning.
Original PR description
__ ## Short functional explanation of the error Let's say we create a role containing employees with fixed schedules. Then, we create a shift template that applies on this role. When we create a…
__ ## Short functional explanation of the error Let's say we create a role containing employees with fixed schedules. Then, we create a shift template that applies on this role. When we create a shift, the starting and ending hours will take into consideration the hours of the employee's fixed schedule, instead of aligning with the shift template start and end hours. As discussed with XBO, the start and end hours of the shift should align with the shift template, despite the fixed working schedules having different start and end hours. ## Reproduction Steps 1. Go to Planning. Click on Configuration tab > roles. 2. Create a role and add an employee as a resource This employee has to have a fixed working schedule. 3. Click on Configuration tab > Shift Templates. 4. Create a new Shift Template. Select starting and ending hours different from the employee's fixed schedule. Select the role you just created. 5. Click on Schedule tab > By resource and click on New. 6. Select the role you just created. ### Expected behavior The start and end hours should align with the shift template start and end hours. ### Unexpected behavior The start and end hours are aligned on the employee's fixed working schedule: if the employee has a schedule from 8 to 16h36 and the shift template goes from 10 to 18, the starting and ending hours will be 10 to 16h36. ## Origin of the issue We kept computing the working intervals of employees, even if a shift template was set: https://github.com/odoo/enterprise/blob/8b00363e5e461f11b9736354d94e520e21932e71/planning/models/planning.py#L656-L664 Which isn't necessary in the case where a shift template has been set, as the start and end time are determined by the shift template, and not the employee's schedule. __ opw-5898509
This update resolves an issue where users in the 'Planning / User' group couldn't take open shifts. The fix ensures that the 'I Take It' button is consistently displayed for this group, allowing them to seamlessly accept shifts within the Planning app. This improves usability for a key group of users.
Original PR description
## Issue In the Planning app, users within the *Planning / User* groups could not take open shifts. The button *"I Take It"* would not be displayed when clicking on the shift. ## Steps to reproduce…
## Issue
In the Planning app, users within the *Planning / User* groups could not take open shifts. The button *"I Take It"* would not be displayed when clicking on the shift.
## Steps to reproduce
1. Install the *Planning* (`planning`) app
2. In the Planning app, as an admin, create and publish an open shift
3. Log in as a *User*, open the *Planning* app, and click on the open shift
4. **The _"I Take It"_ button is not displayed**
When logging in as a user who is **not** part of the *Planning / User* group, the *I Take It* button is displayed.
## Cause
The condition for the *I Take It* button to be displayed is the following:
https://github.com/odoo/enterprise/blob/301e3c40c3272a6ae89a1eb4387d7d244e1dc52c/planning/views/planning_views.xml#L282-L283
The condition that makes the button invisible is `not context.get('my_planning_action')`. When the user is part of *Planning / User*, the schedule they see when opening the *Planning* app is the *"Schedule by Resource"*, which has the following context:
https://github.com/odoo/enterprise/blob/301e3c40c3272a6ae89a1eb4387d7d244e1dc52c/planning/views/planning_views.xml#L716
When a user who **is not** part of the *Plannig / User* group opens the *Planning* app, they see their own schedule, where the context is different than in the first case:
https://github.com/odoo/enterprise/blob/301e3c40c3272a6ae89a1eb4387d7d244e1dc52c/planning/views/planning_views.xml#L636
Because the `my_planning_action` property is in the context (and all the other conditions are respected), the button is displayed.
opw-5451282This update ensures that Peppol invoices always include the attached PDF document. Previously, sending invoices via Peppol bypassed a process that automatically embedded the PDF, resulting in receivers only receiving the XML data. This fix guarantees compliance and a complete invoice delivery for Peppol transactions.
Original PR description
**Steps to reproduce:** * Install `Accounting` and `accounting_peppol` modules. * Create Belgium company. * Go to accounting settings and activate PEPPOL under `PEPPOL Electronic Invoicing`. * Create…
**Steps to reproduce:** * Install `Accounting` and `accounting_peppol` modules. * Create Belgium company. * Go to accounting settings and activate PEPPOL under `PEPPOL Electronic Invoicing`. * Create and post a customer invoice. * Click **Send & Print**. * Select only **Email** and click **Send** to generate the PDF. * Click **Send & Print** again. * Select only **Peppol** (partner configured for Peppol). * Click **Send**. **Observed behavior:** * The invoice is sent via **Peppol**, but the generated UBL XML does **not** contain the embedded PDF. * The receiver gets the XML data without the PDF representation. **Cause:** * When a PDF already exists on the invoice, the send flow skips the document post-processing step to avoid regenerating it. * The PDF embedding into the UBL XML relies on this post-processing step. * Sending via Peppol after emailing the invoice therefore bypasses the PDF embedding logic. **Fix:** * When sending via **Peppol**, detect if a PDF already exists on the invoice. * If so, explicitly post-process the UBL XML to embed the existing PDF before sending. * Ensures the PDF is always included in Peppol messages, regardless of when it was generated. opw-5495465
This update fixes an issue where the system incorrectly predicted taxes on imported invoices. Previously, it relied on customer history, even if the XML invoice contained only one tax rate. Now, the system accurately uses the tax information directly from the imported XML file, ensuring correct tax calculations.
Original PR description
Context: When importing an XML invoice or vendor bill, the tax prediction was based on the customer’s invoice history. Example: if the imported invoice contains an item found in the history with two taxes (6% and 21%), the prediction would return both taxes (6% and 21%), even though only one tax is present in the XML file. The actual tax data present in the imported XML was not taken into account. After this commit, the prediction is more rigorous and correctly relies on the tax information provided in the XML (restricted search domain) task-5503126 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246308