Daily updates from Odoo
Tuesday, December 23, 2025
17 changes · master
Enhancements to existing features
This update enhances the user experience when viewing Odoo reports by allowing formulas to break across multiple lines. Previously, long formulas made reports difficult to read. This change improves clarity and usability for report viewers.
Original PR description
Formula of reports could be so long thus the user experience when reading it could be unpleasent. This change allows the formulas on the views to appear on multi-line. task: 5208320
This update enhances the way live chat is displayed on the website. The community team adjusted the live chat name format to improve clarity and consistency. This change ensures a better user experience for customers engaging with live support.
Original PR description
The community counterpart improves the live chat display name. This commit adapts a test relying on the old name format. task-5408945 community: https://github.com/odoo/odoo/pull/240913 Forward-Port-Of: odoo/enterprise#102681
Resolved issues and error corrections
This update resolves a bug that caused PoS sessions to fail when an order line had a 100% discount. The fix prevents a division-by-zero error, ensuring smooth order processing and avoiding potential disruptions for users applying discounts.
Original PR description
Before this commit, when an order line had a 100% discount, a division by zero error occurred when closing the PoS session. opw-5240429 Forward-Port-Of: odoo/enterprise#98869
This update fixes an issue where sharing archived spreadsheets caused errors. It now correctly identifies and hides the 'Share' button and related options when a spreadsheet is in the Trash, ensuring a smoother user experience. This prevents confusion and improves data management.
Original PR description
## Description This PR fixes a traceback when sharing a spreadsheet that is in Trash. It exposes `is_archived` in the spreadsheet metadata and adds an `env.isArchived()` getter on the environment. It hides the topbar "Share" button and the "Share"/"Freeze and share" menu entries when the document is in Trash. Task: [5166945](https://www.odoo.com/odoo/project/2328/tasks/5166945) Forward-Port-Of: odoo/enterprise#102687 Forward-Port-Of: odoo/enterprise#98984
This update resolves a technical error that was appearing when users dismissed or opened timesheets, causing a traceback. The issue stemmed from outdated component settings. The fix removes unnecessary configurations and corrects the component's settings for smoother operation.
Original PR description
Steps to reproduce: - Open Timesheets - Open Timesheets assistant menu - Click on any record Issue: - Traceback appears on opening in debug mode, traceback appears on clicking dismiss of timesheet. Reason: - Unused props to component and wrong props in component. Solution: - Remove `canbeDismissed ` as it was earlier and was removed in futher editions (check push history for the feature pr). - Rename onDismissed to onDiscard as it seems changed. task-5434806 Forward-Port-Of: odoo/enterprise#102680
This update streamlines the process of adding goals to employee appraisals. Previously, the system would repeatedly ask users to select the employee, even though the employee was already identified. Now, goals are automatically created for the correct employee, improving efficiency and reducing user friction.
Original PR description
When adding goals from an employee appraisal, Appraisal of an employee > Goals > Open Library > Select Goals > Continue On the next screen, you need to select the employee, but you come from an employee appraisal! The employee was already known but the flow still asked to re-select an employee again. This improvement passes the correct employee context so goals are directly created for the current employee. task-[5420664](https://www.odoo.com/odoo/project/1251/tasks/5420664)
This update allows businesses operating in Mexico (MX) to customize the sequence used for generating GI CFDI invoices for their branch offices. Previously, the system always used a standard sequence, but now branch offices can define a unique prefix, ensuring invoices are correctly identified and processed. This resolves an issue where branch-specific GI CFDI sequences weren't being properly utilized.
Original PR description
Add a way to set a custom prefix for GI sequences on the settings for MX. Get this sequence first on the branch before looking to the one on root company. opw-5096687 Forward-Port-Of: odoo/enterprise#100017
A recent test failure in the MRP work order module has been resolved. The issue stemmed from an incorrect count of analytic accounts during test setup, triggered by a specific employee calendar configuration. This fix ensures the test now passes and maintains the stability of the MRP work order functionality.
Original PR description
fixing runbot error https://runbot.odoo.com/odoo/runbot.build.error/234639 on test test_mrp_analytic_account_employee_from_widget introduced by this PR https://github.com/odoo/enterprise/pull/85517
**cause of the error:**
Because there is a resource.calendar.leave without calendar_id,
without resource_id and at a date after today :
during the setupclass, when the employee is created,
_create_future_public_holidays_timesheets() creates an account.analytic.line.
So at the end of the test ,
self.env["account.analytic.line"].search([('employee_id', '=', self.employee1.id)])
returns 2 records instead of 1.
runbot-234639
Forward-Port-Of: odoo/enterprise#102338
Forward-Port-Of: odoo/enterprise#102282A bug was preventing users from completing sign requests after a user account was deleted. This fix handles the scenario where a deleted user's information is still referenced, preventing an error when attempting to validate and send the completed document. This ensures a smoother experience for users managing sign requests.
Original PR description
Currently an error occurs when a user tries to click `Valid & Send Compeleted Document` as follows below: - Install the `sign` module with demo data - Log in as the `demo` user and send 2 sign requests to the `admin` user - Now log in as the `admin` user and delete the `demo`user - Go to the sing and open sign request that was sent by the `demo` user - Complete the sign and click on `Valid & Send Compeleted Document` This issue occurred while retrieving the suggested sign request items. The code was accessing the `create_uid` of those items, but because the user had been deleted, `create_uid` was set to False instead of containing a valid user ID and user name. This commit fixes the above issue by handling cases where `item['create_uid']` is False. When `item['create_uid']` is False, the code now safely returns `False` instead of attempting to access its index. sentry-7116433081 Forward-Port-Of: odoo/enterprise#102438
This update resolves an issue where subfolders within the Documents section were not appearing in the search panel when accessed from other applications. Previously, users would see the full folder structure, but the search functionality wouldn't reflect it. This change ensures a consistent and complete view of documents for all users.
Original PR description
...when coming from another app. Reproduce: 1. Go to a fleet vehicle record and open its 'Documents' stat button. 2. You end up in the Fleet folder, where you see subfolders as kanban cards, but they are not in the search panel. Task-5272030 Forward-Port-Of: odoo/enterprise#99688
This update prevents appraisal feedback from being reset to default templates when an appraisal is reopened. Previously, reopening the appraisal caused all employee and manager feedback to be cleared. The fix ensures that previously entered feedback is preserved, streamlining the appraisal process and reducing the need for users to re-enter information.
Original PR description
Steps to reproduce: 1- Create new appraisal 2- Confirm appraisal 3- Edit employee and manager feedbacks 4- Set the final rating for the appraisal 5- Mark appraisal as done 6- Reopen appraisal Issue:…
Steps to reproduce: 1- Create new appraisal 2- Confirm appraisal 3- Edit employee and manager feedbacks 4- Set the final rating for the appraisal 5- Mark appraisal as done 6- Reopen appraisal Issue: The feedbacks of both the employee and manager are reset to the default template. They should be unchanged. Cause: Both the reopen and reset buttons used to call the the same action "action_back" which would set the state of the appraisal to "1_new", there is a compute that is triggered by the change in state which updates the appraisal's department_id which in turn triggers two other computes for the employee and manager feedbacks, those computes have a condition that if the state of the appraisal is '1_new', then the feedbacks should be reset to the templates. Fix: Make each button call its own action and make the reopen action set the state to '2_pending' instead of '1_new'. Furthermore make the reset action also reset the final rating for the appraisal. Task-5411661 Forward-Port-Of: odoo/enterprise#102021
This update fixes a bug where product attributes weren't displayed on order lines. The change ensures that all product attribute details are now correctly shown, improving order clarity and accuracy for users. This was caused by a change in how attribute data was constructed within the system.
Original PR description
Before this commit: --- - When an order was placed with product attributes, the attribute details were not shown on the order line. After this commit: --- - The product attribute names are now correctly displayed on the order line. Cause: --- - Until saas-18.2, the attribute string was built using the product’s display name and `attribute_line_ids`, which only included never type PTAV entries. - Starting from saas-18.2, the attribute string is constructed solely from `attribute_line_ids`, which now includes all PTAVs. task-5244869 Forward-Port-Of: odoo/enterprise#102737 Forward-Port-Of: odoo/enterprise#99007
This update aligns the positions of the WhatsApp 'view-contact' button and the Live Chat 'livechat-info' panel within the discuss app. This change improves agent workflow by ensuring both buttons are consistently displayed at the top, enhancing usability and a better user experience. It addresses a previous inconsistency that impacted agent efficiency.
Original PR description
The thread action 'view-contact' is somewhat like 'livechat-info', in that this action redirects to relevant info to the whatsapp user and livechat-info is a panel with all info on the visitor and…
The thread action 'view-contact' is somewhat like 'livechat-info', in that this action redirects to relevant info to the whatsapp user and livechat-info is a panel with all info on the visitor and more. The position of both buttons were the total opposite in discuss app: - 'livechat-info' was put as the 1st panel one before panels - 'view-contact' was dead last. There are differences, with 'livechat-info' being a panel and 'view-contact' a redirect button. However, each are important buttons for the type of conversation that justify them being in their own group right now. Since the buttons are mutually exclusive by the channel type, there's reason to have them share the same position. This commit moves the position of 'view-contact' in discuss header thread actions to be the same as 'livechat-info', that is as the 1st action in the list. This makes its position consistent with livechat info, thus agents of live chat and whatsapp would appreciate the 2 button placement being consistent. Task-5431313 <img width="1760" height="231" alt="Screenshot 2025-12-18 at 21 02 24" src="https://github.com/user-attachments/assets/ee2baf91-0d9a-49ca-91ac-a7781b33e57b" /> Forward-Port-Of: odoo/enterprise#102479
Features or functions removed from Odoo
This pull request removes redundant code related to `@api.model` decorators within the VoIP module. This cleanup improves the codebase's efficiency and maintainability, addressing a minor technical issue. The change does not impact any user-facing features or functionality.
Original PR description
Task-5391222
Code cleanup and technical improvements
This update refactors the structure of IoT views within several Odoo modules to enhance clarity and maintainability. The `iot_views` file has been broken down into more specific views for IoT boxes, devices, and related functionalities. This change improves the organization of IoT-related code and simplifies future development.
Original PR description
To improve clarity in IoT related modules, we split `iot_views` into `iot_box_views`, `iot_device_views`, ...
This update streamlines the assets used for discussion features across several Odoo modules, including AI, Live Chat, Approvals, and Knowledge. The changes optimize performance and reduce file sizes, leading to faster loading times and a better user experience for users engaging in discussions. This is a refactoring effort focused on improving efficiency.
Original PR description
\* = ai, ai_livechat, ai_website_livechat, approvals, knowledge, website_helpdesk_livechat, whatsapp Enterprise counter-part. task-5089477 https://github.com/odoo/odoo/pull/227141
This update simplifies customizing Odoo's grid views by introducing a new system for defining sub-templates within the GridRenderer. Previously, customization relied on complex XPath expressions, which were difficult for non-technical users to manage. This change allows for easier and more flexible customization of grid layouts without requiring deep technical knowledge.
Original PR description
_*= timesheet_grid, hr_work_entry_enterprise - Introduce a static `subTemplates` attribute on GridRenderer to define Section, Row, Footer, and other sub-templates. - Use these sub-templates in the main grid renderer template instead of hardcoded template names, allowing easier customization without XPath. - Updated the custom GridRenderer to rely on the new subTemplates structure. task-5400478