Friday, September 12, 2025
13 changes · saas-18.2
Enhancements to existing features
The Indian e-invoicing process now skips invoices that were already cancelled. This prevents attempts to generate a new IRN for the same document number, reducing compliance errors and unnecessary processing.
Original PR description
Once cancelled, the same document (with same document number) can't be reported again for generation of IRN. In this commit: --- Updated the `_l10n_in_check_einvoice_eligible()` method to exclude invoices with `l10n_in_edi_status` set to `cancelled`. which Ensures that cancelled invoices are not sent again for IRN generation.
Resolved issues and error corrections
Deleting a message that contains a link preview now also removes the related preview automatically. This prevents leftover previews from remaining visible and avoids manual cleanup for users.
Original PR description
**Specifications:** - Ensure link preview is removed when deleting a message. **Purpose:** - Previously, deleting a message with a link preview did not remove the preview, requiring manual intervention. - This fix ensures that when a message containing a link preview is deleted, its associated preview is also removed automatically, improving user experience. task-4678962 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures Odoo correctly recognizes when a web connection has been closed instead of triggering a misleading internal error. It helps reduce noisy error reports and makes connection shutdown behavior more reliable.
Original PR description
Followup to 16.0-closed-in-stop-xmo: the condition in `stop` is a `hasattr`, so we need to delete `self.ws` not set it to `None`. Setting it to `None` means the condition passes then blows up as soon as we try to use it, which means we "just" converted all the old `WebSocketConnectionClosedException` to an `AttributeError`. https://runbot.odoo.com/odoo/error/231446 Forward-Port-Of: odoo/odoo#226267
This fix updates a manufacturing subcontracting dropshipping test so required product category accounting information is prepared before it is used. It helps keep automated validation reliable and prevents a known runbot failure from blocking future changes.
Original PR description
this PR fixes the runbot error 230451 introduced by the test of PR https://github.com/odoo/odoo/pull/221009 (a first corrective PR was made here https://github.com/odoo/odoo/pull/224431) fix : populate the accounts of the category before using them Forward-Port-Of: odoo/odoo#225661
Due to time constraints the translations were not added in the commit adding the modules (72ac059edfcc35ad44c5faa9daf971123377af24). This commit adds the translations / fills the `.po` files. The translations were created by LMAN based on the 18.0 po files. Veri*Factu task: task-3745982 Forward-Port-Of: odoo/odoo#226298 Forward-Port-Of: odoo/odoo#225173
Original PR description
Due to time constraints the translations were not added in the commit adding the modules (72ac059edfcc35ad44c5faa9daf971123377af24). This commit adds the translations / fills the `.po` files. The translations were created by LMAN based on the 18.0 po files. Veri*Factu task: task-3745982 Forward-Port-Of: odoo/odoo#226298 Forward-Port-Of: odoo/odoo#225173
The POS box homepage now correctly detects when the newer ngrok service is installed, even if it is not fully running yet because setup is incomplete. This helps avoid falling back to the older launch method and makes initial configuration more reliable.
Original PR description
Before this commit, the check in the ngrok controller for whether to use the new ngrok service or the old method of launching ngrok was flawed. The check used `systemctl is-active`, however this will only succeed if the service is up and running successfully, which isn't the case initially due to the missing token config. After this commit, we use `systemctl is-enabled` instead. This command succeeds as long as the service exists and is not disabled, even if it is currently in error. ```bash > systemctl is-active odoo-ngrok.service activating > echo $? 3 > systemctl is-enabled odoo-ngrok.service enabled > echo $? 0 ``` task-5075770 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The web test runner now reports critical setup issues during dry runs as real errors. This helps the automated testing system catch problems that could otherwise stop tests from running, improving reliability for development and releases.
Original PR description
The test runner replaces most occurences of `console.log` with a formatted `console.trace`, as to avoid duplicate runbot error messages in general. The issue is that during the dry run, errors that are caught should be logged on the runbot since these errors are more critical (i.e. duplicate test name, which will prevent the runner to run at all). This commit ensures that errors caught during dry run are logged as actual errors to prevent this issue. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225688
Restaurant staff can now use Cash In and Cash Out actions without hitting an error when they are not on the product screen. This keeps cash management workflows reliable during restaurant operations.
Original PR description
Before this commit, performing a Cash In/Out operation in a restaurant while not on the product screen caused an error, as there was no selected order in that context. opw-5042755 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224932
The web test runner now preserves excluded tests when simplifying test URLs. This prevents excluded test IDs from being accidentally ignored, helping internal test runs reflect the intended selection more accurately.
Original PR description
Before this commit, when the test runner simplified the URL (e.g. if the runner is given the ID of every test in a suite, it will remove them and only include the suite ID), it always considered IDs as being "included", and ignored the "-" specifying that some IDs should be "excluded". --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225950
On small screens, selecting an option such as Preferences from the user menu now closes the burger menu first. This prevents dialogs from opening hidden behind the menu, making mobile navigation clearer and less frustrating.
Original PR description
This commit ensures the BurgerMenu is closed when clicking on one of its items, and specifically on one of the BurgerUserMenu items. Steps to reproduce (on small screen): - on a "base" database (no app installed) - click on the BurgerMenu (top right) - click on "Preferences" => the user's preference dialog opens behind the BurgerMenu Forward-Port-Of: odoo/odoo#225926 Forward-Port-Of: odoo/odoo#225696
Survey date and time answers now display using the current user's time zone. This prevents confusion where the answer list showed a different time than the detailed answer form.
Original PR description
Steps to reproduce ==================== 1. Create survey with some datetime questions. 2. Receive some response on it. 3. Check answer of datetime questions in answer tab. 4. Click on that answer to open form. ->The time shown in answer tab differs from actual value in form. The display_name of survey.user_input.line is computed based on the answers submitted by users. For questions of type datetime, the display_name was generated by converting the datetime value to a string without accounting for the user's timezone, leading to a mismatch between the actual value and the displayed time. After this commit ================== This commit updates the computation of display_name for datetime answers to consider the current user's timezone. Task-4890423 Forward-Port-Of: odoo/odoo#226354 Forward-Port-Of: odoo/odoo#216281
Stripe payment card fields now use the language selected on the website instead of defaulting to the shopper's browser language. This keeps the checkout experience consistent for multilingual websites and reduces confusion during payment.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Enable Stripe; 2. enable a second language on the website; 3. use second language on website; 3. go to checkout; 4. open card payment method. Issue ----- The card field values are displayed using the current browser's locale instead of the website's language. Cause ----- The `locale` parameter isn't included when connecting to the Stripe API. Solution -------- Include the lang from the `html` element via `_prepareStripeOptions`. If not present, let it fall back on the browser's locale. opw-5024805 Forward-Port-Of: odoo/odoo#226045
This fixes a timing issue that could affect the two-factor authentication flow when the web client starts. The update helps ensure login checks run in the right order, reducing intermittent failures for users signing in with authenticator codes.
Original PR description
Should actually fix what #224161 tried to: I didn't notice that the events had been renamed (#220852) and since the test was still disabled (and the fixing PR was set to the master one) all the CIs ran without the test, thus not testing the fix in any way. It could have passed anyway as it's a non-deterministic issue, but it's at best a 50/50 that it succeeds so over 3 stagings I'd most likely have seen it... https://runbot.odoo.com/odoo/error/231316 https://runbot.odoo.com/odoo/error/181862 (the original of the same)