Daily updates from Odoo
Tuesday, May 12, 2026
23 changes · master
New functionality added to Odoo
This update adds missing translations for several Odoo Enterprise modules, primarily within the Arabic, Azerbaijani, Bulgarian, Catalan, Czech, Danish, German, Greek, Hebrew, Hindi, Croatian, Hungarian, and Spanish language versions. These additions ensure the software is accessible and usable for a wider range of international customers. The translations were copied from a previous release (saas-19.3) to maintain consistency.
Original PR description
Related: https://github.com/odoo/odoo/pull/254667 Forward-Port-Of: odoo/enterprise#113055 Forward-Port-Of: odoo/enterprise#111141
Enhancements to existing features
This update removes the Odoo Studio promotion icon from the systray on smaller screens to optimize space and improve the user experience. This change aligns with how the icon is already hidden when Studio isn't usable on those devices, ensuring a cleaner and more functional interface.
Original PR description
Avoid displaying the Odoo Studio promotion icon in the systray on small screens because there isn't much space in the systray. We decided to hide the promote-Studio systray icon on small screens, the same way we hide it when Studio is installed because it's unusable on small-screen devices. task-5079952
This update changes the visual icon for the Field Service section within the Odoo portal. This improves the user experience by providing a more recognizable and consistent representation of this key functionality. The change is a minor aesthetic update.
Original PR description
The icon for portal's Field Service section has been changed task-6009545
This update streamlines the management of salary rules within the Odoo Enterprise Belgian payroll module. The changes consolidate salary data files, simplifying updates and reducing potential errors. This improvement ensures greater accuracy and efficiency in calculating employee salaries.
Original PR description
follow up of task-6036647
This update enhances Odoo's translation capabilities by standardizing the use of `self.env._()` for string translations, addressing potential issues and aligning with best practices. This change ensures more reliable and consistent translations across various modules, improving the overall user experience.
Original PR description
*: payment_sepa_direct_debit, sale_(stock_)renting, sale_(amazon,lazada,shopee),website_sale_(stock_)renting - Replace imports of `_` with calls to `self.env._()`. - Since…
*: payment_sepa_direct_debit, sale_(stock_)renting, sale_(amazon,lazada,shopee),website_sale_(stock_)renting - Replace imports of `_` with calls to `self.env._()`. - Since https://github.com/odoo/odoo/pull/174844, it is supported to translate Python strings through the environment using `self.env._()` instead of the bare `_()` function. - Using bare `_` has become bad practice as it causes confusion with the Python convention of `_` as a throwaway variable, and fails in edge cases such as lambdas and generators where frame-based language detection does not work correctly. - Therefore, within our scope, all occurrences of `_()` are replaced with `self.env._()` (or the relevant environment reference such as `request.env._()`) wherever possible. - Module-level constants that require lazy evaluation are updated to use `LazyTranslate(__name__)` in place of the old `_lt` import. SEE ALSO: - Community PR:https://github.com/odoo/odoo/pull/262235 task-6139904
Resolved issues and error corrections
This update corrects a UI issue where the 'l10n_co_edi_ubl' field in the Units of Measure form was missing its label, causing user confusion. The fix ensures the field is clearly labeled, improving form clarity and usability for users working with CO Company settings.
Original PR description
Currently, the field `l10n_co_edi_ubl` is displayed without a label in the UoM form, confusing users. **Steps to reproduce:** - Install the `l10n_co_edi` module and switch to the CO Company. -…
Currently, the field `l10n_co_edi_ubl` is displayed without a label in the UoM form, confusing users. **Steps to reproduce:** - Install the `l10n_co_edi` module and switch to the CO Company. - Navigate to Invoicing > Settings. - Enable `Units of Measure & Packagings`. - Open `Units & Packagings` and click `New`. **Observation:** The `l10n_co_edi_ubl` field appears between the `Quantity` label and its corresponding field, but its own label is not visible. <img width="1905" height="324" alt="6180769_before" src="https://github.com/user-attachments/assets/f35c345a-f449-46e4-ad15-6981109fca7a" /> **Root Cause:** The inherited view [1] inserts the field `l10n_co_edi_ubl` before `relative_factor` in the base view [2]. In the base view, `relative_factor` is wrapped inside a `<div>` with a shared label (`Quantity`). Since the new field is inserted inside this structure, it inherits the same layout without having its own label, resulting in the label being hidden. **Fix:** This commit updates the view to ensure that the field `l10n_co_edi_ubl` is properly displayed with its own label, avoiding UI confusion and improving form clarity. **After:** <img width="1907" height="376" alt="6180769_after" src="https://github.com/user-attachments/assets/f96470d3-8df2-4ca4-acf8-f6511a49d725" /> [1]: https://github.com/odoo/enterprise/blob/7b0d07bce92fb4b2cb588344fb0f6e3dd5d94f4a/l10n_co_edi/views/product_uom_views.xml#L4-L13 [2]: https://github.com/odoo/odoo/blob/bae4fa4e0dde2d2e2e4fcdbb968f630c080af818/addons/uom/views/uom_uom_views.xml#L15-L34 opw-6180769 Forward-Port-Of: odoo/enterprise#115933
This update resolves an issue where the 'Signed Contract' button in the applicant salary configuration would sometimes redirect to an outdated, archived version of the contract. The fix prioritizes active contract versions during the search, ensuring users always access the most current agreement. This improves the user experience and prevents confusion.
Original PR description
Steps to reproduce: 1- Create an offer for an applicant 2- Sign the offer as an applicant multiple times 3- Counter sign only one of them 4- Click on the "Signed Contract" smart button Issue: In some cases, the smart button will redirect to an archived version. Cause: The search for the version allows for archived versions and has a limit of 1, so sometimes that 1 version turns out to be one of the signed contracts that weren't counter signed. Fix: Add a sort to the search to prioritize active versions. Task-6144381 Forward-Port-Of: odoo/enterprise#116885 Forward-Port-Of: odoo/enterprise#115505
This update resolves a visual bug where the Knowledge article's table of contents would incorrectly display the TOC of the last previewed article. The fix ensures the TOC accurately reflects the current article, improving the user experience when viewing and editing knowledge content. This change was implemented to maintain data consistency and prevent misleading information.
Original PR description
### Steps to reproduce 1. Open knowledge 2. Create a new empty article 3. Click on Templates 4. Close the modal ------> Current article's side panel TOC shows the TOC of the previewed article. ### Technical The side panel's TOC is managed by the TOC service. When opening/updating any article, the side panel's TOC is updated according to the current article. When the article picker is previewing the article using the `HtmlViewer`, it also updates the side panel's TOC using the previewed article. Then if we close the dialog without loading the article, the side panel's TOC doesn't get updated. Therefore, opening the side panel's TOC shows the last previewed article's TOC. After this commit, we add a cleanup inside the `HtmlViewer` and the `KnowledgeTableOfContent` to restore the previous TOC manager when it is destroyed. Task-6186675 Forward-Port-Of: odoo/enterprise#116615
This update corrects a technical issue where partners with VAT information were incorrectly flagged in the annual VAT listing warning. The fix ensures that these partners are no longer displayed in the warning, improving the accuracy of VAT reporting. This change enhances the user experience and data reliability.
Original PR description
Partners with / in VAT shouldn't be displayed in the warning for the annual VAT listing. task-6081162 Forward-Port-Of: odoo/enterprise#113839
This update fixes an issue where the end date on generated payslip PDFs was displayed incorrectly. The problem stemmed from a formatting error in the XML file, which has now been corrected to ensure consistent date display across all payslips. This improves the accuracy and professionalism of payroll documents.
Original PR description
ٍSteps: - Go to the payslip tabs under payroll app - Create a payslip and preview the generated PDF - The end date format is messed up Cause: The format was different because the end date was being overriden in the xml file and being displayed in the xml through t-out tag instead of span and t-field tags. Solution: Matching the format of the start date and end date of the payslip template. Task: 6168607 Forward-Port-Of: odoo/enterprise#115317
A recent update caused a one-hour delay when scheduling shifts in the Gantt day view. This was due to a timezone configuration error. This fix ensures that shift times are accurately reflected, preventing scheduling conflicts and improving the planning process.
Original PR description
Steps to reproduce:
-
- Open Planning
- Switch to Gantt day view
- Select a time slot from 1 PM to 3 PM for a resource
Issue:
-
- When creating a planning shift from the Gantt day view, the created shift has a 1 hour time lag compared to the selected slot.
Cause:
-
- In saas-19.2, the timezone field was removed from the resource calendar.
- _work_intervals_batch was called without resources_per_tz, causing it to default to {UTC: resource} instead of the correct resource timezone.
Solution:
-
- Pass the resource timezone when calling _work_intervals_batch so attendance times are stamped with the correct resource timezone instead of defaulting to UTC.
task-5966733
Forward-Port-Of: odoo/enterprise#111122This update resolves an issue where changes to the CC partners in the sign request wizard were incorrectly updating the associated sign template. The fix ensures that changes made in the wizard remain isolated, preventing unintended modifications to the template. This improves data consistency and simplifies the sign request process.
Original PR description
Version: - saas-19.4 Steps to reprouce: - Create a sign template. - Click on send button and inside wizard set value in cc field. Issue: - When a user adds or removes a partner in the CC field on the sign send request wizard, it was also updating the CC partners on the sign template. Cause: - The cc_partner_ids field on the wizard was declared as a related field pointing to template_id.cc_partner_ids, which caused any changes made in the wizard to be written back to the template directly. Solution: - Replaced the related field with a `compute` + `store=True` + `readonly=False` field so that the template value is only used as a default and any changes made in the wizard stay on the wizard without affecting the template. task-6196052
This update resolves an issue where creating a picking type via the quick create function would trigger an error. The fix disables quick creation for picking types to prevent this error, ensuring a smoother user experience when creating receipts.
Original PR description
Currently an error occurs when user quick creates a picking type and tries to create a receipt with it. Steps to replicate: - Install stock. - Go to Inventory > Receipts and create a new receipt >…
Currently an error occurs when user quick creates a picking type and tries to create a receipt with it. Steps to replicate: - Install stock. - Go to Inventory > Receipts and create a new receipt > Save it. - Clear the Operation Type field, type `test` and quick create it. - Save and the error will occur. Error: ``` UndefinedFunction: operator does not exist: integer = boolean LINE 1: SELECT number_next FROM ir_sequence WHERE id=false FOR UPDAT... ``` Cause: - As the user quick created the picking type, the `sequence_code` field was not set and it is a required field [1], when we try to get `next_number` to create the name for the current stock picking this error occurs. - In the versions before `saas-19.1` trying to quick create picking type will lead to a `Not-Null Violation` as `sequence_code` is a required field and then stock picking type form view will open up. - This error occurs only after `saas-19.1` and above versions because this [PR] made the `sequence_code` field into a related field so its required constraint was removed and hence quick create creates a new picking type. Solution: - Disabled quick create for stock picking type. [1]: https://github.com/odoo/odoo/blob/fe0550ad23ff9128099e7e4994938879a971dcc8/addons/stock/views/stock_picking_type_views.xml#L93 [PR]: https://github.com/odoo/odoo/pull/190305/changes#diff-79cbc763115661182c02285c07320098510f5686700359ddee67443b4893dc30L32-R32 sentry-7383206579
This update replaces outdated code related to handling asynchronous operations (Deferred) with a more modern Promise-based approach. This change enhances the stability and performance of key Odoo modules, particularly those related to approvals and knowledge management. It’s a routine maintenance update ensuring Odoo continues to run efficiently.
Original PR description
*: approvals, knowledge Community: https://github.com/odoo/odoo/pull/260618 [Task-5262203](https://www.odoo.com/odoo/1519/tasks/5262203)
This update refines how live chat pop-up windows are closed within Odoo Enterprise. Specifically, it automatically closes the action panel when a chat window is closed, providing a smoother user experience. This ensures users can easily exit chat sessions without needing to manually navigate back.
Original PR description
https://github.com/odoo/odoo/pull/263590
This update resolves a bug that prevented price changes in the Blackbox POS module when the user's language used a comma (e.g., European format) instead of a dot as a decimal separator. The fix ensures accurate price calculations regardless of the user's locale, improving the reliability of order pricing.
Original PR description
Before this commit, when changing the price of an orderline with the blackbox installed, if the decimal separator of the user language was not a dot and was used during the price change, the price was not changed. This was due to the fact that we were comparing a string with a number, the string would be implicitly be converted to a number and, when there was a comma for example, it would return a NaN which would cause the discount to not be applied and thus the price to not change. Forward-Port-Of: odoo/enterprise#113341 Forward-Port-Of: odoo/enterprise#113151
This update resolves a minor technical issue by removing an unnecessary console.log statement from the Gantt chart module. This ensures a cleaner user experience and prevents potential performance impacts, improving the overall stability of the application.
Original PR description
Before this PR, a console.log was left out. task-6201248 Forward-Port-Of: odoo/enterprise#116614
This update corrects a bug where the 'Ledger' group was incorrectly displayed in reports when multiple companies were selected. Now, reports only consider the active company, ensuring consistent and accurate reporting regardless of the number of companies used as filters. This improves report reliability for users.
Original PR description
The "Ledger" horizontal group is (among other possible criteria) supposed to be displayed when there is more than one company considered by the report. Before this commit, when opening a report with filter_multi_company set to 'tax_units' with more than one non-branch company in self.env.companies and no tax unit set, "Ledger" was shown. This was wrong, since, in this case, the report will only consider the active company, disregarding the other selected ones. All in all, _init_options functions should only rely on options['companies'] to check the active companies, for consistency. Forward-Port-Of: odoo/enterprise#116756
This update resolves an error that occurred when posting journal entries using accounts shared between companies during an open audit period. The fix prevents an AccessError by ensuring users have the correct permissions to access audit status information, allowing for accurate reporting across multiple companies.
Original PR description
Posting a journal entry using an account shared between multiple companies during an open audit period raises an AccessError. Steps to reproduce: - Configure an account to be shared between Company A and Company B. - Add Company A and Company B in 'Companies' - In the mapping tab, add a code for each company - In Company A, create a tax audit for a specific fiscal period. - Switch to Company B and keep just Company B selected. - Create and post a journal entry using the shared account within the same date period. Issue: An AccessError is raised when posting the move. The system attempts to check the status of the audit records linked to the shared account, to which the user in Company B does not have read access. opw-5993450 Forward-Port-Of: odoo/enterprise#116994 Forward-Port-Of: odoo/enterprise#115454
This update corrects a minor coding issue within the Odoo Enterprise payroll module. Specifically, the code was updated to avoid using `self` within loop structures, which improves the stability and reliability of the payroll calculations. This change ensures the payroll processing functions correctly and efficiently.
Original PR description
Don't use `self` in loop body. Oversight of 724edab8d5be8e774f00ae84e9ebeb5a70f4fa93. Forward-Port-Of: odoo/enterprise#116915
Features or functions removed from Odoo
This update simplifies the product barcode lookup module by removing duplicate attribute definitions that were previously created. The change ensures that data is managed efficiently and avoids conflicts when both the product barcode lookup and core product modules are used. This improves data consistency and reduces potential errors.
Original PR description
`product_barcodelookup` was defining default attributes that are now provided by `product` (Color, Size, Material, Brand, Pattern), creating duplicates when both modules are installed. This commit removes those redundant data records and keeps only module- specific ones (Gender, Manufacturer, Age Group). Community PR: https://github.com/odoo/odoo/pull/252701
This update permanently removes the `voip_onsip` component from Odoo Enterprise. It was mistakenly reintroduced during a recent update and no longer serves a functional purpose. This ensures a cleaner and more streamlined system.
Original PR description
While `voip_onsip` should have been removed altogether in 19.1, a commit adding new icons accidentally resurrected it. This commit removes it for good. Forward-Port-Of: odoo/enterprise#116773
Code cleanup and technical improvements
This update simplifies IoT testing by removing unreliable service patching and focusing solely on database testing. The testing process has been streamlined with a new common test framework, making it easier to create and run IoT tests. This improves overall stability and reduces potential issues during development.
Original PR description
We remove the patching/starting of IoT Box service as it is particularly unstable and unsafe, to prefer testing only db side. In the meantime we simplify the process of writing IoT tests by using a single `IotCommonTest` with useful helpers to mock the `/iot_driver/action` route.