Friday, September 12, 2025
28 changes · master
Enhancements to existing features
The Accounting Reports area now again offers access to financial budget records, but only when debug mode is enabled. This helps administrators and support teams inspect or import budget data without adding clutter for everyday users.
Original PR description
This menuitem was removed with the idea to clean the view, but we now have second thoughts. Having a means to access a tree view of those objects is interesting for debugging purposes and in order to import them. We now put in debug mode only, though. Forward-Port-Of: odoo/enterprise#94155
This update refreshes Belgian payroll demo data and related setup so it better supports the “Running your payroll yourself” Odoo Experience presentation. It helps presenters show a more realistic payroll flow, including employee salary data, payslip inputs, work entries, and accounting demo information.
Original PR description
prepare some demo data for the oxp talk "Running your payroll yourself"
This update refines how spreadsheet borders are handled when working with list and pivot spreadsheet features. It should make spreadsheet behavior more consistent and easier to maintain, with minimal direct impact on day-to-day users.
Audit report PDFs now avoid adding page titles for template sections that do not contain meaningful printable content. This reduces unnecessary blank or cluttered pages and makes exported audit reports easier to read.
Original PR description
Previously, the algorithm that generated the audit report PDF would create a page title for empty articles using the article name. This often resulted in unnecessary pages, since many template articles are considered empty (because they contain elements that should not be printed). To reduce page clutter, we are revising the algorithm and introducing a new heuristic: a page title will be generated only if the article contains a single heading (h1, h2, or h3) and no other text elements. In such cases, the heading itself will be used as the page title. Task-5079472 Forward-Port-Of: odoo/enterprise#94327
Knowledge articles linked to audit reports now keep the standard Download PDF option visible. The separate audit report export action is renamed to Download Annual Report, making it clearer which document users are downloading.
Original PR description
Previously, when an article was linked to an audit report, the "Download PDF" button was hidden and replaced with a button to generate the audit report PDF. This commit restores the default "Download PDF" button and renames the button for generating the audit report PDF to "Download Annual Report", improving the clarity of the interface. Task-5079472 Forward-Port-Of: odoo/enterprise#94328
The barcode app's demo sheet now includes the new "OBTWREV" barcode command. This helps users and testers access the latest barcode action from the standard reference sheet, making demonstrations and training more complete.
Original PR description
This commit adds the newly created barcode command "OBTWREV" introduced in #88614 to the barcode demo sheet. Forward-Port-Of: odoo/enterprise#94324
The pull request adjusts internal performance test expectations for the Knowledge app after a change in how HTML content is cached when records are created. This helps keep automated performance checks accurate without changing day-to-day user workflows.
Original PR description
Adapting query count, due to not putting html fields in cache upon creation. task-4962646 Forward-Port-Of: odoo/enterprise#93741 Forward-Port-Of: odoo/enterprise#93171
Resolved issues and error corrections
Archived quality points are now excluded from the product Quality Points smart button. This keeps the displayed count and list accurate, reducing confusion for users reviewing quality controls.
Original PR description
**Steps to reproduce:** 1. Install the module `quality_control`. 2. Go to **Products → select any product → Quality Points (smart button)**. * Create a new Quality Point that applies to *all…
**Steps to reproduce:** 1. Install the module `quality_control`. 2. Go to **Products → select any product → Quality Points (smart button)**. * Create a new Quality Point that applies to *all products*. 3. Open any product form. * Verify that the *Quality Points* smart button shows the created point and the correct count. 4. Archive the Quality Point. 5. Reopen the same product form and check the *Quality Points* smart button again. **Observed behavior:** - The archived Quality Point is still counted and shown in the smart button. **Root cause:** - During the refactor from raw SQL (`get_sql` + `cr.execute`) to the ORM query builder (`query.add_where(SQL(...))`), one outer bracket was dropped. [ref](https://github.com/odoo/enterprise/pull/66290/commits/a6362bc07eac7640f68d145a0f6a14a81f499913#diff-2ffdc2ffc25417076b580b772447514c7e9d8b3e2d2fff2d3100721eb5ccbaf4L542-R561) - This changed the operator precedence, causing the `active = true` condition to no longer properly apply when combined with the OR block. - As a result, archived Quality Points bypass the filter and are still counted. **Solution:** - Fix the missing bracket in the `query.add_where` SQL expression so that the `active` condition is always enforced before evaluating the OR block. opw-5046289 Forward-Port-Of: odoo/enterprise#94173
Code cleanup and technical improvements
This update cleans up internal tests for subscription optional products to make them easier to maintain. It does not change customer-facing subscription features, but helps keep future updates more reliable.
Original PR description
See Also: - https://github.com/odoo/odoo/pull/226052 Forward-Port-Of: odoo/enterprise#94276
This fixes an issue in the Belgian CodaBox integration where processing multiple companies could trigger an error. The correction helps ensure company-specific CodaBox actions run reliably without disrupting users.
Original PR description
We incorrectly used the recordset `self` instead of the record `company` This commit fixes this opw-5036698 Forward-Port-Of: odoo/enterprise#94289
Downloading documents from the Send & Print wizard no longer fails when a Uruguayan electronic invoice file is present. The system now skips that specific electronic tax document in the wizard download, while users can still access it from the CFE document screen.
Original PR description
When downloading attachment via the send & print wizard, we get an error from the server. This is because we raise an assertion error if any attachment is not from 'account.move' model. But the CFE file is from 'l10n_uy_edi.document' model. With this commit, we extend the `_action_download` method to filter the CFE file from the attachments. It is not blocking for client as he can still download it from the form view of the CFE document. Steps: - Create an invoice - Set a 0% tax on the invoice line - In 'Other infos' tab, fill the 'Incoterm', 'Sales Modality' and 'Transportation Rules' fields - Confirm - Open S&P wizard, select 'Create CFE' and confirm - Reopen S&P wizard, select 'Download' and confirm (can be done along the previous step too) -> Error opw-5043902 Forward-Port-Of: odoo/enterprise#93830
Scanning package type barcodes with GS1 barcode settings now works without triggering server errors. This prevents interruptions in warehouse barcode workflows and keeps package handling smoother for users.
Original PR description
Steps to Reproduce: - Set the barcode nomenclature to GS1 - Scan a package type barcode - Server logs an AttributeError(in Odoo 18) or KeyError(in Odoo 16 and 17) Issue: - The model class "stock.package.type" is missing an attribute "_barcode_field" Solution: - Add the attribute "_barcode_field" to the model class "stock.package.type" Task: [4888064](https://www.odoo.com/odoo/49/tasks/4888064) Forward-Port-Of: odoo/enterprise#94347 Forward-Port-Of: odoo/enterprise#93116
The Count Entire Locations button now appears correctly during normal stock operations such as deliveries and receipts. It remains restricted only on the physical inventory page, helping warehouse users access the right action in the right workflow.
Original PR description
This commit fixes showing "Count Entire Locations" button in normal operations (delivery, receipt, etc.) and only restricts it in physical inventory page. Forward-Port-Of: odoo/enterprise#94194
Voice recording now shows a clearer notification when it cannot start because of a backend setup issue, such as a missing API key. This helps users understand what went wrong and reduces confusion when transcription is unavailable.
Original PR description
This PR adds a more explicit toast message for the recording when an error occurs on the backend (i.e. UserError). This applies to cases such as not having the API key set and trying to start the recording
Several spreadsheet dashboards have been corrected so charts line up properly and are easier to read. The Helpdesk and Operation Analysis dashboards also receive visual improvements, helping teams interpret key metrics with less confusion.
Original PR description
Forward-Port-Of: odoo/enterprise#94387
The Belgian salary configurator now prevents employees from combining a reimbursed private bike option with fuel card benefits. When private bike reimbursement is active, fuel card values are cleared and the related fields are disabled to keep salary choices consistent with policy.
Original PR description
The Belgian salary configurator allows employees to declare a private bike cost. When the "Private Bike" option is checked and its reimbursement value is greater than zero, the fuel card inputs must be reset to 0 and disabled. task-5062963 Forward-Port-Of: odoo/enterprise#94063 Forward-Port-Of: odoo/enterprise#93884
This fix prevents products using nightly rental pricing from being combined with other rental period types. It helps avoid incorrect rental configurations and pricing issues after recent changes.
Original PR description
with other rental periods. Fixes from regression testing post merge. Forward-Port-Of: odoo/enterprise#93715
This update corrects an issue in the SEPA Direct Debit payment form behavior. It helps ensure the payment flow works as intended for customers using SEPA direct debit, reducing the risk of failed or confusing checkout experiences.
Original PR description
Forward-Port-Of: odoo/enterprise#94462
This update corrects the product name from “Urban Piper” to “UrbanPiper” across point-of-sale restaurant-related screens, settings, translations, and tests. It helps keep branding consistent and avoids confusion for users configuring or using the integration.
Original PR description
Description of the issue/feature this PR addresses: Correct the spelling Current behavior before PR: Urban Piper was in 2 words. No space needed Desired behavior after PR is merged: UrbanPiper in one word
The accounting import screen now correctly passes the intended target to each import button. This prevents confusion or failed imports when the same page offers multiple import options.
Original PR description
Since [1], the import action will infer the model from the current action. In this case, the action is a client action with multiple import buttons. This commit, adapts the extends of the import action to accept the model as as a parameter. Forward-Port-Of: odoo/enterprise#94388
This fixes an error in the Salary Calculator that occurred when removing an employee's working schedule. Payroll users can now adjust salary simulation details without being interrupted by a system crash.
Original PR description
#### Steps to Reproduce In Payroll → Employees → Salary Calculator: 1. Select an employee with a working schedule. 2. The working schedule is auto-filled in the modal. 3. Remove the working schedule. #### Issue A traceback occurs (`Expected singleton: resource.calendar()`) because `salary_simulation` was not correctly set in the context, causing the flow to recompute work entries with an empty calendar. #### Fix In order to avoid work entry recomputations during simulation, always attach `salary_simulation=True` in the base `_get_version()` and propagate the context when creating a new version for the simulation employee. task-5063150
This fix ensures temporary concurrency conflicts during website generation are handled in a way that allows the process to retry instead of failing prematurely. It improves reliability when multiple operations happen at the same time.
Original PR description
When a concurrency error occurs, we need to let it retry. To do this, we must catch the Serialization Failure and raise it. Forward-Port-Of: odoo/enterprise#93851
The wording in the bank synchronization duplicate finder was corrected to remove an instruction users could not actually follow. This avoids confusion by no longer suggesting that customers select a journal when that option is unavailable.
Original PR description
The aim of this commit is removing a small part of sentence in the find duplicate tool in bank synchronization. Indeed, this sentence is proposing the customer to select the journal where it's not possible to do it. no task id Forward-Port-Of: odoo/enterprise#94386
This update renames an internal editor asset bundle so it better fits its use beyond website editing, including email composition. The change improves consistency with the shared HTML builder and should not alter day-to-day user workflows.
Original PR description
The new html_builder is used by both website and mass_mailing. While the old name `[html_builder|website].assets_edit_frontend` makes sense in the context of the website builder, where the iframe is indeed used to "edit the frontend", it is not the case in mass_mailing, where the email being composed is not a "frontend". A more generic name is more appropriate. This commit is linked to the community PR that updates the bundle name everywhere. Forward-Port-Of: odoo/enterprise#94435
Several search screens were simplified by removing redundant grouping settings and separators that behaved the same way. This keeps the interface configuration cleaner without changing expected business workflows.
Original PR description
- Remove all attributes from group element in search view. - Remove the tags separator before a group tag (separator and group do the same thing) Community PR : https://github.com/odoo/odoo/pull/226862 task-5005075