Saturday, February 7, 2026
7 changes · 19.0
Resolved issues and error corrections
Website editors can now save a page after hiding both the header and footer without encountering an error. The save process now skips header-related settings when the header is not present, improving reliability for page visibility changes.
Original PR description
### Issue: - Saving the page after first hiding the header (from the Theme tab) and then the footer triggers an error. ### Steps to reproduce: 1. Open any website page and enter edit mode. 2. Make…
### Issue: - Saving the page after first hiding the header (from the Theme tab) and then the footer triggers an error. ### Steps to reproduce: 1. Open any website page and enter edit mode. 2. Make sure both the header and footer are visible. 3. From the 'Theme' tab, hide the header using the 'Show Header' option under 'Advanced'. 4. Select the footer and hide it using the 'Page Visibility' option. 5. Click on 'Save'. ### Reason: - Header related page options are always evaluated during save, even when the header has been fully removed from the page by the 'Theme' tab option. - This causes logic that depends on the header element to run while the element is no longer present in the DOM. ### Fix: - Only compute and save header related page options when a header element exists in the DOM. - This prevents header visibility, color, and overlay logic from running when the header has been removed, avoiding the error during save. task-[5135925](https://www.odoo.com/odoo/action-4043/5135925) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240065
This fixes a visual issue in the Expenses app when there are no expenses to process. The receipt upload helper now stays properly positioned and no longer overlaps dashboard or search areas, making the empty screen clearer and easier to use.
Original PR description
Steps to reproduce: 1. Open the Expenses app and navigate to 'Expenses to Process'. 2. Ensure no expenses are present so that the 'Upload or Drop Your Receipt' helper appears. 3. Remove filters. 4.…
Steps to reproduce: 1. Open the Expenses app and navigate to 'Expenses to Process'. 2. Ensure no expenses are present so that the 'Upload or Drop Your Receipt' helper appears. 3. Remove filters. 4. The layout becomes 'disturbed'—the upload overlay misaligns and overlaps the dashboard. Issue: The issue occurred because the SCSS selector was incorrectly targeting the combination of .hr_expense and .o_list_view. In the Odoo DOM structure, the hr_expense class is added to the Renderer via XML, while o_list_view is assigned to the main Controller. Because the selector never matched an actual element, the min-height: 100% rule remained inactive. Without a stable minimum height, the Renderer container collapses when empty. This prevents the 'Pink Overlay' from having a stable anchor point, leading to layout shifts and visual interference with the Search Panel and Dashboard headers. Solution: Update the SCSS selector to target &.o_list_renderer and &.o_kanban_renderer. This ensures the rule correctly matches the element carrying the hr_expense class. By forcing a min-height: 100% !important on the renderer itself, the container remains stable regardless of the data count. This provides a consistent workspace for the 'No Content' helper to render without disrupting the surrounding flexbox layout. opw-5452618 Forward-Port-Of: odoo/odoo#247366
The mail composer now avoids saving blank messages as drafts in the browser. This prevents empty content from coming back when users switch conversations or reopen the composer, reducing confusion in Discuss and mail workflows.
Original PR description
Before this commit, composer content was saved in local storage even when the content is empty. This happens because while there's code to clear local storage entry on message post, the content was necessarily saved from debounced or when triggering an action that unmounts the composer of thread, like a change of active thread in discuss. This commit fixes the issue by checking that composer has some content, to determine whether the content must be saved in local storage or explicitly removed. Task-5905834
This fix stops electronic invoice import from bringing over inappropriate information when processing vendor refunds. It helps keep refund records accurate and avoids confusion or cleanup for accounting teams.
Original PR description
opw-5870516 opw-5898302 opw-5917394 opw-5892671 Forward-Port-Of: odoo/odoo#247619
This update resolves an issue where users with limited sign rights couldn't access the sample document template. The fix ensures that users can now successfully create and manage sign items within the sample template, improving usability for all users. This change corrects a security-related access restriction.
Original PR description
**Issue** Users without 'Admin' Sign rights could in some cases not access the sample template. **Steps to reproduce** 1. Go to 'Templates' and archive the existing one in order to have the 'Try our…
**Issue** Users without 'Admin' Sign rights could in some cases not access the sample template. **Steps to reproduce** 1. Go to 'Templates' and archive the existing one in order to have the 'Try our sample document' shown and click on it. 2. Add some sign items to the template, and send it for a signature request. 3. With an user having only 'User: Own Templates' Sign rights, go to 'Templates' and click 'Try our sample document'. Access Error: Blame the following rules: - sign.item: group_sign_user: Create and manage template items **Cause** When the template has an associated sign request, it is copied. The problem is that the user currently doesn't have enough rights to create sign items for the copied template: https://github.com/odoo/enterprise/blob/2e8fb2ca274a0cf15d7b78a663bffe9cbb700153/sign/security/security.xml#L92-L101 **Change** Change the `user_id` of the new template to allow creating the sign items for it. The user also needs write access to the roles of the sign items. Also make sure to properly remove the sign items from the new template. opw-5254566 Forward-Port-Of: odoo/enterprise#105558 Forward-Port-Of: odoo/enterprise#102227
This update resolves a technical issue that caused a SQL error when creating invoices with non-deductible taxes in Studio. The fix prevents the error by skipping the problematic SQL query when invoice lines are not yet saved, ensuring smoother invoice creation.
Original PR description
**Steps to reproduce:** * Install **account_asset** and **l10n_be**. * Enable **developer mode**. * Using **Studio**, add the field **non_deductible_tax_value** to invoice lines. * Create a new invoice. * Select a partner and add a product with **21% VAT** applied. * Do not save the invoice before adding the line. **Observed behavior:** * A **SQL syntax error** occurs: `WHERE tdq.base_line_id IN ()`. * The error is triggered when accessing the non-deductible tax value on unsaved records. **Cause:** * `_compute_non_deductible_tax_value()` executes SQL query with `tuple(self.ids)`. * For unsaved records, `self.ids` is empty, creating invalid SQL `IN ()` syntax. * This path is only reached for **non-deductible taxes**. **Fix:** * Skip the SQL query when no record IDs are available. * Return a default value for unsaved records. opw-5896716 Forward-Port-Of: odoo/enterprise#106655 Forward-Port-Of: odoo/enterprise#106470
This update resolves an issue where canceling a payslip could lead to inconsistencies in data updates. By unlocking snapshots before updating, the system now maintains more accurate and reliable payroll information. This ensures data integrity and reduces the risk of errors during payslip management.
Original PR description
When canceling a payslip, we now unlock the snapshots before updating them to improve consistency Forward-Port-Of: odoo/enterprise#106439