Daily updates from Odoo
Tuesday, April 7, 2026
15 changes · saas-18.3
Resolved issues and error corrections
This update corrects a discrepancy in the calculation of employment bonuses for Odoo Enterprise users in Belgium. The change reflects the latest regulations from Partena Professional, ensuring accurate bonus payments up to April 2026. This update maintains compliance with Belgian tax laws and avoids potential financial discrepancies.
Original PR description
https://www.partena-professional.be/fr/le-bonus-lemploi-au-1er-avril-2026?utm_source=sfmc&utm_medium=email&utm_campaign=InfoFlash+Daily+Mail+-+FR&utm_content=article-read-more-cta&utm_term=All%20Subscribers&utm_id=81873&sfmcContactKey=litom@odoo.com Forward-Port-Of: odoo/enterprise#112970
A recent update to Odoo inadvertently created a problem with purchase order confirmations. This fix corrects a field name change that was causing errors, ensuring purchase orders can be processed correctly. This resolves a rare but impactful issue that could block order confirmations.
Original PR description
A big refactor of UOM in saas-18.1 (https://github.com/odoo/odoo/pull/184131) accidentally left a reference to the `product_uom` field on `purchase.order.line`. But that field was renamed to `product_uom_id` in https://github.com/odoo/odoo/pull/186250. In rare edge-cases, if we it `supplierinfo['product_uom_id'] = line.product_uom.id` while confirming a purchase order, it will block it because of a traceback: ``` supplierinfo['product_uom_id'] = line.product_uom.id ^^^^^^^^^^^^^^^^ AttributeError: 'purchase.order.line' object has no attribute 'product_uom'. Did you mean: 'product_id'? ``` This PR fixes the issues by accounting for the field rename. OPW-6068125 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256416
This update fixes an issue where the table toolbar wasn't appearing correctly when selecting columns in a table. Specifically, it ensures the toolbar aligns with the actively selected cells, providing a more intuitive user experience. This enhancement improves the usability of the HTML editor within Odoo.
Original PR description
**Current behavior before PR:** Steps to reproduce: - Create a 3 x 3 table. - Select 3rd column and wait for toolbar. Currently, the toolbar is positioned at the start of the table even when the last column is selected. This happens because selecting cells in the 3rd column creates a DOM selection range that starts at the first cell and ends at the last cell of the column, traversing all intermediate elements. As a result, browser's range rectangle does not match the actual custom-selection rect. **Desired behavior after PR is merged:** Now, Toolbar is positioned correctly above the custom selected cells. task-5935587 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257608 Forward-Port-Of: odoo/odoo#248964
This update fixes a misleading error message users saw when trying to edit property fields without a parent category. The message has been changed to a clearer instruction: "Oops! A <parentFieldLabel> is needed to add property fields." This improves usability and guides users correctly.
Original PR description
Issue: ------------------------------------------ - When using property fields (e.g., products where categories are optional), users trying to edit properties without a parent document receive a…
Issue: ------------------------------------------ - When using property fields (e.g., products where categories are optional), users trying to edit properties without a parent document receive a broken warning: "Oops! You cannot edit the Category 'undefined'." - This message is misleading and does not explain the actual dependency. How to reproduce: ------------------------------------------ 1. Create or edit a record (e.g., product) without setting its parent (e.g., category). 2. Click the cog menu and select "Edit Properties". Cause of the issue: ------------------------------------------ - In the `PROPERTY_FIELD:EDIT` bus handler, when `definitionRecordId` is missing, `checkDefinitionWriteAccess` returns `false`, which then calls `_getPropertyEditWarningText`. That method accesses `false[1]` on the unset field, resulting in "undefined" in the warning message. Solution: ------------------------------------------ - Added a check in `_getPropertyEditWarningText` to return an appropriate message when `definitionRecordId` is missing: "Oops! A `<parentFieldLabel>` is needed to add property fields." task-4589393 Forward-Port-Of: odoo/odoo#205107
This update resolves an issue where the width of avatar names was incorrectly set to zero, causing display problems. The fix ensures that avatar names are displayed at their intended size, improving the visual consistency of user profiles and communications within Odoo.
Original PR description
This commit fix the width of the displayName option of the Avatar component which was fixed to zero (bootstrap class 'w-0') Task-5122979
This update fixes several issues within the odoo spreadsheet library, improving its reliability and functionality. Specifically, it addresses date formatting problems, enhances error handling, and modernizes the testing environment. These changes ensure a smoother and more accurate spreadsheet experience for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/b5e1d35c57 [REL] 18.3.41 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/b5e1d35c57 [REL] 18.3.41 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/c8e3f24c0a [FIX] Grid: hide the table resizer in readonly mode [Task: 6054035](https://www.odoo.com/odoo/2328/tasks/6054035) https://github.com/odoo/o-spreadsheet/commit/5911d26f6c [FIX] formats: bypass date format for invalid dates [Task: 6032998](https://www.odoo.com/odoo/2328/tasks/6032998) https://github.com/odoo/o-spreadsheet/commit/b863739c61 [FIX] Formats: properly format dates with 3 year digits [Task: 6032998](https://www.odoo.com/odoo/2328/tasks/6032998) https://github.com/odoo/o-spreadsheet/commit/d0bf86df89 [FIX] package: update types/jest to match jest version [Task: 6092447](https://www.odoo.com/odoo/2328/tasks/6092447) https://github.com/odoo/o-spreadsheet/commit/cb4d3a2177 [FIX] tests: add missing tsconfig.json [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/49ee6ba090 [FIX] config: move to ESM release tool [Task: sotg](https://www.odoo.com/odoo/2328/tasks/sotg) https://github.com/odoo/o-spreadsheet/commit/f08865bf8e [IMP] Errors: Add error origin position for #SPILL errors [Task: 5959985](https://www.odoo.com/odoo/2328/tasks/5959985) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update fixes an issue where browser tab changes while the product configurator dialog is open would reset sales orders to their previous state. Now, changes made within the dialog are correctly saved, ensuring data integrity when switching between tabs. This improves the user experience and prevents data loss.
Original PR description
## Versions 18.0+ ## Issue When the product configurator dialog is open, a browser tab change acts like a discard on the SOL: coming back to the Odoo tab displays the dialog but the SOL has been…
## Versions
18.0+
## Issue
When the product configurator dialog is open, a browser tab change acts like a discard on the SOL: coming back to the Odoo tab displays the dialog but the SOL has been reverted to its previous state.
## Steps to reproduce
- Create a new SO for any customer:
- Add a standard (non-combo/non-variant) product (e.g. "Apple Pie");
- Save manually;
- Change the product for a combo or variant one (e.g. "Customizable Desk");
- With the opened dialog, change from browser tab then come back;
- The SOL has been reset to the standard product ("Apple Pie") and confirming the dialog has no effect).
## Cause
The `beforeVisibilityChange` hook is triggered by the tab change and saves the form without updated values. This is because the hook checks for two conditions to be true: https://github.com/odoo/odoo/blob/2f00b0085574653ca1a8f734ef91893a4a1c1a7c/addons/web/static/src/views/form/form_controller.js#L479-L483 The tab change indeed changes the document's visibility to "hidden" but the controller has never been updated with the form's display in the dialog and, therefore, `this.formInDialog` is indeed equal to zero.
## Test
No test as we cannot simulate a browser tab change then come back to the first tab.
opw-5494089
Forward-Port-Of: odoo/odoo#257482
Forward-Port-Of: odoo/odoo#247797This update corrects a bug in the Point of Sale order report that incorrectly displayed margin values when orders were placed in different currencies. The fix ensures that the margin calculation and reporting now accurately reflect the currency used in the order, providing more reliable financial reporting for sales transactions. This improves the accuracy of sales analysis and reporting.
Original PR description
When making a pos order in a PoS that uses a different currency, the margin in the pos order report would not take the currency into account Steps to reproduce: ------------------- * Create a product with a price of 100€ and cost 0€ (margin = 100€) * Setup a PoS to use a different currency with a rate of 2 (so 1€=>0.5) * Create a PoS order for this product and validate it * Go to the pos order report and select the order you just made > Observation: The value of the margin is 200 expressed in the different currency, when the rest of the report is using the company currency. Why the fix: ------------ The currency was only applied on the product cost, we now apply it on the whole margin. opw-5927473 Forward-Port-Of: odoo/odoo#255344
The session reports generated from Point of Sale orders with decimal quantities were displaying excessive decimal places. This update rounds the final totals to two decimal places, ensuring accurate reporting of sales data. This improves the clarity and reliability of sales reports.
Original PR description
When selling a lot of product with different quantities (quantities with decimals) the session report total by category might have a lot of decimals instead of 2. Steps to reproduce: ------------------- * Open PoS * Make an order with a lot of product and modify the quantities to have random values with decimals * Close the session * Generate the session report > Observation: The total qty by category has a lot of decimals instead of the 2 expected. The same error also happens for the total price Why the fix: ------------ We round each value with their respective precision to make sure we don't have 15 decimals. opw-6039016 Forward-Port-Of: odoo/odoo#256038
This update resolves an issue where the 'Export XML' button for EU Standard (Peppol Bis 3.0) invoices wasn't functioning correctly. Now, users can download invoices in the expected XML format when creating invoices with this eInvoice type, ensuring proper compliance with Peppol regulations. This improves the ability to integrate with external systems.
Original PR description
Issue: Export XML button doesn't produce the same file as the send button. Steps to reproduce: - Company in Spain with Peppol (work with any Peppol country) - Partner in Croatia - Select eInvoice…
Issue: Export XML button doesn't produce the same file as the send button. Steps to reproduce: - Company in Spain with Peppol (work with any Peppol country) - Partner in Croatia - Select eInvoice Type as "EU Standard (Peppol Bis 3.0)" - Create an invoice - Confirm it - Click on the Wheel -> Download Current behavior: - without l10n_hr_edi: only "PDF" and "PDF without Payment" - with l10n_hr_edi: "Export XML" appear, but try to create an "ubl_hr" file Cause: "Export XML" button appear only if: - there is a default ubl option for the partner country - there is an XML attached to the invoice when clicked it exports the corresponding one. Whereas, the 'send' button rely on: 1) the partner defined edi format, 2) the default ubl option for the partner country 3) "ubl_bis3" To be noted: The route to download the XML doesn't keep the context of the active company and fallback to the first allowed company. As invoice_edi_format is company dependent it needs to be exported in the format defined for the company of the invoice. opw-5943500 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves issues causing unreliable test results in the HTML editor's testing framework. By ensuring tests wait for the editor's full initialization, the tests are now more consistent and predictable, reducing the risk of false failures. This improves the overall stability of the HTML editor module.
Original PR description
See individual commits.
This update fixes an issue where Odoo incorrectly consumed stock from the wrong location when scanning serial numbers on manufacturing orders. The fix ensures the correct warehouse location is used, preventing errors in inventory tracking and improving order fulfillment accuracy. This resolves a potential problem with stock discrepancies.
Original PR description
Steps to reproduce: - Create a Manufacturing Order with a serial-tracked component. - Open the Shop Floor. - Scan the serial number barcode to register the component. - Observe which location the component was consumed from. Issue: When a product is received from a vendor, Odoo creates two quants for the same serial number — one at Partners/Vendors location and one at WH/Stock location. Because get_quant_from_barcode searched for a matching serial number with no location filter, it returned whichever quant had the lowest database ID — which was always the Partners/Vendors or Production quant created first — instead of the correct WH/Stock quant. Solution: Prevent selecting a quant from an incorrect location when multiple quants exist for the same serial number, as this can lead to consuming stock from the wrong location. opw-5974474
This update adds a required field to Milestone actions to ensure the Odoo database remains stable during upgrades. The change addresses a technical constraint within the Odoo database structure that prevents both an action ID and a custom Python method from being defined simultaneously. This ensures smooth database updates and prevents potential issues.
Original PR description
Add an empty `python_method` field to the Milestones embedded actions. This is necessary to satisfy the `_check_only_one_action_defined` constraint during database upgrades. The `ir.embedded.actions` model enforces an XOR constraint between `action_id` and `python_method`, preventing both fields from being set simultaneously. Related PR: https://github.com/odoo/odoo/pull/254102 task-5993183
This update corrects errors related to Spanish Value Added Tax (IGIC) calculations, specifically for the 5% rate. It adds the necessary tax codes and fiscal positions, ensuring accurate reporting of IGIC for Spanish businesses using Odoo. This improves compliance with Spanish tax regulations.
Original PR description
- Fix also some errors on the 5% taxes, where a 3 percent was applied or the group was not the right onw @jco-odoo --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231836
This update corrects a previous issue where the Amazon fulfillment channel within the sales module was incorrectly displayed as read-only. The change ensures users can now modify their Amazon channel settings, streamlining the process for managing Amazon sales fulfillment. This improves operational efficiency.
Original PR description
Commit 67c45d6494f082e2ee83b9a84611e8b8fe8f4fd5 intended to make `amazon_channel` editable by users. However, the field was displayed with the `badge` widget, which is read-only, so it remained uneditable. Use an editable display for `amazon_channel` so the original fix works as intended. Forward-Port-Of: odoo/enterprise#112866