Wednesday, September 24, 2025
16 changes · master
Enhancements to existing features
The payroll pay run employee list is clearer and easier to use. Employees are now sorted by name, the list has a more descriptive label, and pay schedule information is shown to help payroll teams choose the right employees faster.
Original PR description
Changed name of the list, sorted it by employee name, and added pay schedule field. task-5067639
Automatic reconciliation model names now use the account's display name directly, without adding extra numbers. This keeps generated names clearer for accounting users now that duplicate names are allowed.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/9cdc519a7aa7e40cad31d2eb6dcc8858df831e9b we change the way the reco model name were made by going back to just the display name of the account. For prior version 19.0, a unique constraint on the name was there so we added a number after the name of the account to avoid duplicate. The constraint has been removed and so this code is no longer needed. no task id Forward-Port-Of: odoo/enterprise#95130
Resolved issues and error corrections
The point of sale test setup now avoids relying on a fixed calendar year when selecting invoices to settle. This makes automated checks more reliable over time and reduces false test failures without changing day-to-day user behavior.
Original PR description
Remove hardcoded year date for selecting invoices to settle. rb-error: 230713 community PR: https://github.com/odoo/odoo/pull/224171 Forward-Port-Of: odoo/enterprise#93166
This fix prevents online bank synchronization from sending a payment reference field when the related optional accounting module is not installed. It helps avoid failed transaction creation for customers using Odoofin without that extra module.
Original PR description
Odoofin always give the 'end_to_end_uuid' info. But it's a field that is only defined in account_iso20022. So we should not give this field in the create if the module is not installed. Forward-Port-Of: odoo/enterprise#95321
A journal report test was adjusted so it works consistently across different localization setups, including Czech accounting rules. This reduces false build failures and helps keep accounting report updates moving smoothly.
Original PR description
test_document_data_for_bank_journal_with_show_payment_option was failing in builds with l10n_cz installed because - we set move_sales_2.payment_reference = '' in setUpClass and without l10n_cz it stays empty - but with l10n_cz installed it gets recomputed because of precompute=True on taxable_supply_date (which is a stored computed field that triggers an extra write on account.move when the company is in CZ, and that write causes the compute graph to run again, and _compute_payment_reference fills the value back in) this commit solves this issue by not making assumptions about the payment_reference value and would use it as is in the generated data validation build_error-231479 Forward-Port-Of: odoo/enterprise#95014
Refreshing appointment time slots could fail when no resource was selected, preventing capacity from being calculated correctly. This fix handles empty selections safely so users can continue browsing and booking available appointment slots without errors.
Original PR description
When refreshing the slots, it's possible that the resource_selected_id is equal to None, False or just empty string. This was leading to some error when parsing it to an integer. This commit move the parsing into the method computing the max possible capacity after checking if we got a value. Related commit 3cca7e47ab58f8a7d4e9196dbf60f7068348216b task-5102895 Forward-Port-Of: odoo/enterprise#95144
The Belgian payroll Dimona module now prevents direct editing of the student status on employee records when that value comes from the employee version record. This avoids inconsistent HR data and reduces the chance of payroll or reporting errors.
Original PR description
This commit marks `l10n_be_is_student` field as readonly in `hr.employee` model since it is a related field of `hr.version` and it is not editable in `hr.version` and so there is no reason to make in editable in employee model. runbot-error-231303 Forward-Port-Of: odoo/enterprise#95208
The Studio sidebar now has a maximum width outside XML editor mode. This keeps the editing workspace easier to use and prevents the sidebar from taking up too much screen space.
Original PR description
This commit puts a hard limit to the studio sidebar width. task-4935942
The payslip form now hides the warnings area when there are no issues to show. This removes unnecessary empty space and makes the payroll screen cleaner for users.
Original PR description
Before this change, the `issues` field was always rendered on the payslip form, even when there were no warnings to display. This resulted in unnecessary empty space being shown in the UI. task-5071223 Forward-Port-Of: odoo/enterprise#94489
Users can now manually enter a checkout time directly from the Attendance Gantt popup when an attendance is still open. This fixes a visibility issue that previously forced users to leave the Gantt view to complete the checkout information.
Original PR description
The Gantt popup form explicitly set `check_out` invisible when it was empty, which prevented users from manually entering a checkout for an open attendance. This commit removes the overriding xpath so that the form simply inherits the standard `hr_attendance_view_form` behavior, where the `check_out` field is always visible and editable. Users can now set a manual checkout directly from the Gantt modal. task-5026978 Forward-Port-Of: odoo/enterprise#92726
A typo in an accounting reports error message has been fixed so blocked changes are displayed as a properly formatted list. This makes the warning clearer for users when lock dates prevent edits to report external values.
Original PR description
[FIX] account_reports: typo in error message typo in generation of error message saying that lock dates are blocking the modification of a report external value See odoo/enterprise#92949 Forward-Port-Of: odoo/enterprise#95175
Planning now correctly calculates weekly progress for flexible shifts that span across two weeks. This prevents managers from seeing all allocated hours counted in the first week, making workload tracking more reliable.
Original PR description
### Steps to reproduce: - Install Planning app - Create a shift for a flexible employee that starts on Friday and end on the following Tuesday for example - Go to the gantt view for the week that the shift should start at - Notice the progress bar is showing the whole allocated hours not just the week's hours ### Cause: This mainly happening because when the employee is flexible we are getting the value by multiplying the hours_per_day of his schedule by the period.days and the period is the shift period ### Fix: We use the interval we are just checking as the period now so if the shift is extended to the next week we are just going to use the end of the week as the interval end not the shift's end_datetime opw-5022800 Forward-Port-Of: odoo/enterprise#95279 Forward-Port-Of: odoo/enterprise#93404
Barcode lookups now fill in product information only when the relevant fields are empty, instead of replacing an existing eCommerce description. This helps merchants keep their manually written online product descriptions intact while still benefiting from barcode database enrichment.
Original PR description
Scenario: - enable "Barcode Database" in general settings - set an eCommerce description on a product - set a barcode in the database on that product (eg. 799439112766) Result: the eCommerce description has been overwritten by the barcode lookup result. Fix: do like other _update_product_by_barcodelookup methods and only update value that are not yet set. Note: also fixes the return of the overridden methods. opw-5061231 Forward-Port-Of: odoo/enterprise#94098
The Belgian POS blackbox reports no longer show the message "THIS IS NOT A VALID VAT TICKET" on invoices and daily reports. This avoids confusion because the warning is only relevant for POS receipts that are not final VAT tickets.
Original PR description
- Remove the message "THIS IS NOT A VALID VAT TICKET" from the invoices and POS daily reports views. This message is only necessary on POS receipts that are not final TVA tickets. task-id: 5013860 Forward-Port-Of: odoo/enterprise#92287
The website generator help page now points users to the correct support contact instead of an outdated or wrong email. This helps customers reach the right assistance channel when they need help during website setup.
Original PR description
Changing wrong email into the support /help page. Task: odoo.com/odoo/project.task/5100049?menu_id=4720 Forward-Port-Of: odoo/enterprise#95282
This fix prevents an error when users open sale order line details from a product form that includes related invoice lines. It ensures the dialog uses the current record information instead of relying on a search view that is not available there, improving stability for customized product workflows.
Original PR description
…in a dialog Steps to reproduce ================== Prerequisites: Having a product with an SO and an Invoice confirmed. Steps: - Open Product Variant Form - Open Studio - Add new O2M to SOL: Product (Sale Order Line) - Edit subview form - Add invoice_lines - Quit Studio - Click on SOL on Product view → It crashes => TypeError: can't access property "context", ctx.env.searchModel is undefined Cause of the issue ================== In form view dialogs, we don't have a search model Solution ======== We should use the context from the current record opw-4921186 Forward-Port-Of: odoo/enterprise#95259