Wednesday, August 13, 2025
22 changes · 18.0
Enhancements to existing features
Saudi e-invoicing certificate requests now include the exact Odoo software version, including both major and minor version details. This helps ensure certificates are generated with more precise version information, improving compliance traceability with minimal user impact.
Original PR description
Make sure we user the exact software version from which the certificate is being generated, which should include the major and minor version, instead of just the major version. task-4985629 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Spanish chart of accounts now classifies account 411000 as a current liability instead of a current asset. This improves the accuracy of financial statements by placing supplier bills of exchange payable in the proper liability category.
Original PR description
This commit changes the account type for account `411000 Acreedores, efectos comerciales a pagar`. It was previously set as a `Current Asset` and now its account type is `Current Liability`. Task : 4757149 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes duplicating Italian electronic invoicing document types smoother by preventing an immediate duplicate-code error. Users get a more practical workflow when copying existing document type records, reducing confusion and interruption.
Original PR description
In https://github.com/odoo/odoo/commit/3e557745f16c33ab3c1b5984d6297913a8849024, we added a contraint to avoid same code. The "issue" with that is that the Duplicate option instantly raises the constraint. It's not really user-friendly. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218933
This update ensures Odoo modules list the official Odoo website in their module information. It improves consistency in module metadata and helps users find the correct company website from module details.
Original PR description
All modules from odoo/odoo should have website: https://www.odoo.com
Resolved issues and error corrections
This fixes a date-sensitive automated test in the Time Off module by ensuring all related logic runs with a fixed date. It helps prevent false test failures caused by the current calendar date, improving reliability for future updates.
Original PR description
Given that accrual plans are related to dates, all the testcase logic has to be inside 'with freezetime' to avoid date related errors Runbot-error: https://runbot.odoo.com/odoo/runbot.build.error/230722
This fixes an intermittent failure in mail-related automated tests by making them wait properly for asynchronous server responses. It helps keep the validation pipeline stable, especially when test servers are under heavy load, without changing user-facing behavior.
Original PR description
These tests were failing due to `expect.verifySteps()` being empty rather than the RPC response. The rpc response is asynchronous and awaiting the click doesn't necessarily mean the RPC had time to effectively happen, especially when runbot CPU load is high. Fixes runbot-error-160954
This change adjusts an automated test for the HTML editor so it opens the font size menu in a more consistent way. It helps reduce intermittent test failures, improving confidence in release validation without changing user-facing behavior.
Original PR description
The fix at [1] fixed the case when the dropdown had not yet opened, but that was not really the cause of the issue here. It's unclear to me what is the issue exactly, but I've noticed this particular test did open the font size dropdown in a slightly different way than other tests which do not have the same non-deterministic issue. runbot-230945 [1]: https://github.com/odoo/odoo/pull/222583
This change improves the reliability of an automated test for public discussion channels by ensuring the page has fully reloaded before the test continues. It helps reduce false failures in validation systems, making releases and maintenance checks more dependable without changing user-facing behavior.
Original PR description
This test suspiciously fails in various ways in all versions before the following PR: https://github.com/odoo/odoo/pull/214358 This seems to indicate an issue with the page reload. Properly wait for the page to reload before proceeding with the next steps in the tour, hoping it will resolve all the related issues. https://runbot.odoo.com/odoo/error/111051 https://runbot.odoo.com/odoo/error/223165 https://runbot.odoo.com/odoo/error/227755 https://runbot.odoo.com/odoo/error/227756 https://runbot.odoo.com/odoo/error/227757 https://runbot.odoo.com/odoo/error/227758 https://runbot.odoo.com/odoo/error/229657 https://runbot.odoo.com/odoo/error/229724 https://runbot.odoo.com/odoo/error/229745 https://runbot.odoo.com/odoo/error/229817 https://runbot.odoo.com/odoo/error/230901
Calendar meetings that do not have an assigned organizer are now shown correctly when users group the list by responsible person and creation date. This prevents valid meetings from being hidden, improving visibility and reliability for calendar planning.
Original PR description
__Issue__ In the calendar list view, meetings with no organizer and default privacy (`privacy=False`) are excluded when grouping by Responsible and Created On. __Steps to Reproduce__ 1. Create a meeting with: - `privacy` set to default, - no `organizer` 2. Go to Calendar > List view. 3. Group by Responsible, then by Created On. → The meeting is missing from the view. __Fix__ Adjust the domain to include meetings where: - `privacy=False`, and - either `user_id` is unset or their settings are in the public allowed list. - opw-4841266
This fix prevents an error when users duplicate multiple Point of Sale configuration records from the list view. It allows the duplication action to complete reliably for more than one selected record, improving day-to-day administration of POS settings.
Original PR description
### Steps to reproduce the issue: 1) In the Point of Sale app, when trying to duplicate more than two records from the list view, it gives a singleton error. The implementation was added to the master branch from commit [1]. [1]: https://github.com/odoo/odoo/pull/92664/files#diff-4c6e412c7d8f4df2a05831547e7df93d0b91f510d03b7b3ed0d689a18f5dae44R360-R361 opw-4969713 ### Description of the issue/feature this PR addresses: #### Issue Previously, when duplicating more than one pos.config record, it would give a singleton error. #### Solution Added a for loop to iterate over the config records individually. ### Current behavior before PR: https://github.com/user-attachments/assets/ba5a3969-7647-4943-a0b1-12b1961f26cd ### Desired behavior after PR is merged: https://github.com/user-attachments/assets/b952b711-7782-4e9d-b05a-e4019ab79d87 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of Sale now plays the expected error sound when an unknown barcode is scanned, alongside the on-screen warning. This restores feedback that helps cashiers quickly notice failed scans and matches behavior from earlier Odoo versions.
Original PR description
When scanning an unknown barcode, the error notification pop-up is displayed, but the error sound is not played. Steps to reproduce: ------------------- * Open PoS * Scan an unknown barcode > Expected: Both the 'BIP' and the error sound should play. Why this fix: ------------- This feature was present in 16.0 and 17.0, but was lost in 18.0 REF. It was reintroduced in 18.3 with this [IMP](https://github.com/odoo/odoo/pull/209478). opw-4987066 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where custom readonly fields on invoice lines could still be changed, causing invoices to appear modified unexpectedly. The readonly override is now limited to the intended invoice line fields, preserving user-defined protections in Studio.
Original PR description
Steps to reproduce ================== - Go to invoices - Open studio - Click on the invoice lines - Edit the list view - Add a new field of type checkbox - Mark that field as readonly - Exit studio - Open an invoice - Click on the checkbox => The form is marked as dirty and the checkbox is toggled Cause of the issue ================== https://github.com/odoo/odoo/commit/291518a7e7708690d183b9d1ca53c84d0c56ad90 If the state is not in ["cancel", "done", "posted"], the fields are never in readonly Solution ======== Only do this for the "name" and "product_id" fields opw-4917471
This fix prevents an error when a user presses Enter while chat group search results are still loading on a slow connection. It makes the mail chat search experience more reliable and avoids an unexpected interruption for users.
Original PR description
Description of the issue/feature this PR addresses: --- **Reason for PR** When a user searches for a chat group, if the network is slow and the search results have not yet been loaded, pressing **Enter** will cause the system to attempt to access the `unselectable` property of an `option` variable that is not yet initialized. This leads to the following error: ``` Uncaught Javascript Error: undefined is not an object (evaluating 'option.unselectable') ``` This PR adds handling to prevent the error when data has not been fully loaded. --- Current behavior before PR: https://github.com/user-attachments/assets/de3964c7-ff83-4f94-bc1a-cb8e09bfb62f --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222576
The self-order table selection popup now shows restaurant tables in a predictable order by floor and table number. This makes it easier for customers or staff to find the right table and reduces confusion during ordering.
Original PR description
Task [#4991803](https://www.odoo.com/odoo/my-tasks/4991803) Runbot: https://runbot.odoo.com/runbot/bundle/18-0-incremental-order-table-pop-pos-self-order-ltra-391429 --- When selecting a table in the POS self-order, we sort the tables by `floor_id` and then by `table_number` in ascending order. This ensures a consistent and user-friendly experience when choosing a table.
Leave validation no longer fails for employees who do not have a fixed working schedule. The system now uses the employee resource timezone as a fallback, helping managers process time off reliably for fully flexible staff.
Original PR description
Currently, if we try to validate a leave for a fully flexible employee (employee without a working schedule), we get a traceback when fetching the timezone from the working schedule. To rectify this issue, we default to the timezone of the resource. opw-4979974
The Point of Sale now reuses an existing empty order when staff select New Order from the receipt screen, rather than creating another blank order. This keeps sessions cleaner and avoids accumulating unnecessary empty orders.
Original PR description
- When clicking `New order` on the receipt screen, we now want to reuse an empty order (not finalized and no order lines) before creating a new one. This avoids creating many useless empty orders. task-id: 5003010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Peru PLE reports 5.1 and 6.1 now keep the original account move name exactly as entered, including spaces and slashes. This helps ensure exported report data remains complete and audit-ready for tax authority reviews.
Original PR description
Problem: For PLE reports 5.1 and 6.1, the value for `glosa` was being modified (i.e. blank spaces and slashes removed). Although SUNAT accepts the modified value, no information should be removed in the case it might lead to issues with tax authorities during an audit. Solution: The value for `glosa` on the reports should be the exact account move name. opw-4803060 Forward-Port-Of: odoo/enterprise#92167 Forward-Port-Of: odoo/enterprise#91967
Shared document links that have been moved or redirected now send users to the correct content. This preserves access for older links and reduces broken-link issues for document users.
Original PR description
We do not currently check for `documents.redirect` records when accessing the `/documents/content/<access_token>` endpoint. This commit fixes this by redirecting if a `document.redirect` with the appropriate `access_token` was created for backwards compatibility. opw-4517698
A manufacturing work order test now turns on the required lot tracking settings before running. This prevents false failures when demo data is not available, helping keep quality checks reliable without changing user-facing behavior.
Original PR description
The mrp lot generation test lacked the settings to properly add and process lot data, causing it to fail without demo data. This commit aims to address that. Error: https://runbot.odoo.com/odoo/error/229706
This fix ensures Mexican point-of-sale orders use the correct currency rounding when checking totals. It prevents fully discounted orders from being incorrectly blocked by a validation error caused by tiny rounding differences.
Original PR description
Issue: With specific prices and discounts, we can get an rounding issue that does not pass the Validation Error. Purpose of this PR: To round the amount total based on the currency's rounding precision to pass the check. Steps to Reproduce on Runbot: install pos, l10n_mx create products prices with 75.00 and 60.00 respectively. create discount 100% on order change decimal accuracy to 3, change tax to Include with Price create PoS order with products and apply discount receive ValidationError even though the amount total should be rounded to 0.0. opw-4944830
This update fixes an automated test so it no longer fails depending on the time of day or the user's timezone. It helps keep quality checks stable without changing any customer-facing timesheet or holiday behavior.
Original PR description
Before this commit, when the `test_timer_methods_handle_project_access_restrictions` test is executed after 22h in UTC the test failed because the timezone of the current user is the belgian one. This commit makes sure the date and timezone no longer affects this test since it is not the purpose of this test. runbot-error-230490
The Argentina electronic invoicing test setup now stops after a limited number of connection attempts instead of retrying indefinitely. This reduces wasted test time and helps avoid repeatedly hitting external services when they are unavailable.
Original PR description
In 18.0 and above test hasn't worked in months, half the time it fails because pretty much nothing works in it and half the time it's because it keeps looping on trying to set up the connection and failing (possibly because we're getting blacklisted due to how much spamming we do). For now restrict to just trying 5 times (per class since it's called from a `setUpClass`) with an exponential backoff. This may yet end up in removing the entire test directory as it doesn't seem like anyone cares. Forward-Port-Of: odoo/enterprise#92207