Daily updates from Odoo
Friday, June 12, 2026
39 changes · master
New functionality added to Odoo
This update improves the Swiss payroll payslip report by incorporating the necessary source tax rate information. This ensures accurate reporting and compliance with Swiss tax regulations for employees' payrolls.
Original PR description
This commit adds the source tax rate in the payslip report for Swiss payroll. task-4979330 Forward-Port-Of: odoo/enterprise#112842
This update adds support for a new e-gov code (1298006) to all Circumstantial leave types within the Odoo Enterprise HR payroll module. This change aligns with recent regulations from the Belgian government, ensuring accurate payroll processing for employees covered by these specific leave types.
Original PR description
Add e-gov3.0: 1298006 to all Circumstantial leave types task: 6275799
This update introduces a new button within the payroll process, allowing administrators to easily add multiple salary adjustments to individual payrun records. This simplifies the process of correcting pay errors and applying retroactive changes, improving payroll accuracy and efficiency.
Original PR description
Adding a server action to allow for multiple salary adjustments to be added to the selected records on the payrun. task-6296109
Enhancements to existing features
This update enhances how product categories are managed within Odoo Enterprise, specifically related to tax calculations. The changes streamline the process of assigning and displaying tax information for product categories, improving accuracy and usability. This ensures consistent and compliant tax reporting for our business users.
Original PR description
task-6201594
This update ensures the AI website's new page templates align with recent design and upgrade changes. Specifically, the naming of a new template has been adjusted to match the latest design theme and upgrade processes, improving consistency and preventing potential conflicts.
Original PR description
This PR updates a new page template reference in the `ai_website` module. - requires: - https://github.com/odoo/odoo/pull/259990 - https://github.com/odoo/design-themes/pull/1256 - https://github.com/odoo/upgrade/pull/10046 - https://github.com/odoo/documentation/pull/17550 task-6054072
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
Features or functions removed from Odoo
This update removes outdated instructions within the Odoo Enterprise application related to user tours. These tours were previously flagged as ineffective since version 19.1, and their removal simplifies the application's functionality. This change ensures a cleaner user experience and reduces potential confusion.
Original PR description
Since these tours are blacklisted since V19.1, the undeterministicTour_doNotCopy key has no effect and can be safely removed.
Code cleanup and technical improvements
This update resolves an issue related to outdated code in the account reports and web map modules. By replacing deprecated useLayoutEffect calls with more modern methods, the system now performs more efficiently and is compatible with newer Odoo versions.
Original PR description
Batching a couple of useLayoutEffects that can be replaced with onMounted / onPatched. WHY: useLayoutEffect is deprecated since OWL3
This update refactors the Feedback Screen code in Odoo's l10n_br_edi_pos, l10n_pe_edi_pos, and pos_blackbox_be modules to align with a recent upgrade. It replaces outdated code that relies on useLayoutEffect with modern useEffect, ensuring compatibility with the latest Odoo version (OWL3) and improving stability.
Original PR description
Replace useLayoutEffect + this.state.loading with useEffect + this.loading() in l10n_br_edi_pos and l10n_pe_edi_pos. Replace this.state.fdmError and this.state.timeout with plain _fdmError and _timeout fields in pos_blackbox_be. WHY: follows the FeedbackScreen proxy -> signal refactor; useLayoutEffect is deprecated in OWL3 Community PR: https://github.com/odoo/odoo/pull/269272
This change refactors the core payroll module's data structure, moving away from an older system. As part of a larger migration, this update improves the underlying architecture and prepares the payroll system for future updates and integrations. This change ensures the payroll module remains compatible with newer Odoo versions.
Original PR description
As part of the migration from `owl 2` to `owl 3`, this commit replaces uses of `t-custom-model` with `t-model` or `t-model.proxy`. community: https://github.com/odoo/odoo/pull/269061
This update removes outdated 'onWillRender' hooks within the Web Studio module as part of the Owl 3 migration. This ensures compatibility with the latest version of Odoo and improves the stability and performance of the web design tool. The change is a technical refactoring.
Original PR description
As part of the Owl 3 migration, replace deprecated onWillRender hooks with the appropriate Owl 3 alternatives.
This update resolves an issue related to the outdated useLayoutEffect function in the SMS signer component. Replacing it with useEffect ensures compatibility with the latest OWL3 framework, improving stability and preventing potential errors. This change also includes a fix for the SMS retry timeout.
Original PR description
Replaces useLayoutEffect with useEffect from @odoo/owl WHY: UseLayoutEffect is deprecated in OWL3 Replaces previousId comparison with an initialized flag that skips only the first mount.
This update resolves a technical issue related to the PDF viewer component in Odoo Enterprise. By replacing deprecated code, the change enhances performance and ensures compatibility with the latest OWL3 framework, improving the overall stability of the application. This ensures a smoother user experience for viewing PDF documents.
Miscellaneous changes
This pull request updates the .weblate.json files, which control the internationalization (I18N) of the Odoo Enterprise software. These updates ensure that the application's text is accurate and consistent across different languages, improving the user experience for international customers. This is a routine maintenance task to keep Odoo localized correctly.