Monday, August 11, 2025
19 changes · saas-18.4
Enhancements to existing features
IoT device logs now use color formatting similar to standard Odoo logs. This makes log messages easier to scan and helps teams spot important information more quickly during monitoring or troubleshooting.
Original PR description
We now format logs with colors, same as odoo db's logs. <img width="925" height="56" alt="image" src="https://github.com/user-attachments/assets/680212a0-6b14-49cf-950d-22e9ee98d156" />
This update adds automated checks for an internal Point of Sale service. It helps reduce the risk of future changes breaking checkout-related behavior, without changing day-to-day user workflows.
Original PR description
Add more hoot tests for `pos_store` service. task-id: 4945821 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221756
The bank reconciliation statement button has been moved to the right side of the statement line. This makes the button easier to use on smaller screens and helps prevent users from accidentally clicking the wrong control.
Original PR description
This commit will move the statement button on the right of the statement line because when having a small screen the button was at the place of the other button of the statement line which could cause problems for the users to click on it task: 5004109 Forward-Port-Of: odoo/enterprise#91981
Resolved issues and error corrections
This change reverts a previous adjustment to editor avatars because it caused an unexpected horizontal scroll area in forms. Reverting it restores the expected form layout while the team prepares a better solution for the original avatar overlap issue.
Original PR description
This reverts commit 72acbe0 because of unexpected horizontal inner scroll on `o_form_sheet_bg` element. A better fix will be found in the futur. Forward-Port-Of: odoo/odoo#222162
Miscellaneous changes
This PR introduces new product-level codes for l10n_pe, in accordance with the latest updates from SUNAT: ### Withholding codes (detracciones): - Code `044`: Servicio de beneficio de minerales metálicos gravado con el IGV - Code `045`: Minerales de oro y sus concentrados gravados con el IGV These were added to the `l10n_pe_edi` module. ### Tariff fractions: 39 new values were added based on the SUNAT's updated list of tariff fractions for delivery guides. These were added to t
Original PR description
This PR introduces new product-level codes for l10n_pe, in accordance with the latest updates from SUNAT: ### Withholding codes (detracciones): - Code `044`: Servicio de beneficio de minerales metálicos gravado con el IGV - Code `045`: Minerales de oro y sus concentrados gravados con el IGV These were added to the `l10n_pe_edi` module. ### Tariff fractions: 39 new values were added based on the SUNAT's updated list of tariff fractions for delivery guides. These were added to the `l10n_pe_edi_stock` module. **Source:** https://cpe.sunat.gob.pe/sites/default/files/inline-files/AjustesValidacionesCPEv20250421.xlsx Forward-Port-Of: odoo/enterprise#87138
This update removes an internal dependency in the HTML builder's drag-and-drop behavior so it can work cleanly with upcoming email marketing changes. It preserves the existing protection against unintended edits being marked for saving while making the editor easier to reuse across modules.
Original PR description
In commit [1], in order to prevent the drag and drop from marking unwanted elements as dirty, a dependency to the `savePlugin` was added to use its `ignoreDirty` shared function. However, this dependency is problematic for the upcoming `mass_mailing` refactoring, as it will not use this plugin. This commit uses the `on_prepare_drag_handlers` resource instead, to remove that dependency. [1]: 6fdf188fdf5cfdc11e5e1a8429d0a652054344de task-4367641 Co-authored-by: Damien Abeloos <abd@odoo.com>
Changing a website color palette no longer shows a warning about losing custom colors when no custom colors were set. This prevents confusion for website editors and keeps the theme selection flow smoother.
Original PR description
Since `html_builder`, when changing the color palette, the warning about losing color customizations is displayed even when there were no such customization to lose. This commit restores the condition around this warning. Steps to reproduce: - Go to "Theme" tab - Pick a color palette => A confirmation warning was displayed even though no color customization could be lost. task-4367641
This fix prevents an error when users click the 'From WH' button on a project task in the community version. The unavailable map view is removed there, so the button behaves correctly while leaving room for enterprise-specific map support.
Original PR description
* STEP TO REPRODUCE: go to task of a project, enable 'From WH' in top bar button. Click on it -> error because no map view * SOLUTION: in community version we should remove map view then in enterprise we can overide to add it 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#222003
Fixed an issue where clicking too quickly on a newly dropped building block could fail to select the intended field. This makes the website/page editing experience more reliable immediately after adding dynamic content.
Original PR description
[1] introduced a click redispatching in case a newly dropped element is being clicked upon too early. It just forwarded the click under the loading glasspane, but this is not ok in case elements of the block get redrawn before the click happens, as they will not be inside the DOM anymore. This commit fixes this by clicking on the topmost remaining element of the initially clicked elements. Steps to reproduce: - Drop a "Form Info" block - Very quickly click on a field => The field was not selected. [1]: https://github.com/odoo/odoo/commit/0884b2c716366c872a977f84f8bbdb33ce13468d task-4367641
Product images shown on shared purchase portal pages are now constrained to an appropriate small size instead of appearing at their original dimensions. This keeps purchase documents easier to read and prevents large product photos from disrupting the portal layout.
Original PR description
Issue ----- Images on the purchase portal are displayed in their original size instead, making it a visual mess. Steps to reproduce ----- - Create a product with a large image - Create a purchase for…
Issue ----- Images on the purchase portal are displayed in their original size instead, making it a visual mess. Steps to reproduce ----- - Create a product with a large image - Create a purchase for the product - Click the cog wheel > Share - Open the link in a new tab (with no active session, eg private window) --> The image is way too big Cause ----- Images are now converted to Webp: https://github.com/odoo/odoo/commit/1a978183001e0503104285f4bd5bed983beb0efb The problem is that Webp images cannot be resized through the Python backend: https://github.com/odoo/odoo/blob/0c6622294b7117ec5eb1cbf8a9270636b2dd807f/odoo/tools/image.py#L81-L83 However, the product model has multiple sizes for the image: https://github.com/odoo/odoo/blob/3ddf2bcdf16b5b43db4c4abe2cdbc4384cf683cc/addons/product/models/product_product.py#L91-L94 What we can do is load the smallest possible image and then use styling to limit the display size. The 48px comes from the hardcoded values in https://github.com/odoo/odoo/blob/0c6622294b7117ec5eb1cbf8a9270636b2dd807f/addons/purchase/controllers/portal.py#L99 This fix will no longer be needed when (if) Webp images get resized in backend. Comparison ----- Left is before, right is after fix.  Image used -----  ----- Ticket: opw-4625113 Forward-Port-Of: odoo/odoo#221139 Forward-Port-Of: odoo/odoo#217990
The website editor sidebar now shows the layout option before the background option. This makes an important design setting easier to find and restores the previous ordering.
Original PR description
The layout option was placed after the background option in the sidebar while it was the other way before. Since layout is more important, it should be placed at the start of the block. This commit moves the layout option before the background option. task-4367641
This update changes how the website editor handles drag-and-drop actions so it no longer depends on a specific saving component. This supports future email marketing editor work where content may be saved through a different flow, reducing integration risk without changing the visible editing experience.
Original PR description
[Commit] introduced a way to prevent mutations from being saved when a change was caused by a `dragAndDrop` operation. However it did so by adding a dependency to `savePlugin`, which is not desirable for the upcoming `mass_mailing` refactoring, which will use the `html_builder` in coordination with a Form View, which has its independent way of saving user content. This commit introduces a resource in order to remove that dependency. [Commit]: https://github.com/odoo/odoo/commit/6fdf188fdf5cfdc11e5e1a8429d0a652054344de task-4367641
Cancelling a product import before uploading a file no longer causes Odoo to crash. The import flow now avoids opening the product list with invalid filter data, improving reliability for users who back out of imports.
Original PR description
Steps to reproduce: - Go to Inventory > Products - Click "Import" - Cancel the import wizard before uploading any file - Odoo crashes with `InvalidDomainError` due to domain [['id', 'in', undefined]] This commit ensures that the domain is only set when resIds is valid. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when users create a new work entry from the list view in French payroll. It adds checks for missing start or end dates so the entry form can open normally instead of blocking the user with a traceback.
Original PR description
Currently, a traceback occurs when a user attempts to create a work entry in the list view. **To reproduce this issue:** 1) Install the `l10n_fr_hr_work_entry_holidays` module. 2) Switch to the `French` company and open the payroll. 3) Open the work entries in list view and try to create a new record. **Error:** ``` AttributeError: 'int' object has no attribute 'seconds' ``` **Cause:** By default, when creating a work entry through the list view, no `start` or `end` date is provided. This leads to the traceback originating from the following line when computing the duration. https://github.com/odoo/odoo/blob/84b15dc1f866e27d5c8a5fe3e457c2f982bcb133/addons/l10n_fr_hr_work_entry_holidays/models/hr_work_entry.py#L28-L32 **Solution:** Adding an extra check of the `start` and `end` date would resolve this issue. opw-4943104 Forward-Port-Of: odoo/odoo#221442 Forward-Port-Of: odoo/odoo#220127
This fixes an internal accounting test that was tied to the year 2025 and would start failing in 2026. The change helps keep automated quality checks reliable over time without affecting day-to-day user workflows.
Original PR description
The test test_resequence_change_payment_name had hardcoded 2025 in the sequence name, meaning that the test will fail in 2026. opw-4437481 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#222220
This fix ensures products that are not marked for sale cannot be selected on standard quotations when the rental app is installed. It prevents accidental quotation of unavailable products and keeps sales options aligned with product settings.
Original PR description
Versions
--------
- saas-18.3
Steps
-----
1. Have a product that's neither salable not rentable;
2. open a quotation;
3. click "Add a product".
Issue
-----
It's possible to select the unsalable product.
Cause
-----
Commit d5f72c201bf0 added a `_domain_product_id` override to `sale_renting` which includes `('rent_ok', '=', order_is_rental)`. As a consequence, whenever you have a quotation that isn't a rental, this domain will retrieve *any* product that isn't rental either.
Solution
--------
Add a `('rent_ok', '=', True)` condition to ensure the override only affects rental orders, and that non-rental orders won't retrieve all non-rental products.
opw-4983348
Forward-Port-Of: odoo/enterprise#91701This fixes a point-of-sale issue where printing another bill for an already-synced order could fail when no new changes were present. Staff can now reprint or create multiple bills from the same order reliably, reducing checkout friction.
Original PR description
Before this commit an issue was appearing when we try to make multiple bill on the same order. If the order was already synced and didn't get any changes, clicking `Print bill` with `pos_blackbox_be` wouldn't do anything. Now we print the bill after syncing the order, even if the order don't have any new changes to sync. task-id: 4901299 community PR: https://github.com/odoo/odoo/pull/222424
The Swedish SIE4 import now skips accounting entries that contain no usable transaction lines. This prevents empty journal entries from being created in Odoo, keeping imported accounting data cleaner and more reliable.
Original PR description
The aim of this commit is making sure that we don't import move without transaction in it. In SIE4, we can have moves with BTRANS and RTRANS tags that we are ignoring. It means that we could have move without any move lines. It's not an expected behavior in Odoo. This commit checks that the move data are created only if we have lines for that move. no task id Forward-Port-Of: odoo/enterprise#91783
This fix ensures Colombian electronic invoices send document type codes in the exact two-character format required by DIAN. It helps prevent invoice submissions from being rejected because of incorrectly formatted EDI types.
Original PR description
The DIAN endpoint only accepts Electronic Invoice types with a length of 2 characters. This fix adds zero-padding to the problematic edi types. task: 4882683 Forward-Port-Of: odoo/enterprise#89925