Daily updates from Odoo
Thursday, December 18, 2025
19 changes · master
Enhancements to existing features
This update clarifies the purpose of the station image within the Frontdesk settings. A tooltip has been added to appear when hovering over the image, providing immediate explanation and enhancing user understanding. This improves the overall user experience for Frontdesk users.
Original PR description
When opening the Station Settings, the image purpose was not clear. A tooltip is now shown on image hover to explain its usage and improve user understanding.
This update simplifies the survey process by renaming the 'Analyze Results' button to 'Export'. This change provides a clearer and more intuitive user experience for exporting survey data from the form and front-end views. The change aligns with best practices for user interface clarity.
Original PR description
This commit renames the `Analyze results` button to `Export` in the the survey form view and the survey front end view. Task: [5424198](https://www.odoo.com/web#id=5424198&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
This update adds a visual indicator ('is typing') to group chats within the discuss sidebar, helping users quickly see if a conversation is still active. It also removes redundant status indicators, streamlining the chat experience. This improves usability and provides clearer information about ongoing group discussions.
Original PR description
This commit adds "is typing" icon on group chats in discuss sidebar and chat bubble. This helps seeing that a group chat is still active after seeing a recent message and jumping to another conversation in the mean time. This commit also removes showing of is typing in IM status of discuss app header and chat window header, as this is redundant with "is typing" close to composer. https://github.com/odoo/odoo/pull/234715 Task-5402098
This update streamlines the ESG app by removing the manual commuting emissions wizard. Now, when the 'Employee Commuting' factor is selected, the quantity is automatically calculated based on chosen dates, simplifying the reporting process. A conflict warning has also been moved to the form view for improved clarity.
Original PR description
In order to reduce the amount of JS customizations in the ESG app, this PR removes the wizard to generate commuting emissions, that was previously accessible from the commuting report. Instead, we now have some special behaviors when creating/editing an emission with the "Employee Commuting" emission factor. When it is selected, the quantity will be automatically computed from the chosen dates, and some fields become non editable, like the unit. The conflicting emissions warning is also moved to the form view. Task-5138598
This update enhances the website's interactive tour feature across several sales and subscription modules. The changes involve adopting new, standardized tour utilities, leading to a more consistent and streamlined user experience for customers navigating the website. This improves usability and guides users more effectively through key features.
Resolved issues and error corrections
This update corrects a formatting error in invoices generated when using quotation templates in sales orders. Previously, the name and description were combined on the invoice PDF. Now, a necessary line break is added to ensure correct invoice presentation, improving clarity for customers.
Original PR description
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale…
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale and invoicing installed 2- Create a quotation template, and add a description in the line. 3- Create a quotation with the created template. 4- Confirm the order and create an invoice for the sale order. 5- Print the pdf, as seen the name and description are shown in the same line, while if the sale order was created without a template, we would have seen the description from product in the next line. `_get_journal_items_full_name` is used to enforce the product name in the description. However, in cases where product name doesn't exist in the description, e.g. our case here, the name and description will be shown in the same line in the invoice pdf. This can be fixed by adding a new line between the name and the description. opw-5130171 Forward-Port-Of: odoo/enterprise#102208 Forward-Port-Of: odoo/enterprise#100417
This update fixes a bug where the Partena export file incorrectly used the active company's code when generating exports for inactive companies. The change ensures the correct Partena code is included in the file, resolving potential reporting discrepancies. Tests have been added to verify this fix.
Original PR description
### Issue: In multicompany, when we generate the Partena export file of the 'not active' company, the partena code of the active company is inputted in the file. ### Steps to reproduce: - Install…
### Issue: In multicompany, when we generate the Partena export file of the 'not active' company, the partena code of the active company is inputted in the file. ### Steps to reproduce: - Install 'l10n_be_hr_payroll_partena' and switch to a Belgian company - Make sure the company has a "Partena Affiliation Number" - Create an employee for this company, with a "Partena code" - Create a contract for this employee, set it a running - Create a new Belgian company with a different "Partena Affiliation Number" - Activate both Belgian companies, but set the second one as active - Payroll > Reporting > Export work entries to Partena - Create a new one, populate it with the employee just created - Click "Generate Export File" ### Cause: When getting the data for the CSV file, we use `self.env.company` which is the active company. So when this company is not the one of the export record, we input the wrong code values. ### Solution: Use `self.company_id` instead of `self.env.company_id`. Also adds the test class with basic tests. opw-5345786 Forward-Port-Of: odoo/enterprise#102062 Forward-Port-Of: odoo/enterprise#101110
This update ensures that rental orders created from leads automatically include the tags associated with the original lead. Previously, rental orders lacked this functionality due to a slight difference in how context information was passed. This change streamlines the rental order process and maintains consistent tag management across sales and rental transactions.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have a lead with tags; 2. convert lead to rental order. Issue ----- The new rental order has no tags. Cause ----- Tags are added to regular sales orders via the `_prepare_opportunity_quotation_context` method, but rental orders use `_get_action_rental_context` instead, which is virtually identical, but adds the `in_rental_app` context value, and doesn't include `default_tag_ids`. Solution -------- Rather than having duplicate code, make `_get_action_rental_context` retrieve the base context from `_prepare_opportunity_quotation_context`, then adding `in_rental_app=True`. opw-4549941 Forward-Port-Of: odoo/enterprise#102220
This update fixes an issue where invoice reports in the KE company setup were not displaying prices with commas. The fix removes a duplicate XPath and correctly formats the total and taxable amounts, ensuring accurate financial reporting. This improves clarity and compliance for KE-related invoices.
Original PR description
Steps to reproduce: 1. install `l10n_ke` 2. Switch to KE Company 3. Create a product with all KRA eTIMS details set on the Accounting page. 4. Create an invoice to KE Company with that product and set unitprice > 10000 5. Confirm the invoice and send it. Now, see the invoice report Issue: 1. xpath for `td_subtotal` was duplicated 2. The total amount and taxable amount were not formatted as prices (no commas). Before: <img width="771" height="397" alt="image" src="https://github.com/user-attachments/assets/492fe911-18d6-4e01-a16d-d7450c17373f" /> After: <img width="766" height="389" alt="image" src="https://github.com/user-attachments/assets/bbe5d4e2-b337-445c-833a-06492a8c827d" /> Solution: Updated the invoice report to: - Remove the duplicated `td_subtotal` xpath. - Properly format the total and taxable amounts with `t-options`. opw-5341578 Forward-Port-Of: odoo/enterprise#101794 Forward-Port-Of: odoo/enterprise#100279
This update fixes a technical issue that could cause website errors during event ticket payments when using rentable tickets. The change improves error handling to prevent these tracebacks from appearing to users, ensuring a smoother payment experience. While the rentable ticket feature itself is being addressed, this fix focuses on stabilizing the payment process.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have `website_event_sale` but not `stock` installed; 2. create an event with a ticket; 3. make the ticket's product rentable; 4. change ticket's product type to Goods; 5. publish the event to website; 6. register for the event via website; 7. go to payment. Issue ----- AttributeError: 'bool' object has no attribute 'tzinfo' Cause ----- Having odd configurations like rentable tickets creates rental orders without rental dates, leading to unhandled errors. Solution -------- While rentable event tickets doesn't make enough sense to make it work, we can still improve the error handling to prevent showing tracebacks to the client. opw-5207045 Forward-Port-Of: odoo/enterprise#101936 Forward-Port-Of: odoo/enterprise#99000
This update streamlines the live chat closing process within the AI Website module. The change ensures a cleaner and more reliable way to close live chat sessions, reducing potential disruptions for users. This improves the overall user experience and efficiency of the AI-powered website.
This update resolves an issue where the tax return calendar view in Odoo Enterprise was confusing users. The fix replaces the calendar view with a more intuitive Kanban view for tax returns, streamlining the process for users to manage their returns. This ensures a clearer and more efficient user experience.
Original PR description
Steps to reproduce: - Go to Accounting/tax return - Set the opening date - Open the Calendar view - Open one tax return -> The view is a default form view provided by the framework Solution: Open instead the kanban view of return checks (which for the user seems like the form view of the return). task-5392552
Previously, users couldn't change the name of the 'Help' menu item in the Helpdesk, encountering an error. This update allows users to rename the menu item, resolving this restriction and providing greater flexibility within the Helpdesk feature. This change improves usability and simplifies management.
Original PR description
**Issue** It was not possible to rename the "Help" menu item, an error appeared with the message: "This URL is reserved for the helpdesk teams with 'website form' feature enabled.", even if the user was not trying to edit the URL. **Change** Allow the user to edit the menu item's name. opw-5375334 Forward-Port-Of: odoo/enterprise#102175 Forward-Port-Of: odoo/enterprise#101323
This update resolves an issue where archived employees were still appearing in the timesheet section of helpdesk tickets. The fix ensures that only active employees are displayed, improving data accuracy and preventing confusion when managing timesheets.
Original PR description
**Steps to Reproduce:** - Install hekpdesk_timesheet. - Go to settings, enable timesheets - Archive an employee. - In a ticket, try to add a timesheet entry. **Isuue:** Archived employees are also appearing under timesheets tab. **Fix:** Passed a context so that only active employees appear in the selection. task-5078763 Forward-Port-Of: odoo/enterprise#95137
This update fixes an issue where product documents would stop appearing on product pages after a document version was updated. The fix ensures that the product document record is correctly linked to the latest document version, maintaining accurate product information. This improves the consistency of product data.
Original PR description
**Steps to reproduce:** 1. Install `sale_management` and `documents`. 2. Go to settings > check `product` under Files Centralization. 3. Create a product and add a document to it using the smart button. 4. Update the version of that document from the *Manage Versions* action on the document page. **Issue:** - After updating the document version, the linked document no longer appears on the product page. **Cause:** - The product page displays records from the `product.document` model, but its `ir_attachment_id` was not updated when the document’s version changed. **Solution:** - Update the `ir_attachment_id` on the corresponding `product.document` record when the document version is updated. opw-5144041 Forward-Port-Of: odoo/enterprise#99226
Features or functions removed from Odoo
This update removes a section related to GSTR reporting that is no longer required by Indonesian regulations. The change simplifies the report generation process and aligns with current tax requirements. This ensures Odoo Enterprise remains compliant.
Original PR description
Since the `purchase_b2c_regular` GSTR section is no longer required, this commit updates the related domain logic and removes the corresponding report lines.
Related PR: https://github.com/odoo/odoo/pull/236241
https://github.com/odoo/upgrade/pull/8933
Forward-Port-Of: odoo/enterprise#99777This pull request streamlines the appointment scheduling interface by removing redundant features and improving the user experience. Specifically, unnecessary syncing logic and a confusing alert message related to calendar integration have been removed, simplifying the appointment booking process. The changes focus on a cleaner, more intuitive interface.
Original PR description
*= appointment_microsoft_calendar, appointment_google_calendar, appointment_google_reserve --- #### Commit 1 Removes unused widget `appointment_type_sync_duration`. --- #### Commit 2 This commit…
*= appointment_microsoft_calendar, appointment_google_calendar, appointment_google_reserve --- #### Commit 1 Removes unused widget `appointment_type_sync_duration`. --- #### Commit 2 This commit mainly tweaks some UI/UX elements like changing strings, list view, show some options only in debug mode, etc. --- #### Commit 3 Removes Google & Microsoft Calendar syncing from the Appointment Type form view, as we can already do that from Calendar app. We also remove the alert message when google meet is selected in the `event_location_source` and at least one of the staff users has not its calendar synced. Indeed, the connector buttons are not there anymore to handle the issue, and not much can be done when that user is not the logged one. Therefore, we instead add a comment in the helper of `event_location_source` to indicate that when choosing google_meet, links won't be added if google calendar is not synced. --- COM PR: https://github.com/odoo/odoo/pull/235190 UPG PR: https://github.com/odoo/upgrade/pull/8829 Task-5170642
Code cleanup and technical improvements
This update enhances Odoo's ability to identify file types, improving accuracy and reliability. The changes streamline the process and ensure consistent mimetype detection across various modules, particularly for common file formats. The team focused on improving test coverage and simplifying the underlying logic.
Original PR description
* Merge test_mimetypes from base and test_guess_mimetypes from test_orm into test_mimetypes in test_orm * Improve test coverage of test_mimetypes * Odoo guess mimetype is now identical to magic for almost all supported mimetypes. The only exception is csv which is not worth the work to try to have a precise match, it returns text/plain. * Mimetypes now uses a function for each supported mimetype.
This update streamlines the VoIP system by explicitly defining its configuration settings and moving the user agent information to the core VoIP service. This simplifies the codebase and reduces unnecessary complexity, leading to a more robust and maintainable VoIP experience.