Daily updates from Odoo
Thursday, June 4, 2026
24 changes · master
New functionality added to Odoo
This update adds test data related to a new payment method, 'pos_iot_six,' to the Odoo configuration tests. This ensures that the system can properly handle and test this new payment option during development and quality assurance. It supports the ongoing development of the Odoo Enterprise platform.
Original PR description
Adding pos iot six payment method to the test data of the pos_config. Related to Odoo pr https://github.com/odoo/odoo/pull/262184 Forward-Port-Of: odoo/enterprise#118865 Forward-Port-Of: odoo/enterprise#118531
Enhancements to existing features
This update ensures the knowledge tour continues to function correctly following recent changes to the media dialog system. It’s a necessary adjustment to maintain a smooth user experience for accessing and understanding knowledge articles. This change improves the overall usability of the knowledge base.
Original PR description
Modify knowledge tour to stay compatible with the media dialog refactoring task-5318096
This update improves the demo experience by allowing the 'Create Vendor Bill' action to function without requiring OCR processing. It replaces PDFs with Peppol XML equivalents, streamlining the demo setup and making it easier to showcase the feature. This change primarily impacts the documents account module.
Original PR description
Purpose ======= For demo purpose, it would be nice to be able to trigger the "Create Vendor Bill" action without needing OCR. So we replace some PDFs by their peppol XML equivalent in documents account, and we include the XML in the embedding of the PDFs defined in the documents module for some others. Simplify the demo prompt by removing the text in bold. Task-6236411
This update enhances the employee avatar card by displaying key payroll information – wage, pay frequency, and employment category – directly within the popup. This provides users with a quick overview of an employee's payroll details. The changes are restricted to users with specific payroll access permissions.
Original PR description
Show wage (with currency and pay frequency), employment category, and seniority in the footer of the employee avatar card popup. The section is only sent to and rendered for users with `hr_payroll.group_hr_payroll_user` access. task-6117982
Resolved issues and error corrections
This update fixes a readability issue in appointment email templates when dark mode is enabled. The team adjusted background colors and simplified template code to ensure content is clearly visible for all users. This improves the overall user experience and consistency across Odoo.
Original PR description
This PR fixes and improves the display of the mail templates and also cleans their code. For this, several commits are needed: - Commit 1 sets the mails' background color to white because a dark custom color has been specified. Before this change, the content was not readable when the dark mode was enabled since the background and the font had similar colors. - Commit 2 adds default values to avoid displaying variables that users cannot understand inside the editor and replaces some t-attf-style by style, as they contain no variable. Community PR: https://github.com/odoo/odoo/pull/249102 Task-5886471
This update resolves an issue where users without sign permissions were unable to access records with sign request activities, resulting in an access error. The fix uses 'sudo' to ensure access and prevents actions that trigger the error, improving the sign request workflow for all users.
Original PR description
**Steps to reproduce** - Have user A with Sign admin rights and user B without Sign rights. - With user A, create a sign request activity on a record that user B can access. Send the signature…
**Steps to reproduce** - Have user A with Sign admin rights and user B without Sign rights. - With user A, create a sign request activity on a record that user B can access. Send the signature request. - With user B, try to access the record. -> AccessError when trying to fetch the chatter. **Cause** By default, users get access to all the activities associated to records they have access to (see `_search` of `mail.activity`). This is an issue since some of the fields added in `_store_activity_fields` for the sign request activity display might not be accessible for a user with access to the activity. **Change** Use `sudo` to be able to display the activity, even if the user doesn't have access to the sign request. Also, in that case, `can_write` should be `False` in order to hide the action buttons of the activity, which trigger access errors when trying to make operations on the sign request. Another related change is to create the activity for the user creating the sign request, this avoids falling back on the `user_id` of the record associated with the activity and makes sure the activity's user has access to the sign request. opw-6157455 Forward-Port-Of: odoo/enterprise#118555 Forward-Port-Of: odoo/enterprise#116540
This update adds a direct link within the Timesheets Assistant to its official documentation. This makes it easier for users to quickly find answers to their questions and understand how to use the Timesheets Assistant effectively. It’s a small change designed to improve user support and knowledge.
Original PR description
This commit adds documentation link in Timesheets Assistant to redirect the user to the documentation of Timesheets Assistant. task-6095833 Forward-Port-Of: odoo/enterprise#119022 Forward-Port-Of: odoo/enterprise#118754
This update resolves an issue where the system incorrectly flagged incoterm requirements for export invoices containing service products. Previously, the system demanded incoterm information even for services, which is not required by tax regulations. This change ensures accurate invoice export to the tax agency.
Original PR description
With l10n_gt_edi: - Create an invoice with a partner without a country (in l10n_gt this is considered an export invoice) and a service product. When trying to export the invoice to the tax agency, the following alert is triggered: Incoterm is required on export invoice with goods product but it's currently missing However, service products do not require incoterm configuration. opw-6170409 Forward-Port-Of: odoo/enterprise#115833
This update corrects a misunderstanding in the payment flow for orders with a price of zero. Previously, paying a sum through the 'customer account' method incorrectly treated it as a return. The fix now hides the 'pay_later' payment method when the order price is zero, aligning with business requirements and preventing incorrect accounting.
Original PR description
Step to reproduce: - install "pos_settle_due" - create a pos order, set order price = 0, select a customer - go to payment page, select "customer account" as payment method - here you can set any…
Step to reproduce: - install "pos_settle_due" - create a pos order, set order price = 0, select a customer - go to payment page, select "customer account" as payment method - here you can set any amount to pay, ex 100$ - fulfill the order. Observation: - the order amount is 0, if we pay 100$ using customer account, it is considered as change (which means we returned it to customer) - As per PO, this flow doesn't make sense Issue: - customer has 100$ due for this order, but he won't be able to settle this as fetch order to settle with amount != 0, after commit [1] - [1] https://github.com/odoo/enterprise/commit/12af23d5382e972facfaa999e4c5ab30c97e8d1f https://github.com/odoo/enterprise/blob/951e5f42884c898bc14d9c32ae6a8f08c31ff06d/pos_settle_due/static/src/app/screens/partner_list/partner_line/partner_line.js#L35 Fix: - we hide payment method of type "pay_later" in case of 0 price order opw-6123699 Forward-Port-Of: odoo/enterprise#118864 Forward-Port-Of: odoo/enterprise#116556
This update optimizes the styling of the Odoo Enterprise home menu by replacing inefficient CSS selectors with CSS variables. This change improves page loading speed and overall performance, leading to a smoother user experience. The update ensures the home menu remains responsive and fast.
Original PR description
Avoid selectors after `:hover` and `:active`, as they can impact performance. CSS variables are now used instead. Replace hex color values with "0 0 0" RGB syntax to ensure compatibility with CSS variable usage. Forward-Port-Of: odoo/enterprise#119082
This update resolves two minor bugs in the point-of-sale test suite. Specifically, it corrects how test results are evaluated and handles potential type mismatches, ensuring the tests accurately reflect the functionality of the POS system. This improves the reliability of the testing process.
Original PR description
..., l10n_es_pos, l10n_jo_edi_pos, l10n_br_edi_pos
---
Fix two bugs in the checkTicketData() test helper:
- Replace falsy check `!statement` with `!statement.length` to
correctly handle empty NodeList results from querySelectorAll,
as an empty NodeList is still truthy.
- Replace loose equality `ruleFound == rule.negation` with strict
equality `ruleFound === (rule.negation || false)` to avoid
unintended type coercion when `rule.negation` is undefined.
---
Task: https://www.odoo.com/odoo/project/1737/tasks/6147566
Forward-Port-Of: odoo/enterprise#118557
Forward-Port-Of: odoo/enterprise#114581This update resolves an issue caused by a recent change in the HR schedule layout. The update adjusts the view structure to ensure schedules display correctly within the new group layout. This improves the overall usability of the HR schedule feature.
Original PR description
Fixes the view breakdown caused by migrating the schedule separator to a group layout in the base hr view. Task: 6267822
This update allows users to efficiently edit analytics distribution data directly within asset records, mirroring the functionality available for journal items. This enhancement streamlines the process of analyzing asset performance and provides a more consistent user experience across Odoo Enterprise.
Original PR description
This commit fixes the multi-edit of analytics distribution field in assets form view. The multi-edit option was added to the analytics distribution widget, same as in the journal items. task-6218188 Forward-Port-Of: odoo/enterprise#119054 Forward-Port-Of: odoo/enterprise#118042
This update fixes a technical issue that prevented the system from correctly processing payrolls with previously recorded negative amounts. The fix involved correcting references to these amounts and removing unnecessary code, ensuring accurate paycheck calculations and preventing errors.
Original PR description
Steps to produce: - create a previous payslip with negative amount - create a payslip for current month - click on the warning to apply negative amount - you get an error or a traceback because it's referencing an input which is removed from the system and migrated to other input Fix: - corrected the reference to negative net - removed content of the method `_generate_payslip` as it's not used and referencing removed inputs task-id: 6240163 Forward-Port-Of: odoo/enterprise#119143 Forward-Port-Of: odoo/enterprise#118144
This update resolves an issue where the Timesheet Assistant was incorrectly matching events to projects with disabled timesheets. The changes ensure the assistant only considers projects with active timesheets, improving data accuracy and preventing irrelevant suggestions. This update was implemented across the entire system.
Original PR description
Currently, the Timesheet Assistant (ActivityWatch) can match events to projects or tasks that have timesheets disabled, either via Custom Rules or Historical Memory.
This commit resolves the issue across the entire pipeline:
- Backend: Updated `resolve_assistant_models_targets` to efficiently filter out records where `allow_timesheets` is False using a search domain.
- Frontend: Updated the `loadData` JS pipeline to intercept and wipe any project/task IDs rejected by the backend, ensuring they cleanly fall back into a single "Unmatched" group.
- Views: Added the `[('allow_timesheets', '=', True)]` domain to `project_id` and `task_id` fields in `aw.rule` views to prevent users from creating invalid rules.
Task: 6267401This update resolves a technical error that prevented users from accessing the assistant frequency view within the Odoo Enterprise application. The issue stemmed from a missing context variable, which caused an error when the view attempted to display optional settings. The fix adds a necessary context variable and a test to ensure this functionality remains stable.
Original PR description
Steps: 1- install timesheet_grid 2- navigate to assistant > configuration > local assistant rules => TypeError: Cannot read properties of undefined (reading 'list_optional_show') Source: After commit https://github.com/odoo/odoo/commit/764e7c2a951eb775e7aa2579f4e0774e382a385b, context.list_optional_show was added, but context is undefined in the assistant frequency viewer Solution: add context as an empty object add a test to detect regressions on openinig the frequency viewer task-6251619
This update resolves an issue where the Executive Summary report would fail when the date range option was disabled. The fix ensures the report uses the fiscal year's start date instead, preventing a calculation error and ensuring the report always displays correctly. This improves the report's reliability for users.
Original PR description
## Steps to Reproduce: 1. Install the Accounting module. 2. Go to Accounting > Reporting > Executive Summary. 3. Activate debug mode. 4. Click on the gear icon at the top. 5. In the "Options" tab,…
## Steps to Reproduce: 1. Install the Accounting module. 2. Go to Accounting > Reporting > Executive Summary. 3. Activate debug mode. 4. Click on the gear icon at the top. 5. In the "Options" tab, disable the "Date Range". 6. Open the report again. ## Error: `TypeError - unsupported operand type(s) for -: 'datetime.date' and 'NoneType'` ## Cause: At [1], when the "Date range" option is disabled in the summary report, `date_from` becomes None. The NDays expression still computes `date_to - date_from` at [2], which raises a TypeError because subtraction between a datetime and NoneType is not supported. ## Fix: This commit takes the fiscal-year's start date, when the date-range feature is disabled. [1] - https://github.com/odoo/enterprise/blob/a9cadd93b849375edfcc7fd04612d9eb8787043b/account_reports/models/account_report.py#L564-L570 [2] - https://github.com/odoo/enterprise/blob/a9cadd93b849375edfcc7fd04612d9eb8787043b/account_reports/models/executive_summary_report.py#L15-L16 sentry-7455506965 Forward-Port-Of: odoo/enterprise#119162 Forward-Port-Of: odoo/enterprise#116888
Features or functions removed from Odoo
This update removes a previously used JavaScript file related to appointment scheduling. This change was made because the functionality was already available in another part of the system, eliminating a duplicate and simplifying maintenance. This ensures consistent performance and reduces potential code complexity.
Original PR description
Purpose of this PR: Since html_editor/static/src/utils/regex.js has been removed as it contained redundant logic already present in link/utils. community-https://github.com/odoo/odoo/pull/265767 task-6199269
This update removes a redundant 'today' date filter from the 'My Map' menu. As a new date selection filter is being implemented, this default filter is no longer necessary, streamlining the user experience. This change prepares the system for the upcoming date filtering functionality.
Original PR description
In this commit, we remove the default filter on "today" in the "My Map" menu. As we will introduce a date selection filter, this filter does not make sense anymore. task-6273672
Code cleanup and technical improvements
This update addresses technical debt by migrating from outdated Owl 3 hooks to the newer Owl 3 alternatives. Specifically, unused code related to attendance Gantt charts and payroll change detection has been removed, streamlining the system and improving performance.
Original PR description
As part of the Owl 3 migration, replace deprecated onRendered hooks with the appropriate Owl 3 alternatives. In hr_attendance_gantt, remove the obsolete loadHelper logic since it is no longer used. replace the payRunId change detection in hr_payroll with a useEffect.
This update aligns the Knowledge and Sign applications with a new, standardized component for managing form status indicators. This refactoring eliminates redundant code and ensures a consistent user interface across Odoo Enterprise, improving maintainability and reducing potential errors. The previous custom status indicator in the Sign module has been removed.
Original PR description
This PR adapts the `knowledge` and `sign` applications to use the newly refactored, model-agnostic `FormStatusIndicator` component from the `web` module. Specifically, it updates the component calls to pass the newly required properties (`isDirty`, `isValid`, `isNew`, `save`, `discard`) instead of the `RelationalModel`. In `sign`, the custom `SignStatusIndicator` implementation has been removed and replaced by extending the core `FormStatusIndicator`, eliminating duplicated logic and ensuring consistent behavior with the rest of the application. **Related Community PR:** https://github.com/odoo/odoo/pull/264066 **Task:** 4422555
This update modernizes the bank reconciliation widget by replacing outdated React techniques with a more efficient system. Specifically, it removes the use of `useLayoutEffect`, which is now deprecated, and utilizes signals for automatic data updates, resulting in a smoother user experience. This change improves performance and aligns with current best practices.
Original PR description
Replace useState + useLayoutEffect with computed/signal from OWL3: - accountMoveLines, linesToReconcile, suspenseAccountLine, and reconciledLineName are now computed signals that re-derive automatically when line_ids changes, removing the need for _updateLinesState() and its useLayoutEffect trigger - isUnfolded is a plain signal (writable boolean) - Drop fold/unfold which were unused. WHY: useLayout effect is deprecated NOTE: This widget was tested with the tour `test_tour_bank_rec_widget` but may still contain some errors
This update addresses a technical issue related to the Gantt chart library by replacing an outdated component. This change ensures the Gantt chart continues to function correctly and avoids potential future compatibility problems. It's a routine maintenance update.
Original PR description
Replaces useLayoutEffect with [xxx] WHY: UseLayoutEffect is deprecated in OWL3
This update removes an outdated method of passing data through notifications, streamlining the notification process and simplifying the underlying code. This change improves efficiency and reduces unnecessary data access, leading to better performance and maintainability.
Original PR description
Purpose: get rid of "msg_vals" added in various notification methods. Its purpose is to avoid browsing message records when values are available to avoid redundant accesses (see https://github.com/odoo/odoo/pull/32404 ). This is now quite an old school approach, and with time and overrides part of its benefits were lost. In this task we remove message values propagation, using message record as source of values. This allows to simplify API of several methods as well as code. Some query counters are higher, as we have to fetch some values that were previously found in message values. Next step is to check if cache usage can be improved in order to avoid queries if those are annoying or might create performance issues. Task-4845982