Daily updates from Odoo
Wednesday, March 25, 2026
21 changes · master
Enhancements to existing features
This update simplifies the tracking of materials within MRP components by removing unnecessary packaging fields from the SML form. These fields were previously visible but are not used when components are consumed unpacked, preventing user confusion and ensuring data accuracy. This change improves the user experience and data integrity.
Original PR description
Hide the `Destination Package` and `Destination Container Package` fields in the SML form for MO components in the Barcode app, as they are always consumed unpacked. Keeping these fields visible can mislead users into entering information with no functional meaning. Community PR:- odoo/odoo#243072 TaskID-4068485
Resolved issues and error corrections
This update enhances the testing process for WhatsApp features within Odoo Enterprise. Specifically, it improves how the system verifies notifications sent through the bus, ensuring more reliable test results. This change contributes to overall product stability and quality.
Original PR description
Enterprise counter-part. task-4715511 https://github.com/odoo/odoo/pull/253083/
This update resolves a small, technical issue with a message displayed within the documents generated for employee payroll. The fix ensures consistent and accurate document formatting, improving the overall user experience. This change does not impact business processes or functionality.
Original PR description
Task#5980045 Forward-Port-Of: odoo/enterprise#109063
This update updates how Odoo retrieves configuration settings within the currency rate module. The change replaces an older method with the recommended approach, ensuring greater stability and compatibility with future Odoo versions. This improves the reliability of the currency rate calculations.
Original PR description
https://github.com/odoo/odoo/pull/223180 removes the `get_param` method from `res.config_parameter`, which was used in the `currency_rate_live` module. This commit replaces it with the `get_str` method, which is the recommended way to retrieve configuration parameters in Odoo. No task ID Forward-Port-Of: odoo/enterprise#110975
This update fixes an issue where subscription quotations weren't displaying correctly in the customer portal. Recent changes caused orders to be incorrectly directed to a general subscription page. Now, draft and sent subscription orders will correctly redirect users to their specific order details page, ensuring a smoother user experience.
Original PR description
Version: - saas~19.2 Steps to reproduce: - Create a subscription quotation. - Open it from the portal. Issue: - The portal view of the subscription quotation is not displayed correctly. Cause: - After recent changes, subscription orders were always redirected to `/my/subscriptions/` route. - This route renders the `subscription_portal_template`, which is not suitable when the order is still in draft or sent state. Solution: - If the subscription order is in draft or sent state, redirect the user to `/my/orders/<order_id>` instead. task-5966871 Forward-Port-Of: odoo/enterprise#108509
This update resolves a bug where the 'documents' button on employee records incorrectly redirected users to the wrong domain, preventing them from accessing their documents. The fix ensures users are directed to the correct domain based on their login location, improving document access for all users.
Original PR description
Steps to reproduce:
- Have two domains for your database (".odoo.com" and ".example.com")
- set the ".example.com" domain as your web base url
- login on the ".odoo.com" domain, go on an employee and click the documents smart button
-> you cannot see any documents because you are redirected on the ".example.com" domain on which you are not connected
opw-5857914
Forward-Port-Of: odoo/enterprise#110390
Forward-Port-Of: odoo/enterprise#107384This update resolves an issue where documents uploaded to the 'All' folder in the Documents app were not viewable through the bridge interface. The fix ensures that uploads to 'All' now default to the standard bridge folder, restoring full accessibility for users.
Original PR description
Problem: When a user uploads a document through a bridge to the Documents app, if the destination is set to the `All` folder, the file becomes unviewable from the bridge. It can only be accessed directly via the Documents app. Cause: This occurs because `All` is not an actual folder. Uploads directed to it default to the `My Drive` folder instead. Because `My Drive` is restricted and inaccessible via the bridge, the uploaded documents remain hidden. Solution: To solve this problem, this PR ensures that uploads directed to the `All` folder default to the default bridge folder rather than to `My Drive`. task-6023290 Forward-Port-Of: odoo/enterprise#111715 Forward-Port-Of: odoo/enterprise#111290
This update fixes an issue where currency rates for Bulgaria were incorrectly calculated after the country switched to the Euro. The system was using reversed rates from the XML data, leading to inaccurate unit conversions. This change ensures correct currency calculations are used for Bulgarian transactions.
Original PR description
Issue: after Bulgaria switched to EUR, currency rate fetching from BNB was incorrectly set to still use reversed currency rates from the fetched XML, resulting in unit-to-EUR and EUR-to-unit rates being flipped in the database. Solution: adjusting the parser to get rate from 'RATE' rather than 'REVERSERATE', as the XML provides both. task-6050519 Forward-Port-Of: odoo/enterprise#111753 Forward-Port-Of: odoo/enterprise#111275
This update resolves a technical error that prevented users from completing the checkout process within the Enterprise module. The issue stemmed from an outdated reference to a property name, which has now been corrected. This ensures a smoother and more reliable user experience.
Original PR description
Steps to reproduce: - In the home menu of a database, click on the ActivityMenu at top of page (red dot) - Click check in - Click ActivityMenu (green dot) again and click check out Current behavior: - Traceback saying this.displayAllowBillable is not a function Expected behavior: - No error Note: displayAllowBillable was renamed to displayIsBillable in this commit https://github.com/odoo/enterprise/pull/110708 opw-6061392 Forward-Port-Of: odoo/enterprise#111850
This update resolves a warning appearing in the Time Off popup within the Odoo Enterprise demo payroll module. The change removes unnecessary data dependencies, allowing the system to automatically calculate time off balances correctly. This ensures accurate reporting and a smoother user experience for payroll administrators.
Original PR description
. Remove payslip_state for hr.leave(178) to be automatically computed . Add corresponding tests task-6044925
This update resolves a technical issue that was preventing updates to the AI module. The fix ensures the system correctly verifies changes to the AI model, preventing crashes and allowing updates to proceed smoothly. This improves the stability and reliability of the AI functionality.
Original PR description
Prior to this commit one could not run the update of `ai` module because of a constraint on the write method which would cause it to crash. The constraint checked for modification to the `llm_model` without checking that the model was actually different from the original model assigned to the image generation agent. With this commit, we add a condition to check that the `llm_model` in the values is different form the one currently assigned to the image generation agent.
This update removes a specific exception (JC 999) from minimum wage checks within the Odoo Enterprise Belgian payroll module. This change ensures more accurate compliance with Belgian labor laws and avoids potential warnings for employees classified as JC 999. Associated tests have been added to verify the updated functionality.
Original PR description
. Exclude JC 999 from minimum wage checks in both versions and offer versions . Add corresponding tests task-6055486
A recent update to Odoo Enterprise prevented the deletion of automatically created approval rules within the Studio module. This issue arose during an upgrade from version 18.0 to 19.0 and resulted in data inconsistencies. The fix ensures these rules are created with a safeguard to prevent accidental deletion.
Original PR description
Server and automated actions created by the ORM for the purpose of revoking approval rights are created without `noupdate=True` which leads to said records being removed by the ORM becuase of not being found in the source. Such records created on the fly should have `noupdate=True` to prevent that from happening. This bug can be reproduced by going to Settings > Technical > User Interface > Studio Approval Rules and creating a new record from there and updating `web_studio`. The update will drop the record from the database. Issue originally detected in the upgrade process from 18.0 to 19.0. This fix will be complemented by an upgrade script that fixes erronous records. Forward-Port-Of: odoo/enterprise#110065
This update fixes an issue where linked records were lost when importing spreadsheets from CSV or XLSX files. The change ensures that newly created spreadsheet documents automatically link to the same source document, maintaining data relationships. This improves data integrity and simplifies spreadsheet workflows.
Original PR description
When importing an XLSX or CSV document into a spreadsheet, the linked record is lost on the newly created spreadsheet document. This happens because the conversion creates a new document through `copy()`, while `res_model` and `res_id` are computed fields and are not copied by default. This commit explicitly forwards the linked record values during the conversion so the created spreadsheet keeps the same linked record as the source document. Task: [6008920](https://www.odoo.com/odoo/project/2328/tasks/6008920) Forward-Port-Of: odoo/enterprise#111569 Forward-Port-Of: odoo/enterprise#110047
This update corrects a rounding error in the US payslip PDF that was causing incorrect overtime rates, particularly for very small overtime durations. The fix changes how the rate is calculated directly on the work entry, ensuring accurate overtime pay is displayed. This improves the reliability of payroll reports.
Original PR description
The Rate column on the US payslip PDF is computed as amount / hours, but amount is a Monetary field rounded to 2 decimals. For small hour values (e.g. seconds from the attendance app), the rounding error causes us to compute the wrong rate. For example, working 6 seconds of overtime at an hourly rate of $26 with a 1.5x overtime multiplier results in this calculation: $26/hour * 1.5 * 0.00166667 hour = $0.065 ≈ $0.06 We then attempted to calculate the rate in reverse for the PDF: $0.06 / 0.00166667 hour = $35.9999 ≈ $36.00 Because of the rounding that happened, it doesn't show the expected $39/hour rate ($26 * 1.5). We now compute the rate directly from hourly_wage * multiplier on the work entry type instead. This is a manual forward-port of the work in Odoo 18 [1], to instead use the new amount_rate field on hr.work.entry.type instead. task-6052711 [1] https://github.com/odoo/enterprise/pull/111540 Forward-Port-Of: odoo/enterprise#111733
This update resolves an issue where equity transactions couldn't be created in currencies other than the company's default (USD). Now, users can set the equity currency for the first transaction, ensuring flexibility in recording equity values. Subsequent transactions automatically use this chosen currency.
Original PR description
### Issue: When a company is set in USD, it was not possible to create equity transactions in another currency (e.g., EUR) ### Cause: The equity_currency_id is initialized with the company currency at partner creation (or module installation) However, there was no way to override this value when creating transactions ### Fix: It is now possible to set the equity currency on the first transaction Subsequent transactions reuse this currency and the field becomes read-only ### Steps to reproduce: - Install `equity` with demo data (currency and equity_currency default to USD) - Enable the EUR currency - Create an equity transaction for a company - You can now choose EUR on this transaction - Create another transaction for the same company, the selector is hidden and the currency remains EUR opw-5382255 Forward-Port-Of: odoo/enterprise#108248
This update resolves a technical issue where reports were failing to load correctly on some migrated databases. The change adds a backup system to automatically identify and use account codes when the standard XMLIDs are missing, ensuring reports run smoothly without warnings. This improves the reliability of our financial reporting.
Original PR description
Description of the issue this commit addresses: On some migrated BE databases, account template refs a4121/a4521 are missing as XMLIDs. l10n_be_reports then fails to recover partner/reconcile account refs and logs warnings during post-init load. --- Desired behavior after this commit is merged: This commit adds a fallback in BE report chart template data to resolve a4121/a4521 by account code when XMLIDs are missing, preventing recovery warnings while keeping normal XMLID behavior unchanged. --- runbot-[233845](https://runbot.odoo.com/odoo/runbot.build.error/233845) Forward-Port-Of: odoo/enterprise#111325
This update fixes a potential issue where a user could indirectly change an employee's work email through contract settings. Previously, linking an employee to a user allowed for unintended email updates. Now, the system ensures the work_email remains consistent when an employee is associated with a user, improving data integrity.
Original PR description
Due to https://github.com/odoo/enterprise/pull/106974,the employee's work_email may be reset to False when creating or updating an offer. This behavior is acceptable if the employee does not have a linked user. However, if the employee is linked to a user, resetting work_email can allow a user to indirectly modify their own work_email through salary confi. To prevent this, we now ensure that work_email never changes if employee has a user linked to it. Steps to reproduce: - Hire an applicant from Recruitment (the employee has no work_email). - Set a random work_email and create a user for the employee. - Open the hired applicant and create a new offer to update the contract. - work_email should not be modified, even after new contract. task: 6033382 Forward-Port-Of: odoo/enterprise#111815 Forward-Port-Of: odoo/enterprise#110810
This update resolves a problem where reports with annotations were failing to export correctly. The previous filtering process was redundant, and the unnecessary date filters have been removed. This ensures reports with annotations now export reliably.
Original PR description
[FIX] account_report: Unable to export Report with Annotations Following changes to the date filter in https://github.com/odoo/enterprise/pull/98695, the date options can be missing a date_from (For example, when using period type: "today"). The date were used to filter on the annotations to display during the period of the report. However, we already filter on those date when generating the annotations so this was redondant and can be safely removed. To reproduce: - Open the Balance sheet - Open the chatter of any account and post a message - Click on the "PDF" button to export the report Forward-Port-Of: odoo/enterprise#109984
This update resolves an issue preventing superuser administrators from deleting work entry types within the Odoo payroll module. This change allows for greater flexibility in managing payroll configurations and correcting errors. It's a technical fix to improve administrative control.
Original PR description
Forward-Port-Of: odoo/enterprise#111967
Features or functions removed from Odoo
This change removes a redundant field related to tracking payslip documents with tags. The feature was no longer required and has been removed from the system configuration and associated files. This simplifies the system and reduces potential maintenance overhead.
Original PR description
According to the linked task, the documents_hr_payslip_tags field is no longer needed, therefore we can remove the override of the view adding it and the field on res_config_settings (we remove the whole file since it was the only thing that it was changing). Finally we also remove the documents_tag_payslips record, which was used as a default tag but is no longer needed. Task: 5936989