Friday, September 5, 2025
26 changes · master
Enhancements to existing features
The Payroll menu now appears only for users who have both employee and contract-related access. This keeps payroll navigation hidden from people who only need employee contract access, reducing confusion and limiting visibility to the right audience.
Original PR description
as the contract menuitem is thier in the employees app it is not needed to have access to the payroll until you get access on the work entries. - Make the payroll menu appear only when a person has both contract and employee groups. Task: 4543411
The departure holiday attest wizard now shows only employees with a recorded departure reason, making the selection process clearer and less error-prone. Guidance about remuneration has been moved to the net amount help text, so payroll users can find the explanation directly where it is needed.
Original PR description
- Update wizard UX by limiting employees on those who have departure_reason set. - move the remuneration explination to the help of the net amount Task: 4582758
The Belgian payroll accounting test suite was updated to align with the newer public holiday model. This helps keep payroll validation reliable as holiday handling changes, reducing the risk of regressions in Belgian payroll accounting.
Original PR description
Task: 4791808
Carousel titles have been updated so dashboard content is presented more clearly and consistently. Related spreadsheet document tests were adjusted to keep quality checks aligned with the updated behavior.
A setting related to how invoice extraction groups tax lines has been moved from the invoice extraction area into the core accounting module. This prepares the system for future work while keeping the business behavior unchanged for users.
Original PR description
[IMP] account_invoice_extract: move extract single line to account This commit move the field extract_single_line_per_tax from the module account_invoice_extract to the module account This is done before the freeze to complete the task after task-5047859
Mandatory personal information fields in salary contract forms now show an asterisk next to their labels. This helps applicants and employees quickly see which details must be completed, reducing confusion and incomplete submissions.
Original PR description
Added a '*' next to personal information field labels when they are marked as mandatory (`is_required`). Task ID: 5033319
The checkout testing flow was updated to match a recent address selector redesign. This helps keep automated quality checks reliable without changing the customer-facing checkout experience.
Original PR description
During the redesign of the address selector, the "Add address" button was moved out of `o_portal_address_row`. This commit updates the test accordingly. task-4904868 Requires: - https://github.com/odoo/odoo/pull/220610
IoT device records can no longer be reassigned from one IoT box to another by users. This helps keep printer and device registrations consistent now that each IoT box maintains its own detected device records.
Original PR description
Now that we register printer records on every iot box (even if they are already detected by another iot box), we prevent users from moving devices from an iot box to another.
Updates several Latin American localization features to read document usage directly from invoices and invoice lines rather than journals. This keeps reporting and electronic invoicing behavior accurate now that the setting is calculated dynamically.
Original PR description
The aim of this commit is to use the l10n_latam_use_documents field directly
from account.move{.line} instead of the related journal_id.
It is necessary since it is now a computed field..The Sign app has been updated to prepare for sending signature requests through multiple delivery channels in the future. This groundwork should make it easier to expand how customers and employees receive signing invitations without changing the current signing flow.
Original PR description
This PR prepares the sign module for future support of sending sign requests through multiple channels. task-4985322
Resolved issues and error corrections
This update fixes an internal automated test so it consistently creates sample calls in the intended order. It helps prevent false test failures and supports more reliable maintenance of the VoIP AI feature.
Original PR description
[FIX] voip_ai: ensure call creation order in test Before this commit in `test_cron_transcribe_recent_voip_call_two_calls_at_same_time` test, we were attempting to have two calls one created after another. However since the creating of the second (earlier) call was based on the absolute date, when the setUp took longer then anticipated the order was the opposite of the desired. With this commit we ensure that the 2nd call will have create_date before 1st by pushing it back from the 1st call create date (not with creation of the 1st call)
Code cleanup and technical improvements
This update removes older direct access paths for URL conversion so all parts of the system use the central router behavior. This lowers the risk of inconsistent navigation behavior after router customizations, with no expected visible change for users.
Original PR description
Since [1], overriding the router’s state <-> URL conversion functions is supported. However, both functions were still exported, which could cause inconsistencies if code continued using the exported versions instead of the overridden ones. This commit removes the exports, ensuring that the functions are always accessed through the router. [1] https://github.com/odoo/odoo/commit/d278ab17698c0c4fbdf887b19ed7ccb9122ffb77
This update fixes calendar setup data so working hours are calculated correctly instead of being set manually with wrong values. It improves reliability for Belgian payroll validation, attendance Gantt behavior, and fixed-schedule planning scenarios.
Original PR description
- remove the `hours_per_week` field from creation to allow model to compute as its no not readonly So it is set with wrong values in some calendars
Refreshing the Employees page from the Payroll menu now keeps users within the Payroll area instead of switching them to the general Employees app. This avoids confusion and keeps the payroll-specific navigation available after a page refresh.
Original PR description
When you go in Payroll / Employees / Employees, then refresh, you're back on the employees app (with the menu from employees app not the ones from payroll) This is because the URL after the action is just "/odoo/employees". fixed by redirecting to "/odoo/payroll/employees" Task-5045428
This update fixes an automated test for Belgium payroll accounting so it runs reliably again. It helps keep payroll-related checks stable and reduces false errors in the development pipeline.
Original PR description
runbot.error: 224180
This fix ensures a quality control test works reliably when the module is installed on its own without demo data. It helps prevent false test failures related to serial number label printing, improving confidence in quality control updates without changing user-facing behavior.
Original PR description
## Issue:
The test `test_receipt_validation_triggers_serial_number_label_print` fails when running `quality_control` alone without demo data
## Cause:
The user is missing the group `stock.group_production_lot`, that enable serial number printing
As a result, the condition `self.env.user.has_group('stock.group_production_lot')` in `stock.picking` `_get_autoprint_report_actions()` is not satisfied
The `button_validate()` in `stock.picking` will have an empty report_actions and will not print anything
The Demo data that allow the test to work is in `stock`
https://github.com/odoo/odoo/blob/9b08449f25cd16dc15117d305726380298c313d8/addons/stock/data/stock_demo.xml#L176-L182
## Steps to reproduce:
- Install only `quality_control` (no demo data)
- Run the test `test_receipt_validation_triggers_serial_number_label_print`
related-to: https://github.com/odoo/enterprise/pull/90134
opw-4790427
Forward-Port-Of: odoo/enterprise#93857
Forward-Port-Of: odoo/enterprise#93296This fix updates the financial reporting interface so item deletion continues to work after a related platform behavior changed. It helps prevent errors or inconsistent behavior when users remove linked entries in account reports.
Original PR description
This PR is related to odoo/odoo#225391 which makes onDelete async. opw~5019621
The payroll sample dashboard has been aligned with the main dashboard so users see a more consistent example. The main payroll dashboard display is also now centered correctly, improving presentation in the interface.
Original PR description
Changes: - Adjustments to sample dashboard to reflect the changes made in main one - Fixed display of main dashboard previously not centered in the interface Task ID: 5005256
Helpdesk and mail-related tests were updated to match recent platform changes in the community edition. This keeps automated checks aligned with the current behavior and helps avoid false failures in future releases.
This fix updates field service sales and stock logic after removing a duplicate internal field. It helps product quantities and related sales lines continue to work correctly without relying on outdated data references.
Original PR description
In this PR (https://github.com/odoo/odoo/pull/223686), we removed the `section_line_id` field as it was a duplicate of `parent_id`. This commit adapt the domains to fit with the field changes: - `parent_id` is not stored, so we can't search for that field in domain anymore. We replace `filtered_domain` by `filtered`. - Adapt the `_updateQuantity` method to use an orm searchRead instead of a domain. Co-authored-by: nipl-odoo <nipl@odoo.com> Linked: https://github.com/odoo/odoo/pull/223686 task-5009037,4966574
This fix prevents errors when printing receipts for cash in or cash out operations in Chilean point of sale setups. Businesses using a connected printer can complete these cash movements without disruption.
Original PR description
Before this commit, when a printer was connected, performing a cash in/out operation would raise an error when trying to print the receipt. opw-5060974 Forward-Port-Of: odoo/enterprise#93834
The salary calculator now displays its footer buttons properly on mobile screens. This makes it easier for users to configure benefits and copy salary offer links without layout issues or hidden buttons.
Original PR description
Previous behavior: - when in mobile view, footer buttons are not aligned and Copy Link button folded and not fully visible New behavior: - make Configure Benefits and Copy link appear side-by-side on mobile and each take 50% width - move container width to an explicit wrapper for the Copy link widget and keep the widget's `btn_class='btn w-100'` so the inner button fills its container (fixes folding) Task ID: 5042824
This update makes an automated Web Studio rename test more reliable by ensuring input changes are handled consistently. It helps reduce random test failures, supporting smoother validation and release processes without changing customer-facing features.
Original PR description
The def test_rename function (tour web_studio_main_and_rename) crashed undeterministically because the tour engine is now faster, inputs soimetime do not have the time to update. This commit fixes one instance of this. runbot-error-163471 Forward-Port-Of: odoo/enterprise#93826
Fixed an issue where using the shortcut from settings to open the Projects Folder could take users to Documents without selecting the Projects folder. This ensures users land in the intended folder, reducing confusion when managing project documents.
Original PR description
Reproduce: 1. Install documents_project 2. In config settings, use the arrow next to the Projects Folder 3. You end up in Documents, but not in the Projects folder. This is because folder-matching keys in the search panel must be `Number`s but we forgot to convert `user_folder_id` properly for this. Follow-up of 6bdcc357. Task-5055163
This update streamlines internal guided test tours by replacing a heavier dependency with standard browser functionality. It helps reduce asset size and supports faster loading of the tour testing framework without changing business features.
Original PR description
In this commit, we replace hoot-dom uses in tour files by native javascript. For legitimate uses of hoot in tours, we exported the "queryFirst, queryAll, queryOne, waitFor, and waitUntil" hoot helpers into tour_helpers. These two actions are made in order to lazy load hoot-dom in web_tour to reduce assets size.
The Web Studio report editor no longer loads an older editing component that is no longer needed. This reduces unnecessary dependencies and helps keep the editor simpler to maintain without changing day-to-day functionality for users.
Original PR description
The report editor uses the new html_editor since [1]. This commit removes the loading of the legacy one, and the depenendency to web_editor, as nothing seems to be requesting it anymore. [1] https://github.com/odoo/enterprise/pull/66656