Monday, September 28, 2026
9 changes · 18.0
Resolved issues and error corrections
Employee badge IDs in HR can now include printable ASCII special characters, such as underscores, while still excluding spaces. This better supports Code 128 barcode formats and reduces unnecessary validation errors when using valid badge identifiers.
Original PR description
Allow any printable ASCII character in the employee barcode field, including underscore and other special characters. Previously, only alphanumeric characters were allowed. In code128 certain special characters are permitted. See https://barcode-maker.com/blog/code-128-barcode-complete-guide MT-14203 @moduon @yajo --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Project users can now delete project updates without running into an access rights error. This keeps project update history manageable while ensuring the project's latest update information is reset correctly behind the scenes.
Original PR description
Deleting a project update resets the project's last update, but that write is done with the rights of the current user although only a project administrator can write on a project. Trying to delete a project update with project user access rights therefore causes an access rights error. Creating an update already does the same write as sudo, so it does not have the same problem. With this PR, the reset is done as sudo too. Task-6585601
Canadian invoice reports now label Québec Sales Tax numbers as QST instead of PST when the registration number contains the Québec-specific TQ marker. This prevents conflicting tax labels on invoices and helps Québec documents match expected tax presentation without extra setup.
Original PR description
The Canadian localization prints the provincial tax number on every document header and under the customer address with a hardcoded "PST:" label. Companies and customers registered in Québec store…
The Canadian localization prints the provincial tax number on every document header and under the customer address with a hardcoded "PST:" label. Companies and customers registered in Québec store their Québec Sales Tax (QST) number in the same field, so their invoices show "PST:" in the header while the totals section, which uses the QST tax group, shows "QST". The document contradicts itself and does not match how the number is expected to appear on a Québec invoice. Québec registration numbers always carry the "TQ" marker (for example 1234567890 TQ0001), and no other provincial number does. The label is now derived from the number itself: "QST:" when it contains "TQ", "PST:" otherwise. This keeps the existing PST translation untouched and needs no extra configuration. Steps to reproduce: - Set the company's country to Canada and its PST number to 1234567890 TQ0001. - Print any customer invoice. - The header reads "PST: 1234567890 TQ0001" instead of "QST: ...". --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#289969
This fix makes automated checks for Knowledge calendar drag-and-drop actions wait until changes are fully saved before moving on. It reduces false test failures and helps keep the Knowledge calendar experience stable for users.
Original PR description
Within tour tests there is a race between callback handlers, from the FullCalendar library, firing and its unload from page event when a next step moves to another screen. This commit adds an…
Within tour tests there is a race between callback handlers, from the FullCalendar library, firing and its unload from page event when a next step moves to another screen. This commit adds an explicit wait until the callbacks have been fired. \<DOM node>.dispatchEvent runs DOM handlers synchronously. FullCalendar synchronously handles changes to the event, but it shedules finish actions to run during a next macro-task (uses setTimeout).[1] This change patches the calendar event model for the duration of the tour step to add a sync point. The tour continues after the server has acknowledged the updated field values. [1]: The chain between pointerup event and 'dragend' event; 1. (line 750) pointerup -> FeatureDragging.onPointerUp 2. (line 757) -> tryStopDrag(ev) (line 815) 3. (line 815) -> ElementMirror.stop() This has an explicit comment "stop() is always asynchronous", interpreted as the callback function provided to stop is always scheduled asynchronous. 4. (line 329) -> setTimeout() (line 343) runbot-231690
Reversal entries in financial reports are now aligned with the exchange rate used on the original transaction. This helps keep multi-currency reporting consistent and reduces discrepancies when reviewing revaluations.
Original PR description
Adjusting Enterprise tests to match the changes in Community. task-6586992
The reconciliation screen now applies the same filtering rule as the unreconciliation view, hiding entries where the remaining balance is missing. This prevents confusing or invalid items from appearing during accounting reconciliation work.
Original PR description
In this commit: https://github.com/odoo/odoo/commit/77f4446f708903fc82043639fa95f256b6cc5f14 They modified the domain of the unreconcile filter so that items with a null residual are hidden. But when adding that, they forgot to change the one from the reconcile view. task-6589517
The Hong Kong payroll internet allowance rule now uses a safer code format. This prevents errors in payroll-related employee setup and keeps payroll reports and tests aligned with the updated naming.
Original PR description
- The code of salary rule internet allowance was ALW.INT. - We changed it to ALW_INT to prevent problems that will come afterwards `- such as selecting inputtable on employee was giving traceback after 20.0` `- The code should not include . (dot) in it` - All related tests and code pieces are fixed to use ALW_INT task-6591974
Expanding a timesheet row now opens the intended timesheet form instead of a more generic analytic line form. This prevents confusion for users and keeps them in the correct workflow when reviewing or editing timesheet entries.
Original PR description
Steps: ------ - Install timesheet_grid. - Go to my timesheets and add a line. - Click the expand button. Issue: --------- When a user expanded form view , the wrong timesheet form view is opened. Cause: --------- The system opens the view with the lowest sequence. As a result, the analytic line form view is opened instead of the timesheet form view. Fix: -------- Pass the reference of the expanded form view so that the correct timesheet form view is opened instead of the view with the lowest sequence. task-6356431
When securing accounting entries, users can now open draft entries directly from the review list. This makes it easier to inspect and resolve draft items that block the secure entries process, especially before they receive an official number.
Original PR description
Steps to reproduce --------------------- - Install accountant module; - Create a draft entry; - Go to Accounting > Secure Entries; - Select a date after the draft entry's date; - A warning is displayed about the draft entry; - Click on "Review"; - You cannot open the entry from the list view. It is difficult to retrieve those specific entries from the global list view as they don't have a number because they are in draft. Why is it happening -------------------- The returned action only contains 'list' as 'view_mode' value. opw-6535730 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr