Friday, August 7, 2026
13 changes · master
Resolved issues and error corrections
The payroll pay run validation test now confirms the validation prompt before checking the result. This prevents automated checks from getting stuck and improves reliability of payroll quality testing.
Original PR description
The Validate button on the pay run payslip card carries confirm="Are you sure you want to proceed?", so clicking it opens a confirmation dialog instead of validating straight away. That confirm used to live only in hr_payroll_account, which is why only that module's tour patch clicks "Ok". 73a52f1c662 moved the attribute to the base hr_payroll view and dropped the hr_payroll_account override, but left the base tour clicking Validate and immediately asserting the payslip step is green. On builds where hr_payroll_account is not installed the modal stays open, the payslips stay draft, the pay run task-6449105
This update adds a missing module dependency so barcode quality checks work reliably with manufacturing barcode features. It prevents test failures and ensures the related components load together as expected, with no expected change to daily user workflows.
Original PR description
Before this commit, this bridge patches the barcode mrp model of stock_barcode_mrp while not depending on it. This goes unnoticed in the backend, where every installed module lands in the same bundle, but a Hoot test file only loads the modules of the dependency closure of its addon, so the first test suite added here dies on "error while registering suite". This commit adds the missing dependency. stock_barcode_mrp is auto installed on top of stock_barcode and mrp, both already required here, so it comes along with this module anyway.
The quality control spreadsheet tests were adjusted so they work consistently whether or not demo data is installed. This reduces false test failures and helps keep quality control spreadsheet features stable during development.
Original PR description
Commit [1], introduced through PR #122583, added tests for the quality spreadsheet selector and the session info insertion flag. These tests assumed that the template they created was the only quality spreadsheet template. This assumption does not hold when demo data is installed because the demo template remains after the test template is deleted. Consequently, the selector remains available and `can_insert_in_spreadsheet` remains true, causing the final assertions to fail. Remove existing quality spreadsheet templates at the beginning of each test so they fully control the template existence state. This makes the tests independent of demo data. The cleanup runs inside the test savepoint and is rolled back after each test. [1] https://github.com/odoo/enterprise/commit/ef3f2a2e4218d0ec8d83c2df2e8bdd518d41c7ca
Belgian payroll declarations now correctly treat non-equated time credit leave as having no reorganization measure. This prevents invalid ONSS declarations caused by reporting the wrong measure for affected employees.
Original PR description
According to the specifications, time credit not equated (LEAVE14713) should behave similarly to MEDIC01, but with one key exception: it must not trigger a reorganization measure. Previously, it was grouped with MEDIC01 in the DMFAOccupation initialization. This caused it to incorrectly evaluate to True and report a reorganization measure of 3 or 4 to the ONSS. This commit removes LEAVE14713 from that specific condition so it correctly falls through to the default block, assigning -1 (no measure) for the XML output, preventing invalid declarations. task-6431854
The timesheet assistant now highlights total hours correctly against expected working hours. It shows green when recorded time is below expected hours and avoids misleading coloring for flexible-hour schedules, helping users interpret their timesheet status more accurately.
Original PR description
Fix the wrong color selection of total hours on the timesheet assistant page before: green if total time > working hours after: - green if total time < working hours - no color for flexible hours --- task-6409938 Forward-Port-Of: odoo/enterprise#126484 Forward-Port-Of: odoo/enterprise#125177
The Vietnam reporting module now classifies short-term loan balances under held-to-maturity investments in line with Circular 99/2025. This helps businesses produce balance sheets that match current Vietnamese reporting requirements.
Original PR description
### Expected behavior: As per circular 99/2025, short-term loan (12831) balance is required to fall under Held to Maturity Investment (Code 123) instead of 112, translated: ``` Short-term held-to-maturity investments (Code 123): includes held-to-maturity investments with a remaining term of 12 months or less from the end of the accounting period, such as term deposits, bonds, commercial paper, loans, and other debt securities. This item does not include held-to-maturity investments that have been presented in the item “Cash equivalents” ``` ### Steps to reproduce: Install `l10n_vn_reports` module ### Fix: PO validated: Update the Balance Sheet code formula for the 12381 account opw-6413120 Forward-Port-Of: odoo/enterprise#126763
The Statement of Account option from the Malaysian reporting module is now shown and usable only for Malaysian companies. This prevents users in other countries from seeing or running a country-specific report that does not apply to them.
Original PR description
### Current behavior: After installing `l10n_my_reports`, the Malaysian's Statement of Account button appears on Aged Receivable for every company, and the partner Action "Print Statement of Account" can be run from non-MY companies ### Expected behavior: To avoid user confusion, it is advised to restrict its visibility so that it is only accessible to Malaysia-specific companies ### Steps to reproduce: 1. Install `l10n_my_reports` 2. Switch to a non-Malaysian company 3. Open Invoicing > Reporting > Aged Receivable 4. Observe the "Statement of Account" button on partner lines ### Cause of the issue: Missing checks for 'MY' company country code in UI and print report action ### Fix: - show the Aged Receivable SoA button only when `company_country_code === 'MY'` - guard `action_print_report_statement_account` for non-MY companies opw-6340854 Forward-Port-Of: odoo/enterprise#126597 Forward-Port-Of: odoo/enterprise#126172
Portal users editing Knowledge articles can now view and update existing voice transcription text without seeing the voice recording controls. This keeps the recording feature limited to internal users while preserving portal users' ability to work with article content.
Original PR description
Portal users can edit Knowledge articles but should not have access to the voice recording feature, which is reserved for internal users. The readonly component is already used in read-only views, so reusing it in the editor for portal users is safe, it still renders the existing transcription content correctly without exposing any recording controls. Portal users can still edit the text content inside the component thanks to the editable descendants concept, which allows the editor to manage specific editable areas even within a readonly component. Task-6320461 Forward-Port-Of: odoo/enterprise#126606
This fix restores a required loading component for public signing pages. It prevents automated user journeys and related signing interactions from failing, helping maintain a stable document signing experience.
Original PR description
The [linked community PR] retriggers clicks for interaction once they have started, using the existing lazyloader logic. [Commit 407903c] removed the lazyloader from the `sign.assets_public_sign` bundle. This new PR highlighted that removing it there caused several test tours to fail (within `sign` and other modules depending on it). [linked community PR]: https://github.com/odoo/odoo/pull/247404 [Commit 407903c]: https://github.com/odoo/enterprise/commit/407903cedca635a16929634afe41f489d3b56970 task-5221179
This fixes an issue where quickly clicking to expand the same financial report line could create duplicate hidden or visible rows and then stop the line from collapsing properly. Users can now expand and collapse report lines reliably, even on slow connections or with repeated clicks.
Original PR description
Steps to reproduce:- - Open any report. - Click on a particular line to unfold more than once very fast(or throttle network to 3G) - Once line is unfolded click again to fold that line. - Line is not…
Steps to reproduce:- - Open any report. - Click on a particular line to unfold more than once very fast(or throttle network to 3G) - Once line is unfolded click again to fold that line. - Line is not folding. Cause:- - When we clicked multiple times to unfold line, duplicate child lines were created(as many times as many times we clicked). - Because when first promise was not resolved so `unfolded = false` and we clicked again so new promise also tries to unfold the same line, resulting in unfolding the same line multiple times. - In version 17.0 these duplicate child lines are created but somehow not visible but it breaks `foldLine`. From version 18.0 onwards these duplicate child lines are visible. Solution: In `unfoldLine` set the flag `unfolding`. So in all clicks other than first, we get `unfolding = true` and don't proceed further, preventing unfolding the same line multiple times. task-6260425 Forward-Port-Of: odoo/enterprise#126765 Forward-Port-Of: odoo/enterprise#120392
This fixes an error that occurred when updating start or end contract dates for multiple Belgian payroll employees at once. HR teams and automated processes can now apply these date changes in batches without the operation failing.
Original PR description
Currently, attempting to update the `contract_date_start` or `contract_date_end` fields on a recordset containing multiple employees triggers a `ValueError: Expected singleton`.
Steps to reproduce:
1. Ensure the `l10n_be_hr_payroll` module is installed.
2. Attempt to execute `employees.write({'contract_date_start': '2026-01-01'})` where `employees` is a recordset of multiple employees.
3. Observe the `ValueError: Expected singleton` traceback.
task-6442141
task-6409893This fixes incorrect gender values in Belgian payroll demo employee records. It updates 23 employees and fills one missing value, improving the accuracy of payroll test/demo data.
Original PR description
Some records got the gender mixed when adding importing demo data. This fix solves the issue for 23 employees and add a gender for a employee with that field previously empty. related-6364398
Uploading a document from a contact now places it in the intended default area instead of reusing the last folder selected in Documents. This prevents files from being misplaced, such as contact uploads accidentally ending up in Finance.
Original PR description
Steps to reproduce ================== 1. Open Documents. 2. Select Finance. 3. Return to the home page and open the Contacts app. 4. Open any contact. 5. Click the Documents stat button. 6. Upload a document. Issue ===== The document is uploaded to the Finance folder instead of My Drive. Reason ====== When uploading a document using the upload button, we use `currentFolderAccessToken` to determine the destination folder. When opening the Documents view from a contact, `searchpanel_default_folder_id` is set to `False` so that documents are uploaded to the `All` workspace. However, when the search model is loaded, we do not reset `currentFolderAccessToken` when `folder_id` is `False`, causing the previously selected folder (Finance) to be reused. Task-6352242 Forward-Port-Of: odoo/enterprise#123285