Daily updates from Odoo
Friday, March 6, 2026
40 changes · master
New functionality added to Odoo
This pull request updates several components within the Odoo Enterprise accounting module, specifically related to bank reconciliation workflows. The changes include refinements to the user interface and functionality for managing bank reconciliation lines, statements, and related processes. These updates aim to improve the overall user experience and accuracy of bank reconciliation operations.
This update incorporates the latest list of Mexican cities recognized by the government. This ensures accurate reporting and compliance for businesses operating in Mexico within the Odoo Enterprise system. It's a routine update to maintain data accuracy.
Original PR description
The Mexican government has recently introduced new cities. This pr adds those cities here as well. task-5883334 Forward-Port-Of: odoo/enterprise#109358 Forward-Port-Of: odoo/enterprise#107623
Enhancements to existing features
This update enhances the visual appearance of the PiP (Persistent In-Place) window by aligning its styles with the main softphone. Specifically, calling colors are now accessible, and the ActionButton's border radius is customizable for a more modern look. This improves the overall user experience within the PiP.
Original PR description
### Extend "calling" colors from softphone This commit makes some styles, like the calling colors, that were initially scoped to the softphone accessible for use in the PiP window as well. ### Adapt…
### Extend "calling" colors from softphone This commit makes some styles, like the calling colors, that were initially scoped to the softphone accessible for use in the PiP window as well. ### Adapt border radius of ActionButton Prior to this commit, the ActionButton only supported circle or pill border radius. This commit enables border-radius customization for greater flexibility. ### Fine-tune the PiP window This commit adapts the style of the PiP window to make it more consistent with the softphone. task-5979774 | Before | After | |--------|--------| | <img width="392" height="272" alt="Capture d’écran 2026-03-04 à 11 02 35" src="https://github.com/user-attachments/assets/90f8dfaf-a90d-47fc-a847-c877d394dbd4" /> | <img width="392" height="250" alt="Capture d’écran 2026-03-04 à 08 52 42" src="https://github.com/user-attachments/assets/f29c56cc-585a-49c3-aa0b-61c28e57cb52" /> | | <img width="392" height="432" alt="Capture d’écran 2026-03-04 à 11 02 39" src="https://github.com/user-attachments/assets/528adac4-ee67-4ff8-9079-69c5d51fdec7" /> | <img width="392" height="464" alt="Capture d’écran 2026-03-04 à 08 52 46" src="https://github.com/user-attachments/assets/35219ac0-8d3a-4f86-9728-316f00b7233a" /> |
This update enhances the user experience by adding a placeholder to the 'struct_id' field in the HR payroll module. This makes it easier for users to select the correct pay category, reducing potential errors and improving overall usability. The change is a minor improvement to the system's interface.
Original PR description
- The 'struct_id' field lacked a placeholder, making the UI less intuitive for users. - Added 'placeholder="Choose a pay category"' to improve the user experience. Task: 5960838 Forward-Port-Of: odoo/enterprise#108338
This update allows users to customize the colors of slices within Odoo's pie charts and spreadsheets. The change includes a new test to ensure this functionality works correctly, enhancing the visual clarity and flexibility of data representation. This improves the user experience when working with charts and spreadsheets.
Original PR description
added a test in chart side panel Task: 5347414
This update adjusts the Romanian tax reporting within the Odoo Enterprise system to align with recent changes in the Common European (CE) regulations. The update removes outdated tax codes and adds new ones, ensuring accurate tax calculations for Romanian businesses. This ensures compliance and improved financial reporting.
Original PR description
Some taxes were no longer needed in CE, so they needed to be removed task-5411745 Forward-Port-Of: odoo/enterprise#109606 Forward-Port-Of: odoo/enterprise#106127
This update streamlines the process of setting up tests within Odoo, focusing on several core modules including accounting and payroll. By centralizing test setup, the team has improved the reliability and efficiency of our automated testing process, leading to more robust software.
Original PR description
Forward-Port-Of: odoo/enterprise#109679 Forward-Port-Of: odoo/enterprise#108739
This update enhances logging for transactions processed by the Codabox integration (l10n_be_codabox). These improved logs will assist the support team in quickly identifying and resolving any issues related to data synchronization. This proactive logging improvement reduces potential delays and improves overall system stability.
Original PR description
This commit will improve the logs of _l10n_be_codabox_fetch_coda_transactions to help the support team to debug possible problem. task-5436868 Forward-Port-Of: odoo/enterprise#109534 Forward-Port-Of: odoo/enterprise#107779
This update enhances the accuracy of loan interest rates within the Enterprise module. Users can now specify interest rates with up to 10 decimal places, providing greater flexibility and precision in financial calculations. This change improves reporting and ensures more accurate tracking of loan interest.
Original PR description
Allowing more precision on the interest rate for loans. By default the display uses 2 decimals, but if a user decides to add more precision they can up to 10 decimals. task-5913175 Forward-Port-Of: odoo/enterprise#107163
Resolved issues and error corrections
This update corrects an issue where internal users receiving ‘Signed Document’ emails were incorrectly directed to the public portal instead of the document preview. The change now ensures internal users are automatically redirected to the correct internal preview, while the portal experience remains unchanged for public users. This improves the user experience for internal teams.
Original PR description
Internal users opening the “Signed Document” email link were redirected to the portal instead of the document preview. Now they are redirected to the internal preview, while public users remain unchanged. task-5486043 Forward-Port-Of: odoo/enterprise#109425 Forward-Port-Of: odoo/enterprise#107079
This update resolves a test failure related to holiday attestations in the Belgian payroll module. Adding a 'freeze_time' setting to the test ensures it accurately reflects the payroll calculations, preventing disruptions to payroll processing. This fix improves the reliability of the holiday attestations feature.
Original PR description
Addind freeze_time to Fix holiday attest test that failed on the runbot Forward-Port-Of: odoo/enterprise#109519 Forward-Port-Of: odoo/enterprise#107490
This update resolves an issue where US payroll reports were incorrectly appearing in Odoo databases set up for India. The fix ensures that the necessary US payroll module is automatically installed when the base HR payroll module is installed, preventing this unexpected report visibility. This ensures consistent and accurate reporting across all Odoo environments.
Original PR description
**Version:** saas-19.1 **Steps to reproduce:** - Create a new database with India as country. - Install l10n_in_hr_payroll. - US company based reports are visible. **Issue:** Reports specific to us payroll localisation are visible for base hr_payroll module **Cause:** The l10n_us module was missing as the auto_install dependency. **Solution:** Added l10n_us as the auto_install dependency in the manifest file. **task-5948747** Forward-Port-Of: odoo/enterprise#108435
This update resolves a rare crash in the Gantt chart view that occurred when users interacted with search filters. The fix prevents the chart from losing track of task pills during search operations, ensuring a more stable user experience. This improves the reliability of the Gantt chart for managing projects.
Original PR description
This commit fixes a traceback in the Gantt view caused by a race condition during search operations. If a user clicks a search dropdown item located directly above a task pill, and that search filters out the underlying pill, a `pointerenter` event can fire on the pill just as the dropdown closes. Because the search amy already be applied, the renderer could lose track of the pill, causing the handler to crash when trying to access it. This commit adds a safety check to the event handler to exit early if the hovered pill is no longer found in the renderer. Forward-Port-Of: odoo/enterprise#109545
This update clarifies how Helpdesk articles are searched when a non-root article is selected as the main article. Previously, searching didn't include child articles, but now it only searches the selected article. Additionally, a minor issue with the dropdown functionality has been addressed to prevent empty dropdowns.
Original PR description
*: website_helpdesk_knowledge **Steps to reproduce:** - Install Helpdesk/Knowledge/Website apps - Go to Knowledge - Set up a Knowledge workspace root article with some child articles to it - Go to…
*: website_helpdesk_knowledge
**Steps to reproduce:**
- Install Helpdesk/Knowledge/Website apps
- Go to Knowledge
- Set up a Knowledge workspace root article with some child articles to it
- Go to Helpdesk > Configuration > Helpdesk Teams
- Open a Helpdesk team, and go to its Help Center config
- Check Knowledge and set a non-root article as main Article
- Go to Website > Help
First issue (non-root main article):
- Type a word which is present in both the article and one of its child articles
- Only the given article match the word
- If you use the root article it will match in any descendant
Second issue (in every case):
- Type a word in the search bar
- Wait for the dropdown to appear
- Click elsewhere, dropdown is properly hidden
- Try to change the search > Traceback
**Issue:**
The domain used to find the articles to match the search uses the current id as the `root_article_id`:
`['|', ('id', '=', team_article.id), ('root_article_id', '=', team_article.id)],` which was previously working in every case as it was not possible to set a non-root article in the team setting.
This was later changed to allow any article as the default website page. As a result, when a non-root article is selected, the search domain only applies to that specific article and no longer includes its descendants.
The other issue is related to the added boostrap attribute `data-bs-toggle="dropdown"` which is not properly reset when the dropdown is removed, and triggers the creation of an empty dropdown.
**Fix:**
Doesn't seem easy to fix to allow the search on all the descendants of the given article as we can't use the article `root_article_id` and filter out the unwanted results in a clean way (and it doesn't seem doable with a direct domain). Instead clarify the situation in the help of the article.
Also manually reset the attribute for `_onFocusOut`.
related: https://github.com/odoo/enterprise/commit/ed971d4d02624f8b864ab6c37c6e7db8ba3dfe11
opw-5258607
Forward-Port-Of: odoo/enterprise#109612
Forward-Port-Of: odoo/enterprise#107438This update resolves a tour test failure caused by a delay in order synchronization. The fix adds a pause in the tour to ensure the order is fully processed before initiating refunds, preventing a constraint error related to negative order amounts.
Original PR description
In this commit: =============== - Fix the tour `test_mx_pos_invoice_order_and_refund` failing with **WARNING**: `The amount of the order must be positive for a sale and negative for a refund`. caused by an order sync issue with the backend. Cause: ====== - The tour started the refund immediately after validating the order, while the original order was still syncing with the backend. - Because of this, the constraint `_l10n_mx_edi_constrains_amount_total` was triggered since the order had `amount_total < 0` but `refunded_order_id` was not set yet. Fix: ==== - Add a waiting step in the tour to make sure the order is fully synced before starting the refund flow. Task: 5993576 Error: 237980 Forward-Port-Of: odoo/enterprise#109362
This update resolves a technical issue preventing tax report tests from running correctly within the `l10n_vn` module. The change involves updating a tax label to ensure all tests pass, improving the reliability of tax reporting functionality. This ensures accurate tax calculations and reporting.
Original PR description
Updates in the `l10n_vn` module revised a tax label. We update it here to pass otherwise failing tests. task-[5904297](https://www.odoo.com/odoo/all-tasks/5904297) odoo-[251906](https://github.com/odoo/odoo/pull/251906) Forward-Port-Of: odoo/enterprise#109478
This update resolves intermittent test failures in the l10n_ph_reports_asset module related to how depreciation calculations handle leap years. The fix ensures accurate reporting by stabilizing the test suite against this specific drift, preventing potential reporting discrepancies.
Original PR description
The test suite fails intermittently due to leap years affecting daily -computed depreciation runbot-[241145](https://runbot.odoo.com/odoo/runbot.build.error/241145) Forward-Port-Of: odoo/enterprise#109482
This update adjusts the minimum and maximum amounts for employee mobility budgets each year, aligning them with current economic conditions. This ensures that mobility budgets remain relevant and appropriate for employee relocation needs. The change is a routine maintenance update to the accounting module.
Original PR description
Each year the minimum and maximum amount of mobility budget is indexed, here are the new values. Forward-Port-Of: odoo/enterprise#109641
This update corrects a technical error that prevented users from properly selecting a cashier when opening the Point of Sale (POS) system. The issue stemmed from a variable name change that caused a system error. The fix restores the original variable name, ensuring smooth cashier selection functionality.
Original PR description
Since this commit: https://github.com/odoo/enterprise/commit/52e2f216528bcb0e67844ac2164f647fee4a2a95 The clockState variable was renamed without modifying the other references. This causes a traceback when trying to select a cashier while opening the POS. This has now been fixed by restoring the previous variable name. Forward-Port-Of: odoo/enterprise#108750 Forward-Port-Of: odoo/enterprise#108665
This update corrects a persistent warning appearing on payslips after deleting a duplicate. The fix involves canceling the payslip before deletion to ensure accurate duplicate checks, preventing unnecessary warnings and improving payroll processing reliability. This ensures employees receive correct pay information.
Original PR description
### Steps to reproduce: - Create two payslips for the same employee for the same period. - Delete one of them; the duplicate warning still appears on the other payslip. ### Fix: - Before deleting a payslip, first cancel it so the current payslip can be skipped while checking for duplicate payslips. - Then trigger recompute _compute_issues for duplicates payslips task: 5427473 Forward-Port-Of: odoo/enterprise#109372 Forward-Port-Of: odoo/enterprise#104124
This update allows managers to automatically initiate appraisal campaigns for all their team members, even if they don't select individuals manually. This simplifies the process for managers and ensures all appraisals are scheduled. The change includes new tests to verify the functionality.
Original PR description
. Allow the Leader to launch an appraisal campaign for all their employees by default when no specific employees are selected in the list. task-5347755 Forward-Port-Of: odoo/enterprise#100214
This update resolves a bug that prevented users from creating new resources within appointment bookings. The issue stemmed from an incorrect timezone setting being automatically populated, triggering a validation error. The fix ensures a default timezone is applied, preventing the error and improving the resource creation process.
Original PR description
Steps to reproduce =============== 1. Open appointment of resource type 2. Create a new resource from resource tags. 3. Give the resource a name and save. ----> ValidationError will be shown. Issue…
Steps to reproduce =============== 1. Open appointment of resource type 2. Create a new resource from resource tags. 3. Give the resource a name and save. ----> ValidationError will be shown. Issue ===== When creating the new resource from the appointment form view, the value for the `tz` of the `appointment.resource` is `False`. Also, `tz` field is inherited from `resource.mixin` and is a related field as `resource_id.tz`. Therefore, when creating the `appointment.resource` with `tz` as `False` writes the related `resource.resource`'s `tz` field. As `tz` field is required field for the `resource.resource` table, the `ValidationError` is raised. Solution ======= After this commit, we give the default value to the timezone with fallback to current user's timezone or UTC which matches to the default value of `resource.resource`'s timezone field but with a side-effect of overwriting resource's timezone if somehow `default_resource_id` is provided. We also fix in parallel by making the timezone field `readonly` when invisible to avoid "saving" the `False` value for the tz. Task-5712786 Forward-Port-Of: odoo/enterprise#107662
This update resolves an issue where users were seeing duplicate labels for widget properties within the Odoo Studio. The fix involves a technical workaround to prevent the duplication of content rendered by the OWL2 framework, ensuring a cleaner and more consistent user experience. This addresses a known bug and improves the stability of the Studio interface.
Original PR description
steps: - Install Project and Studio - Open studio, add a decimal field - Click on it - There are two "Minimum Digits" instead of "Digits" & "Minimum Digits" Add dummy `t-set` nodes before `t-esc` directives in property sub-templates to prevent label content from being rendered twice. This is a known OWL bug (https://github.com/odoo/owl/issues/1610) where `t-esc` inside a named slot gets duplicated. Since the issue lies in the OWL2 framework itself, a `<t t-set="__dummy"/>` is used as a workaround to break the duplication pattern in owl2. opw-5974611 Forward-Port-Of: odoo/enterprise#109694
This update corrects a display issue where a download button remained visible for employee payslips when the 'Manually' payment mode was selected within the India Payroll localization. The fix ensures the button is hidden correctly, preventing confusion and unnecessary actions for users. This improves the user experience for employees using the India payroll system.
Original PR description
Problem ------------------ When the user selects the "Manually" payment mode in the employee payslip, there is nothing to download but the download button is still visible. Affects all companies but only when the India Payroll localization is enabled. Objective -------------------- The Payslip Payment Wizard for the India payroll localization changed the conditions to hide the download button, so when the localization is enabled, all views are overwritten and the button becomes visible for all companies when "Manually" payment mode is selected. Solution ---------------------- Add the manual payment mode to the list of conditions to hide the download button in the l10n_in_hr_payroll localization. Task: 5975685 Forward-Port-Of: odoo/enterprise#108868
This update prevents Instagram posts from failing due to delays in media processing. By using a scheduled cron job to retry publication, the system now handles temporary processing delays gracefully, ensuring posts are successfully published without impacting server performance.
Original PR description
With the current behavior the Instagram API sometimes requires time to process media containers, the media_id is not yet ready on Instagram side, leading to failed posts. To avoid this, we now use an asynchronous flow: If the media container is not immediately 'FINISHED', we store the container ID in `instagram_post_id` (prefixed with `containerIDs-`), set the state to 'posting', and trigger the scheduled cron to retry in 1 minute. The `_cron_publish_scheduled` method has been updated to detect these pending posts and resume the publication attempt so workers remain free while Instagram processes the media. opw-5081325 Co-authored-by: @ushyme Forward-Port-Of: odoo/enterprise#100313
This update fixes a display issue within the Work Order Kanban view, ensuring accurate status updates and preventing incorrect data from appearing. It also excludes subcontracted productions from the Kanban view, providing a cleaner and more focused view for users. This improves the overall usability and accuracy of work order management.
Original PR description
A few UI Fixes. Fix date_finished when setting a workorder 'in progress'. Exclude subcontracted productions from Kanban view. task: 5945452 Forward-Port-Of: odoo/enterprise#108299
This update fixes an issue where negative values were appearing in the tax report XML for carried over tax lines. The change ensures that only positive amounts are included in the XML, improving report accuracy and preventing potential errors in tax calculations. This resolves a previous bug reported by internal teams.
Original PR description
When generating the xml for tax report, negative values should not be present in the xml for carried over lines (81, 82, 83, 86, 87, and 88) Steps: - Create a RBILL for today - 1 month, add an invoice line with tax using one of the following tags: -81, -82, -83, -86, -87 or -88 in its base refund repartition line - Open the tax report on the month of the RBILL - Generate the xml, either by the dedicated button, or by creating and posting the closing entry -> there is line(s) for negative amounts opw-5955323 opw-5428395 Forward-Port-Of: odoo/enterprise#109568 Forward-Port-Of: odoo/enterprise#108916
This update fixes an issue where the softphone displayed an incorrect format for keypad keys. The system now correctly handles key data, ensuring a cleaner and more accurate display of keys in the softphone interface. This improves the user experience and visual consistency.
Original PR description
Since [1] ([IMP] voip: fine-tune the PiP window), `keypadKeys` now returns objects (`{ key, letters, icon? }`) instead of plain strings.
`onClickKeypadKey` was still handling the payload like a string in part of the flow, which caused `[object Object]` displayed in the main softphone.
[1]: https://github.com/odoo/enterprise/commit/71ad3b98f25a4eb215d4aece9f1c4cb2f5ddcc76Code cleanup and technical improvements
This update adds `.this` to template variables across several Odoo modules in preparation for a future update (OWL3). This change is necessary because OWL3 will require a specific syntax for accessing component variables within templates, ensuring compatibility and functionality.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. communtiy PR: https://github.com/odoo/odoo/pull/250843 Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables
This update modifies Odoo templates to align with OWL3 requirements, specifically by adding `.this` to template variables that target component parts. This change is a necessary preparation for the new OWL3 framework and ensures consistent functionality moving forward. It impacts several knowledge and IoT modules.
Original PR description
TODO: Double check the change of quote in `knowledge.MacrosEmbeddedClipboard` In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Community PR: https://github.com/odoo/odoo/pull/250118 Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables THIS_TARGETS = ["iap", "im_livechat", "iot", "knowledge", "link_tracker", "loyalty", "lunch"]
This update modifies Odoo templates to align with upcoming OWL3 requirements. Specifically, it adds `.this` to template variables that reference components, ensuring compatibility with the new OWL3 framework. This preparation is crucial for a smooth transition to the next version.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Script PR: odoo/odoo#247965 THIS_TARGETS = ["documents", "equity", "esg"] task: OWL3 prep - add this. to template variables
This update prepares Odoo for OWL3 by modifying template variables to correctly reference component data using `.this`. This change is necessary to ensure proper functionality with the upcoming OWL3 framework and avoids potential issues with how variables are accessed.
Original PR description
In preparation for OWL3, where template variables will need to use .this to target component variables, we add .this to template variables that are targetting the component. Script PR: https://github.com/odoo/odoo/pull/247965 task: OWL3 prep - add this. to template variables
This update prepares Odoo for the upcoming OWL3 release by updating template variables. Specifically, it adds `.this` to certain variables, which is a necessary change to ensure compatibility with OWL3's new variable targeting system. This ensures continued functionality after the upgrade.
This update prepares the Helpdesk module for a future upgrade (OWL3) by adding `.this` to template variables. This change ensures that the Helpdesk interface correctly targets component variables, preventing potential issues after the upgrade. It's a necessary step to maintain functionality and avoid disruptions.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Script PR: odoo/odoo#247965 THIS_TARGETS = ["fleet", "frontdesk", "gamification", "google", "helpdesk"] task: OWL3 prep - add this. to template variables
This update adds the `.this` syntax to template variables within several Odoo modules to align with upcoming OWL3 requirements. This change is a necessary preparation step to ensure compatibility with the new OWL3 rendering engine, preventing potential issues with how template variables access component data.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Script PR: odoo/odoo#247965 THIS_TARGETS = ["currency", "data", "digest", "delivery"] task: OWL3 prep - add this. to template variables
This update modifies Odoo's templates to align with upcoming OWL3 requirements. Specifically, it adds `.this` to template variables that reference components, ensuring compatibility with the new variable targeting method. This preparation is crucial for a smooth transition to the OWL3 environment.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Community PR: odoo/odoo#250049 Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables
This update modifies Odoo's templates to align with upcoming OWL3 requirements. Specifically, it adds `.this` to template variables that reference components, ensuring compatibility with the new variable targeting system. This preparation is crucial for a smooth transition to OWL3 and avoids potential issues with future template functionality.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Community PR: https://github.com/odoo/odoo/pull/250096 Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables THIS_TARGETS = ["hr"]
This update adds `.this` to template variables within the appointment and approvals modules to align with upcoming OWL3 requirements. This change is a necessary preparation step to ensure compatibility with the new OWL3 template engine and avoid potential issues with how variables are referenced.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables
This pull request contains a series of updates to various UI components within the Odoo Enterprise application. These changes primarily focus on improving the user experience and streamlining workflows related to bank reconciliation, financial reporting, and online transaction synchronization. The updates are largely cosmetic and aimed at enhancing usability.
This update modifies Odoo templates to align with upcoming OWL3 requirements, specifically by adding `.this` to target component variables. This change is a necessary preparation for a future update and ensures compatibility with the new OWL3 framework. It impacts several modules to maintain functionality.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Community PR: https://github.com/odoo/odoo/pull/251512 Script PR: odoo/odoo#247965 THIS_TARGETS: ["hr", "iap", "im_livechat", "iot", "knowledge", "link_tracker", "loyalty", "lunch"] task: OWL3 prep - add this. to template variables