Friday, June 12, 2026
26 changes · master
Resolved issues and error corrections
This update ensures that when employees' wages are adjusted through the 'Employees Under Minimum Wage' warning, the existing active contract is updated instead of being terminated and replaced. This prevents disruption to payroll processing and maintains accurate contract records, streamlining payroll management.
Original PR description
Before this commit, clicking 'Adjust Wages' on the 'Employees Under Minimum Wage' warning terminated the active contract (setting contract_date_end to yesterday on the previous version) and started a brand new contract today. After this commit, the action creates a new effective-dated version within the active contract: it inherits the same contract_date_start and contract_date_end, and the minimum wage is written on it. task-6217548 Forward-Port-Of: odoo/enterprise#117445
This update resolves an issue where users attempting to access archived documents through specific methods (like widgets or notifications) would incorrectly display a 'not found' message. This fix ensures that archived documents are correctly accessed, improving the user experience and preventing frustrating errors. It's a follow-up to previous improvements related to document handling.
Original PR description
When a user tries to access an archived document via * a many2one widget * `/odoo/documents.document/<id>` * a discuss notification they end up in "All" with a toast specifying that the document was not found. Follow-up of Task-6068437 (follow up of Task-5386466). Task-6214488 Forward-Port-Of: odoo/enterprise#119565 Forward-Port-Of: odoo/enterprise#117229
This update corrects a display issue related to Sunday formatting in the Thai (th_TH) locale, which was impacted by a recent Chrome browser update. The change ensures that the correct day name is consistently shown to users, regardless of the browser's settings.
Original PR description
Chrome 148 changed the display format for Sundays in the th_TH locale. This commit modifies the test to expect either the full or abbreviated day name, depending on what the browser Intl API actually returns. Forward-Port-Of: odoo/enterprise#119708
This update fixes a potential issue where state deductions exceeding employee income could result in negative taxable income values on payslips. The change ensures that taxable income defaults to zero in these scenarios, preventing inaccurate payroll calculations and ensuring compliance. This improves the reliability of US HR payroll reporting.
Original PR description
This commit simply defaults the computed taxable income amount to 0 in case the state deductions are greater than their gross income. Otherwise our payslips would imply that these employees are owed money by the state opw-5137280 Forward-Port-Of: odoo/enterprise#119208 Forward-Port-Of: odoo/enterprise#98114
This update allows users to create credit notes even when the original invoice isn't present in the system. This change, stemming from a related Odoo development (odoo/odoo#258132), ensures greater flexibility in credit note creation. The tests have been updated to reflect this new functionality.
Original PR description
Now the system allows the user to create a credit note without having the original invoice in the system. Due to what was done in odoo/odoo#258132 some tests were failing. These tests have been modified to match with the new field and behaviour
This update resolves an issue where the search menu in the Web Studio module would unexpectedly open and close when a user clicked the search input while the menu was already visible. The fix adds a check to prevent this behavior, ensuring a smoother and more reliable user experience.
Original PR description
When clicking on the search input while the search dropdown is already open, it closes it on pointer-down and reopens it on pointer-up. This commit fixes the issue with a check on a data attribute. task-6190769
This update ensures that fiscal categories and related products are automatically loaded when using the self-order blackbox feature. Previously, this process was inconsistent, leading to potential errors. This change improves the reliability and usability of the self-order experience.
Original PR description
Before this commit, the fiscal category and the products work in and work out weren't necessarily automatically loaded when using the self with a blackbox, it is now the case. Forward-Port-Of: odoo/enterprise#117288 Forward-Port-Of: odoo/enterprise#117044
This update fixes a technical issue in the Website Studio form builder by updating test selectors to align with a recent layout change. This ensures tooltips and question mark icons are correctly displayed, improving the overall user experience for building website forms. The change addresses a broken testing process.
Original PR description
The HTML builder now wraps row labels and tooltips in a dedicated container so the tooltip also appears when hovering the question mark icon. This layout change broke website_studio tests relying on selectors based on the previous DOM structure around option labels. This commit updates the form option test selectors to target the builder row data-label API instead of positional DOM relations. task-[6196877](https://www.odoo.com/odoo/project/974/tasks/6196877)
This update enhances the visual design of the global filter items within the Odoo Enterprise application. A subtle border and rounded corners have been added to the filter items, improving their overall appearance and usability. This is a minor aesthetic improvement.
Original PR description
Added a border and rounded corners Task: 6103251
This update optimizes the way Odoo recalculates styles, specifically in large tables like the Accounting Balances Sheets. By removing unnecessary selectors, the system now processes changes more efficiently, leading to faster performance during scrolling, resizing, and sorting.
Original PR description
Adapt selector to remove the :has value since it not needed to have the effect applied. This reduces work during the "Recalculate Style" phase (for example when hovering rows in large tables such as the Accounting > Balances Sheets). It lowers recalculation time during window resizes, heavy scrolling, and table sorting by preventing broad selector matches and limiting style checks to elements with the specific class. This commit is a follow up of https://github.com/odoo-dev/enterprise/commit/8aa63b3c726d825e68430bb0a64a54c1b58d6af7 Note: We also fixes the scss button variable not correctly overided Forward-Port-Of: odoo/enterprise#119779 Forward-Port-Of: odoo/enterprise#119521
This update fixes an issue where untaxed invoice lines were incorrectly inheriting datev code from the previous line, leading to inaccurate reports. The change ensures that untaxed lines now properly display an empty datev code, aligning with German accounting standards and improving report accuracy. This resolves a technical problem impacting financial reporting.
Original PR description
**PROBLEM** Untaxed move lines would take the datev code of the previous line instead of having no datev code like they should. **STEP TO REPRODUCE** 1. On a german company, create an invoice with a line with tax 19% I, and a line that is untaxed (with a non-null price). 2. On the general ledger, generate the datev zip. 3. Unzip, and open the account entries csv, and notice the 2nd line of the invoice as the datev code set to something instead of it being empty (column BU-Schlüssel). opw-6141003 Forward-Port-Of: odoo/enterprise#118486
This update fixes a misleading error message displayed when a shift template's start hour was set after its end hour. The message has been corrected to accurately state that the start hour must precede the end hour for a valid shift template. This ensures users receive clear and helpful guidance.
Original PR description
Before this commit, when the user set a start hour after end hour, the error message raised said: "The start hour cannot be before the end hour for a one-day shift template.". Which does not make sense since the start hour has to be before the end hour to be valid. This commit fixes the error message to say the start hour cannot be after the end hour. Forward-Port-Of: odoo/enterprise#119637
This update simplifies call logging within Odoo Enterprise. Now, users can only log completed calls as activities, eliminating the option to schedule calls through the softphone log wizard. This change streamlines the logging process and aligns with current workflow best practices.
Original PR description
From now, only allow to log a done activity for a call, no more schedule activity from softphone log wizard. Task-[6276059](https://www.odoo.com/odoo/5778/tasks/6276059)
This update resolves an issue where employees with overlapping contracts would incorrectly receive a 'Duplicate Payslip' warning. The change restricts duplicate checks to payslips sharing the same version ID, ensuring accurate payroll reporting. This improves the reliability of payroll data.
Original PR description
If an employee has a contract that ends in the middle of the month and another contract starts in the same month, the two payslips that are created for the month trigger the "Duplicate Payslip" warning, even though they use different version IDs. This commit limits the search domain for the duplicate payslips to only consider payslips with the same version ID. task-6226391 Forward-Port-Of: odoo/enterprise#118652
This update resolves an issue where users received access errors when attempting to delete appraisal forms that weren't in the draft stage. The change now provides a user warning instead, offering a smoother and more intuitive experience. This improves usability and avoids unnecessary disruptions.
Original PR description
[IMP] hr_appraisal: appraisal form deletion error There was a security rule that throws access error when we try to delete the appraisal if it is not in draft stage There was also a user warning about that and we want user warning instead of access error. That's why i updated the security rule to exclude draft stage part. task - 6253595
This update resolves a crash in the payslip PDF report that occurred when employees didn't have a bank account configured. The fix adds a simple check to ensure the bank account section is only displayed if an employee actually has a bank account linked, improving report stability and reliability.
Original PR description
The payslip PDF report crashed when the employee had no bank account configured because the template tried to access bank_account_ids[0] unconditionally. Add a t-if guard on the bank account div to only render it when the employee has at least one bank account linked. Forward-Port-Of: odoo/enterprise#115893
This update fixes an issue where the field service report was displaying incorrect information. The report now correctly uses the Planning Shift name and start date, aligning with recent updates in version 19.2. This ensures accurate reporting for field service operations.
Original PR description
…port title - Removed the 't-if' condition containing 'doc.name', as 'doc.name' now refers to the Planning Shift name following the changes introduced in v19.2. - The report now displays 'start_datetime', which is automatically populated when a Planning Shift is created. - As a result, the 't-if' condition is no longer necessary. - This change aligns with the new behavior introduced in v19.2 and effectively replaces the Task name that was previously displayed before the report was migrated from 'project.task' to 'planning.slot'. Task-ID: 6284967 Forward-Port-Of: odoo/enterprise#119712
This update resolves an issue where uploading fillable PDFs with no data caused a system error. The fix prevents a crash when a PDF has no filled-in fields, ensuring PDFs are generated correctly. This improves the reliability of PDF generation within the system.
Original PR description
Version: 19.0 Issue: - Uploading a fillable PDF with no filled-in values caused an error. Cause: - When all form fields are empty, nothing is drawn on the ReportLab overlay canvas, producing a 0-page PDF. - Calling getPage(0) on an empty page list raised an IndexError. Fix: - Skip the page merge when the overlay has no pages to avoid the IndexError on empty fillable forms. Forward-Port-Of: odoo/enterprise#119903 Forward-Port-Of: odoo/enterprise#119677
This update resolves an issue where marking workorders as done would generate a traceback when no workorders were open. The fix ensures the system handles empty recordsets gracefully, preventing errors and maintaining stable operation. This improves the reliability of the MRP workorder process.
Original PR description
When calling on a empty recordset action_mark_as_done, it creates a traceback. **Observation** When calling action_mark_as_done, the method first loops over each workorder to perform various safety…
When calling on a empty recordset action_mark_as_done, it creates a traceback. **Observation** When calling action_mark_as_done, the method first loops over each workorder to perform various safety checks, and then calls button_finish to close all workorders: https://github.com/odoo/enterprise/blob/24008b550c5e7cf04cde2028c40f8a32d5b0e504/mrp_workorder/models/mrp_workorder.py#L881-L888 Inside button_finish, it retrieves all open workorders and marks them as done: - Retrieve open workorders: https://github.com/odoo/odoo/blob/36a1c6300f52f408b6af3f769e26686e07810e5a/addons/mrp/models/mrp_workorder.py#L659 - mark them as done: https://github.com/odoo/odoo/blob/36a1c6300f52f408b6af3f769e26686e07810e5a/addons/mrp/models/mrp_workorder.py#L675-L678 Returning to action_mark_as_done, it attempts to set the state to 'done' on the last workorder outside of the loop, referencing the loop variable: https://github.com/odoo/enterprise/blob/24008b550c5e7cf04cde2028c40f8a32d5b0e504/mrp_workorder/models/mrp_workorder.py#L894 -> If self is empty, the loop never executes. This leaves the loop variable empty, which ultimately triggers a traceback. opw-6239910 Forward-Port-Of: odoo/enterprise#118718 Forward-Port-Of: odoo/enterprise#118403
A minor typo in the displayed name of the Sendcloud website delivery module has been fixed. This ensures accurate identification and avoids confusion for users. No other changes were required as all other references to the module were correct.
Original PR description
The displayed name contained a typo ("Sendcould" instead of "Sendcloud") All other references already use the correct spelling, so no further changes were necessary.
opw-6239003
Forward-Port-Of: odoo/enterprise#118416
Forward-Port-Of: odoo/enterprise#118223This update fixes a bug in the account reports module that caused the growth comparison percentage to incorrectly change when users switched the period order. The fix ensures the calculation remains consistent regardless of the selected period sequence, providing more reliable reporting.
Original PR description
The feature had originally been implemnted at a time where the period_order couldn't be modified, and always corresponded to what we call 'descending' now. Because of that, we assumed the column at index 0 was always the most recent period ; which caused the growth comparison percentage to change when switching period order. Forward-Port-Of: odoo/enterprise#119782 Forward-Port-Of: odoo/enterprise#118835
This update corrects a technical issue that was preventing the correct generation of French VAT reports. Specifically, a formatting error in the XML data caused a failure when the 'street' field was short and 'street 2' was not used. This ensures accurate report output for French businesses.
Original PR description
When the street field is shorter than 30 char and street 2 is false, we end up with " False" in the xml, which will return an error in aspone. no task id Forward-Port-Of: odoo/enterprise#119718
This update resolves a frustrating error users without accounting access were experiencing in the command palette. Previously, an 'Access Error' would appear when attempting to use accounting report commands. Now, the system checks user permissions and returns an empty list if access isn't granted, preventing the disruptive error message.
Original PR description
…n-accounting users Before this commit, users without accounting access rights would encounter an "Access Error" when typing in the command palette. This occurred because the 'account_report_variants' command provider was registered in the global namespace and unconditionally executed an RPC call to (get_available_variants) as soon as the user typed two or more characters. The backend ACLs correctly blocked this request, but resulted in a disruptive error dialog for the user. This commit fixes the issue by verifying that the user has access to the accounting reports or the acounting app, if they don't it would return an empty list. Steps to reproduce the bug: 1. Log in as admin 2. Go to the Users view 3. Set ESG to 'No' 4. Set Accounting to 'No' 5. Refresh the page 6. Open and use the command palette -> Access Error: You are not allowed to access 'Accounting Report' records. task: 6246337 m Forward-Port-Of: odoo/enterprise#119879
This update fixes a bug that occurred when users tried to add recurring products to confirmed sales orders without a linked subscription plan. The change prevents this action, avoiding errors and ensuring data integrity by validating the subscription plan before processing recurring product additions.
Original PR description
Steps to reproduce: - Go to Sales → Products. - Create a Service product and enable the Recurring option. - Open an already confirmed Sales Order that does not contain any recurring products. - Add the newly created recurring product to the confirmed order. - Click Save. - Observe that a traceback occurs. Cause: - When adding a recurring product without a subscription plan to a confirmed Sale Order, _timesheet_create_task() attempts to compute a start date using order.next_invoice_date, which is not set. - This leads to a TypeError when `order.next_invoice_date` receives `False`. Solution: - Add a validation to prevent adding recurring products without a subscription plan and raise a proper `UserError` instead of allowing the code to reach task generation logic. task-5932700 Forward-Port-Of: odoo/enterprise#119955 Forward-Port-Of: odoo/enterprise#107691
This update resolves an issue where the default journal selection was unreliable when using CODA. The system now manages two journals, prioritizing the one with the correct currency, ensuring accurate financial reporting. This change improves data integrity and aligns with CODA currency requirements.
Original PR description
The journals[0] is not ideal if the user has one journal with no currency and one with currency that fits the CODA's currency. We'll have two journals and we take the first one at random. Thus if it has a lower id, the journal with no currency will be selected instead of the one whose currency is correct. The latter should take precedence over the former. task-6226835 Forward-Port-Of: odoo/enterprise#118381
This update prevents managers from overriding expense approvals on card expenses. Previously, setting a manager after creation would be cleared upon approval. Now, the field is read-only, allowing users to manage card expenses directly, streamlining the approval process and reducing potential errors.
Original PR description
**Issue** If a manager was manually set on a card expense after it was created, it would be cleared when the expense was approved. **Change** Make the field readonly for card expenses, the idea is that the manager shouldn't need to approve card expenses since they are able to control them via the card itself. opw-6045587 Forward-Port-Of: odoo/enterprise#112593