Wednesday, February 11, 2026
11 changes · saas-18.3
Resolved issues and error corrections
A previous issue prevented users from printing bank statements from certain journal entries, resulting in an access error. This update corrects a technical problem where the system was incorrectly accessing bank statement data, now allowing users to reliably print bank statements from the Accounting Dashboard.
Original PR description
In Bank Statement list view users may select a statement and download a pdf report. However, currently, the load of extra print options may raise an error. Steps to reproduce: - In Accounting Dashboard, from a bank journal card, 3 dots > Statements - Select a line (it needs to have an id not present in `account.move`) - Click 'Print' button Issue: Access error may occur, stating the record has been deleted or it is inaccessible. This happens because backend method `get_extra_print_items` is called on `account.move` with the id of the `account.bank.statement` On accessing the record fields we get the error A solution is to avoid loading extra print item with loadExtraPrintItems if we are not in the `account.move` model opw-5500506 Forward-Port-Of: odoo/odoo#246292
This update resolves a random issue where editing the website's mega menu caused errors. The fix ensures the system waits for related processes to complete before making changes, preventing conflicts and ensuring a smoother user experience. This improves website stability and reduces potential disruptions for users.
Original PR description
The test `test_31_website_edit_megamenu_big_icons_subtitles` is failing randomly and more often with watch=True When selecting the link, `_updateRightPanelContent` is called, which in turns calls `_closeWidgets`. We should wait for that call to be finished before interacting with the sidebar. When the widgets are closed, the active class is removed from `Big Icons Subtitles´. It is already too late because we already changed the MegaMenuLayout option. Since nothing changes inside the DOM, we need to wait a certain amount of time before proceeding. runbot-163061 Forward-Port-Of: odoo/odoo#219942
This update ensures that UBL BIS3 files generated by Odoo are valid according to PEPPOL standards. Previously, these files were rejected due to missing buyer and seller electronic addresses. Now, Odoo automatically enforces these address requirements, streamlining the UBL file generation process.
Original PR description
If EndpointID is not set, the generated file is invalid due to the 2 following rules: [PEPPOL-EN16931-R010] Buyer electronic address MUST be provided. [PEPPOL-EN16931-R020] Seller electronic address MUST be provided. Since this is a configuration issue, there is no point of sending such files to be rejected right away. Instead, let's add those 2 contraints ODOO-side. task-5890887 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246961
This update resolves an issue where the ribbon on Kanban cards was misaligned when the ALT key was pressed. The fix prevents a CSS rule from creating a stacking context that caused the ribbon to shift. This ensures the ribbon remains correctly positioned on the card for a consistent user experience.
Original PR description
The CSS rules of `.o_record_selection_available` are used to add a selection overlay on kanban cards. These rules relied on `filter: brightness()` to slightly dim all child elements when pressing `ALT`. However, using filter creates a new stacking context. As a result, when a ribbon is present, it no longer sticks to the card border and becomes misplaced. This commit updates the rules to avoid that behavior and keep the ribbon correctly positioned. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247985
This update fixes a problem where browser translation plugins were incorrectly replacing editable text with translated versions, disrupting the auto-save feature. By adding a 'no-translate' attribute to editable fields, this change ensures that original content remains intact and the auto-save process functions correctly.
Original PR description
Browser translation plugins were altering editable content by replacing the original content with translated versions, which caused issues when paired with auto-save. To prevent this behavior, the attribute `translate="no"` has been added to editable fields. task-5485078 Forward-Port-Of: odoo/odoo#247827
This update resolves an issue where the Stock Forecasted report continued to display incorrect stock quantities after a draft repair order was deleted. The fix ensures that related stock moves are properly cancelled when a draft repair order is removed, providing accurate stock reporting for repair orders.
Original PR description
**Steps to reproduce:** * Install the *repair* module. * Create a *storable product* and set some **On Hand** quantity. * Go to *Repairs* and create a new **Repair Order**. Keep the repair order in…
**Steps to reproduce:** * Install the *repair* module. * Create a *storable product* and set some **On Hand** quantity. * Go to *Repairs* and create a new **Repair Order**. Keep the repair order in *draft* state (do not confirm). * In the **Parts** tab, add the storable product with the operation type set to *Add*. * Open the **Stock Forecasted** report for the added product. Note the quantity shown under *Outgoing Draft Transfer*. * Delete the **Repair Order**. * Open the **Stock Forecasted** report for the same product again. **Observed behavior:** * The quantity still appears in the **Stock Forecasted** report under *Outgoing Draft Transfer* even after the repair order is deleted. **Cause:** * Deleting a draft repair order triggers `_unlink_except_confirmed`. * This method prevents related stock moves from changing their state to cancel when the repair order is deleted. * The *Outgoing Draft Transfer* value is calculated as the sum of quantities of stock moves in draft state at draft state. https://github.com/odoo/odoo/blob/75ca0fec9a0d3b1e3a05a8bf3101bbe21846ac7a/addons/stock/report/stock_forecasted.py#L49 https://github.com/odoo/odoo/blob/75ca0fec9a0d3b1e3a05a8bf3101bbe21846ac7a/addons/stock/report/stock_forecasted.py#L90 * As a result, deleting a draft repair order leaves related stock moves in draft state, causing them to appear under *Outgoing Draft Transfer* https://github.com/odoo/odoo/blob/20d96c54b795b8d617776afe9877fb5c6632c666/addons/repair/models/repair.py#L332-L335 **Fix:** * Ensure that related stock moves are properly cancelled when a draft repair order is deleted. --- opw-5449323 Forward-Port-Of: odoo/odoo#247348 Forward-Port-Of: odoo/odoo#241970
This update resolves a sporadic error that occurred during testing of the barcode dialog feature. The change ensures the view is fully re-rendered before the test runs, making the test results consistent and reliable. This improves the stability of the barcode dialog functionality.
Original PR description
This commit ensure to await the view to be correctly re-rendered. runbot-error-233551 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246523
This update prevents a crash that occurred when using the budget filter in accounting reports. The issue stemmed from incorrect assumptions about required data columns, leading to errors when the report configuration was incomplete. The fix adds a safety check to gracefully handle missing columns, ensuring the budget filter functionality works reliably.
Original PR description
**Steps to reproduce:** * In **Accounting**, create a new accounting report. * Set **Root Report** to **Profit and Loss**. * Add a report line with **Figure Type = Percentage**. * set **Computation…
**Steps to reproduce:** * In **Accounting**, create a new accounting report. * Set **Root Report** to **Profit and Loss**. * Add a report line with **Figure Type = Percentage**. * set **Computation Engine = External Value** and **Formula = 0** on report line. * Add a report column with **Figure Type = Monetary**. * Create a menu item for the report. * Open the report and click **Budget**. * Create a new budget filter and click **Create**. **Observed behavior:** * The system crashes with `TypeError: 'NoneType' object is not subscriptable`. * The error occurs while accessing budget column values. **Cause:** * Budget comparison logic assumes required budget columns always exist. * When the report configuration lacks compatible budget columns, internal variables remain unset and are accessed anyway. **Fix:** * Add a safety check to skip budget comparison when required columns are missing. * Prevents the crash and allows budget filters to be created safely. opw-5357339 Forward-Port-Of: odoo/enterprise#104162
This update resolves an error that occurred when saving settings in branch companies using the Guatemalan localization. The system was incorrectly flagging a required field as empty, even when no changes were made. This change ensures the field is only required for the main company, improving usability for branch operations.
Original PR description
Currently, saving the General Settings in a branch of a Guatemalan company raises a "Missing required field" error for the 'Service Provider' field (`l10n_gt_edi_service_provider`), even if no…
Currently, saving the General Settings in a branch of a Guatemalan company raises a "Missing required field" error for the 'Service Provider' field (`l10n_gt_edi_service_provider`), even if no changes were made. ### **Steps to reproduce:** 1) Install `l10n_gt_edi` and switch to a GT company. 2) Create a branch of the GT company. 3) In the parent company, go to Accounting Settings, set the Guatemala Localization to 'Demo', and save. 4) Switch to the branch company. 5) Open Accounting Settings and click Save. ### **Observed Behavior:** An error occurs because `l10n_gt_edi_service_provider` is empty but required. ### **Root Cause:** The `l10n_gt_edi_service_provider` field is marked as `required` whenever `country_code == 'GT'` (see[1]). However, the field is hidden in branch companies via the `invisible="not l10n_gt_edi_is_root_company"` domain on the settings block. Because the field is required but empty (and invisible to the user), the form validation fails. [1]- https://github.com/odoo/enterprise/blob/6f3265aad51a264bee754ca239e8a5019487b38c/l10n_gt_edi/views/res_config_settings_views.xml#L19-L22 ### **FIX:** Update the `required` domain to include `l10n_gt_edi_is_root_company`. This ensures the field is only mandatory in the root company where it is actually visible and configurable and also set the `l10n_gt_edi_service_provider` for branch company same as parent company. **opw-5385819** Forward-Port-Of: odoo/enterprise#106323
This update incorporates new statistical trade codes (2026) to align with European reporting requirements. These codes, sourced from official Belgian statistics, ensure Odoo Enterprise accurately reports international trade data for compliance purposes. This change improves the accuracy of business reporting related to foreign sales and purchases.
Original PR description
This commit adds 2026 codes based on https://www.nbb.be/en/statistics/foreign-trade/nomenclature-and-codes opw-5504187 Forward-Port-Of: odoo/enterprise#106896
This update addresses a problem with report testing related to a temporary change in how dates are handled. The fix skips tests specifically when using a 'faketime' build, ensuring reports function correctly in the current environment. Future updates (19.2+) will resolve this issue with a different filter implementation.
Original PR description
Faketime doesn't integrate well with our current version of the report date filter. JS date is not frozen, so the filter misbehaves. It's working OK for all other builds. Future versions (19.2+) will probably have another version of the filter which should have a different implementation, solving the problem in another way. Reworked and backported from: odoo/enterprise#101689 Runbot error [link](https://runbot.odoo.com/odoo/error/234624) runbot-234624