Friday, April 3, 2026
35 changes · saas-19.2
New functionality added to Odoo
This update adds a new module for Romania to support the SAFT (Simplified Fiscal Transmission) reporting requirements. Specifically, it focuses on generating the 'On Demand' XML file needed to submit inventory valuation data to the Romanian tax authority (ANAF). This ensures compliance with local regulations.
Original PR description
Baiscally the SAFT for Romania consists of 3 xml files to submit. This commit focuses on the "On Demand" xml to submit, consisting in the inventory valuation of of the company. File with fields and value to export can be found here: https://www.anaf.ro/anaf/internet/ANAF/despre_anaf/strategii_anaf/proiecte_digitalizare/saf_t/ task-3748978 Forward-Port-Of: odoo/enterprise#95540
Resolved issues and error corrections
This update resolves an issue where the 'Reconnect Bank' button was incorrectly displayed for synchronization jobs without an expiration date. Previously, all synchronization jobs defaulted to a 0-day expiration, causing the button to always appear. This change ensures the button only shows when a synchronization job has a valid expiration date, improving the accounting dashboard's clarity.
Original PR description
The aim of this commit is fixing the behavior of Reconnect bank button in accounting dashboard. Before this commit, a synchronization without any expiring date will always show the Reconnect bank button in the accounting dashboard because the expiring due days is set to 0 by default. The sync can only be expired or expiring soon if there is an expiring date. opw-6052451 Forward-Port-Of: odoo/enterprise#112195
Documentation and clarification updates
This pull request updates the legal documentation related to the Quartile license agreement. The change ensures compliance with Odoo's contribution guidelines and reflects the latest agreement terms. This is a standard legal update and does not impact Odoo's functionality.
Original PR description
@qrtl --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256803
This update fixes an error preventing Intervat from properly verifying Odoo's requests. The issue stemmed from outdated JWK keys being hidden from Intervat, causing authentication failures. A simple timeout addition has been implemented to ensure reliable connections.
Original PR description
When we open a connection in intervat, we initialize a JWK on IAP side,
then we use the private key linked with this JWK to sign our requests.
The problem is on IAP, we have a cron who archive JWK older than a week.
As the archived JWK are hidden in our JWKS endpoint, Intervat is no
longer capable of verifying our signatures, leading to this error:
`{"error_description":"JWT is not valid" "error":"invalid_client"}`.
To fix this, we might need to call IAP first to unarchive the JWK first.
no-task
Forward-Port-Of: odoo/enterprise#112719This update ensures that LNA (long polling) is correctly configured for IoT payment terminals, regardless of the printer type used. Previously, LNA setup was limited to IoT printers, but this change automatically enables it when LNA is set up on any printer, streamlining the process for users.
Original PR description
If we use an IoT payment terminal with an ePOS printer and check LNA on the printer record, we never setup LNA for the `longpolling`, as it's only done if we check LNA on the printer model with type "IoT". We now guess the user wants to use LNA with his terminal if he sets it up on any printer type. Forward-Port-Of: odoo/enterprise#112748
This update removes a confusing purple 'info pill' that appeared on mobile devices when using Web Studio's approval features. This change improves the user experience for mobile users by ensuring they can easily click on action buttons without unintended interactions. It addresses a reported usability issue.
Original PR description
Steps: - Install `web_studio` - Add an approval rule to any action in any form view (example preview button) - Open this form view - You will have a purple info pill in every action button in the form view This can be confusing for people wanting to click on the button on mobile but instead, they click on the purple pill + we don't even want this opw-5911667 Forward-Port-Of: odoo/enterprise#111770
This update fixes an issue where dropdown menus within the softphone wouldn't close when clicking outside the softphone. The change improves navigation and consistency with the softphone's modal behavior, ensuring dropdowns close as expected regardless of where the user clicks. This enhances the overall user experience.
Original PR description
Since [1] (and its follow-up commits), the softphone became the "UI active element" once it opens. This was required to solve multiple keyboard navigation issues that occurred while being on the app…
Since [1] (and its follow-up commits), the softphone became the "UI active element" once it opens. This was required to solve multiple keyboard navigation issues that occurred while being on the app switcher with the softphone opened. It also simply improved navigation any time the softphone is used, allowing it to close on ESC, etc. This is also consistent with what is being done at [2] where the softphone will get closer to modal behavior. However, it came with a bug: dropdown inside and outside the softphone were not closed anymore if clicking outside the softphone. E.g.: - Open the user dropdown menu - Click outside => it closes - Open the softphone - Open the user dropdown menu - Click outside => It does not close anymore This commit adds a test about it. The fix lies in the dropdown closing logic in the community counter-part of this PR. [1]: https://github.com/odoo/enterprise/commit/df1772e877a508150fd3f549526dec9d867354be [2]: https://github.com/odoo/enterprise/pull/111337 task-6055692
This update corrects an issue preventing the export of Profit & Loss reports with footnotes enabled in the l10n_lu_reports module. The fix addresses a dependency on an outdated model, ensuring proper XML generation and report functionality. This resolves a technical problem impacting report generation for Luxembourg accounting.
Original PR description
**Steps to reproduce:** * Install the **l10n_lu_reports** module. * Go to **Accounting → Reporting → Profit & Loss**. * Add a footnote on a report line (**⋮ → Annotate**). * Click **Export (XML)** to open the export wizard. * Enable **Import notes as references** and export. **Observed behavior:** * Export fails with `KeyError: 'account.report.manager'`. * XML file cannot be generated when references are enabled. **Cause:** * The export logic relied on the deprecated `account.report.manager` model. * This model was removed in v17([commit](https://github.com/odoo/enterprise/pull/33604/changes#diff-5fc5051f5c0211c0eec96b892e7d29e01b68d804417443502d17bccd8333d7ecL41)) and replaced by `account.report.footnote`. * The footnote retrieval code was not migrated accordingly. **Fix:** * Migrate reference retrieval to use `account.report.footnote`. opw-5890630 Forward-Port-Of: odoo/enterprise#112394 Forward-Port-Of: odoo/enterprise#107765
This update prevents unnecessary rental planning slots from being created when the 'Plan Services' feature is turned off. Previously, updating a rental order would automatically generate slots, even if this feature wasn't enabled. This fix ensures that planning slots are only created when 'Plan Services' is active, streamlining the rental planning process.
Original PR description
Steps to reproduce: ------------------- 1. Install `sale_renting_planning`. 2. Create a rental service product with: - "Can be Sold" enabled - "Plan Services" disabled - UoM set to "Units" 3. Create and confirm a rental order with this product. 4. Go to Planning and check for slots related to this order. (no slots at this stage) 5. Update the quantity of the rental order. 6. Check Planning again for slots related to this order. Issue: ------ Planning slots are created after updating the quantity of the sale order, even when "Plan Services" is not enabled. Cause: ------ Slot records are created without checking whether "Plan Services" is enabled, which leads to unwanted planning entries. related commit: 74eef70 Solution: --------- Add a condition to ensure planning slots are created only when "Plan Services" is enabled. opw-6051012 Forward-Port-Of: odoo/enterprise#112355 Forward-Port-Of: odoo/enterprise#112278
This update resolves a translation issue that occurred when editing appointment details with guests enabled. The fix addresses a problem with how the system matched placeholder strings, specifically related to newline characters, preventing accurate translation. This ensures correct translations are displayed for appointment details pages.
Original PR description
When we are at the appointment details page, and have the option allow_guests turned on, and go to the editor for translation, we encounter the issue. Steps To Reproduce: 1. Create an appointment. 2.…
When we are at the appointment details page, and have the option allow_guests turned on, and go to the editor for translation, we encounter the issue. Steps To Reproduce: 1. Create an appointment. 2. Go to the "Options" tab, and click on "Allow Guests". 3. Go to the web page for the appointment, select the data and time. 4. Now, on the details page, go to any other language than the default, and click on edit/translate. 5. The issue occurs. The issue occurs when the regex tries to match the placeholder where the guests are added, which is enabled by the allow_guests. It contains strings with newline characters. The regex fails to take into consideration for these newlines and breaks causing the issue to appear. To fix the issue, we'll use regex to account for the new lines. Also the fix adapts [this commit](https://github.com/odoo/odoo/commit/bc30d2592d4a7913eddf30bac8be2d94b6c22ad4) to work with the [website refactoring](https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2) opw-5412775 Forward-Port-Of: odoo/odoo#249195
This update corrects a display issue where generic 'VAT' labels appeared in error messages instead of country-specific labels. The change ensures that error messages accurately reflect the country's VAT rules, improving clarity and usability for users. This resolves a minor inconsistency in the application.
Original PR description
Before this **PR**, instead of the VAT label of each country, 'VAT' appeared in the error message. This was due to a mismatch in the matching of country codes. Forward-Port-Of: odoo/odoo#257030
This update addresses a visual glitch in the mass mailing theme selector on Chromium-based browsers. The fix prevents the theme selector from resizing unexpectedly, which previously caused scrollbars to flicker. This ensures a consistent and professional user experience when creating mass mailings.
Original PR description
In Chromium-based browsers, the mass_mailing theme selector attempts to resize the mass_mailing iframe to match the size of the theme selector wrapper. This allows the theme selector to take as much…
In Chromium-based browsers, the mass_mailing theme selector attempts to resize the mass_mailing iframe to match the size of the theme selector wrapper. This allows the theme selector to take as much screen space as possible while reducing unnecessary scrollbars. However, the resizing may cause "scrollbar flickering" issues on Chromium-based browsers, due to Chromium scrollbars taking up "physical" width to the right of the scrollable elements. In some instances, a scrollbar appearing causes the theme selector to scale down from the lost width just enough that this scrollbar becomes no longer necessary, causing the theme selector to be resized up, causing the scrollbar to appear, which causes the theme selector to scale down... Steps to reproduce: - On a Chromium-based browser, try to create a new mass_mailing. - Resize the window's height so that the bottom of the window almost touches the bottom of the form. Fix: The theme selector will no longer resize itself down if that resize were to remove scrolling from the form, except in the following edge case: If the difference between the ranges is larger than 20 pixels (arbitrary value), we resize anyways, as it's a large enough difference that it shouldn't trigger flickering. This prevents occasional oversized empty areas under the theme selector when a fullscreen window gets sized down -- 10156c10b09dc502a40253d64e2505e817a520bf removed the overflow: hidden; property away from the body.o_web_client element. As a result, the convert_inline iframe is able to affect the total height of the page when its height is higher than the page's height, resulting in the entire page seeming to have additional padding at the bottom. This is especially visible when convert_inline has been used at least once, as the iframe will have a height of 1300px. This commit adds overflow: hidden; and position: relative; styles to the convert_inline component div, removing them from view while still allowing the inlining process to proceed. Steps to reproduce: - Create a new mailing - Select the Events theme - Reduce window size to below ~1000 px - Scroll down task-6002993 Forward-Port-Of: odoo/odoo#253673
This update fixes a potential crash in the Odoo Gantt view when rescheduling work orders. The change adds a test case to handle scenarios where dependent operations have incomplete start or end dates, preventing errors and improving the overall stability of the scheduling process.
Original PR description
For PR https://github.com/odoo/enterprise/pull/112729, This commit adds a test case to ensure that rescheduling work orders from the Gantt view does not crash when dependent operations have missing start or end dates. Error: `TypeError - '>' not supported between instances of 'bool' and 'datetime.datetime'` sentry-7377739830
This update resolves an issue where canceling manufacturing orders could trigger an error when a move wasn't associated with a picking. The fix ensures the system verifies a picking exists before logging a 'cancel' activity, preventing the error and improving stability. This ensures accurate tracking of manufacturing processes.
Original PR description
Steps to reproduce the bug: - Unarchive the MTO route - Create a storable product P1: - Route: MTO + Manufacture - BoM: - Component: 1 unit of X1 - Create a storable product X1: - Component: 1 unit…
Steps to reproduce the bug:
- Unarchive the MTO route
- Create a storable product P1:
- Route: MTO + Manufacture
- BoM:
- Component: 1 unit of X1
- Create a storable product X1:
- Component: 1 unit of C1
- Create a manufacturing order for 1 unit of P1
- Confirm the MO -> A child MO is created
- Try to cancel the MO for P1
Problem:
A traceback is triggered:
IndexError: tuple index out of range
'origin_picking': moves.picking_id[0],
Explanation:
When the parent MO is cancelled, all the moves linked to this MO are
cancelled (finished moves and raw moves). While cancelling them, an
activity of type "cancel" is logged on the pickings linked to these
moves (if any), in order to warn the user that actions may be required
on those pickings.
However, we do not check whether the moves actually have a picking
linked before logging the activity. The code directly tries to access
the first picking linked to the move, which triggers the traceback when
there is none:
https://github.com/odoo/odoo/blob/796316c341c4346152ad9610c30679f47aaa2ff8/addons/mrp/models/stock_move.py#L442
When cancelling an MO, the method `_log_manufacture_exception` is already
called and logs an exception activity on the child MO.
Bug introduced by:
https://github.com/odoo/odoo/pull/254636/changes/7c68c3dbb29eaad4e09d59ef7c86bd525969caec
Forward-Port-Of: odoo/odoo#257011This update fixes an issue where email notifications were incorrectly routing external emails as internal aliases. The change enhances the system's ability to accurately filter internal system emails based on allowed domains, preventing potential notification errors. This ensures emails are delivered to the correct recipients.
Original PR description
The fix introduced in https://github.com/odoo/odoo/pull/216737 can lead to "over-eager" filtering when an external email address matches a localpart (left part) alias in a input email list contains…
The fix introduced in https://github.com/odoo/odoo/pull/216737 can lead to "over-eager" filtering when an external email address matches a localpart (left part) alias in a input email list contains internal emails (aliases to filter) AND external email addresses (should not be filtered). The `_find_aliases` method is used to identify internal system emails (aliases, bounces, catchalls) to prevent mail loops and ensure correct recipient filtering during notification grouping. Before this fix, when the `mail.catchall.domain.allowed` system parameter was set, the logic for local-part aliases (where `alias_incoming_local` is True) failed to correctly associate the local part with the allowed domains. This resulted in external email addressed being returned by the system, potentially leading to incorrect notification routing. We now use a more robust approach: - Pre-filter local parts based on the allowed domains to reduce DB load. - Utilize Python Sets for O(1) lookups of static and local aliases - Explicitly validate the (local_part, domain) combo during the final filtering. Example Scenario: - Config: mail.catchall.domain.allowed = "test1.com,test2.com" - Alias: "info" (alias_incoming_local=True) - Input: ["info@test1.com", "info@test3.com"] ### Output Before Fix: ["info@test1.com", "info@test3.com"] (The function failed to recognize info@test3.com as an external alias to be ignored based on the `mail.catchall.domain.allowed` config) ### Output After Fix: ["info@test1.com"] (Correctly identifies the internal alias tob filtered while ignoring the external one) OPW-5469264 OPW-5504201 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257266 Forward-Port-Of: odoo/odoo#244272
This update resolves an issue where prices were incorrectly displayed in sale order subsections, even when prices were hidden on the parent section. The fix ensures that price visibility aligns consistently across sections and subsections, improving the accuracy of sales order previews and reports. This improves the user experience and data reliability.
Original PR description
Steps to reproduce: --- - Install `Sales` module. - Create a Sale Order. - Add a section with products. - Add a subsection under it with products. - Enable `Hide Prices` on the section. - Enable…
Steps to reproduce: --- - Install `Sales` module. - Create a Sale Order. - Add a section with products. - Add a subsection under it with products. - Enable `Hide Prices` on the section. - Enable `Hide Composition` on the subsection. - Preview the Sale Order. Issue: --- - Prices are still visible in the subsection (grouped view) even though `Hide Prices` is enabled on the parent section. Root cause: --- - The variable `show_section_total` was defined only within the main rendering block and not reused in the grouped (`t-else`) block. - The grouped section summary (used when `collapse_composition=True`) did not respect the parent section's `collapse_prices` setting, causing prices to be displayed. Solution: --- - Moved `show_section_total` definition outside the main conditional block so it can be reused in both rendering paths. - Applied `t-if="show_section_total"` to price fields in the grouped section summary to ensure consistency with the parent section's price visibility. Before: --- <img width="1030" height="232" alt="image" src="https://github.com/user-attachments/assets/1ac05e5e-6841-420f-909f-994690656cc0" /> After: --- <img width="1023" height="232" alt="image" src="https://github.com/user-attachments/assets/921ae337-4d53-433a-a42b-bdc437181889" /> opw-5979807 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256447 Forward-Port-Of: odoo/odoo#255464
This update fixes a problem where combo prices were incorrectly distributed across items in a sale order, particularly when a combo included free items with a zero price. The change ensures accurate pricing calculations for combo orders, preventing revenue discrepancies. This improves the reliability of self-order sales.
Original PR description
In a specific scenario where a combo had combo choice with free quaitites and combo choice with only extra quantities and the price of the combo choice with free quantities was 0, the price of the combo product was distributed on the "free" lines and on the "extra" lines, which was causing the price to be wrong. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257367
This update resolves a bug preventing tour steps from appearing when a template is selected in the mass mailing module. The tour has also been updated to correctly function with any selected theme. This ensures a smoother and more reliable onboarding experience for new users.
Original PR description
## [FIX] mass_mailing: fix broken tour This commit fixes issues with the mass_mailing onboarding tour. The resolved issues are: * Tour steps when template is selected not shown: updated the trigger so that they are displayed. * Adapted the tour to handle selecting any theme task-5974184
This update resolves an issue where deleted messages in live chat transcripts were appearing as empty bubbles. The fix adds a necessary variable to the template, ensuring that deleted messages are now correctly displayed in the chat history. This improves the overall user experience and provides a more complete record of conversations.
Original PR description
Follow up of [1], the `is_deleted_message` template variable is not defined which lead to empty bubbles for deleted messages. [1]: https://github.com/odoo/odoo/pull/255325 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 corrects a technical issue related to how Odoo manages the 'activity_type_id' field in the mail module. By making a specific adjustment, we ensure the field functions correctly when customized, preventing potential data inconsistencies. This improves the reliability of activity tracking within the system.
Original PR description
The field ``ir.actions.server.activity_type_id`` is still a related field with ``_compute_related`` and ``_inverse_related`` even if we specify its compute methods as ``_compute_activity_type_id`` The base field of the field ``ir.actions.server.activity_type_id`` is in the model ``mail.activity.mixin``. It is a non-stored related field. When overriding the field with a customized compute method, we have to explicitly override the ``field.related`` attribute to prevent the orm populates attributes for related fields. Also since the field ``ir.actions.server.activity_type_id`` is stored, it doesn't need a search method. 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 resolves an issue where creating a task from a template after a page refresh would sometimes fail. The fix prevents errors related to virtual controllers, ensuring that task creation works reliably even after reloading the page. This improves the user experience and prevents data loss.
Original PR description
Steps to reproduce: - Open a project - Create a task and convert it into a template - Open another task (task A) - Reload the page - Create a task from the newly created template Refreshing the page causes `loadState` to rebuild the controller stack from the URL to represent the breadcrumb history. In this case, a virtual form controller is injected for the opened task A, due to the lack of context in the URL to reconstruct it fully. When creating the task from the template, a `switchView` to the new task's form view is triggered. However, only the controller for this new form view is fully populated with the relevant metadata, as the preceding ones are virtual (due to the above). This commit ensures that virtual controllers are excluded from the check on the `multiRecord` field, preventing an error since the `view` is undefined for virtual controllers. task-5876607 Forward-Port-Of: odoo/odoo#246346
This update fixes a problem where error messages for inherited views in Odoo contained sensitive development keys. The change ensures these keys are no longer translated, improving the user experience and preventing potential security risks. This update enhances the clarity and security of Odoo's error reporting.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Validation Error message is being translated base on user message, including development keys <img width="1092" height="276" alt="image" src="https://github.com/user-attachments/assets/4c58f201-8bc6-4b5e-9510-e52f36e0cf2c" /> Desired behavior after PR is merged: development keys will not be translated <img width="1084" height="307" alt="image" src="https://github.com/user-attachments/assets/0ccbf570-b5a0-46ff-aaef-bc1aaa237371" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256982
This update corrects a visual glitch in the HTML editor where a placeholder hint would intermittently blink while users were editing fields. The fix ensures the hint only appears when a selection is actively being made within the editable area, improving the user experience and preventing distracting visual noise.
Original PR description
Problem: When the selection is updating, the hint is blinking in the editable. Cause: After 9df2662cc79c2d8277211f7ce0bdb389f783f933, `triggerDebouncedUpdateHints` clears the hint immediately and adds it back using a debounced version of `updateHints` which runs after a few seconds, thus causing this blink. Solution: We only update hint if the selection inside the editable. Steps to reproduce: - Create a new Todo. - Keep the editable empty. - Update the Todo title. - Observe the editable hint blinking. task-6025534 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#253846
This update resolves an issue where Safari on iOS devices, when the editor view is collapsed, wouldn't correctly update the cursor position after applying formatting (like bold). This fix ensures that the cursor behaves as expected in this scenario, improving the user experience for editing text in collapsed views. It's a minor bug fix that enhances usability.
Original PR description
Before this commit: when we applying format on collapsed cursor, we create a formatted element with ZWS, and set the cursor before the ZWS After this commit: we set the cursor after the ZWS, cause otherwise safari doesn't update the cursor properly leading to unformatted input task-4243977 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257161 Forward-Port-Of: odoo/odoo#249253
This update resolves a technical problem that was preventing some users of the Odoo Chile localization module (l10n_cl) from upgrading to newer versions. The fix corrects an error in a report view, preventing upgrade failures and simplifying maintenance for the development team.
Original PR description
There is a broken xpath in l10n_cl.report_invoice_document When the l10n_cl module is installed, it results in the faulty view being applied to v18 and later versions. This is particularly annoying because some rolling releases fail because a view with invalid locator is found. The view won't be disabled after a rolling release upgrade and many developers will be spared from checking the databases manually. Forward-Port-Of: odoo/odoo#254369 Forward-Port-Of: odoo/odoo#253588
This update resolves an issue preventing the demo installation of the Romanian EDI stock module. By disabling carrier validation for demo data, the installation process is now smooth and reliable. Additionally, the update includes a default stock valuation account for Romanian companies, streamlining financial reporting.
Original PR description
This commit ensures that stock picking carrier validation for Romanian EDI does not block demo data installation. task-3748978 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239870
This change introduces a simple setting to prevent automatic translation updates when website content is modified. Currently, small changes trigger updates across all website languages, which can be disruptive for users. This new option allows administrators to disable this behavior for a smoother editing experience.
Original PR description
Delayed translation (draft version from change of main language that needs to be updated on each modified secondary language) on website were added or disabled with: -…
Delayed translation (draft version from change of main language that needs to be updated on each modified secondary language) on website were added or disabled with: - 2d08f97c0778469b409fca23f2be5f5a98ce3df8 (October 2023) in 17.0 added the delay translation feature - 0e0a74f8c5fc9f45311e629a76608c6c986d635d (December 2023) in 17.0 disabled the feature - 03a85b13b2c46ef7174123d902e95d5103031c6c (September 2025) in 19.0 enabled the feature again Some website editor users may not expect the behavior (eg. changing a background image, then needing to edit all secondary language so the drafted change is saved). For now we have not found a satisfying way to prevent delay translation for simple use case that should not break translations: eg. removing a snippet, changing attributes, ... Because if we did special case, it would then become unexpected: - will we need to update translations - if there was a previous change that needed translation update, then we do a change that would not need translation update, what should we do So this PR for now gives the option to create a ir.config_parameter: - key: website.disable_delay_translations - value: 1 That would disable the delay_translations feature for all websites if the user doesn't want the feature. opw-5187670 opw-5240423 opw-5250497 opw-5254832 opw-5344412 opw-5347408 opw-5419427 opw-5424761 opw-5481352 opw-5892371 opw-5931549 Forward-Port-Of: odoo/odoo#257370 Forward-Port-Of: odoo/odoo#243490
A recent update resolved an issue where the notebook test was unreliable due to asynchronous page switching. The fix ensures the test accurately identifies which button was clicked, preventing the test from repeatedly clicking the same tab and failing. This improves the overall stability of the notebook feature.
Original PR description
Since [1], switching between notebook pages is asynchronous. This test did not wait for the switch and dit not identify which button it used to click on either, relying on a simple toggle. When the runbot was slow, the test ended up clicking on the same tab twice, thus never returning to the one with the editor. runbot-241941 runbot-241258 [1]: https://github.com/odoo/odoo/commit/968dd2cd5d11ce9b39fbacfb60c37bc1bfaa1d9e Forward-Port-Of: odoo/odoo#257119 Forward-Port-Of: odoo/odoo#256782
This update fixes an issue where the HTML editor toolbar wasn't appearing on macOS when using Cmd+Shift+Arrow to select text. The fix addresses a conflict with the macOS operating system's handling of the Cmd key, which prevented the toolbar from updating correctly. This ensures consistent functionality for all users on macOS.
Original PR description
Problem: The toolbar does not open when using Cmd+Shift+Arrow to select text on macOS. Cause: On macOS, when the Cmd key is held down, the `keyup` event is never fired for other keys. The toolbar…
Problem:
The toolbar does not open when using Cmd+Shift+Arrow to select text on macOS.
Cause:
On macOS, when the Cmd key is held down, the `keyup` event is never fired for other keys. The toolbar relies on `keyup` for Arrow keys to re-enable `onSelectionChangeActive` and trigger the toolbar update, so it never opens.
See section ("Issue 3 - keyup event put on hold for other keys"): https://web.archive.org/web/20160304022453/http://bitspushedaround.com/on-a-few-things-you-may-not-know-about-the-hellish-command-key-and-javascript-events/
Solution:
Track when an Arrow key is pressed while Cmd is held (`pendingArrowKey`) and use a `selectionchange` listener as a fallback to re-enable the toolbar. The `selectionchange` event fires reliably on macOS even when `keyup` is suppressed. A `isMouseDown` guard ensures the listener does not interfere with the existing mousedown/mouseup flow.
Steps to reproduce:
1- Type some text
2- Use Cmd+Shift+Arrow (left or right) to select text 3- Observe the toolbar does not appear
task-6013408
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#257166
Forward-Port-Of: odoo/odoo#253293This update resolves a minor coding error that could have caused unexpected behavior in the holiday scheduling feature. The fix ensures correct variable usage, preventing potential issues with how holiday requests are processed. This improves the stability and reliability of the HR module.
Original PR description
A previous bugfix unintentionally used the same variable name twice within the same method which caused some unintended behavior Task-6092087 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257253
This update ensures that ticket and lead descriptions created after a chatbot restart only include messages from the current conversation, not outdated information from the previous session. This improves the clarity and accuracy of customer interactions linked to chatbot conversations, preventing confusion and providing a cleaner record of support requests.
Original PR description
Before this commit: When a chatbot conversation is restarted and the script creates a new ticket/lead, the description also includes messages from the previous session. After this commit: Only the messages sent after the chatbot conversation is restarted are included in the ticket/lead description. Task-5118966 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256595 Forward-Port-Of: odoo/odoo#253566
This update prevents unnecessary calls to IAP (a data service) when Odoo databases aren't set up to automatically receive VIES updates. By sending a dummy token, the system avoids polluting IAP with requests from databases without the necessary cron job, improving efficiency and reducing potential costs.
Original PR description
If the user contacts us from an unreachable db (localhost, firewall, .. .), we currently rely on a cron on the db to pull updates by calling `vies_check_update`. Currently, all dbs, even those that don't have the cron (i.e. haven't yet upgraded the `iap` module) will send the `client_identifier/token` upon calling `vies_check_validity`. However, since they don't have the cron, they won't be able to pull updates from IAP. Thus, if we detect that the crond does not exist, we will now send dummy `client_identifier/token` to avoid poluting IAP. task-none Forward-Port-Of: odoo/odoo#257493
This update resolves an issue where the mapping of PEPPOL invoice data was failing when the 'Invoice period extra field' was initially empty. The fix ensures the field is correctly initialized as a dictionary, preventing mapping errors and improving the accuracy of PEPPOL invoice processing. This ensures proper data exchange for international transactions.
Original PR description
When mapping the Invoice period extra field and updating the xml nodes, if the invoice period was originally empty, it would be initialized to an empty list not a dict which was breaking the mapping. task-6076624 Forward-Port-Of: odoo/odoo#256594
This update resolves a technical bug that was causing errors when users selected multiple work entries within the employee scheduling feature. The fix eliminates duplicate work entry types, preventing a crash in the user interface. This ensures a smoother and more reliable experience for employees managing their work schedules.
Original PR description
### Steps to reproduce: - Download Payroll app - From the top bar 'Employees' > 'Employees', create a new employee - Select the created employee > click 'Work Entries' smart button, add 2 Attendance…
### Steps to reproduce: - Download Payroll app - From the top bar 'Employees' > 'Employees', create a new employee - Select the created employee > click 'Work Entries' smart button, add 2 Attendance work entries on different days, with different creation days (either wait 24h between creations, or adjust one create_date in DB) - Click on any day, you'll find the "Replace by Attendance" smart button replicated > If you activate debug mode and click on any cell > **UncaughtPromiseError > OwlError** ### Cause of issue: https://github.com/odoo/odoo/blob/72be98d705e225f663b65e289e11d0b8642ec6f8/addons/hr_work_entry/static/src/views/work_entry_calendar/work_entry_calendar_model.js#L30-L58 `formattedReadGroup` is called with both `work_entry_type_id` and `create_date:day`. If the user has created several work entries of the same type on different days, we would get multiple group results having the same `work_entry_type_id`. These duplicated records later produce an Owl crash because the button list uses `t-key="workEntry.id"`. https://github.com/odoo/odoo/blob/72be98d705e225f663b65e289e11d0b8642ec6f8/addons/hr_work_entry/static/src/views/work_entry_calendar/work_entry_multi_selection_buttons.xml#L16-L17 ### Fix: Since the goal of the above method is to extract the favorite work entries to later use in smart buttons and `userFavoritesWorkEntriesIds.map((r) => r.work_entry_type_id?.[0]).filter(Boolean)` extracts all the entries' `work_entry_type_id` (including duplicates), the easiest way to get rid of these duplicates is to create a `Set`. opw-5953671 Forward-Port-Of: odoo/odoo#253387 Forward-Port-Of: odoo/odoo#252478
This pull request incorporates the individual contributor license agreement (CLA) signature from GitHub user RieveFireProt. This ensures compliance with Odoo's open-source licensing process and allows their code to be integrated into the Odoo project. It's a standard legal step for external contributors.
Original PR description
Adds the individual contributor license agreement signature file for GitHub user `RieveFireProt` as described in Odoo's CLA contribution process. Contributor details: - Name: Eric Rieve - Email: eric@rievefire.com - GitHub: https://github.com/RieveFireProt Forward-Port-Of: odoo/odoo#256509