Thursday, April 30, 2026
12 changes · saas-18.4
Resolved issues and error corrections
The Point of Sale employee access settings now show clearer explanations for minimal and basic employee lists. This helps administrators understand how employee login access is determined and avoids confusion from misleading help text.
Original PR description
Both `minimal_employee_ids` and `basic_employee_ids` had the same incorrect help text ("If left empty, all employees can log in to PoS"), which did not reflect the actual purpose of each field. The condition also only holds when all three employee lists are empty, not per-field.
opw-6171362
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#261953Test filtering now handles special characters like brackets, backslashes, and commas more reliably in JavaScript test tags. This reduces incorrect test selection and noisy error logs, helping internal test runs produce clearer and more dependable results.
Original PR description
When using test tags for js tests, some tests are not parsed correctly when containing brackets `[ ]` This is because the tag selector use them to set parameters bounds as in…
When using test tags for js tests, some tests are not parsed correctly when containing brackets `[ ]` This is because the tag selector use them to set parameters bounds as in `.test_method[test_param]` The previous implementation using a regex could generate invalid test tags when the params contains comma, and brackets This commits fixes this two ways: Nested brackets will work, meaning that something like `.test_method[test, witch brackets[]]` will be correctly parsed as a tag `.test_method` with a parameter `test, witch brackets[]`since the brakets are balanced. Before, it was parsed as twho tags, `.test_method[test` and ` witch brackets[]]` the second one being considered invalid and spamming logs with errors Brackets and backslashes can be escaped with a backslash, meaning that something like `.test_method[test, with brackets], and backslash\]` can be escaped as `.test_method[test, with brackets\], and backslash\\]` Note that the parser will make it's best effort to parse non escaped strings, so a \ not followed by and escaped character will remain there in order to make potential copy paste easier. For the previous example `.test_method[test, with brackets\], and backslash\` will work the same way. So in practice, we only really need to escape \ when followed by another backslash or a bracket, and we need to escape brackets when they are not balanced. Comma in hoot tests are also a problem since they are used to separate parameters, this can easily be tested by only splitting on `,@` since all hoot test should start with a @ and parameters of test_unit_* tests should be a list of hoot tests. A followup pr will introduce the params to the canonical tag, and escape it as needed Forward-Port-Of: odoo/odoo#261896 Forward-Port-Of: odoo/odoo#261516
The e-waybill form now displays the document date without a time value, matching the expected format. This avoids confusion for users preparing Indian e-waybills and helps keep the form aligned with compliance expectations.
Original PR description
The `document_date` field in e-waybill form view previously included both date and time, which is not as per the expected format. This fix ensures that only the date is shown, hiding the time component. Forward-Port-Of: odoo/odoo#261253 Forward-Port-Of: odoo/odoo#259656
Customer searches by email now check the email field instead of the phone field. This helps users find the right customer records when using an email address, reducing lookup failures and manual corrections.
Original PR description
The email-based lookup was mistakenly checking the phone field (`phone = email`) instead of the email field. Because of this, customers could not be correctly found using their email address. This change fixes the domain to properly match on the email field. Forward-Port-Of: odoo/odoo#260567
This fix makes automated checks wait until the voice message player is fully displayed before continuing. It reduces false test failures and helps keep the messaging feature release process more stable.
Original PR description
Before this commit, voice message tests don't wait until the voice player is drawn before resolving the corresponding promise. This may lead to race conditions. This commit fixes the issue by properly `await`ing the completion of the asynchronous code before resolving the promise. Related runbot error: https://runbot.odoo.com/odoo/error/163783 Forward-Port-Of: odoo/odoo#261910 Forward-Port-Of: odoo/odoo#261795
Moving a task to a different project no longer reopens or resets it when it is already done, cancelled, or waiting. This prevents completed work from being accidentally reconsidered and keeps project reporting more reliable.
Original PR description
Before this commit, when the project of a task is changed, even if the state of that task is done or cancelled, the state is reset (except if the task is blocked by another one). This behavior is not expected for a task done/cancelled, we should not reconsider that task since it has been done/cancelled and so there is no reason to re-consider it once the project changed. This commit makes sure the state of the task is not reset when the project changed only if the state is a closed state or Waiting state. task-5361864 Forward-Port-Of: odoo/odoo#261648 Forward-Port-Of: odoo/odoo#252752
This fix improves how imported electronic invoices handle payable rounding amounts, so they are not always treated as cash rounding. It helps ensure invoice totals and untaxed amounts match supplier documents when tax rounding differences are involved.
Original PR description
PayableRoundingAmount is not necessarily a cash rounding. It might also be the difference between the untaxed amount per line regarding the global untaxed amount due to the global tax rounding method. The idea in this commit is to create the invoice first and then, just like the code fixing the taxes, to post fix the untaxed amount after. opw-6151984 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260992
This update resolves a technical issue that could cause instability in voice message testing. By ensuring asynchronous code waits for the voice player to load, we've eliminated potential race conditions and improved the reliability of our testing process. This contributes to a more stable and dependable Odoo Enterprise experience.
Original PR description
Before this commit, voice message tests don't wait until the voice player is drawn before resolving the corresponding promise. This may lead to race conditions. This commit fixes the issue by properly `await`ing the completion of the asynchronous code before resolving the promise. Related runbot error: https://runbot.odoo.com/odoo/error/242411 Community: https://github.com/odoo/odoo/pull/261910 Forward-Port-Of: odoo/enterprise#115587
This update simplifies the process for Dutch companies to manage their digipoort certificates within the accounting settings. Previously, users had to navigate to a separate section to create a certificate before setting it in the main accounting view. Now, users can directly create and edit certificates within the digipoort certificate setting, improving usability.
Original PR description
Description of the issue this commit addresses: In the Accounting settings on a Dutch company, the setting for the selection of the digipoort certificate only lets you choose amongst existing certificates so if you haven't created one yet, you need to go to the dedicated certificates menu to create one and then come back to the digipoort certificate setting to set it. This is poor UX. --- Desired behavior after this commit is merged: This is improved by letting the user Create and Edit inside the digipoort certificate setting directly. --- task-6065566 Forward-Port-Of: odoo/enterprise#115628 Forward-Port-Of: odoo/enterprise#114307
This update fixes an issue where the valid date range for ESG emission factors was incorrectly shown. The missing 'always_range' option has been added, ensuring that users now see the accurate and complete date range for these important sustainability metrics. This improves data accuracy and reporting.
Original PR description
Before this commit, the validity period was not correctly displayed because the always_range option was missing no related task Forward-Port-Of: odoo/enterprise#114784
This update resolves an issue where the industry FSM report worksheet wasn't saving correctly in the Enterprise portal, leading to tour failures. The fix ensures the worksheet functions properly, preventing disruptions to users accessing this report.
Original PR description
The worksheet is not auto saving and the worksheet is not rendering properly in portal, which caused the tour to fail. runbot error-242479
This update resolves an error preventing the import of emissions data, specifically those linked to journal entries. The fix restricts imports to manual emissions (other.emission) to avoid database update conflicts. This ensures the emissions reporting functionality operates smoothly.
Original PR description
The import button is present in the Emitted Emissions menu, but it produces the following error: "cannot insert into view 'esg_carbon_emission_report' DETAIL: Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." => To fix this, we will only allow the insertion of manual emissions (model: other.emission) via import, not emissions related to journal entries. task-6168587 Forward-Port-Of: odoo/enterprise#115306