Daily updates from Odoo
Friday, July 3, 2026
23 changes Β· master
Enhancements to existing features
This update enhances how event names are displayed in the Calendar and Gantt views within the Appointment app. When managing capacity, the display name now includes the number of reserved or attending participants, providing clearer event information. This change improves the user experience by making it easier to understand event details.
Original PR description
- Removed the default_name of the event.
- The following display name will be shown in the Calendar and
Gantt views when an event is opened through the Appointment app.
Case 1: Manage capacity is on: EventTitle - total_capacity_reserved πͺ.
e.g., EventTitle = demo, total_capacity_reserved = 4, then display_name
will be "demo - 4πͺ".
Case 2: Manage capacity is off: EventTitle - totalAttendees π€.
e.g., EventTitle = demo, totalAttendees = 4 then display_name
will be "demo - 4π€".
Task-6194877Resolved issues and error corrections
This update fixes an internal test setup issue in the Urban Piper point-of-sale integration. It keeps test-only changes properly contained, helping maintain code quality checks without affecting day-to-day users.
Original PR description
Avoid polluting the Odoo model registry and failing `test_lint_override_signature` by using `patch.object` instead of manual assignment. This ensures the injected method is properly torn down after the test block, keeping the registry clean and bypassing static analysis failure as the patched method is only used for tests. runbot-939298 Forward-Port-Of: odoo/enterprise#122446 Forward-Port-Of: odoo/enterprise#122283
This update corrects automated test coverage for Swedish SEPA payment files when related payment modules are installed together. It helps ensure Sweden-specific bank payment exports remain validated without false test failures.
Original PR description
Here https://github.com/odoo/enterprise/pull/114662 we changed the way the CdtrAgt node is used in the SEPA XML file for Sweden. But this change broke a test when both account_iso20022 & l10n_se_bban are installed, leading to a Non-expected child error. This commit skip the failling test if l10n_se_bban is installed, and add a new one to replace it. runbot-938366 runbot-938367 Forward-Port-Of: odoo/enterprise#122599 Forward-Port-Of: odoo/enterprise#121485
A recent update removed a dependency and added a new project field to improve data accuracy. This change resolved a test failure (test_fsm_flow) that indicated missing project information. The update ensures correct project data is fetched within the planning module.
Original PR description
Currently, running test `test_fsm_flow` leads to a Attribute Error: `planning.slot' object has no attribute 'project_id'`. This happens because project_id field removed in this PR: https://github.com/odoo/enterprise/pull/113153 This field is removed to remove `project_timesheet_forecast_sale` module in the dependencies of `planning_field_service_sale_timesheet` module and add a project field in settings of planning when Billing feature of field service is enabled. Related PR: https://github.com/odoo/enterprise/pull/83012 runbot-[941219](https://runbot.odoo.com/odoo/error/941219) Forward-Port-Of: odoo/enterprise#122442
This update ensures that only complete and accurate address data is sent to Fiskaly when creating POS certificates. Previously, placeholder values like 'N/A' were included, which is now corrected to omit fields when data isn't available, streamlining the process and improving data quality. This change enhances integration with Fiskaly and reduces potential errors.
Original PR description
In this commit: ------------------- - Buyer address fields are optional and should only be sent to Fiskaly when they are actually available. - Avoid sending placeholder values like "N/A". If the data is not present, the fields should simply be omitted from the request. task: 6113133 Forward-Port-Of: odoo/enterprise#122188 Forward-Port-Of: odoo/enterprise#113621
This update fixes an issue where the payrun chatter window would disappear unexpectedly during certain actions, disrupting the payroll process. The change ensures the chatter window stays open and functional, improving the user experience when continuing pay runs. The fix was triggered by a bug in how the system refreshed messages related to pay runs.
Original PR description
The payslip run aside chatter was keyed on a revId counter that _updatePayRun bumps on every payrun update (view button actions, the HR_PAYROLL:UPDATE_PAYRUN bus, the step bubble refresh). Changing a t-key makes Owl destroy and recreate the whole chatter, which resets composerType to false. When a refresh landed while the log note composer was open, the composer input disappeared. In the payrun tour this happens right after continuing a pay run, so posting the third note timed out waiting for .o-mail-Composer-input. Remove the t-key and refresh its messages through the MAIL:RELOAD-THREAD bus that the Thread already listens to. The server posted status messages still show up without throwing away the composer. https://runbot.odoo.com/odoo/error/941272 Forward-Port-Of: odoo/enterprise#122518
This update fixes a display issue in the Intrastat report where bill names were being cut off before hyphens. The change adjusts a regular expression to correctly handle hyphen characters in bill names, ensuring complete and accurate reporting. This improves the clarity and usability of Intrastat reports.
Original PR description
**Steps to reproduce:** - Install Accounting - In Accounting settings, activate "Intrastat" - Create a product with Intrastat info - Create a bill: * Product: [the created Intrastat product] *β¦
**Steps to reproduce:** - Install Accounting - In Accounting settings, activate "Intrastat" - Create a product with Intrastat info - Create a bill: * Product: [the created Intrastat product] * Intrastat Country: [any] * Intrastat Transport Mode: [any] - Confirm the bill - Make sure that the bill name contains a hyphen character (i.e. "-") For example, "BILL/2026-06/0001". Use the "Resequence" action from the bills list view if needed. - Go to "Accounting / Reporting / Audit Reports / Intrastat Report" - Expand the line to display the bill name **Issue:** The bill name is not fully displayed. It is cropped right before the hyphen character (i.e. BILL/2026). **Cause:** A regex is used to retrieve the bill name from the report line name, but it is only allowing "/" character. **Solution:** Just allow "-" character in addition. No other character is allowed to limit the risk of matching something that should not. opw-6299854 Forward-Port-Of: odoo/enterprise#120979
This update resolves a tour test failure in the Belgian HR contract salary module. The issue stemmed from a configuration that incorrectly expected an identification number or NISS when the core payroll module was not installed. The fix ensures the necessary fields are displayed correctly when the Belgian payroll module is active, improving test reliability.
Original PR description
[FIX] l10n_be_hr_contract_salary: fix NISS runbot error in salary config Bug reproduction: 1 - Get 19.4, only install hr_contract_salary and execute tour test hr_contract_salary_employee_flow_tour 2β¦
[FIX] l10n_be_hr_contract_salary: fix NISS runbot error in salary config
Bug reproduction:
1 - Get 19.4, only install hr_contract_salary and execute tour test hr_contract_salary_employee_flow_tour
2 - When only single app is installed without installing l10n_be_hr_contract_salary, the tour test fails
Bug cause:
1 - When the employee's company's country is belgium we were showing NISS instead of identification number.
2 - But NISS field is appended in l10n_be_hr_contract_salary and if you do not install, there is no identification number and NISS.
3 - That's why the test fails (it looks for identification number or NISS but none of them is there)
Bug solution:
1 - I moved the code of hiding identification number or hiding NISS to the l10n_be_hr_contract_salary. So, when only hr_contract_salary is installed, identification number field won't get hided.
task - 6333129
runbot error link: https://runbot.odoo.com/odoo/error/941044
Forward-Port-Of: odoo/enterprise#121800This update removes the ability to quickly create new journals from the POS payment method form. The accounting team requested this change to ensure users only create journals within the dedicated accounting application, improving process control and data accuracy. This change applies locally and can be extended where needed.
Original PR description
Currently on the pos payment method form, if you click "Select more" on the journal field, you will see two buttons 'New' & 'Create New'. Steps to reproduce: ------------------- * Open any posβ¦
Currently on the pos payment method form, if you click "Select more" on the journal field, you will see two buttons 'New' & 'Create New'. Steps to reproduce: ------------------- * Open any pos payment method * Select the journal field * Select "Search more" > See two creation buttons Why the fix: ------------ One button is the standard "On search more" button which can be hidden using options such as no_create, no_create_edit, ... The second button is defined on the list view for journals and since the search more uses the list view it shows the button as well. Currently we can do that with a context key to ensure that on the "real" list view it's still visible. Why do we want to hide those buttons? Asked the R&D accounting team, it should not be allowed to create journals on the fly. You should only be able to create them inside accounting app. This behavior is not limited to this view but will only be applied locally. The fix can however be applied everywhere where needed. Before the fix: ------------------- <img width="700" height="417" alt="image" src="https://github.com/user-attachments/assets/ca11ea13-c38e-40a1-9848-cbc5edc6226e" /> <img width="1507" height="887" alt="image" src="https://github.com/user-attachments/assets/1cde5d3b-3372-4aca-b5d0-2319bd82c1de" /> After the fix: ---------------- <img width="707" height="474" alt="image" src="https://github.com/user-attachments/assets/01dc7b42-43d6-4b18-a12d-54330d51b92b" /> <img width="1457" height="870" alt="image" src="https://github.com/user-attachments/assets/ff387d3f-f59c-47ad-abfe-a2003669db1a" /> opw-6131231 Forward-Port-Of: odoo/enterprise#120379
This update resolves a technical issue that caused build failures in certain testing modes. The team moved assertions to their correct locations, ensuring consistent build behavior across all environments. This improves the reliability of our software development process.
Original PR description
Oversight of: https://github.com/odoo/enterprise/pull/98569 Some assertions were put in the wrong module, making the builds work in "all apps" mode but fail in "single app" mode. This commit moves assertions where they belong. Task-6353709 Forward-Port-Of: odoo/enterprise#122486
This update fixes a vulnerability in the Odoo test for Brazilian Electronic Invoice (BR-EDI) processing. The previous test was overly reliant on a specific message format, making it prone to failure due to minor changes in invoice data. The fix now searches for the key information across all invoice messages, ensuring more reliable test results.
Original PR description
The test was relying on a fixed chatter message position. Another tracking message can be inserted before the informative taxes message, so the assertion may read the wrong body. Search the expected informative taxes content among all invoice messages instead. Broke the runbot of : https://github.com/odoo/odoo/pull/273569
This update resolves a technical problem where web studio's technical names were incorrectly generating `x_studio_<type>_NaN` values. The fix ensures these names are generated correctly, preventing potential errors and improving the stability of the web studio functionality. This change ensures consistent and reliable technical naming conventions.
Original PR description
The PR #119993 introduced a bug leading to technical names being named `x_studio_<type>_NaN`. This commit fixes the issue. A `_NaN` increment is only possible if the increment reach int max size. task-6353814 Forward-Port-Of: odoo/enterprise#122594
This update corrects a warning in the planning module that occurred when trying to modify certain settings. The change ensures data restrictions are applied correctly, preventing potential issues with data integrity. This improves the stability and reliability of the system.
Original PR description
The `@api.constrains` decorator was listening to `company_id`, which is a readonly related field. This triggers an ORM warning ("parameter 'company_id' is not writeable").
Swapped the constraint trigger from `company_id` to `warehouse_id`. Since the company is fully dependent on the warehouse, this safely achieves the exact same trigger logic.
build: [940408](https://runbot.odoo.com/odoo/runbot.build.error/940408)
Forward-Port-Of: odoo/enterprise#121584Features or functions removed from Odoo
This update removes a previously deleted file that was causing a 'dead' module in the Odoo Enterprise system. The change ensures the system is cleaner and more stable, addressing a minor technical issue. This improves overall system performance.
Original PR description
The contents of this file were previously deleted, but the file itself was missed, leaving a dead l10n_hk_hsbcnet module in 19.4. This commit removes the file entirely to clean it up. Forward-Port-Of: odoo/enterprise#122573
This update removes outdated code related to 'onWillRender' hooks, a component of the older Owl 3 system. This change is part of a larger migration to Owl 3, ensuring the system continues to function correctly and efficiently. It's a routine maintenance update.
Original PR description
As part of the Owl 3 migration, replace deprecated onWillRender hooks with the appropriate Owl 3 alternatives.
This update removes an outdated feature ('useComponent') from several Odoo modules. This change improves the system's efficiency and stability by aligning with newer development practices. It ensures the continued smooth operation of key functionalities within Odoo.
Original PR description
- Community: https://github.com/odoo/odoo/pull/272185 See commit messages for details.
Code cleanup and technical improvements
This update aligns several Enterprise apps with the latest underlying Odoo web interface changes. It helps keep features such as Gantt views, Studio, Documents, Sign, Social, Planning, and related workflows working reliably after the platform upgrade.
Original PR description
## `t-ref` β Owl 3 signals β enterprise companion Enterprise side of the codebase-wide Owl 2 β Owl 3 ref-semantics migration. Pairs with the consolidated community PR. Single squashed commit (16 files): xpath rewrites for removed `t-custom-ref` attributes, ref reads converted to the signal call form, and patch/subclass reusers adapted across `web_gantt`, `web_studio`, `documents`, `ai`, `sign`, `social`, `l10n_ke_edi_oscu_pos`, `planning`, `hr_holidays_gantt`. ### Notes - Rebased onto current enterprise `master` (2026-06-10). - Community PR: odoo/odoo#269265
This update removes outdated code related to a previous Gantt chart progress bar redesign. The progress bar component is no longer needed in the current layout, so these files have been deleted to streamline the system and improve efficiency. This is a routine maintenance task.
Original PR description
Cleans up residual dead code left over from the progress bar redesign in https://github.com/odoo/enterprise/pull/118045. Since the `GanttRowProgressBar` component is no longer referenced anywhere in the new layout architecture, its corresponding files have been deleted. Forward-Port-Of: odoo/enterprise#122142
This update removes an outdated technique for autofocusing elements within the View Editor component. The change utilizes a more modern, reactive approach to ensure the element correctly focuses when needed, improving the user experience. Comprehensive testing confirms this update resolves a previous issue.
Original PR description
Replaced `useLayoutEffect` with `signal.ref(HTMLDivElement)` + `useEffect` because `useLayoutEffect` is deprecated in OWL3. The effect drove autofocus on the Property component's root element,β¦
Replaced `useLayoutEffect` with `signal.ref(HTMLDivElement)` + `useEffect` because `useLayoutEffect` is deprecated in OWL3.
The effect drove autofocus on the Property component's root element, triggered both when the DOM element became available and when `env.viewEditorModel.activeNodeXpath` changed. This matches the canonical `signal.ref()` + `useEffect` pattern: converting `useRef('root')` (from `@web/owl2/utils`) to a `signal.ref(HTMLDivElement)` class field makes the element a reactive signal, so `useEffect` auto-subscribes to it and re-runs whenever the element appears. The second dependency is read via `void` inside the callback to force subscription without changing the logic.
The useLayoutEffect refactored in this PR has test coverage β below are some tests that failed when the effect was commented out, and are now passing:
- @web_studio/view_editors/interactive_editor_sidebar/autofocus field label in the sidebar
- @web_studio/view_editors/interactive_editor_sidebar/update sidebar after edition
- WebSuite.test_unit_desktop
see commented-out runbot build: https://runbot.odoo.com/runbot/batch/2602195/build/115250521This update replaces outdated `useLayoutEffect` code with modern, native React event handling (`onMounted` and `onWillUnmount`) across several Odoo modules. This improves stability and performance, aligning with the latest OWL3 compatibility standards. The changes address potential bugs and simplify the codebase for easier maintenance.
Original PR description
## Summary Part of the incremental OWL3 migration removing `useLayoutEffect` from `@web/owl2/utils`, which relies on the OWL2 compatibility shim and is deprecated in OWL3. The pattern replaced isβ¦
## Summary Part of the incremental OWL3 migration removing `useLayoutEffect` from `@web/owl2/utils`, which relies on the OWL2 compatibility shim and is deprecated in OWL3. The pattern replaced is always the same: `useLayoutEffect` with a static or stable-ref dependency was used solely to attach DOM event listeners after mount and clean them up before unmount. In all cases, `onMounted` + `onWillUnmount` from `@odoo/owl` is the correct native replacement β the effect runs once, the ref is stable, and no reactive re-run is needed. ## Commits - **web_gantt**: `useMultiHover` β replaces per-element `pointerenter`/ `pointerleave` listeners (re-queried on every patch) with a single event delegation pair (`pointerover`/`pointerout`) on the container. Simpler and handles dynamic DOM children for free. - **hr_referral**: Bootstrap carousel `slide.bs.carousel` listener β also migrates `carouselRef` from `useRef` to a signal (`t-ref`) and `reachedEnd` from a proxy state to a signal. Fixes a latent bug where `bind(this)` was called twice (once in `addEventListener`, once in `removeEventListener`), making the removal a silent no-op. - **social_facebook/instagram/linkedin**: Click listeners on comment and like buttons queried via `querySelector` β identical structure across the three social kanban patches, straightforward one-to-one swap.
This update replaces an outdated coding technique (`useLayoutEffect`) with a more modern approach (`useListener`) for handling the AI chat feature. This change ensures compatibility with the latest Odoo version (OWL3) and improves the stability of the codebase. The update includes thorough testing to guarantee continued functionality.
Original PR description
Replaced `useLayoutEffect` with `useListener` because `useLayoutEffect` is deprecated in OWL3. The commented-out effect was a pure event-subscription pattern: its body only calledβ¦
Replaced `useLayoutEffect` with `useListener` because `useLayoutEffect` is deprecated in OWL3.
The commented-out effect was a pure event-subscription pattern: its body only called `this.env.bus.addEventListener('AI:OPEN_AI_CHAT', openAiChat)` with a cleanup returning `this.env.bus.removeEventListener`, and its dependency function returned an empty array (register once on mount, unregister on destroy). `useListener(this.env.bus, 'AI:OPEN_AI_CHAT', openAiChat)` is an exact 1:1 replacement β it internally wraps `useEffect` with a null-guard and a `removeEventListener` cleanup, preserving the exact add/remove lifecycle without any dep-array bookkeeping.
The `useLayoutEffect` refactored in this PR has test coverage β below are some tests that failed when the effect was commented out, and are now passing:
- TestAIDraftUI.test_ai_draft_chatter_button (Post install test_ai)
- TestAIDraftUI.test_ai_draft_chatter_button (test_discuss_full_enterprise)
- TestAIDraftUI.test_ai_draft_chatter_button (test_mail_enterprise)
see commented-out runbot build: https://runbot.odoo.com/runbot/batch/2604770/build/115379831This update streamlines the process of setting up test environments for Odoo modules. By separating environment configuration from app creation, it simplifies future updates and makes it easier to remove test environments. This change improves the reliability and maintainability of our automated testing.
Original PR description
* account_reports,documents,documents_spreadsheet,knowledge,obox,room, sign,sign_itsme,spreadsheet_dashboard_edition,spreadsheet_edition, test_spreadsheet_edition,web_studio This commit splits the app/component creation and the env creation at user pov by changing how we populate the env in tests. Now, we have to configure the env before creating the app. This will make the env removal easier in the future.
This update adjusts the Point of Sale (POS) modules and related components to align with the new OWL 3 properties syntax. This change ensures compatibility with evolving standards and improves the system's ability to handle data related to POS transactions.
Original PR description
In this commit: =============== - Update `point_of_sale` and related modules to use the OWL 3 props syntax. Task-6260271 Related Community PR: https://github.com/odoo/odoo/pull/270730