Monday, March 16, 2026
15 changes · saas-19.2
Enhancements to existing features
This update simplifies report filtering by default, removing the unnecessary journal filter. Now, when a ledger exists, users will automatically see a dropdown menu to select the specific ledger, ensuring all relevant financial data is accessible without manual adjustments. This enhances report usability and clarity.
Original PR description
On the majority of reports, the journal filter is not necessary by default. But we need to still show the ledgers, independently of the journals. So when the journal filter is disabled, but a ledger exists, show a dropdown menu with the ledgers. task-6032881
Resolved issues and error corrections
This update fixes a technical issue within the Odoo Studio's form editor that previously caused crashes when interacting with certain fields. The change ensures the sidebar correctly displays information, preventing errors and improving the user experience. This resolves a bug impacting form editing functionality.
Original PR description
In studio, form editor: click on a field and check the sidebr is correct Click on another field, one that has the widget many2many_tags. Before this commit, there was a crash because the internals of the sidebar were computed with the wrong props (the old ones instead of the new ones) After this commit, there is no crash opw-6004776 Forward-Port-Of: odoo/enterprise#110391 Forward-Port-Of: odoo/enterprise#110284
This update fixes a technical issue related to email field requirements in the marketing automation module. The system now correctly determines if an email body is required based on its content, ensuring data integrity. Additionally, a minor adjustment was made to tours to ensure form views are properly cleared during automated testing.
Original PR description
Prior to this commit, `body_html` was hard-coded as a dependency of the `mass_mailing_html_field`, and that dependency lacked the `required` attribute, which should depend on the value of `body_arch`. The dependency is now added in the related views, and the field is now generic. As HtmlField now mark the record `dirty` `onChange`, some tours should ensure that the form view is properly discarded before finishing. task-5976348 Forward-Port-Of: odoo/enterprise#109874 Forward-Port-Of: odoo/enterprise#109091
This update resolves a bug where icons within the HTML editor weren't correctly padded with special characters (feffs). This ensured icons displayed properly after content was added or the page was reloaded. The fix improves the visual consistency of the editor.
Original PR description
Problem: When content is added to the editor, icons are not surrounded by `feff`s. Cause: The selector used to pad elements with `feff`s relies on `o-paragraph`, which is added during normalization.…
Problem: When content is added to the editor, icons are not surrounded by `feff`s. Cause: The selector used to pad elements with `feff`s relies on `o-paragraph`, which is added during normalization. However, `BaseContainerPlugin.normalize_handlers` runs last, so when `FeffPlugin.normalize_handlers` executes, it cannot find icons through `selectors_for_feff_providers` because the expected paragraph-related parent is not yet in place. Solution: Execute `FeffPlugin.normalize_handlers` immediately after `BaseContainerPlugin.normalize_handlers`, ensuring the DOM structure is ready before attempting to add surrounding `feff`s. Steps to reproduce: - Add an icon. - Reload the page. - Do not make any changes (so normalization is not triggered again). - Inspect the icon and observe that it does not have surrounding `feff`s. task-5960097 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252278 Forward-Port-Of: odoo/odoo#250855
This update fixes a problem where temporary files used during report generation weren't being properly deleted after tests, leading to potential disk space issues. The fix ensures these files are cleaned up immediately, preventing accumulation and improving system stability. This resolves a minor technical issue with no direct impact on users.
Original PR description
Investigated after finding `/tmp/report.*` left over after running tests. #186547 left some temporal holes in the cleanup which are apparently sufficient to not correctly clean the files in some cases? Since `mkstemp` already creates the files, don't wait to have written stuff inside to record the file for deletion, do it immediately *then* write content to the file. An even better solution would be to use `NamedTemporaryFile(delete_on_close=False)`, however that's only available from 3.12, and it does not log deletion errors (although I'm not convinced that's useful in the first place). Forward-Port-Of: odoo/odoo#253816 Forward-Port-Of: odoo/odoo#253053
This update fixes an inconsistency in the website editor's parallax preview animation across different browsers (Firefox and Chrome). The change ensures a more reliable and predictable preview experience by using a standard root height measurement instead of a browser-specific one.
Original PR description
Steps to reproduce: - Open the website editor. - Open the snippet dialog. - Scroll through a parallax snippet preview in Firefox and Chrome. => The preview animation does not move the same way. Before this commit, the parallax preview used `body.clientHeight` inside the scaled snippet preview iframe. Firefox and Chrome can return different values there, so the preview animation was inconsistent. After this commit, the preview reads `document.documentElement.clientHeight` instead, which gives a stable iframe viewport height across browsers. Forward-Port-Of: odoo/odoo#253541
This update fixes a display issue where the mega menu in mobile view was taking up too much space when the menu size was set to 'Narrow'. The change ensures the mega menu's width is correctly controlled, preventing it from overflowing the mobile navigation bar. This improves the user experience on smaller screens.
Original PR description
The property "max-width" of the mega menu in mobile view was set with the class o_mega_menu_is_offcanvas of its ancestor. However, when the user set the mega menu template size to "Narrow", new CSS rules were added to change the mega menu size based on the screen size. The first rule was overridden, resulting in the mega menu being larger than the mobile navbar width. This commit sets the property "max-width" as "important" to prevent this issue from occurring. task-5972284 Forward-Port-Of: odoo/odoo#250690
This update resolves an issue where changing the 'Kitchen Note' on a food item after a quantity update would cause an error. The fix ensures that the note field can be updated successfully without triggering a technical problem, improving the reliability of the POS system for restaurant operations.
Original PR description
**Steps to Reproduce:** - Install `pos_restaurant_preparation_display`. - Open Register for POS "**Restaurant**" Shop. - Choose table > select food-item > send the order. - Update food-item quantity > send the updated order. - Update food-item '**Kitchen Note**' > send the note. **Error:** `TypeError - 'NoneType' object is not subscriptable` **Cause:** When the food quantity is updated, a new preparation entry is created for the increased quantity. During the first iteration, the display and order quantities are already merged correctly. However, in a subsequent iteration, the original key no longer exists in `quantity_data`. As a result, accessing a None value leads to a traceback. **Fix:** This commit skips the merge step when the original quantity entry has already been merged. sentry-7197024946 Forward-Port-Of: odoo/enterprise#110184 Forward-Port-Of: odoo/enterprise#104889
This update ensures that the employee assigned to a Point of Sale (PoS) configuration is correctly linked to the PoS company. Previously, users without HR access could encounter access errors if the assigned employee was from a different company. The fix automatically filters employees to match the PoS company or defaults to a user in the 'pos_manager' group.
Original PR description
When writing to a PoS config, it will automatically set an `advanced_employee_ids` if none is set. But it will take any employee that is part of `point_of_sale.group_pos_manager`. If the employee…
When writing to a PoS config, it will automatically set an `advanced_employee_ids` if none is set. But it will take any employee that is part of `point_of_sale.group_pos_manager`. If the employee selected is not part of the same company as the PoS config, and the current user doesn't have HR employee access it will trigger an ir.rule that block the user from opening the settings. Steps to reproduce: ------------------- * Create a new company * Create a new user that only have access to this company and no HR access * Create a PoS in the new company * Login as the new user * Try to open the settings > Observation: You will get an access error because the employee set in `advanced_employee_ids` is from the other company Why the fix: ------------ We make sure that when automatically setting the advanced_employee_ids we filter out the ones that are not from the correct company. If no employee exist that satisfies the requirements, we take a user from the `group_pos_manager` and create an employee for him. opw-5885417 Forward-Port-Of: odoo/odoo#253687 Forward-Port-Of: odoo/odoo#252402
This update resolves an issue where a specific cash move type in the German Point of Sale (POS) module was incorrectly formatted, leading to an error with the Fiskaly accounting system. The fix ensures the correct type casing is used, preventing the error and allowing proper cash move processing.
Original PR description
When creating a cash move of type "Cash Supplement", the type sent was "Zuschussecht" instead of "ZuschussEcht", which caused is not an allowed type. Steps to reproduce: ------------------- * Setup a PoS with a TSS for a German localization * Start a session and open the cash control popup * Create a cash move of type "Cash Supplement" * Close the session > Observation: You get an error from Fiskaly that the type is not allowed Why the fix: ------------ When doing `.capitalize()` on a string it would make the first letter uppercase and the rest lowercase. In this case "ZuschussEcht" would become "Zuschussecht", which is not the correct type expected by Fiskaly We now keep the original casing for all the type. opw-5462364 Forward-Port-Of: odoo/enterprise#110270 Forward-Port-Of: odoo/enterprise#109235
This update resolves an issue where users without HR officer permissions would encounter an error when trying to open user forms. The team removed unnecessary PIN information from the main user view, streamlining the process for authorized users to manage user accounts. This ensures a smoother experience for all users with appropriate access.
Original PR description
If a person having rights to edit users is not HR officer, he gets a traceback when he tries to open the user form. As the information of PIN is not really related to the user, we left it on the employee and the "Preference" view, but remove it from the main user view --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251787
A test was failing due to a mismatch between the user's language setting (French) and the content of a tour designed for English. This commit resolves the issue, ensuring the test now passes correctly and preventing potential display problems in the web studio.
Original PR description
Before this commit, a test set the language of the user to French and then opened the browser with that user and that language. The tour in question, written for English failed. After this commit, the tour doesn't fail runbot-error-241983
This update fixes a minor issue within the Point of Sale course preparation tour. By adding specific steps, the tour now reliably triggers the necessary courses, ensuring users are properly guided through the setup process. This improves the onboarding experience and reduces potential confusion.
Original PR description
In this commit: --- - Add steps in the tour to ensure courses are correctly triggered. runbot-241931 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a confusing issue where draft payslip PDFs remained in the foreground after payrun validation. The change ensures payslips are correctly marked for PDF generation, and updates the default attachment to resolve the display problem. This improves clarity for users receiving payslip reports.
Original PR description
When creating a payrun and using the Test Print button, the pdfs with the yellow banner saying that the payslip is still draft are generated correctly. When validating the payrun a cron runs to generate the real pdfs. In 19.2 there is a preliminary problem (fixed here) where the payslips are not marked for pdf creation and therefore are not taken by the cron (in master they are correctly marked for it). After that, the pdfs are correctly computed but the pdf in the foreground remains the draft one, generating confusion. With this PR we also change the default attachment when we generate de final pdf, solving the problem. Task: 6023186
This update resolves a technical limitation in the Odoo Report Editor, preventing users from applying properties to fields selected within the /field command. Previously, this functionality was inconsistent, leading to issues with report customization. This change ensures proper field selection and improves report editing capabilities.
Original PR description
Properties are not supported in ir.qweb but only as t-out, while t-field doesn't support them. For this reason and the fact that properties have a path the model field selector barely handles we do not allow those field to be selected in the /field command task-5999790 Forward-Port-Of: odoo/enterprise#110409 Forward-Port-Of: odoo/enterprise#109486