Wednesday, January 7, 2026
22 changes · 18.0
Enhancements to existing features
This update adjusts the tax names and descriptions used in Odoo for the Belgian market (l10n_be). These changes ensure accurate tax reporting and compliance with Belgian regulations. The update impacts the accounting and point of sale modules.
Original PR description
### With this commit:- - We are updating the current tax name and its description in Belgium. - Please visit the task for more reference. task-5363874
Resolved issues and error corrections
This update corrects a problem where excessively long decimal exchange rates for USD invoices were causing errors during invoice creation. The fix rounds exchange rates to two decimal places, aligning with documentation requirements and ensuring invoices are processed correctly. This prevents invoice creation failures related to currency formatting.
Original PR description
* STEP TO REPRODUCE: create USD invoice to issue sinvoice, have currency rate like 26337.9186666777 , when issue we will get error because too many decimal * SOLUTION: round exchange rate up to 2 decimal because documentation said that is maximum Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241061
This update fixes an issue where category images in the Point of Sale selector were too large and overflowing, obscuring the category names. The change adjusts the image and name proportions to ensure a cleaner, more readable display. This improves the user experience for product selection.
Original PR description
Before this commit, when a category image was too large, it would overflow and take all the space dedicated to the category name. Now we set the width of the image to 1/3 of the button and the name to 2/3, so that the image never takes too much space. task-id: 5462315 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where string values in web studio's form editor were being incorrectly displayed with extra quotes and slashes. Now, string field options are correctly formatted and saved, ensuring accurate data representation within the studio interface. This improves the usability and reliability of the form design tool.
Original PR description
Have a field widget with an option of type "string" (supportedOption meta field of the widget) In studio, change the value for that option. Before this commit, the value appeared in the input as escaped: there were supplementary quotes and slashes After this commit, the string value is correctly displayed. Forward-Port-Of: odoo/enterprise#103364
This update resolves an issue preventing Odoo from working correctly with Tailscale, a secure remote access tool. The change adds a necessary file, addressing a 'file not found' error that occurred after upgrading to version 19.1. This ensures seamless connectivity for remote users.
Original PR description
This PR adds a compatibility with Tailscale after upgrading 25_06/25_07 images to 19.1. It fixes the error ``` FileNotFoundError: [Errno 2] No such file or directory: 'tailscale' ``` Forward-Port-Of: odoo/odoo#242292
This update corrects a formatting issue in Peruvian purchase invoices and credit notes. Previously, the document number was always padded to 8 digits, while the name field wasn't synchronized. This change ensures consistent formatting across all fields, preventing data discrepancies and improving accuracy in vendor invoices and reports.
Original PR description
When creating or editing Peruvian purchase invoices/credit notes, the l10n_latam_document_number field is formatted with zfill(8) (e.g., "F01-100" becomes "F01-00000100"), but the name field was not synchronized, causing data inconsistencies between these fields. Steps to reproduce: 1. Create a purchase invoice for a Peruvian company 2. Select a document type (Factura, Boleta, or Credit/Debit Note) 3. Enter a document number like "F01-100" 4. Save the record 5. Observe that l10n_latam_document_number shows "F01-00000100" but name field may show a different format This fix ensures that after formatting the document number, the name field is synchronized with the correctly formatted value, preventing inconsistencies in vendor invoices and reports. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where grouped Kanban card heights were incorrectly displayed after recent changes to the Kanban templates. The PR simply removes a no-longer-needed CSS class, restoring the correct card heights for a better user experience.
Original PR description
Since commit https://github.com/odoo/enterprise/pull/70460 and the reworking of the Kanban templates, the h-100 class was no longer correct. This PR fixes the issue by removing this class. task-5439265
This update fixes a potential error in the POS loyalty program that could occur when reward products are archived or marked as invalid. The change ensures that loyalty rewards aren't affected by these outdated product statuses, preventing errors and improving the overall reliability of the POS system. This enhances the customer experience by ensuring rewards are consistently applied.
Original PR description
Steps: --------- - Install pos_loyalty. - Add a product to a loyalty reward’s reward product, or assign a product tag with no actual products as a reward product tag. - Archive/delete the reward product. - Open session. Issue: ---------- - A traceback appears when attempting to apply the affected reward, due to the archived/deleted or invalid reward product is being loaded in the POS. FIX: ----------- - Skip loading loyalty rewards whose reward product is archived/deleted or whose reward product tag contains no valid products. Task-5226654
This update resolves a bug that prevented users from successfully canceling the selection of an employee photo within the Salary Configurator. The fix ensures the system correctly handles image uploads and cancellations, improving the user experience. This prevents errors and ensures consistent functionality.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Install the hr_contract_salary module. - Go to Employee contract and click the Generate Offer. - Click on 'Send By Email' button and open Salary Configurator. - Upload an employee photo the first time. then cancel the image selection the second time. **Issue:** - Error occurs when canceling the image selection on Salary Configurator page. **cause:** - The condition to check whether the file exists properly was missing. **solution:** - Added the missing condition to properly check that file exist. Task-5423390 Forward-Port-Of: odoo/enterprise#102410
This update fixes an issue where the 'Out of Contract' duration was incorrectly calculated, leading to inaccurate reporting. The change ensures that contract overlap dates are constrained to align with the payslip period, providing more reliable payroll data. This improves the accuracy of employee time and cost reporting.
Original PR description
Steps to Reproduce: 1. Create a contract ending early in the year (e.g., February). 2. Compute a payslip for a much later period (e.g., November). 3. The "Out of Contract" line shows an excessive number of days (counting from Feb to Nov). Reason: - If a contract ends before the payslip period, it adds all days from the end of the contract until the end of the payslip period as "Out of Contract", ignoring the payslip start date. - If a contract starts after the payslip period, it adds all days from the payslip start date until the contract start date, ignoring the payslip end date. Solution: Constrain the calculated "Out of Contract" dates using `max()` and `min()` to ensure they never exceed the payslip's `date_from` and `date_to`. Task: 5350519 Forward-Port-Of: odoo/enterprise#100700
This update fixes a potential confusion in the sales details report by ensuring payment order is consistent and reliable. The report now sorts payments by method and session, making it easier for users to understand sales transactions and improve reporting accuracy. This addresses a previous issue where payment order was inconsistent.
Original PR description
Before this commit, payment order was not guaranteed and could confuse users reviewing sales details report, especially as the cash register lines are ordered before. This commit orders the results by payment method and session to make the output more readable. opw-5240864 Forward-Port-Of: odoo/odoo#237040
A customer modified their Gift Card and E-Wallet products to use stock, creating a potential inconsistency in our inventory tracking. This change was addressed by marking these products as ‘noupdate’ to prevent them from reverting to their original service-type status. This resolves a specific customer issue and highlights a need for a more general solution.
Original PR description
The customer changed the service-type products “Gift Card” and “E-Wallet” to storable products and used them in stock. May be they could use as physical gift cards, and physical e-wallets for company. As a result, these products now have on-hand quantities, which creates an issue. After the upgrade, they will be converted back to service-type products, causing an on-hand quantity inconsistency in the test case. To avoid this error, we need to keep these products as storable. TO do that we have to mark them noupdate. This is a customer-specific change, but since we have received many similar requests, we should consider making a generic fix if possible. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237517
This update adjusts a timeout setting in the SMTPD tests, preventing false failures and reducing the need for manual intervention. Previously, a very short timeout caused tests to frequently fail, leading to delays in the development process. Increasing the timeout allows the tests to complete successfully, improving overall system stability.
Original PR description
There are multiple cases where the SMTPD tests fail due to a timeout error. It is much worse to get a red runbot due to a silly timeout than to sometime wait a bit longer than .1 second. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242214
This update resolves an issue where setting an invalid video link in the 'website_slides' module would cause a system error. The fix ensures that the system gracefully handles incorrect links, preventing disruptions to course displays. This improves the user experience and stability of the online learning platform.
Original PR description
When a user sets an invalid video link for a slide, a traceback occurs. Steps to reproduce the error: - Install ``website_slides`` module with demo data - Go to Website > Courses > Open Taking care…
When a user sets an invalid video link for a slide, a traceback occurs. Steps to reproduce the error: - Install ``website_slides`` module with demo data - Go to Website > Courses > Open Taking care of Trees course - Add Content > Video > Add valid video link (ex. https://www.youtube.com/shorts/SXHMnicI6Pg) > Save and Publish > Delete - Repeat above step - Add content > Video > Add any text in video link > Save and Publish Traceback: ```py AssertionError: Could not find all values of slide.slide(12,) to flush them ``` https://github.com/odoo/odoo/blob/7bbfb207f8699973f8580ea18821f82b1a83e149/addons/website_slides/controllers/main.py#L1363-L1372 New record is created using ``new()`` to fetch external metadata for the slide. This record only exists in memory and is not stored in the database. When the video link is invalid, ``video_source_type`` is False, and the code attempts to ``unlink()`` the slide. Unlinking the record triggers field recomputations, and it will lead to the above error when flushing the new record. ref: https://github.com/odoo/odoo/commit/71233fa2cb8984b65f8e7ac55405fdbc054756a0 sentry-6964031088 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects an issue where invoice data sent to the SInvoice system was incomplete, specifically missing line descriptions and unit information. The fix ensures that all relevant line details, including descriptions and defaulting to 'Units', are accurately transmitted, improving data consistency and compliance.
Original PR description
Currently, the item name in the data sent to the SInvoice system is comprised only of the product name on the line. This brings a few issues that should be corrected: - Any description set on the line on top of the product won't be sent - If there is no product, the required item name will be set to False - If there is no product, the required unit name will be set to False too To fix these issues, we will: - Use the line name directly and not the product name and; - Default to 'Units' for the unit name in all cases where it wouldn't be set. task-5438691 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where users without administrator permissions would encounter an error when attempting to open duplicated reports in Studio. The fix prevents the error by handling permission issues during the report loading process, ensuring a smoother experience for all users.
Original PR description
When a user opens a duplicated report in Studio after their administrator rights are removed, a traceback is raised. Steps to reproduce the error: - Install ``account`` and ``web_studio`` - Login as…
When a user opens a duplicated report in Studio after their administrator rights are removed, a traceback is raised. Steps to reproduce the error: - Install ``account`` and ``web_studio`` - Login as Mitchell Admin > grant Administrator and Invoicing Administrator rights to Mark Demo - Login as Mark Demo in incognito tab > Open invoices > Open studio > Reports > duplicate any report - Login as Mitchell Admin, remove administrator right of Marc Demo - In Mark Demo, Open the duplicated report Traceback: ```py UnboundLocalError: cannot access local variable 'studio_view' where it is not associated with a value ``` https://github.com/odoo/enterprise/blob/58dc97cb5a7185dc2acd801bb3af0e6c35add0b6/web_studio/controllers/report.py#L379 The bug occurs because ``_get_and_write_studio_view()`` method performs a search on ``ir.ui.view`` before returning ``studio_view``. For users without the required permissions, this ``search()`` raises an AccessError. https://github.com/odoo/enterprise/blob/58dc97cb5a7185dc2acd801bb3af0e6c35add0b6/web_studio/controllers/report.py#L393-L400 Since this exception is raised before the assignment completes, the local variable ``studio_view`` is never bound. However, the finally block of ``deactivate_studio_view`` is always executed and attempts to access ``studio_view.active``, resulting in an ``UnboundLocalError``. sentry-7149350379
This update corrects a technical issue in the Odoo accounting system that previously caused errors when creating multiple payments at once. The fix ensures the system correctly identifies and handles duplicate payment attempts, improving stability and preventing data creation failures.
Original PR description
…when creating multiple records without IDs Description: This PR addresses an issue in the _compute_duplicate_payment_ids method that occurs when computing duplicates during the creation of multiple records that do not yet have assigned IDs. Problem: The _fetch_duplicate_reference method references self instead of self[0] when assigning the values. This causes a failure when multiple records are being created simultaneously, as self refers to all records instead of just the first one, leading to unexpected behavior. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a random error in how Odoo validates financial formulas. Previously, the validation process could incorrectly flag correct formulas as invalid due to an issue with how tokens were processed. Sorting the tokens ensures a consistent and accurate check, guaranteeing that formulas are always correctly evaluated.
Original PR description
…me tokens greedily Fixes issue https://github.com/odoo/odoo/issues/241004 Description of the issue/feature this PR addresses: This is a hard to reproduce bug becase it depends in what order the set…
…me tokens greedily Fixes issue https://github.com/odoo/odoo/issues/241004 Description of the issue/feature this PR addresses: This is a hard to reproduce bug becase it depends in what order the set is iterated. Since the set is an unordered structure, this bug will happen just sometimes. The issue is this: The _check_formula in this module iterates over tokens to check if the formula only includes allowed tokens or numbers. This check passes when the set is iterated in a way that the token '>=' appears before the '>' token. But if it is the other way around, the check fails. This is because the way the tokens are consumed in the for; if the '>' is before the '>=', the '>' token will be consumed, the position will be advance one position forward and the next character found will be just the '=' character. This is not an allowed token and the check fails. The way to solve this is to sort the set by length of the token, from longest to shortest. This assures a greedy consumption of token, which is what is needed to avoid this bug. Current behavior before PR: The _check_formula randomly marks a correct formula as malformed Desired behavior after PR is merged: Using >= or <= should never cause a formula to be marked as malformed --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update streamlines how Odoo handles database changes, preventing potential issues where pre-commit hooks needed manual flushing. By letting the ORM manage flushing automatically, this change enhances database stability and reduces the risk of errors. This aligns with our ongoing efforts to improve Odoo's reliability.
Original PR description
In the existing implementation sometimes precommit hooks need to flush manually because they are ran after the flush is executed in the cursor. A precommit that triggers ORM changes may be not flushed unless it is done explicitly, however an explicit call may turn into an infinite loop. This removes the need to flush in precommit hooks and let the ORM handle it safely. Flushing of the environment was already done in #220379. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a bug where archived products could be accidentally sold through combo orders in the Point of Sale (PoS) system. Now, archived products are automatically excluded from combos, ensuring accurate inventory and preventing incorrect sales. This improves the reliability of PoS operations.
Original PR description
Before this commit, when a product used in a combo was archived, it was still possible to sell it through the combo in the PoS. After this commit, archived products are excluded from combos, preventing them from being sold inadvertently. opw-5180301 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233930
This update resolves a visual inconsistency in Odoo reports. Previously, long company taglines would push the address off-screen when generating PDFs, leading to a mismatch between the preview and the final printed report. Adding a width constraint ensures taglines wrap correctly, maintaining a consistent and professional report layout.
Original PR description
In the report when a company_tagline is long it offsets the address outside of the visible area but only in PDF. This creates a mismatch between the preview and the PDF rendering, creating unpredictable behavior. Adding a width ensures the tagline wraps instead of pushing the address out. task-5367661 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a warning message that appeared during payment token searches. The change adds a field to the payment token model to ensure accurate searching by name, preventing the warning and improving the stability of the payment processing system. This ensures consistent and reliable search functionality.
Original PR description
address this warning: `2026-01-07 04:53:23,985 3407309 WARNING v18c_... odoo.models: Cannot search on display_name, no _rec_name or _rec_names_search defined on payment.token`