Daily updates from Odoo
Friday, January 16, 2026
21 changes · master
New functionality added to Odoo
This update streamlines the creation of activities by aligning the 'Create Activity' server action with the existing Activity Schedule wizard. Users can now easily utilize activity plans, enhancing the scheduling and tracking of tasks within the system. This change improves usability and efficiency for managing workflows.
Original PR description
The aim of this commit is to make “Create activity” server actions type presented in a similar way than the activity schedule wizard. In addition to moving fields around in the form view, the ability to use an activity plan has been added. opw-4734968
Enhancements to existing features
This pull request streamlines the Odoo website's rental functionality by simplifying the underlying code and improving performance. Specifically, it removes redundant code, centralizes timezone handling, and ensures accurate date calculations, resulting in a smoother and more reliable user experience for customers.
Original PR description
In particular: - Move the website timezone into the session. This allows us to avoid explicitly fetching the timezone from the server and having to pass it around in the renting-related JS code. - Drop the renting mixin. Instead, we now use a stateless renting utils class for shared code (without `this` references). Any code that was only used in a single Interaction has been moved into said Interaction. - Rely on dataset instead of hidden inputs. - Remove the client-side default date computation, and solely relies on the server-side default date computation. As a result, the daterange inputs are correctly populated during the initial load, and the customer doesn't see any flickering. - Fix a few client-side issues. task-5118772 Community PR: https://github.com/odoo/odoo/pull/234405
This update improves the Odoo Enterprise HR app by allowing appraisal managers to easily view their next scheduled appraisal date. Previously, this information was hidden, making planning difficult. Now, managers have a clear, readily available view of upcoming appraisals.
Original PR description
Before: * Appraisal managers couldn't see their next appraisal date if the user have access of employee public view. * The field was only accessible in settings, making planning harder. After: * Added a read-only next_appraisal_date below the manager field. * Added a field which will be computed to whether show the next_appraisal_date or not. Impact: * Helps managers quickly view upcoming appraisal dates. task-5366841
This update adds a 'Budget Spent' stat button directly to the project form view, providing a quick overview of budget utilization. Clicking this button opens a detailed budget report, allowing project managers to easily monitor and analyze project spending against allocated budgets. This simplifies budget tracking and reporting for improved project management.
Original PR description
- make `Budget Spent` stat button in project form view - make it open the `budget.report` window --- task-5344612
This update adapts the HR sign module to align with changes in how activities are scheduled from server actions. Specifically, it incorporates a new parameter to dynamically assign responsibility for activities, ensuring HR sign workflows now correctly reflect activity plans created from server actions. This improves scheduling accuracy and efficiency.
Original PR description
Now that activity plans can be used to schedule activities from server actions, we need to adapt the hr_sign module accordingly. A new parameter to `_determine_responsible` is added in community to dynamically set the responsible assignment from the server actions. This commit adapts the enterprise modules to use this new parameter. Task id: opw-4734968
Resolved issues and error corrections
This update fixes an issue where US clearing numbers were not being correctly identified in Odoo, leading to errors in exports and payroll processing. The fix ensures the correct country code is used when retrieving clearing numbers for US-specific transactions, resolving problems with direct deposit, NACHA payments, and US payroll reports.
Original PR description
*: l10n_us_check_printing, l10n_us_direct_deposit, l10n_us_hr_payroll, l10n_us_hr_payroll_account, l10n_us_payment_nacha Post the res_partner_bank refactor at odoo/odoo#234974 all clearing/routing numbers are retrieved via `_get_clearing_number` calls. However, all of the ones for the US were missing the correct country_code parameter, which broke direct deposit, nacha and iso batch payment exports, check printing, and US payroll. This is because the US by default has it's own custom clearing label record `clearing_label_us` which has a country set, and since `_get_clearing_number` compares the country it will always return None. This was missed in the test cases as they were hardcoded to `clearing_label_all` which lets the blank case through.
This update resolves two issues impacting the website editor. First, it fixes blurry countdown displays when zooming, ensuring sharp visuals. Second, it prevents text overlap with icons, particularly when using the search bar or the Unsplash photo option, improving usability and visual clarity.
Original PR description
## [FIX] website: prevent blurry countdown canvas and text on zoom [Commit 1] Steps to reproduce: - Go to Website -> Edit Mode - Add a Countdown snippet (size: "Small") - Save and zoom in/out, the…
## [FIX] website: prevent blurry countdown canvas and text on zoom [Commit 1] Steps to reproduce: - Go to Website -> Edit Mode - Add a Countdown snippet (size: "Small") - Save and zoom in/out, the countdown canvas and text appears blurry The countdown was rendered at a low resolution, which caused it to blur when zooming. This fix updates the canvas to draw at the proper resolution so the countdown remains sharp at any zoom level. ## [FIX] web_editor: prevent text overlap with icon [Commit 2] Steps to reproduce: - Go to Website -> Edit Mode - Add a Image snippet - Enter a long text in search bar: Issue: 1. Text overlaps with search icon. 2. Selecting the "Photos (via Unsplash)" option causes the text to overlap the dropdown icon. The fix adjusts the end padding to provide sufficient spacing between the text and the icons. task-[4771268](https://www.odoo.com/odoo/project/974/tasks/4771268) Forward-Port-Of: odoo/odoo#242814 Forward-Port-Of: odoo/odoo#213373
This update fixes issues where button previews and link previews displayed incorrectly after changes. Specifically, it ensures button previews accurately reflect settings after converting to links and that link previews inherit the correct theme colors from their parent elements. This improves the overall user experience and consistency of the website editor.
Original PR description
*: html_editor Issue: 1. Button previews displayed incorrectly after converting button type to link 2. Link preview displayed incorrect theme colors when parent and ancestor elements had different…
*: html_editor Issue: 1. Button previews displayed incorrectly after converting button type to link 2. Link preview displayed incorrect theme colors when parent and ancestor elements had different themes applied Steps to reproduce (Issue 1): 1. Add a button component 2. Set it to primary and modify its size/shape 3. Convert the button type to link 4. Re-open the button type dropdown 5. Observe incorrect button preview Steps to reproduce (Issue 2): 1. Add the `s_text_cover` snippet 2. Apply theme 1 (o_cc1) to Text Cover and theme 2 (o_cc2) to Column 3. Press Enter after the button 4. Start typing `/link` to create a link 5. Observe that the link preview in the powerbox dropdown shows incorrect theme colors After this commit: 1. Preview now correctly calculates based on previously configured button properties, even after type conversion 2. Link preview now correctly inherits theme styles from its direct parent element --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240527
This update fixes issues where documents weren't correctly linked to invoices and accounting records, leading to incorrect folder placement and tag assignments. The changes ensure documents are automatically moved to the correct accounting folders and receive the appropriate tags when an invoice is created or linked, improving data accuracy and streamlining workflows.
Original PR description
This PR addresses three related issues in the documents_account module regarding document folder synchronization and the execution order of server actions. **Fix 1:** Sync on Account Move Creation.…
This PR addresses three related issues in the documents_account module regarding document folder synchronization and the execution order of server actions. **Fix 1:** Sync on Account Move Creation. Fixed a regression (introduced in 2333367) where documents failed to move to the correct Journal folder and apply tags when creating a new account move. Also added a small refactor to flatten the structure. The tests added in Fix 3 would catch this regression in the future. **Fix 2:** Sync on Miscellaneous Entry Creation Previously, creating a Miscellaneous Entry (move_type='entry') from an existing document failed to move the document from its original location (e.g., "Finance") to the correct accounting folder. The existing sync logic explicitly skipped entries to avoid issues with multi-attachement invoices. **Fix 3:** Execution Order of Multi-Actions. Previously, multi-step server actions (e.g., 'Create Vendor Bill') executed child actions alphabetically. This caused the manual "Move to Taxes" action to execute after the record creation sync, effectively overriding the correct journal folder placement and moving the document to a generic folder (e.g. 'Taxes'). Changes: - Enforced a specific execution order: The document is now moved before the accounting record is created. This ensures the final automatic sync prevails. - Additionally, the action is temporarily embedded (pinned) on the intermediate folder during execution to allow the subsequent record creation to proceed even after the document has been moved to a new folder (which would otherwise fail consistency checks). Changes: - Extended `ir.attachment.write` to detect when a document is linked to an account.move of type 'entry'. - Triggers `_update_or_create_document` immediately upon linking to ensure tags and folders are synchronized. Task-5452729 Forward-Port-Of: odoo/enterprise#104022 Forward-Port-Of: odoo/enterprise#103096
This update optimizes how Odoo handles web sockets, particularly under heavy load. By delaying cursor acquisition attempts, the system avoids connection bottlenecks and disconnections, ensuring smoother communication for users. The changes also improve the reliability of websocket connections by ensuring proper socket cleanup.
Original PR description
Benchmarking with 4k connected clients, 1 message per second. | | Message dispatching | Cursor analysis | |-- |-- | -- | | Before|<img width="600" alt="image" src="https://github.com/user-attachments/assets/f02e7efc-4611-4356-8bef-386ff2b0a7da" />|<img width="600" alt="2_current_implementation__cursor_analysis" src="https://github.com/user-attachments/assets/04dce96e-74a6-4f1b-9918-a6c61913e7c4" />| |After|<img width="600" alt="image" src="https://github.com/user-attachments/assets/a9463484-7f69-4fcb-a248-5692893a8893" />|<img width="600" height="997" alt="8_tweak_delay_both_sleep__cursor_analysis" src="https://github.com/user-attachments/assets/34a2c233-5c36-4597-a55b-cfb89a41efcf" />| Forward-Port-Of: odoo/odoo#244013 Forward-Port-Of: odoo/odoo#241330
This update fixes formatting issues in live chat ticket descriptions created by the helpdesk chatbot. Specifically, it ensures that chat messages are correctly included as part of the ticket and removes unnecessary system notifications. This improves the clarity and usability of tickets for support agents.
Original PR description
In [1], chat bot's create lead/ticket steps were improved to set the formatted discussion as the lead/ticket description. The same holds for lead/ticket commands. However, the /ticket command was not properly updated. As a result, the discussion is poorly formatted, making it difficult to read. Also, the description should only include relevant messages, not system notifications such as "agent joined the channel". This commit fixes both issues. task-5491212 community: https://github.com/odoo/odoo/pull/243856 Forward-Port-Of: odoo/enterprise#104336
This update resolves a validation error that occurred when creating backorders within wave transfers. The issue stemmed from the system incorrectly processing ongoing batches, leading to a user error. The fix prevents this by temporarily excluding the current batch from the auto-batching process during validation, ensuring smooth operation.
Original PR description
## How to reproduce: - Enable Wave transfert in setting - Go to the Receipt Operation type: - Create Backorder: always - Automatic Batches: Enabled - Wave Grouping: Products - Create and confirm…
## How to reproduce:
- Enable Wave transfert in setting
- Go to the Receipt Operation type:
- Create Backorder: always
- Automatic Batches: Enabled
- Wave Grouping: Products
- Create and confirm (don't validate) 2 Receipts for 10 units of a storable product P
- The 2 receipt should have been added to a new wave transfer with 2 lines for P
- On the first line, set the quantity to 0
- On the second line, set the quantity to 1
- Try to validate the wave transfer ==>> UserError "The following transfers cannot be added to batch transfer WAVE/XXXX. Please check their states and operation types."
## Issue:
Backorders are generated before the current batch is marked 'done' (it waits for empty pickings to be detached). The auto-batch logic incorrectly identifies the current 'in_progress' batch as a candidate for the new backorders, attempting a merge that violates validation constraints.
## Solution:
Exclude the current wave/batch from the auto_wave search domain using a context variable passed during validation.
OPW-5413921
---
Test result before fix:
```
2026-01-13 10:37:26,541 27952 INFO oes_test_18.0 odoo.addons.stock_picking_batch.tests.test_auto_waving: Starting TestAutoWaving.test_auto_wave_skip_current_batch ...
2026-01-13 10:37:26,820 27952 INFO oes_test_18.0 odoo.addons.stock_picking_batch.tests.test_auto_waving: ======================================================================
2026-01-13 10:37:26,820 27952 ERROR oes_test_18.0 odoo.addons.stock_picking_batch.tests.test_auto_waving: ERROR: TestAutoWaving.test_auto_wave_skip_current_batch
Traceback (most recent call last):
File "/home/odoo/Odoo/src/18.0/odoo/addons/stock_picking_batch/tests/test_auto_waving.py", line 440, in test_auto_wave_skip_current_batch
wave.action_done()
File "/home/odoo/Odoo/src/18.0/odoo/addons/stock_picking_batch/models/stock_picking_batch.py", line 264, in action_done
return pickings.with_context(**context).button_validate()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/Odoo/src/18.0/odoo/addons/stock_picking_batch/models/stock_picking.py", line 145, in button_validate
res = super().button_validate()
^^^^^^^^^^^^^^^^^^^^^^^^^
...
File "/home/odoo/Odoo/src/18.0/odoo/odoo/fields.py", line 1418, in __set__
records.write({self.name: write_value})
File "/home/odoo/Odoo/src/18.0/odoo/addons/stock_picking_batch/models/stock_picking.py", line 112, in write
self.batch_id._sanity_check()
File "/home/odoo/Odoo/src/18.0/odoo/addons/stock_picking_batch/models/stock_picking_batch.py", line 323, in _sanity_check
raise UserError(_(
odoo.exceptions.UserError: The following transfers cannot be added to batch transfer WAVE/00012. Please check their states and operation types.
```
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#243873
Forward-Port-Of: odoo/odoo#243519This update streamlines the online payment process by removing a duplicate button and implementing clearer KYC handling. Now, the 'Initiate Payment' button appears only after KYC is approved, improving the user experience and ensuring compliance.
Original PR description
Before this commit: Both "Initiate Payment" and "Re-generate Export File" buttons triggered the same payment initiation process. After this commit: - Remove the Initiate Payment button and renamed `Re-generate Export File` to `Initiate Payment` when online payment initiation is available. - Added clear KYC handling in the batch payment form: 1. If KYC is not started: Show "Activate Payments". 2. During KYC: show a message indicating KYC is in progress. 3. After KYC approval: show the “Initiate Payment” button. Task-5107301
This update fixes a problem where users received unclear error messages when cash point closing with Fiskaly failed. The change now displays the full response from Fiskaly, providing users with the detailed information needed to diagnose and resolve the issue quickly. This improves the user experience and reduces troubleshooting time.
Original PR description
When a cash point closing fails with Fiskaly, the error message shown to the user was not very informative. This commit enhances the error message to include the actual response from Fiskaly, making it easier for users to understand what went wrong. opw-5461084 Forward-Port-Of: odoo/enterprise#103358
This update fixes a previous issue where the product configurator displayed incorrect prices. Now, the configurator accurately reflects the selected product attributes, pricelist, and current order's fiscal position, reducing user confusion and ensuring accurate pricing during product configuration. This improves the overall user experience and data accuracy.
Original PR description
Before this commit, product configurator popup did not consider selected attributes, and pricelist or fiscal position of the current order when displaying the price of the product being configured. This could lead to confusion for the user. opw-5472946 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242533
This update resolves an issue where refreshing AI embeddings triggered unnecessary cron jobs. It also includes error handling to prevent embedding failures from disrupting the entire process, ensuring more reliable AI functionality. This improves the overall stability and performance of the AI features.
Original PR description
Avoid triggering multiple embedding cron jobs when the refresh button is clicked, since the cron is automatically triggered while new chunks still need to be processed. Also catch AttributeError exceptions when calling the embedding service and mark the affected chunk as failed instead of crashing the whole embedding flow. task-id-5498693 Forward-Port-Of: odoo/enterprise#104414
This update provides users with more detailed error messages when sending documents to HMRC, including the specific error codes and messages returned by the HMRC system. This enhanced feedback will help users quickly diagnose and resolve issues, reducing the need for support and streamlining the document submission process.
Original PR description
Currently, when an error occurs while sending a document to HMRC, the user only receives a generic error message. This change enhances the error feedback by including the error code and message returned by HMRC, giving the user clearer insight into the cause of the failure. This helps users identify issues more easily and reduces unnecessary support requests. Forward-Port-Of: odoo/enterprise#104407
This update fixes an issue where unavailable products were still shown in the self-order system, often with a reduced opacity notice. Now, unavailable products are completely hidden from the product selection page, providing a cleaner and more intuitive user experience for self-order transactions. This simplifies the process for customers and staff.
Original PR description
Before this commit : 1. In the presets list view, the "available in self" setting was not available as a filter. 2. In the self, when products were not available, they were always displayed with an “out of stock” notice and reduced opacity. After this commit : 1. "Available in self" filter is now available in the presets list view 2. Now, when a product is not available, it is not shown in the products selection page. task-id: 5130687 note : fyi, preset popup part from the spec has been moved to this pr : https://github.com/odoo/odoo/pull/243180 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Code cleanup and technical improvements
This update simplifies resource scheduling by removing the outdated 2-week calendar feature and streamlining how work hours are defined. The changes focus on clarity and accuracy, ensuring employees are tracked correctly based on their daily hours and work rates. This improves the reliability of time tracking data.
Original PR description
First part of the work: - Display required full time + work time rate in debug models - Always define the amount of hours per day - Remove the 2 week calendar feature - Remove the name and sequence task-5124688 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update simplifies resource scheduling by removing the outdated 2-week calendar feature and streamlining how working hours are defined. The changes focus on clarity and accuracy, ensuring resources are tracked with more precision for appointment and helpdesk scheduling.
Original PR description
First part of the work: - Display required full time + work time rate in debug models - Always define the amount of hours per day - Remove the 2 week calendar feature - Remove the name and sequence task-5124688
This pull request streamlines the way Odoo verifies payments across various payment providers. The changes involve a refactoring of the verification logic, enhancing reliability and efficiency. This update ensures more accurate and consistent payment confirmations for our users.