Daily updates from Odoo
Tuesday, January 13, 2026
149 changes
13 changes
Enhancements to existing features
This update ensures our Odoo system complies with the latest Brazilian tax regulations regarding NCM (National Commerce) codes. The changes include adding a 'DEPRECATED' marker to expiring codes and introducing new codes to accurately reflect current tax requirements. This update is crucial for accurate tax calculations and reporting in Brazil.
Original PR description
This **PR** updates the NCM code list as per latest requirement. It appends `DEPRECATED` at the end of expires codes. Also it introduces a few new codes. **task**-5381617 Forward-Port-Of: odoo/enterprise#104091 Forward-Port-Of: odoo/enterprise#102009
Resolved issues and error corrections
This update resolves an issue where the AI module's exception handling wasn't functioning correctly, specifically when a request cursor closed. By using the local environment within the generator, this fix ensures more reliable exception management and prevents potential errors, improving the overall stability of the AI features.
Original PR description
self.env is invalid inside generator after request cursor closes
This update resolves a problem where call duration wasn't consistently appearing in chatter messages. The previous fix modified the message content, leading to unreliable matching and failures. This change ensures call duration is accurately reflected in chatter messages.
Original PR description
After 5751f93c53d3cf37ae8cb627fb8d10a81b7b8833, call duration will be added to chatter message. This change is done by modifing the original message, which results in a non-deterministic failure when selector trying to match the original message. Change the selector to match a stable attribute.
This update fixes a previous issue where the messaging menu incorrectly added channel needaction counters to the inbox count. Now, the inbox counter accurately reflects the number of unread channels requiring attention, providing a more precise view of communication needs. This ensures users have a reliable understanding of their messaging workload.
Original PR description
This commit corrects a regression intoduced in [1]: the messaging menu now subtracts the channels needaction counter from the inbox counter, rather than adding it [1] https://github.com/odoo/odoo/pull/229751 Forward-Port-Of: odoo/odoo#243318
Website image editing tests were intermittently failing due to delays in updating the builder sidebar. This update ensures the sidebar is fully loaded before tests run, resolving these intermittent errors and improving the reliability of our website builder tests. This prevents disruptions to the website builder experience.
Original PR description
Image edit tests using the builder sidebar were failing intermittently because image elements rely on async actions with non-deterministic timing, causing the sidebar options to be unavailable sometimes. Use `waitSidebarUpdated` to ensure the sidebar is fully updated before asserting on its content. Here is an example of an error: error-234951 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 Forward-Port-Of: odoo/odoo#243135 Forward-Port-Of: odoo/odoo#243008
This update fixes an issue where users without write access couldn't star messages in threads. The fix adds a necessary permission adjustment to ensure all users can star messages they can read, improving usability and preventing errors. This change ensures consistent functionality for all users.
Original PR description
Before this commit, starring a message in a thread without write access would result in an access error. This happens because since [1] a message is marked as starred by writing on the `starred_partner_ids` field of mail.message instead of the `starred_message_ids` field of res.partner. This results in an access error when the uses does not have write access. This commit fixes the issue by adding a sudo call to the write of `starred_partner_ids`, which is acceptable because a user should always be able to star a message they can read. [1] https://github.com/odoo/odoo/pull/219282 task-5481662 Forward-Port-Of: odoo/odoo#243130
This update streamlines the process of assigning barcodes to product packaging. Previously, users faced a confusing, multi-step process leading to duplicate UoM creation. Now, the barcode field is integrated directly into the packaging creation flow, providing a simpler and more efficient experience.
Original PR description
Before this commit: ------------------------- - In the product form view, when creating new packaging, a pop-up form opens to Create a new Unit of Measure (UoM), and if the user tries to assign a…
Before this commit: ------------------------- - In the product form view, when creating new packaging, a pop-up form opens to Create a new Unit of Measure (UoM), and if the user tries to assign a barcode Within that form, a second pop-up opens instead of assigning the barcode directly. - In the second pop-up, if the user creates the same UoM again, it causes data duplication; the same UoM gets created in 'Units and Packagings' with a default quantity of 1 without reference unit. This incorrect behavior leads to confusion when selecting the UoM later. Steps to reproduce: ------------------------- 1. Install the 'sale_stock' module. 2. Enable Units of Measure & Packagings in stock. 3. Create or open any product. 4. Go to the Sales tab. 5. Create new packaging (e.g., Pack of 5), set the quantity and reference unit, and try to create a barcode. 6. A second pop-up form opens to again create a new UoM and assign the barcode. 7. It causes data duplication; the same UoM gets created in 'Units and Packagings' with a default quantity of 1 without reference unit. Cause of the issue ------------------------- When assigning a new barcode to a UoM, the field could not fetch the corresponding UoM(In uom.uom) record because it did not yet exist in the database. As a result, the system opened another pop-up to create the same UoM(In product.uom) again and assign a barcode to it. After this commit: ----------------------- - The barcode field is hidden until the UoM is created. - Once the packaging is saved, users can edit it to assign a barcode to the specific UoM of the product. - This improves the flow by preventing duplicate UoM creation and ensuring a clear, single-step process for assigning barcodes to product packaging. Task ID:5023229 Forward-Port-Of: odoo/odoo#230474
This update resolves a visual issue where the zoom level in document signing would rapidly change, causing a distracting flicker. The fix removes the automatic zoom adjustments, defaulting to 'Automatic zoom' for a smoother and more stable signing experience. This improves user satisfaction and professionalism.
Original PR description
Before this commit, when signing a document the zoom would load with 'Automatic zoom' then less than one second later change to another zoom by the code, e.g. '100%', causing a flickering issue. After this commit, the zoom is not flickering anymore as we remove the code of changing the zoom and make the default the 'Automatic zoom'. task-5461663 Forward-Port-Of: odoo/enterprise#103532
This update removes the use of the Gemini 1.5 model within the AI features of Odoo Enterprise. The change provides a clear error message when attempting to use the model, preventing unexpected behavior. This ensures a more stable and reliable AI experience for users.
Original PR description
This PR deprecates the Gemini 1.5 models. Specifically, it gives a proper non-technical error when the model is used. The error occurs either when the user tries to set the model on an agent or if the model is already on the agent, it will raise the error upon usage of the agent. task-5129790 Forward-Port-Of: odoo/enterprise#102761
This update corrects a minor issue in the Sendcloud integration, ensuring accurate product data is retrieved. The previous method of accessing product information was unreliable due to changes in the system's data structure. This fix guarantees consistent and correct product selection within the Sendcloud workflow.
Original PR description
Same fix as d4fae97, the id was retrieved by doing `[0]` but the proxy object has changed so we need to use the `id` key to get the value instead. ----- Ticket: opw-5433254 Forward-Port-Of: odoo/enterprise#103706
This update resolves an issue where the full composer window unexpectedly opened when users edited messages within tasks. The fix prevents this behavior, ensuring a smoother editing experience and avoiding potential user confusion. This change improves the stability and usability of the messaging system.
Original PR description
Steps to reproduce: =================== 1- Go to a project task & log any note. 2- Edit & Click the additional "+" and click "Open Full Composer" 3- Click on Save. -> traceback. Cause: ====== When entering edit mode, the composer was created without a thread reference, causing "Cannot read properties of undefined (`this.props.composer.thread is undefined`)" errors in `onClickFullComposer`. Solution: ========= We shouldn't have "open-full-composer" action in editing messages opw-5443985 Forward-Port-Of: odoo/odoo#242002
This update resolves an issue where applications weren't accurately counted and matched within a multi-company Odoo environment. The change removes a specific filtering condition, streamlining the process and ensuring accurate application counts are calculated across all companies. This improves the reliability of reporting and analysis for multi-company businesses.
Original PR description
This commit fixes the issue where applications are not matched are not mathced with thier count among companies in a multi-company environment. The domain on company was removed from `_get_similar_applicants_domain` since there is no domain on company in `_compute_application_count`. task-5375876 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243154 Forward-Port-Of: odoo/odoo#238386
This update corrects a technical error that prevented public channels in Odoo from functioning correctly. The change sets the correct `group_public_id` to `None`, ensuring channels are properly designated as public. This resolves a previous bug impacting channel visibility.
Original PR description
Since #206619, the fixed test has used a wrong value for `group_public_id`, as if it's not set, the default is `Internal User`. This change sets it to `None` to make the channel public. Forward-Port-Of: odoo/odoo#243354 Forward-Port-Of: odoo/odoo#243237
3 changes
Resolved issues and error corrections
This update corrects a visual inconsistency in the Odoo Enterprise application. Previously, the subtitle color within the 'Recent' tab differed from other tabs. This commit ensures all tab subtitles have the same color, improving the overall user experience and maintaining a consistent look and feel.
Original PR description
Since commit [1], the subtitle color has been changed but not for the "Recent" tab, which creates inconsistencies. This commit ensures that the subtitle color is consistent across all tabs. [1]: https://github.com/odoo/enterprise/commit/568d29af1e1d792642f0dc288d57871fc7781f38 task-5485493 | Before | After | |--------|--------| | <img width="800" height="662" alt="Capture d’écran 2026-01-12 à 11 19 34" src="https://github.com/user-attachments/assets/8beb175a-27c8-4d73-899c-6fc3ab22c0e6" /> | <img width="800" height="657" alt="Capture d’écran 2026-01-12 à 11 19 49" src="https://github.com/user-attachments/assets/e2542822-6b05-4b15-b3e8-a4aa7c1b611c" /> |
This update resolves an issue where attachments weren't being properly filtered based on localization settings. The change adds a private method to handle this filtering logic, aligning with enterprise-level functionality. This ensures consistent attachment handling across different Odoo environments.
Original PR description
Add private method to support filtering out unwanted attachments based on specific localization logic (added in enterprise branch) opw-5362664
This update resolves an issue where user avatars in the Odoo Chat UI were appearing distorted or incorrectly sized. The fix applies a standard image scaling method ('object-fit: cover') to ensure all avatars display correctly and consistently. This improves the user experience by providing a professional and accurate representation of each user.
Original PR description
Before this commit, user avatars in the Chater UI were not displayed using the object-fit: cover style, causing distorted or improperly scaled images. Current behavior before PR: <img width="671" height="380" alt="image" src="https://github.com/user-attachments/assets/a4b7ef3a-0c69-4fec-bf2a-70c9bd89236e" /> Desired behavior after PR is merged: <img width="663" height="384" alt="image" src="https://github.com/user-attachments/assets/479586c8-a01c-45fb-9e46-9246616e1329" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243181 Forward-Port-Of: odoo/odoo#242320
2 changes
Resolved issues and error corrections
This update resolves an issue that prevented users from creating payslips for contracts without a defined working schedule in the Belgian payroll module. The fix ensures that the system defaults to the company's standard calendar when a contract lacks a specific schedule, preventing a traceback error. This improves the reliability of payslip generation for all Belgian companies.
Original PR description
Currently, a traceback occurs when a user tries to create a payslip for a contract that has no working schedule in a Belgian company. **Steps to reproduce this issue:** 1) Install l10n_be_hr_payroll…
Currently, a traceback occurs when a user tries to create a payslip for a contract that has no working schedule in a Belgian company. **Steps to reproduce this issue:** 1) Install l10n_be_hr_payroll and hr_attendance and switch to BE company 2) Create an employee with no working hours. 3) Create a contract for that employee with: - Work entry source as Attendance - No Working Schedule - State should be open/running 4) Click the Payslip smart button to create a new payslip for that contract. 5) A traceback occurs **Error:** ``` ValueError: Expected singleton: resource.calendar() ``` **Cause:** When creating a payslip for a contract with no resource_calendar_id, the method `_get_work_hours_split_half` calls `_get_max_number_of_hours` through self.resource_calendar_id. Since the contract's calendar lacks a resource_calendar_id, this triggers a ValueError in `_get_max_number_of_hours`. https://github.com/odoo/enterprise/blob/193b51ded0dfa46ed75f6c0020f0f5609f4a0f99/l10n_be_hr_payroll/models/hr_contract.py#L472 **Solution:** If the contract or employee does not have a resource_calendar_id, use the default resource_calendar_id from the company instead. opw-5237559 Forward-Port-Of: odoo/enterprise#99217
This update corrects small errors in the balance sheet and profit & loss reports for Danish accounting (l10n_dk_reports). The changes involve fixing incorrect formulas and text labels, representing a logical improvement to report accuracy. This ensures the reports align with Danish accounting standards.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/0d431fe2cc6556a040888ecc5d6a71be4a435447 we introduce a new balance sheet report for 2026 but there was a mistake in the sign of a formula and in the text of a line. Same for the profit and loss, some errors in sign of accounts and naming. The errors don't come from a ticket but more of a logical fix, those errors were probably an oversight during development. no task id Forward-Port-Of: odoo/enterprise#103830
4 changes
Resolved issues and error corrections
This update resolves an issue where the year field in certain reports was incorrectly formatted with a comma. Removing this comma ensures accurate reporting data and consistent display of year values for tax and payroll calculations. This change improves the reliability of financial reporting.
Original PR description
. Remove the comma on the year filed on the crossponding reports task-5417861 Forward-Port-Of: odoo/enterprise#102143
This update fixes an issue where employee names were being incorrectly formatted in payroll reports. The change ensures that employee first and last names are consistently displayed in the correct order ('FirstName LastName') as required by Swiss regulations. Updated test data and code logic now accurately reflect this requirement.
Original PR description
* Fix _compute_l10n_ch_legal_name method to correctly assign first_name and last_name from employee name (was previously reversed) * Update all SwissDEC test data to use correct "FirstName LastName" format instead of "LastName FirstName" to match the corrected computation logic task-5102851 Forward-Port-Of: odoo/enterprise#95252
This update corrects minor errors in the Danish local financial reports (balance sheet and profit & loss) for 2026. These were unintentional oversights during development and ensure accurate reporting. The changes improve the reliability of financial data for Danish businesses.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/0d431fe2cc6556a040888ecc5d6a71be4a435447 we introduce a new balance sheet report for 2026 but there was a mistake in the sign of a formula and in the text of a line. Same for the profit and loss, some errors in sign of accounts and naming. The errors don't come from a ticket but more of a logical fix, those errors were probably an oversight during development. no task id Forward-Port-Of: odoo/enterprise#103830
This update resolves an issue where users without specific group permissions would encounter errors when pinning or unpinning embedded actions in the Documents module. Previously, this prevented superuser mode operations (like automated installs) from functioning correctly. Now, the system correctly handles superuser access, ensuring stability and reliability for all users.
Original PR description
Prior to this commit, an AccessError would be raised when pinning or unpinning embedded actions if the current user did not belong to the 'documents.group_documents_user' group. This could cause issues during operations running in superuser mode (e.g., automated actions, installation scripts, or sudo() calls) because the check strictly validated the user's groups without considering the environment's superuser flag. This commit adds a check for `self.env.su` to ensure the AccessError is not raised when the environment is in superuser mode. Task-5380727 Forward-Port-Of: odoo/enterprise#101106
13 changes
Enhancements to existing features
This update enhances the employee appraisal process by displaying a helpful empty search screen when no employees match a search query. This provides a clearer visual cue to the user, improving the overall user experience within the appraisal module. The change addresses a previous issue where no feedback was provided during unsuccessful searches.
Original PR description
## Issue & Reproducing steps See [community-229238](https://github.com/odoo/odoo/pull/229238) ## Purpose Display an empty search screen when a search in not successfull from the `hr_appraisal` employee selection. To display this empty search helper: - Go to appraisal app - Click on `Goal` menu - Create a new goal then click on `Save as Template` - Go back to goals - Click on `Open Library` button - Select the created template and click on `Continue` - Run a search with no result to see the helper appear. [community-229238](https://github.com/odoo/odoo/pull/229238) [task-4879557](https://www.odoo.com/odoo/action-4043/4879557)
This update removes outdated jQuery code from the hr_contract_salary module, streamlining the application and potentially improving performance. This change aligns with recent updates to Odoo's interaction framework, enhancing the overall user experience. The update was driven by a task to modernize the module's codebase.
Original PR description
This PR replaces all the Jquery code left in hr_contract_salary with plain JS. It follows this 87f9ff0a40694ae4b755da3dcf819a517aa9560d in which the public widgets have been replaced with interactions. task-5187485
This update enhances the Odoo search view by allowing related filters to be grouped together, reducing clutter and improving the user experience. The change collapses multiple filter options into a single, parent filter, making it easier to find specific search criteria. This improves usability and efficiency for users.
Original PR description
In some search views the list of filters can be huge which impairs the readability.
This commit adds support for inner filters in `<search/>` allowing them to be collapsed into a parent filter, reducing the number of visible entries in the search view.
The logic for date filters was partially merged with the one for inner filters since the syntax is the same.
It can be used inside a search arch as such:
```xml
<search>
<filter string="Priority">
<filter string="Urgent" domain="[('priority', '=', 3)]" name="urgent_priority"/>
<filter string="High" domain="[('priority', '=', 2)]" name="high_priority"/>
<filter string="Medium " domain="[('priority', '=', 1)]" name="medium_priority"/>
<filter string="Low" domain="[('priority', '=', 0)]" name="low_priority"/>
</filter>
</search>
```
task-5232012This pull request makes small visual updates to the DMFA views within the HR payroll module. These changes focus on improving the overall look and feel, making the interface more user-friendly and easier to navigate. This enhances the employee experience when managing digital certificates.
Original PR description
Small visual changes to forms and list views to improve the look and feel of the DMFA views. task-5166541
Resolved issues and error corrections
This update ensures the databases module's app icon is consistent with official branding guidelines. The change corrects previous inconsistencies, maintaining a professional and aligned user experience. This is a minor visual improvement.
Original PR description
There were a few inconsistencies on the databases module's app icon. These have been corrected to align with the app icon guidelines. task-5186170
This update clarifies the terminology used for payroll input types, renaming 'Other Input Types' and 'Payslip Other Input Types' to 'Salary Input Types'. This change enhances user understanding and simplifies the payroll setup process, reducing potential confusion.
Original PR description
Updated the Input type for better clarity and easier understanding for users: - '**Other Input Types**' : 'Salary Input Types' - '**Payslip Other Input Types**' : 'Salary Input Types' **task-5474028** Forward-Port-Of: odoo/enterprise#103632
This update corrects a display issue where archived recurring plans continued to show up as pricing options on the website. The fix ensures that only active plans are considered when displaying pricing, improving the user experience and preventing outdated information from being presented. This change ensures accurate product pricing for customers.
Original PR description
**Steps to produce:** - Install `sale_subscription,website_sale` module. - `Subscription > Configuration > Recurring Plans`. - `Archive` the `Monthly` plan. - Go to website > Shop > Open product `Car…
**Steps to produce:** - Install `sale_subscription,website_sale` module. - `Subscription > Configuration > Recurring Plans`. - `Archive` the `Monthly` plan. - Go to website > Shop > Open product `Car Leasing (SUB)`. **Issue:** - Even after archiving the Monthly recurring plan, its pricing still appears on the website product page. **Root cause:** - At [1], when searching for a suitable recurring price, the system does not filter out pricing records belonging to archived recurring plans. - As a result, inactive plans are still considered during pricing selection. **Solution:** - In this fix, we ensure that recurring plan pricing is included only if the related plan is active. - Archived plans are now ignored, preventing them from appearing on the website. [1]: https://github.com/odoo/enterprise/blob/25edaac85f8fd1699bb78163b01efb966e7fb680/sale_subscription/models/sale_subscription_pricing.py#L78-L79 before <img width="340" height="184" alt="recurring_plan_before" src="https://github.com/user-attachments/assets/abac39fb-5765-4bc4-aec3-87eef7135a18" /> after <img width="337" height="168" alt="recurring_plan_after" src="https://github.com/user-attachments/assets/35ee92e8-e66b-4612-add3-58b277560ea5" /> **opw-5266333** Forward-Port-Of: odoo/enterprise#103473 Forward-Port-Of: odoo/enterprise#100587
This update ensures that eTIMS configuration warnings are only displayed for companies operating in Kenya. Previously, warnings were shown for all companies, causing confusion. This change streamlines validation and ensures warnings are relevant to users working within the Kenyan eTIMS requirements.
Original PR description
Before: In multi-company setups, the eTIMS configuration warning was shown even when working in companies that are not based in Kenya. This resulted in confusing and irrelevant warnings for users using other localizations. After: The eTIMS configuration warning is now limited to Kenyan companies only. Non-Kenyan companies are no longer impacted, keeping the validation relevant while preserving the intended eTIMS behavior. task-5462334 Forward-Port-Of: odoo/enterprise#103291
This update resolves minor issues with the German Point of Sale certification process. Specifically, it now correctly transmits net values instead of gross values, includes previously prepared cash statement business cases, and ensures amounts are formatted precisely for Fiskaly's system. This improves the accuracy and reliability of the reporting.
Original PR description
In this commit: ------------------ - Transferred **net value** instead of **gross value** for `price_per_unit`. - Included **cash statement business cases** that were prepared earlier but not sent to Fiskaly. - Ensured all **amount fields are sent as strings** to Fiskaly. - Fixed rounding precision using `toFixed()` to maintain **2–5 decimal places**, as required by Fiskaly (e.g., `4.70` should not become `4.7`). - Adjusted logic for **customer account payments** to send the **adjusted order amount** instead of the original total. task: 5122652 Forward-Port-Of: odoo/enterprise#99643
This update resolves an issue where hosts with basic FrontDesk access couldn't check out visitors. The system has been updated to allow hosts to view and check out visitors assigned to them, improving usability and efficiency. This change ensures all hosts can perform the core FrontDesk function.
Original PR description
Before: * Hosts with only FrontDesk user access could receive the checkout email but got an access error when clicking “Check Out Visitor.” * They couldn’t read the visitor record because the rule only checked station responsible users. * The visitor is able to add the new button in the visitor menu. After: * Updated the access rule to also allow hosts to see visitors where they are listed as the host. * The visitor which is not responsible to station can't create new records Impact: * Hosts with user access can now open the visitor record and check out the visitor without any errors. task- 5373026
This update fixes a potential issue with how Odoo tours interact with the Clipboard API, particularly in headless environments like Chrome. By delaying cleanup steps, the system now ensures the API call is fully executed before attempting to mock it, preventing delays or permission errors. This improves tour reliability and performance.
Original PR description
Reliably mocking Clipboard API calls in tours should be done in two steps: - the step that will actually do the call should do the patching, followed by the actual action. - the cleanup should only be done in the following step to ensure the action's listener has actually finished. This commit applies this principle to avoid the "cleanup" to be executed before the action's listener has actually reached the call to the Clipboard API (because of slower processing, slower network...), which would defeat the mocking purpose (and either get the browser to indefinitely wait for the user's clipboard usage approval or a permission error depending on the browser's default behavior). Note: this was mainly brought to light by the new Chrome 143+ default policy which revoke all permissions in headless mode. Forward-Port-Of: odoo/enterprise#103971
This update resolves an issue where the IoT test button incorrectly displayed a 'success' status even when errors occurred during communication. The fix standardizes the data format used for IoT responses, ensuring accurate status reporting and preventing misleading feedback for users. This improves the reliability of the IoT device monitoring feature.
Original PR description
This commit fixes several situations where a positive status would be given by the test button despite the presence of an error: - If the websocket connection was used but there was a timeout - If the websocket connection was used but there was any other error - If any 6-digit error code was returned when using the stable IoT box To fix these issues, we stop using the `data['message']` field, since it gets ignored by the websocket confirmation controller. We now use the same result format as the other requests (and the stable IoT box). We also add a check for the `"timeout"` that we receive when a websocket request times out. Forward-Port-Of: odoo/enterprise#103963 Forward-Port-Of: odoo/enterprise#103817
This update ensures that thumbnails are correctly updated for requests shared publicly. Previously, public users couldn't update thumbnails on associated documents, even when they had access to the request itself. This change resolves a discrepancy in access permissions, guaranteeing consistent thumbnail updates regardless of user access levels.
Original PR description
Bug === 1. Create a request 2. Create a shortcut to that request 3. Share it to public 4. Public upload => The thumbnail is updated on the document, but not on the request. The reason is that the public user has `user_permission = none`, because he has only access with the token, and so we skip the thumbnail propagation. This has no sense, because if we don't have access on the document, we loose the access on the shortcut (even if we are the owner). Task-5485511 Forward-Port-Of: odoo/enterprise#102888
4 changes
New functionality added to Odoo
This update reflects a recent change in the daily UMA (Unidad de Medida Adiustada) value for Mexico, as determined by INEGI. The new daily value of 117.31 MXN will take effect on February 1st, 2026, ensuring accurate payroll calculations for Mexican employees.
Original PR description
As per the INEGI press release (published on January 8, 2026), the daily UMA value has been updated for 2026. New value: 117.31 MXN Effective date: February 1st, 2026. This commit adds this new parameter value to "Mexico: Daily UMA". Reference: https://www.inegi.org.mx/app/saladeprensa/noticia/10533 target: 19.0 task-5488243
Resolved issues and error corrections
This update resolves a bug where the 'Ask a Human' button in the Odoo Enterprise live chat feature was not being translated when the website was localized into Spanish. The fix ensures that all translated website content, including the 'Ask a Human' button, is correctly displayed for Spanish-speaking users.
Original PR description
Scenario: - enable ai_livechat and translate website in spanish - go with guest to page that show livechat in spanish Result: - "Ask a Human" is never translated Cause: the ai_livechat JS translation are not available on website opw-5237775
This update resolves an issue where the demo data for a Belgian job position ('Experienced Developer') incorrectly triggered a multi-company error during offer generation in the recruitment process. The fix creates a new, specific demo record for the Belgian job, ensuring accurate data for US companies and improving the user experience.
Original PR description
## Issue: When we go to recruitment and try to generate offer for a new applicant for job position 'Experienced Developer', it shows multi company error. ## Steps to reproduce: 1. Go to recruitment for US company 2. Make a new applicant for the position 'Experienced Developer'. 3. Then generate offer for that applicant, multi company error will come. ## Cause: The job was inherited and given `contract_template_id`. ## Fix: Made a new record for Belgium Job position 'Experienced Devloper(BE)'. backport of task-4885755 task-5445798 Forward-Port-Of: odoo/enterprise#102991
This update fixes a search issue in the purchase and sale accounting modules by displaying a user-friendly 'Domain is invalid' notification instead of an error. Additionally, the search logic has been optimized for better performance and now supports 'Is Not Set' searches, enhancing user flexibility.
Original PR description
Search method logic was rewritten so since commit:
https://github.com/odoo/odoo/commit/92301a5b300dec1ddfca44dc35318b83d67c56fa
`raise NotImplementedError(_("some text"))`
no longer raises an error nor does it ever show the error message. Instead a notification that says "Domain is invalid. Please correct it" is always displayed when the method is unable to run the search. Therefore we update the legacy way of doing it in these search methods so that the code is clean (i.e. so no one copies it) and to avoid translating strings that will never be visible.
Additionally, the search logic was also updated such that the `value` exists is no longer needed and the `=`/`!=` operators are handled by `in` for optimized code. This change makes it so users can now do the "Is Not Set" search since it will return only the records that do not match the "Is Set" logic.4 changes
Resolved issues and error corrections
This update fixes an issue where placeholder hint text wrapped awkwardly on the HTML editor when space was limited. Now, the text is correctly truncated instead of wrapping, ensuring a cleaner and more professional appearance across different screen sizes. This improves the overall user experience.
Original PR description
Description of the issue this PR addresses: - The placeholder hint text wraps onto multiple lines when the cell width is reduced. - When there is insufficient horizontal space, the text should be truncated rather than wrapped. task-5480080 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug that caused incorrect display behavior for group chat channels (DMs with fewer than 3 members). Previously, the system incorrectly identified these channels, leading to misleading status indicators and notification issues. This fix ensures accurate channel representation and a better user experience.
Original PR description
Before this commit, the "correspondent" property of Thread would be computed for channels of type group (group DMs) having less than 3 members. This would lead to various confusing behaviours, including: 1. The "back on" banner being shown. 2. The chat bubble showing an IM status. 3. The notification item not showing the message author's name. This commit fixes the issues by not computing `correspondent` for channels of type group. task-5462395
This update corrects an issue where product references were appearing in the names of products displayed on the website's product carousel. This change ensures that product names are clean and consistent, improving the user experience for customers browsing products online. The fix was triggered by a specific configuration with a single value in a free text attribute.
Original PR description
**Issue**
When a product has a free text attribute with one value, the product reference appears in the name of the product on the product carousel.
**Expected behavior**
The product reference should not appear in the name of the product on the product carousel.
**Steps to reproduce**
1. Create a product to be sold online
2. Give it an internal reference
3. Add a free text attribute with one value
4. Set a product carousel on a website page
5. Disable "show variants" in the settings of the carousel
=> The product reference appears in the name of the product
**Note**
The issue happened only if the free text attribute has only one value, with more than one value, the product reference did not appear.
**Fix**
Updated the QWeb template to use the prepared clean title with data.get('display_name') instead of record.display_name
opw-5410822
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update removes unnecessary integer rounding from the monthly Italian VAT reports. The rounding, which was incorrectly applied due to a previous split of reporting functionality, has been corrected. This ensures accurate VAT calculations for monthly reporting, aligning with Italian tax regulations.
Original PR description
Integer rounding is only required on annual l10n_it VAT reports. It appears that it was incorrectly added to the monthly report when the two were split in [#193662](https://github.com/odoo/odoo/pull/193662). [opw-5292310](https://www.odoo.com/odoo/project.task/project.task/5292310)
6 changes
New functionality added to Odoo
This update adds three new fields – Buyer Reference, Contract Reference, and Purchase Order Reference – to the invoice PDF generated by the l10n_fr_facturx_chorus_pro module. These fields are required for Chorus Pro compliance, ensuring invoices meet the necessary documentation standards for this specific accounting system.
Original PR description
This commit: - Add three reference fields to invoice PDF for Chorus Pro compliance: Buyer Reference, Contract Reference, and Purchase Order Reference. These fields appear in the invoice header when set on the invoice. task-5410836
Resolved issues and error corrections
This update ensures that all attachments associated with expense reports are correctly included when generating the corresponding journal entries. Previously, only the first attachment was copied, leading to incomplete records. This fix guarantees accurate financial reporting by including all supporting documentation.
Original PR description
**Steps to reproduce:** * Install **hr_expense** and **accounting** modules. * Create two or more expenses, each with **multiple attachments**. * Submit and approve the expenses. * Create the **journal entry** of all approved expenses. * Open the generated journal entry and review its attachments. **Observed behavior:** * Only the **first attachment** from each expense is present on the journal entry. * Additional attachments are missing. **Cause:** * while creating journal entry, the logic of expense iterate on `message_main_attachment_id`. * `message_main_attachment_id` stores only a **single attachment**, so only one file per expense is copied. **Fix:** * Iterate on `attachment_ids` instead of `message_main_attachment_id`. * Ensures **all attachments** from each expense are included in the generated journal entry. opw-5414834
This update resolves an issue preventing stable IoT Box devices from sending data correctly. The change ensures that data is read from a specific key in the response, improving the reliability and readability of information received from these IoT terminals. This enhances the overall performance and functionality of the POS system.
Original PR description
We now read data in result key if it exists to ensure readability of stable IoT Box responses.
This update fixes an issue where links shared in Odoo's chatter system weren't accurately recording that customers viewed the linked portal pages. A simple adjustment was made to the request headers, ensuring page views are now correctly tracked. This improves our data on customer engagement with the portal.
Original PR description
When a link to the portal is sent from the chatter via message or log note, the preview of the link triggers that the page was viewed by customer. As a solution a variable was added to the request headers coming from the previewer. opw-5237785 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue that prevented users from registering duplicate EDI participants. The change refines the unique identification constraints within the account_edi_proxy_client module, specifically targeting localization-specific EDI configurations (MyEDI and Italian EDI). This ensures accurate participant registration and avoids errors.
Original PR description
This commit removes the `unique_active_edi_identification` constraints from the _auto_init of `account_edi_proxy_client` client user model, and adds back the constraint on `l10n_my_edi` and `l10n_it_edi` to make it apply only to those localizations. task-4852830
This update resolves a bug that caused blank cells in Excel reports when zero values were present in account totals. The fix ensures accurate reporting by converting zero values to '0.0' during export, preventing errors and improving data consistency. This improves the reliability of financial reports.
Original PR description
Steps to reproduce: - activate debug mode - go to "Accounting / Configuration / Management / Accounting Reports" - Click on "General Ledger" - Go to "Columns" tab - Activate "Blank if Zero" for debit, credit or balance -> Traceback: ``` col['name'] += total_line['columns'][col_index]['name'] TypeError: unsupported operand type(s) for +=: 'float' and 'str' ``` This happens when computing the total from the totals of each account, if there are totals of 0 mixed with non-zero totals. The fix is to fallback to `0.0` if falsy value. opw-5490171