Daily updates from Odoo
Thursday, March 5, 2026
26 changes · master
New functionality added to Odoo
This update incorporates the Central Bank of Uzbekistan as a source for live currency rates. This change ensures Odoo can accurately reflect the current exchange rates for transactions involving Uzbekistan, complying with local regulations and improving financial reporting. It's a necessary step to support business operations in Uzbekistan.
Original PR description
## Description of the issue/feature this PR addresses: This PR adds the Central Bank of Uzbekistan as a provider for currency update task-id - 5917344 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#108059
This update adds the ability for helpdesk team administrators to upload an image to their team's profile within the Odoo Enterprise website. This enhancement improves team identification and visual organization within the helpdesk interface, making it easier to manage and recognize different support teams.
Original PR description
Added an image field to the helpdesk team when the web form is selected --- Task-4349012
This update adds a new list view for audit reports, allowing users to easily manage and delete multiple records at once. This streamlines cleanup processes and significantly reduces the time spent managing large volumes of audit reports, improving efficiency.
Original PR description
This PR adds a list view for the `audit.report` model to enhance record management. With this new view, users can see multiple audit reports at once and perform bulk deletions, streamlining cleanup operations and significantly reducing the time needed to manage large sets of records. Task-5902500
Enhancements to existing features
This update speeds up testing for the Stock Barcode module by moving company setup steps to a dedicated setup class. This reduces test execution time, particularly when testing related modules like Sale Timesheet, improving overall development efficiency. The change addresses a slow test setup process that was impacting development timelines.
Original PR description
TestBarcodeClientAction [setup is quite slow](https://runbot229.odoo.com/runbot/static/build/102958171-master/tests/profile/profile_2.html#localProfilePath=1), especially because it creates a company. In addition in all classes extending this one, we spend at least 6 minutes on this line. (when testing sale_timesheet -> !stock_barcode_mrp_subcontracting) This commit proposes to move at least the company creation in a setupclass. It would be great to move all the setup in the setupclass but the tests are failling when doing so and could be achieved by a member of the stock_barcode owner team. Tests based on this setup should be a few minutes faster with this change. Forward-Port-Of: odoo/enterprise#109509
This update simplifies the user interface by standardizing the term 'Audit Report' to 'Annual Report'. Previously, the use of both terms created confusion for users. This change improves clarity and user experience within the Enterprise module.
Original PR description
The user interface currently uses both the terms "Audit Report" and "Annual Report", which can be confusing for users. To eliminate this confusion, "Audit Report" will be renamed to "Annual Report". Task-5902500
This update enhances the way invoice activity summaries are generated during test runs. Specifically, the summary now automatically reflects the activity type, improving test accuracy and consistency. The changes also optimize database queries to reduce load, particularly during initial data access.
Original PR description
- When a recurring document request is created summary will be the name of the activity_type_id as per the new implementation here in this testcase. Added the default summary to the activity_type_id so that it will be taken in to account. - Cleaned the occurences of _onchange_activity_type_id as now we are using the stored/computed fields. - Increased query count as the field is stored computed, which will add an extra query to get field value when not present in cache for the first time when accessing them. Here, note field seems missing from cache, so it is being fetched from the database when `message_activity_done` template tries access it. Task-5269655
This update simplifies the payslip list view by removing redundant buttons and improving the user experience. The 'Compute' button now appears only when a payslip is in draft status, and the multi-selection behavior prioritizes actions based on the payslip's state, making it easier for users to manage payroll data. The tour has also been updated to reflect the new button functionality.
Original PR description
-* hr_payroll_account - Remove Confirm button from payslip list view since it duplicates Validate. - Remove Compute and Confirm buttons from the Action menu. - Show Compute button only when payslip is in draft state. - Improve multi-selection behavior in list view: when multiple states are selected, apply buttons by state priority: draft > validated > paid. - Update the tour to click the Validate button instead of Confirm. task-5456180
Resolved issues and error corrections
This update ensures that product weights sent to the Sendcloud shipping API are always at least 0.001. Previously, weights below this threshold caused errors, preventing shipments from being processed correctly. This change improves the reliability of our shipping integrations with Sendcloud.
Original PR description
The Sendcloud API do not allow parcel details to have a weight value less than 0.00099 . This commit makes sure the products weights are at least 0.001. ref: <img width="1850" height="689" alt="image" src="https://github.com/user-attachments/assets/10242315-3c4d-4670-b77d-8cb429e00891" /> Forward-Port-Of: odoo/enterprise#107676
This update corrects a minor display issue in the accounting dashboard. Previously, the 'Reconnect Bank' button was incorrectly shown for accounts without an expiration date due to a technical detail in the code. Now, the button only appears when an expiration date is present, ensuring a cleaner and more accurate user interface.
Original PR description
The aim of this commit is fixing the behavior of Reconnect bank button in accounting dashboard. Before this commit, a synchronization without any expiring date will always show the Reconnect bank button in the accounting dashboard because the expiring due days (in the JS widget) is null and not undefined. This condition led to check the second part of the condition where null <= 0. Which is true in javascript. Now, we are checking the type of expiring due days as first condition, if it's not a number, we don't check the second part of the condition, and then we don't display the Reconnect Bank button. no task id Forward-Port-Of: odoo/enterprise#109414
This update fixes a limitation where managers needed a specific group to access their team's voip call records. By changing the access rule to the standard 'group_user' group, all managers now automatically have access, simplifying permissions and improving usability. This ensures consistent access for managers across the organization.
Original PR description
voip_hr defines a record rule that gives managers access to their subordinates' voip.call records. However, this rule is linked to the group 'hr.group_hr_user', which is not granted to all managers. This commit links the rule to the base.group_user group instead, so that all managers can access their subordinates' records without the need for an additional group. [Task-5363640](https://www.odoo.com/odoo/project/5778/tasks/5363640). Forward-Port-Of: odoo/enterprise#100691
This update resolves a problem preventing the correct generation of CSV reports for Peruvian accounting modules. The fix addresses an incompatibility with a recent Python update, ensuring reports are created consistently. Removing unnecessary configuration steps improves efficiency and stability.
Original PR description
Revealed when l10n modules got enabled on the "distro builds" nightly: on Trixie, `delimiter="|", lineterminator='|\n'` raises ValueError: bad delimiter or lineterminator value This is due to…
Revealed when l10n modules got enabled on the "distro builds" nightly: on Trixie, `delimiter="|", lineterminator='|\n'` raises
ValueError: bad delimiter or lineterminator value
This is due to python/cpython#113797 which added new validations to dialect definitions. For this issue, that the delimiter can not be in the line terminator. This can be fixed via a different trick, which is documented:
> The optional `restval` parameter specifies the value to be written
> if the dictionary is missing a key in `fieldnames`.
so if we add a trailing fieldname which *can not* be found in the row dicts, then `DictWriter` will always write out an empty trailing cell (the default `restval` is an empty string), which should result in the same output.
Also remove the `csv.register_dialect` calls, that's so subsequent CSV calls can easily refer to a common configuration but here two different dialects are being registered under the same name, and each one is only used for the following `DictWriter` call, so at best this is a complete waste of time and at worst this is a race condition in threaded configurations. Just pass the formatting parameters directly to the `DictWriter`.
https://runbot.odoo.com/odoo/error/240950
Forward-Port-Of: odoo/enterprise#109437
Forward-Port-Of: odoo/enterprise#109081This update improves the Gantt editor's functionality by allowing all integer fields within a model to be used for color selection. Previously, only fields directly visible in the editor's view were selectable. This change provides greater flexibility for visualizing project data within the Gantt chart.
Original PR description
Before this commit, only fields already present in the view were selectable for the color field in the gantt editor. After this commit, all int fields of the model are available task-5981029 Forward-Port-Of: odoo/enterprise#109189
This update resolves an issue where approval rules for account moves incorrectly kept list view actions active. The change ensures that when an approval rule is applied to an account move, the associated list view action is automatically deactivated, streamlining the approval process and preventing unintended actions. This improves the reliability of the approval workflow.
Original PR description
Following commit odoo/odoo@c442f72479b50855f40ba079800ee9e5a5690753 When putting an approval rule action_post (account.move) the action bound to the list view must be deactivated. opw-5921128 Forward-Port-Of: odoo/enterprise#106853
This update resolves a technical issue where tests were failing due to how keyboard events were being handled within the Odoo system. The fix ensures that test environments are properly cleaned up, preventing potential memory leaks and improving the stability of the application. This primarily impacts the user experience by ensuring consistent and reliable test results.
Original PR description
Adapt tests failing due to keydown events being applied to the current active element. Community: https://github.com/odoo/odoo/pull/247137 Forward-Port-Of: odoo/enterprise#109386 Forward-Port-Of: odoo/enterprise#107286
The Activity Logs report was incorrectly appearing in the Sign Template list view, causing errors. This update corrects a misconfiguration in the report's model settings, ensuring it now displays correctly within the Sign Request view. This resolves a technical issue that prevented users from accessing the report.
Original PR description
Version: - saas-18.2 Issue: - The "Activity Logs" report was showing in the Sign Template list view. When clicking it, a traceback occurred because the report tried to read a `sign.request` record from a `sign.template` context. Cause: - The report model was set to `sign.request`, but the`binding_model_id` was set to `model_sign_template`. - This mismatch caused the report to appear in the wrong place. Solution: - Updated the `binding_model_id` to `model_sign_request` so the report now appears in the Sign Request view, which matches the report model and prevents the error. task-5984137 Forward-Port-Of: odoo/enterprise#109171
This update corrects a test case in the quality control module to reflect a recent change in how stock movements are merged within Odoo. Specifically, the test now accurately reflects the requirement that a new stock movement only merges with an existing one if a 'stock reference' is present. This ensures the quality control process aligns with the latest system functionality.
Original PR description
Fix the test case to align with the updated picking move merge behavior, where the next transfer merges into an existing one only when a stock reference is set TaskID-5242340 Forward-Port-Of: odoo/enterprise#109538 Forward-Port-Of: odoo/enterprise#99342
This update fixes an issue where time formatting was inaccurate, particularly with rounding. It now correctly formats time values in list and graph views, aligning with the standard DateTime widget behavior and allowing for more flexible time display options.
Original PR description
The rounding of time was not correct. I was always flooring, but before the new duration the rounding was depending of the precision of the duration. The rounding has been restored as before and put…
The rounding of time was not correct. I was always flooring, but before the new duration the rounding was depending of the precision of the duration. The rounding has been restored as before and put in formatDuration. formatFloatTime has been modified to use formatDuration and now take the same options (specify the unit of time of the value). The graph view and list view didn't extract the otpions from the fields with widget. Now, they get the options and give them to the formatter. The widget was showing the seconds by default, but it doesn't match with the behavior of the DateTime widget. It has been changed and now the seconds are shown only if the options 'showSeconds' is true and it's false by default. The impacted views has been restored as before the original commit. The options of float_time widget couldn't take falsy values, now it can. an improvment has also been done: the popover on the float_time widget doesn't show up if the input value and the formattedValue are the same. followup of TASK-5347051 Forward-Port-Of: odoo/enterprise#108072
This update fixes a bug where the cash drawer wasn't opening when the cash details popup was accessed in the Italian Point of Sale (POS) system. The issue was resolved by ensuring the cash drawer opening function is called correctly. Now, opening the cash details popup consistently triggers the cash drawer to open, as it should.
Original PR description
When opening the cash details popup the cash drawer should be opened. It was not the case for the Italian fiscal printer. Steps to reproduce: ------------------- * Setup a Italian fiscal printer with cash drawer support * Open PoS * Open the cash details popup > Observation: The cash drawer does not open * Try to close the PoS session * Open the cash details popup > Observation: The cash drawer opens Why the fix: ------------ The cash drawer opening function was simply not called opw-5391094 Forward-Port-Of: odoo/enterprise#109278 Forward-Port-Of: odoo/enterprise#107987
This update fixes an issue in the barcode picking interface where adding multiple extra products triggered a repetitive confirmation dialog. Now, the dialog opens only once and dynamically updates, allowing users to easily select or deselect products before confirming the addition, streamlining the picking process.
Original PR description
When adding extra products in the barcode picking interface, the confirmation dialog did not handle correctly the scan of multiple extra items. Before: Scanning multiple extra products successively opened (mutex + promise) the dialog multiple times. The user had to confirm/cancel each extra product addition one by one. After: The dialog is now only opened once and updated when scanning multiple extra products before confirming. The user can select/deselect the extra products to add before validating. [opw-5193269](https://www.odoo.com/odoo/project/49/tasks/5193269) Forward-Port-Of: odoo/enterprise#108810 Forward-Port-Of: odoo/enterprise#104932
This update ensures that timesheets automatically reflect whether a task or project is billable. Previously, the system didn't correctly associate billable status with the selected project or task within the Timesheet Assistant. This fix ensures accurate billing records for time spent on projects and tasks.
Original PR description
Steps to reproduce: - Open Timesheet Assistant - Add new Timesheet - Choose a project or task so so_line of timesheet become True - is_billable is still False Source of the bug: - compute_is_billable was missing depends decorator task-5956059 Forward-Port-Of: odoo/enterprise#109141 Forward-Port-Of: odoo/enterprise#108295
This update resolves a minor issue within the account reports testing suite. The fix ensures that a specific test tour related to audit trails is correctly executed, improving the reliability of our reporting tests. This ensures consistent and accurate reporting functionality.
This update fixes an issue where document fields referencing related records weren't correctly identified. The change ensures that Odoo accurately represents and manages relationships between documents and other data, leading to more reliable data and improved system performance. This primarily impacts how documents are linked to other modules within Odoo.
Original PR description
See https://github.com/odoo/odoo/pull/196498
This update aligns the subscription checkbox label to the left within the product template form. This change improves the visual clarity and user experience of the subscription setup process, making it easier for users to understand and complete their subscriptions.
Original PR description
task-6007762
This update fixes a potential error in the Time Off Overview feature that could cause the system to crash if a user lacked specific permissions. The change uses 'optional chaining' to prevent errors when accessing data, ensuring a more stable and reliable user experience.
Original PR description
In hr.leave.report.calendar the work_entry_type_id field has a group group_hr_holidays_user and if the user doesn't have access this group it would lead to a traceback because work_entry_type_id in hr_holidays_gantt_popover will be undefined and we try to access one of its properties. This commit adds optional chaining to protect against this scenario. task-5940200
Code cleanup and technical improvements
This update adds the necessary `.this` syntax to template variables across several Odoo modules to align with upcoming OWL3 requirements. This change is a preparatory step for a larger upgrade, ensuring compatibility with newer features and improving the way components are referenced in templates. It primarily impacts modules like Marketing Automation, Quality Control, and Room Booking.
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 THIS_TARGETS = [quality,room,marketing_automation] task: OWL3 prep - add this. to template variables
This update prepares Odoo for a future upgrade (OWL3) by automatically adding the `.this` syntax to template variables. This change ensures that variables referencing components will work correctly with the new syntax, preventing potential issues with future updates. It’s a proactive step to maintain compatibility.
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 THIS_TARGETS = [purchase,resource,repair,rpc,rating] task: OWL3 prep - add this. to template variables