Friday, June 12, 2026
10 changes · 18.0
Resolved issues and error corrections
This update resolves an issue where the Odoo system incorrectly flagged incompatible UoM selections during UBL import. Specifically, when a UBL bill used a different UoM category than the product's default, it would trigger an error. Now, the system automatically uses the product's original UoM category, ensuring smoother and more reliable import processes.
Original PR description
The new collected_values UBL import flow sets product_uom_id from the XML unitCode without checking that the resolved UoM category matches the matched product's UoM category. When they diverge, writing the line triggers the incompatible error. Steps to reproduce: 1. Create a product "XYZ" with UoM "Units" (category "Unit"). 2. Import a Peppol UBL bill whose line has Item/Name "XYZ" and unitCode="MTK" (uom_square_meter, "Surface"). 3. Import fails with: "The Unit of Measure (UoM) 'm²' you have selected for product 'XYZ', is incompatible with its category : Unit." This fix fall back to the product's default UoM when categories mismatch. opw-6121714
This update fixes an issue where images in email marketing templates were stretched and distorted when paired with long text. By removing specific styling, images now maintain their natural aspect ratio and fit correctly alongside the text, ensuring a cleaner and more professional email design. This improves the overall visual quality of marketing communications.
Original PR description
The media list snippet forces the image to fill the height of its row. The image column carries align-self-stretch and the image carries h-100, so when the text next to the image is longer than the…
The media list snippet forces the image to fill the height of its row. The image column carries align-self-stretch and the image carries h-100, so when the text next to the image is longer than the image is tall, the row grows to fit the text and the image is stretched to that height (and cropped through object-fit: cover). The longer the text, the more the image is distorted. Drop h-100 from the image and align-self-stretch from its column in the s_media_list snippet and in the mass_mailing_themes templates that reuse it. With no forced height the image keeps its natural aspect ratio and the row height follows its content, so the image is laid out next to the text instead of being stretched to match it. Steps to reproduce: 1. Open Email Marketing and create a new mailing. 2. Select the Blogging template for the mail body. 3. In a media item, replace the text next to an image with a very long paragraph. => The image is stretched and cropped to match the height of the text. Ticket [link](https://www.odoo.com/odoo/project.task/5117571) opw-5117571 Forward-Port-Of: odoo/odoo#238138
This update fixes an issue where invoices generated with very small product prices (e.g., $0.00003) were not correctly formatted in the UBL electronic invoice file. This ensures accurate data transmission to trading partners using the PEPPOL standard, preventing potential errors in order processing. The change improves the reliability of our UBL export functionality.
Original PR description
**STEP TO REPRODUCE** 1. Go in debug mode to increase product price decimal precision to 5. 2. Create an invoice with a product of price 0.00003 3. Send the invoice using peppol to generate the ubl file. 4. Opening the file, notice the PriceAmount is 3.33333e-05 which is not a valid string for a float in ubl. opw-6188947 Forward-Port-Of: odoo/odoo#265753
This update fixes an issue where product prices weren't updating correctly when the cost price was changed. The fix ensures that price calculations are accurate, preventing delays and ensuring consistent pricing for product variants linked to cost-based pricelists. This improves the reliability of our pricing system.
Original PR description
When we create a product variant and have a pricelist which is based on the cost price, and change the cost price, the on_sale_price doesn't update correctly. It gets delayed by one update because the product._origin isn't getting updated with the new onchanged value. Steps to Reproduce: 1.Create a pricelist and add a line with "formula" price type, and based on "cost", 2.Create a product variant, and add the pricelist just created. 3.Change the "Cost". The "On Sale Price" updates based on the value before. To fix the issue, we need to update the product._origin for standard_price just like the lst_price before computing the on_sale_price opw-5947995
This pull request removes a redundant two-factor authentication (2FA) requirement for the l10n_fr_pdp module. Initial assessments incorrectly identified a need for 2FA, but subsequent investigation revealed it wasn't necessary. This change simplifies the setup process and improves efficiency.
Original PR description
We iniatially though the 2FA was needed by the administration. But in fact, it was not. So we will remove it. Commit of the 2FA: https://github.com/odoo/odoo/pull/239576/changes/7535ce70391348019b4d9b668e49ca928c03052b Commit of the reregister also changed a bit that https://github.com/odoo/odoo/commit/22ba6294d3a2da6cada9dd519bd870c99d0b51b9 no task id --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue causing inconsistent results in Odoo's tests for how many2one fields are used within one2many relationships. By backporting fixes from previous pull requests, the tests are now more reliable and predictable, ensuring greater stability in the Odoo platform. This improves the overall quality and reliability of the software.
Original PR description
This commit is a backport of [1] and [2] which fix non deterministic one2many tests involving a many2one. [1] https://github.com/odoo/odoo/pull/266344 [2] https://github.com/odoo/odoo/pull/256582 runbot error~243512 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
This update fixes an issue where product images in the grid layout didn't display in the correct visual order. The change reorders images based on their visual placement, ensuring a consistent and intuitive browsing experience for customers. This resolves a visual regression introduced during a recent layout update.
Original PR description
This commit ensures product images follow their visual order in the product image viewer when using the grid layout. Steps to reproduce: - Open a product page with multiple images (or add Extra Media…
This commit ensures product images follow their visual order in the product image viewer when using the grid layout. Steps to reproduce: - Open a product page with multiple images (or add Extra Media to the product) - Change layout mode to "Grid" and click save - Click any image to open the product image viewer - Navigate between images Images do not follow the visual left-to-right order. This regression was introduced by [commit], which replaced the row-based grid with a column-first layout. As a result, `querySelectorAll` returns images in DOM order, which no longer matches the visual order. To fix this, images are now reordered based on their visual placement in the grid so navigation matches the order seen by the user. Images are traversed in visual left-to-right order while also accounting for varying image heights and multi-column alignment. [commit]: https://github.com/odoo/odoo/commit/9a3628b9735550bf8ecc2252ea1b7338f68ab966 task-[4364143](https://www.odoo.com/odoo/project/974/tasks/4364143)
This update resolves an issue where the link editor state was incorrectly duplicated when creating multiple tracked links. Now, the system correctly clears the editor when a new link is generated, ensuring a smoother user experience and preventing confusion. This improves the overall reliability of the Link Tracker feature.
Original PR description
Steps to reproduce: - Go to the Link Tracker page - Generate a first tracked link - Click on the button to start editing the code - Click on "create another tracker" - Generate a second tracked link => When you access the screen to see/edit the tracked link url, the buttons "ok" and "cancel" are already present. Clicking on "ok" display a traceback. To fix this issue, this commit also cancels edition when clicking on "create another tracker". task-4531974
This update resolves an issue where errors occurred when downloading ETA invoices as PDFs. A recent change introduced a new type of error that wasn't being caught, leading to potential download failures. This fix adds a necessary catch block to ensure all JSON decoding errors are handled correctly.
Original PR description
When we download the ETA invoice PDF, a JSONDecoderError can happen when calling the json() method on the request. This error is properly caught by Odoo : https://github.com/odoo/odoo/blob/7a9a340e0dbac470c4bea3f8ce8a32e55f3e82e6/addons/l10n_eg_edi_eta/models/account_edi_format.py#L58-L60 However, the following commit introduced a monkeypatch to handle errors when the simplejson library is installed : 2435fe76eec1fc4320ef71726fc7f16ece653a32 If we meet the conditions, the original error is replaced by a json.JSONDecodeError which is not caught during the previous process. We propose to add this error to the catch block. This modification was inspired by the commit d483dac144a9caf84c44b9d8d394ea327ca87cfe. opw-6266862 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#268309
This update fixes an error in the Luxembourg fiscal localization settings. The incorrect valuation account (60761 Merchandise) has been replaced with the correct current asset account (301 Inventories of raw materials), ensuring accurate accounting for Luxembourg businesses. This change improves the reliability of financial reporting.
Original PR description
**Problem:** Valuation account for luxembourg is currently 60761 Merchandise which is incorrect because it's an expense account. We should rather use a current asset account like 301 Inventories of raw materials **Steps to reproduce on a fresh db:** - create a new db with modules stock_account and accountant (without demo data) - On the 'fiscal localization setting' set the package as 'Luxembourg' and save - ativate the automatic accounting setting **Current Behavior:** The 'stock valuation account' appearing below the automatic accounting setting is : 60761 Merchandise **Expected behaviour:** It should be 301 Inventories of raw materials