Monday, February 16, 2026
24 changes · 19.0
Resolved issues and error corrections
This fix prevents Odoo from crashing when users in certain languages, such as Ukrainian, open records that display short formatted lists. If the preferred list format is unavailable, Odoo now falls back to a standard format so users can continue their workflow normally.
Original PR description
**Steps to Reproduce:** 1. Install `stock_fleet` module (with demo data). 2. Set the **Ukrainian** language for the user. 3. Open Fleet > Vehicle > Click Category Error: `KeyError: '2'` **Cause:** Babel's CLDR list patterns for some locales (e.g., Ukrainian 'unit-short') do not include the two-item pattern key, so when babel's `format_list` attempts to access patterns, it will raise an error. **Fix:** This commit wraps the call in a try/except that handles KeyError and retries formatting with the 'standard' style to avoid the crash. Forward-Port-Of: odoo/odoo#248519 Forward-Port-Of: odoo/odoo#248228
Point of Sale now allows change rounding rules to adapt to special payment flows, such as customer deposits. This helps avoid applying cash rounding when the payment is not actually made in cash, improving payment accuracy.
Original PR description
We extract the condition into a getter so we can override it elsewhere. For now, it is overriden in `pos_settle_order`. See below for explanation. `change` is the amount we return to the client, so it's in cash, and therefore, we always round it if `cash_rounding` is true. However, in pos_settle_order, when a client 'deposits money', the order `change` is what we get paid by that client, and he might choose a payment method different than cash (card for e.g.). We change the `shouldRoundChange` logic to count for such cases. opw-5222985
This fixes an issue in Mass Mailing where changing paragraph fonts from the Design tab did not update selected email text as expected. Email editors can now apply font choices more reliably, improving consistency in campaign design.
Original PR description
There is an issue where some editor descendants have a rule overriding their `font-family` which has more precedence than the inherited `font-family` from the Design Tab. How to reproduce: - create a new mass_mailing - add a text snippet - select all text and change e.g. the `font-size` - open the Design Tab and change the `font-family` of paragraphs Issue: - the text `font-family` does not change Resolution: Fix a css rule applying on every element that is not a `fa` element so that it only applies on the `o_layout` element to let the Design Tab override the `font-family` for specific elements (e.g. `<p>`, `<a>`, ...). task-5869568
Live chat conversations now consistently show the visitor's language in the information side panel. This helps support teams quickly understand a visitor's language context without missing details across different live chat setups.
Original PR description
**Purpose of this PR:** some livechats are missing the language in the info side panel. now we moved the code from website_livechat to im_livechat since we are fetching the same in website_livechat task-[`5487074`](https://www.odoo.com/odoo/project/1519/tasks/5487074) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The sales order report preview no longer shows the delivery date twice when using the DIN 5008 document layout. This makes printed and previewed sales orders clearer for customers and sales teams.
Original PR description
**Steps to reproduce:** 1. Install modules sale_management 2. Go to Settings, Configure Document Layout and set layout to DIN 5008 3. Create a new Sale Order 4. Set a customer, add a product, and fill in the Delivery Date (Other Info) 5. Click on Print and Preview **Issue:** The Delivery Date (commitment_date) is printed twice in the report. **Solution:** Remove duplicated Delivery Date entry from this module to avoid rendering it twice. Issues : https://github.com/odoo/odoo/issues/247522 **opw-5490651**
Resetting a customized SVG illustration color now restores the website theme palette instead of leaving the color blank. This prevents media library illustrations from disappearing, helping editors safely adjust and reset website visuals.
Original PR description
Steps to reproduce: - Insert a media library SVG illustration. - Change one of its Dynamic Colors. - Click the reset button in the colorpicker. => The SVG disappears. Before this commit, resetting a dynamic SVG color could send an empty color value and the image failed to render. After this commit, resetting restores the theme palette colors so the SVG stays visible. task-5868584 Forward-Port-Of: odoo/odoo#248092 Forward-Port-Of: odoo/odoo#245778
The Employees smart button on job positions now counts only employees from the companies currently selected by the user. This prevents inflated or confusing counts when a job is shared across multiple companies.
Original PR description
### Steps to reproduce: - Create a job for multiple companies. - Go to its configuration and click the Employees smart button. - Click the smart button and compare the employee count. ### Before/Root cause: - Currently selected companies were not considered. Instead, all companies were taken into account during the computation. ### After: - When you click on employee smart button only currently selected companies will be considered. ### Fix: - Added a domain filter to consider only the currently selected companies. task-5785245 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
On the Point of Sale ticket screen, the Review button now expands to the full width when it is the only action shown for a paid order. This makes the small-screen layout clearer and avoids an awkward half-width button.
Original PR description
Before this commit: --- - On the ticket screen in small UI, two btns are shown: Review and Load Order. - The Load Order button is only visible when the selected order is not paid. - When the order is paid, only the Review btn is shown, but it takes 50% width. After this commit: --- - When the order is paid, the Review button expands to take 100% width. task-5892189 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue where hovering over the unselect button in the website/page builder could trigger an error. This makes the editor experience smoother for users working with selectable content fields.
Original PR description
Issue: The `BuilderMany2One` component throws an undefined error when hovering over the unselect button. Steps to reproduce: 1. Create a `BuilderMany2One` component with `allowUnselect=true` 2. Hover over the unselect button 3. Error occurs Cause: `undefined` was passed when `hasPreview` is `false`, but a callback function is expected. Solution: Pass an empty callback function instead of `undefined` when `hasPreview` is false. Forward-Port-Of: odoo/odoo#248387
This fix removes unsupported editing choices from submit buttons in website forms and newsletter blocks. It helps prevent issues like accidental cloning or deletion problems and keeps the form builder interface more consistent for users.
Original PR description
*: html_builder, website_mass_mailing Prevent unsupported actions and options on form submit buttons to avoid cloning/deletion issues and UI inconsistencies. - Remove Duplicate and Remove actions from the sidebar for submit buttons (newsletter popup, forms, etc.) instead of disabling them. - Hide the animation option for submit buttons, since it is already handled in the "Button" section. - Remove the Visibility option for submit buttons. Prevent unsupported actions and options on form submit buttons to avoid cloning/deletion issues and UI inconsistencies. task-4702429
This fixes an issue in the HTML editor where certain selection actions could trigger an error and interrupt editing. The editor now handles missing selection targets safely, improving reliability for users creating or updating content.
Original PR description
Before this commit: in rectifySelection, the focusTarget can be null and causing an error when calling the previousSibling After this commit: now we do an optional chaining(?.) on previousSibling task-5481248 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248595
This update resolves an issue where users encountered an error when editing reconciled invoice lines in the Bank journal. The fix initializes necessary variables to avoid a runtime error, ensuring users can successfully adjust reconciled amounts without disruption.
Original PR description
Currently, an error occurs when user edits a reconciled line. **Steps to Reproduce([Video](https://drive.google.com/file/d/18dSAsZCl---wfCkMBfyo9LviTqgq3qpK/view)):** - Install the `Accounting`…
Currently, an error occurs when user edits a reconciled line. **Steps to Reproduce([Video](https://drive.google.com/file/d/18dSAsZCl---wfCkMBfyo9LviTqgq3qpK/view)):** - Install the `Accounting` module. - Create an `invoice` with an `invoice line` having an amount greater than zero. - `Confirm` the invoice. - Go to the `Bank journal` and create a `statement line` with the same amount as the invoice. - Click `Reconcile` on that `statement line` and select the newly `created invoice line`. - Click the `pencil icon` to edit the line, enter a `positive amount` in the Balance field, and save. `UnboundLocalError: local variable 'original_base_lines' referenced before assignment` The error occurs because, when a specific condition [1] becomes true, the variables original_base_lines and original_tax_lines are expected to be defined. However, if reconciled_lines_ids is present in move_line_to_edit, these variables are never initialized and are later referenced, causing the UnboundLocalError [2]. This commit ensures that original_base_lines and original_tax_lines are initialized to None, which prevents the error. [1]- https://github.com/odoo/enterprise/blob/fa4bbc20f25ec12c609ebbf37885e48900619de5/account_accountant/models/account_bank_statement.py#L1393-L1394 [2]- https://github.com/odoo/enterprise/blob/fa4bbc20f25ec12c609ebbf37885e48900619de5/account_accountant/models/account_bank_statement.py#L1410-L1411 sentry-7189027839 Forward-Port-Of: odoo/enterprise#104432
This update resolves an issue where the Employer File Number field was hidden in the payroll settings after installing the l10n_hk_hr_payroll_empf module. The fix removes the setting that previously obscured this important data, ensuring it's now readily accessible for payroll processing.
Original PR description
Issue: - Employer File Number was hidden in Payroll settings after installing the l10n_hk_hr_payroll_empf module. Fix: - Removed the setting that hid the Employer File Number field. task-5476454
This update fixes a translation error in the ARCA (AFIP) error message displayed when validating Argentine electronic invoices. The message has been corrected to accurately reflect the issue: that the invoice date cannot be before the last validated invoice. This ensures proper invoice processing and compliance with Argentine tax regulations.
Original PR description
WSFE error 10016-1 must be "The invoice date cannot be before the last invoice validated in AFIP." instead of "The invoice date cannot be after the last invoice validated in AFIP". Steps to reproduce: validate argentinean customer electronic invoice with invoice date before than the last invoice date validated in ARCA. Task Adhoc side: 44290 Task latam: 1376 Forward-Port-Of: odoo/enterprise#106305
This update corrects a bug where the activity menu in web_studio was displaying all records for custom models, regardless of whether they had associated activities. Now, the menu only shows records with activities assigned to the current user, ensuring a more focused and relevant experience. This improves data efficiency and user experience.
Original PR description
After commit odoo/odoo@5c5fbc10b7024c7227f03e37897d421bba64df82 , actions spawned by the activities menu have their domain managed by dynamic <filter /> rather than a plain readonly domain. Before this commit, clicking on the activity menu to go to a custom model showed every record, not just ones with activities after this commit, only records with activities assigned to the current user are showed opw-5778806 Forward-Port-Of: odoo/enterprise#106622
This update corrects a bug that occurred when KPIs shared the same label but had different identifiers. The fix ensures accurate sorting of KPIs by utilizing a more robust method within the sorting process, preventing a data comparison error. This improves the stability and reliability of KPI synchronization.
Original PR description
When two KPIs have different identifiers but the same label, the call to `sorted` on a list of (priority, label, dict) tuples was wrong. As the two first criteria were the same, the comparison was made on the dict, which is not comparable, leading to the following error:
TypeError: '<' not supported between instances of 'dict' and 'dict'
With this commit, we instead use the `key=` argument to `sorted` in order to build the `(priority, label)` tuples, which is cleaner.
OPW-[5932549](https://www.odoo.com/odoo/project.task/5932549)This update resolves a technical issue preventing successful keyboard layout changes when using Odoo's IoT device functionality. Previously, an error (traceback) occurred during this process, disrupting user workflows. This fix ensures keyboard layouts update correctly, improving the reliability of the IoT device integration.
Original PR description
Steps to reproduce: - Connect an IoT box - Connect a USB keyboard to the IoT box - In the Odoo backend, attempt to change the keyboard layout of the keyboard device EXPECTED behaviour: Layout is updated successfully ACTUAL behaviour: Traceback occurs
This update resolves an issue with how versioning was handled in the l10n_be_hr_payroll module. The fix ensures accurate tracking of updates and compatibility within the Odoo Enterprise system. This improves the stability and reliability of payroll calculations for Belgian businesses.
This update resolves an issue where Employee Officers were encountering access errors when editing employee records due to unauthorized access to salary offer data. The change restricts access to salary offers to HR Managers, ensuring data security and allowing Employee Officers to continue their work without interruption.
Original PR description
Before: - Editing an employee form as an Employee Officer triggered an AccessError due to mail tracking attempting to read salary_offer_ids on hr.version. After: - salary_offer_ids is now restricted to HR Managers, preventing unauthorized reads during tracking when saving the employee form. Impact: - Employee Officers can edit employee records without encountering access errors. - Access to salary offers remains limited to appropriate managerial roles. Task: 5404676 Forward-Port-Of: odoo/enterprise#103095
This update fixes an inaccurate count of employees with invalid bank account warnings displayed in the payroll dashboard. The issue stemmed from how multiple employee versions were handled, leading to a discrepancy in the reported warning records. The fix ensures a more precise count of employees with invalid bank accounts.
Original PR description
> note: to be r+'ed till `master` (`saas~19.2`) because the way we compute warning has been changed in `master` description: - `warning_count` for `hr_payroll_dashboard_warning_employee_invalid_bank_account` is wrong when there are multiple versions for a single employee. steps to reproduce: - install `hr_payroll_account_iso20022` - open Payroll (note: have atleast one employee with multiple versions) - find "Employees With Invalid IBAN Bank Accounts" warning on the dashboard - note the count and click on it, the record count differs fix: - returned unique employee ids from `_get_invalid_iban_employee_ids` - also optimized the query in `_get_account_holder_employees_data` method. reasoning: we do not need bank account data from all the versions, because all the versions share same bank account data. task-5407494
This update corrects a technical issue where the contract template was being unnecessarily created during salary configuration. This prevented certain calculations from running correctly. The fix ensures the template data is now correctly handled, improving the reliability of the HR contract process.
Original PR description
Writing the contract template on the new version created by the salary configurator is not necessary and caused some computes to not trigger. The contract template values are already included in the `_get_version` method. task-5324222
This update resolves a problem where the CDI - Experienced Developer (BE) contract template wouldn't save correctly. The issue was caused by an incorrectly checked inventory car field. This change removes the check, allowing users to successfully save the template.
Original PR description
Before this commit, when the CDI - Experienced Developer (BE) contract template is loaded, the inventory car is checked, but no car is selected, so you can't save. This commits unchecks the inventory car on the template to avoid this issue. Task: 5892344
This update removes the 'New' button from the DIMONA Declaration List view in the odoo/enterprise module. This simplifies the process for users to create DIMONA declarations, reducing potential confusion and improving usability. This change ensures the system operates as intended and aligns with best practices for user interface design.
Original PR description
. Remove the New button on DIMONA Declaration List view task-5471873
This update fixes an issue where the month displayed on global invoices linked to POS orders was incorrectly reflecting the creation date of the invoice, rather than the order date. This ensures accurate reporting and compliance with Mexican tax regulations, specifically for EDI POS invoices.
Original PR description
**PROBLEM** In accounting, if you create a global invoice with an invoice, the attribute `Meses` will be the month of the invoice date. In POS, if you do the same with an order, the attribute `Meses` will be equal to the month the day we create the global invoice, instead of the month of the order date. This is wrong. **STEP TO REPRODUCE** 1. Have an order from the month before (not sure how to do this on a runbot). 2. Create a global invoice. 3. Check the generated xml, and notice the month is wrong. opw-5381607 Forward-Port-Of: odoo/enterprise#107362 Forward-Port-Of: odoo/enterprise#106856