Friday, August 22, 2025
14 changes · saas-18.3
Enhancements to existing features
Automatic bank reconciliation rules now use shorter, clearer names when similar rules would otherwise get long duplicate labels. This makes the rules easier to identify and use while still preventing naming conflicts.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/e9ab2ae2876970c66c41fa56de70511af24471c1 we change the way the name of automatic reco model are made. But the solution we choose are a bit naive. If the common substring is huge then the reco model is unusable. Since we are stuck with the constraint, the solution we choose is to add a number in parentheses to avoid duplicate. task-5031337
Resolved issues and error corrections
Accounting reconciliation now pairs matching debit and credit lines for the same partner more consistently. This prevents confusing behind-the-scenes partial reconciliation amounts while keeping the visible reconciliation result correct.
Original PR description
**Steps to reproduce:** - Install Accounting - Go to "Accounting / Accounting / Journals / Journal Entries" - Create the following MISC entries in this order: 1) | Account | Partner | Debit | Credit…
**Steps to reproduce:** - Install Accounting - Go to "Accounting / Accounting / Journals / Journal Entries" - Create the following MISC entries in this order: 1) | Account | Partner | Debit | Credit | | ------------------ | --------- | ----- | ------ | | Receivable Account | Partner A | 1000 | 0 | | Account X | Partner A | 0 | 1000 | 2) | Account | Partner | Debit | Credit | | ------------------ | --------- | ----- | ------ | | Receivable Account | Partner B | 1001 | 0 | | Account X | Partner B | 0 | 1001 | 3) | Account | Partner | Debit | Credit | | ------------------ | --------- | ----- | ------ | | Receivable Account | Partner C | 1002 | 0 | | Account X | Partner C | 0 | 1002 | 4) | Account | Partner | Debit | Credit | | ------------------ | --------- | ----- | ------ | | Receivable Account | Partner C | 0 | 1002 | | Account X | Partner C | 1002 | 0 | 5) | Account | Partner | Debit | Credit | | ------------------ | --------- | ----- | ------ | | Receivable Account | Partner B | 0 | 1001 | | Account X | Partner B | 1001 | 0 | 6) | Account | Partner | Debit | Credit | | ------------------ | --------- | ----- | ------ | | Receivable Account | Partner A | 0 | 1000 | | Account X | Partner A | 1000 | 0 | - Go to "Accounting / Accounting / Journals / Journal Items" - Select the 6 created lines linked to the Receivable Account - Reconcile them **Issue:** The 6 lines are fully reconciled, but when checking the amounts of the partial reconcile records (not visible in the UI), the debit and credit amounts are matched by their actual order. So, the first debit line of 1000 is matched with the first credit line of 1002, which results in a residual credit of 2 that is then matched with the second debit line of 1001, which leads to a residual debit of 999 and so on. This generates weird amounts in the partial reconcile records. **Solution:** In the case there are several lines with different partners, the lines can be sorted by partner to try to match the lines with the same partner together. opw-449356 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223815 Forward-Port-Of: odoo/odoo#223512
This fix makes automated checks for public discussion channels more reliable by preventing repeated test runs from confusing messages with each other. It reduces false failures in validation pipelines, helping teams ship mail-related updates with greater confidence.
Original PR description
This tour had many race conditions in the past and keeps having them. Some of them are actually due to the fact the tour is ran twice, but the selectors completely ignore this fact, leading to unexpected results. The message body is now updated before the second run to avoid confusion and the selectors are adapted to always target the message of the current run. Also remove the reload for emojis as they are showing immediately after being added. Also remove the useless comments that makes the test twice as long to read and to understand. https://runbot.odoo.com/odoo/runbot.build.error/230901 Forward-Port-Of: odoo/odoo#223839 Forward-Port-Of: odoo/odoo#223807
This fix prevents Point of Sale loyalty workflows from failing when a customer record has not yet been loaded. It also makes an automated sales test use a unique customer name, reducing false test failures and improving release stability.
Original PR description
In PoS loyalty when activating a barcode we were not checking if the partner was already loaded in the PoS resulting of an undefined var. Now we check if the partner is loaded before trying to access it. In PoS sale tour, we were creating a partner called "Test Partner" which was already created in the setup, so sometime the tour was selecting the wrong one. Now, the name of this partner is changed to "AAA - Test Partner invoice" Runbot error: 230992, 230995 https://runbot.odoo.com/odoo/runbot.build.error/230992 https://runbot.odoo.com/odoo/runbot.build.error/230995 Forward-Port-Of: odoo/odoo#223618
A test in the subcontracting dropshipping area now sets the required sender email explicitly, avoiding failures when demo data is not installed. This keeps automated validation reliable without changing customer-facing workflows.
Original PR description
This issue comes from [216633](https://github.com/odoo/odoo/pull/216633) Administrator doesn't have an email address without demo data since [185809](https://github.com/odoo/odoo/pull/185809). This causes an error in no demo build for the test `test_kit_dropshipped_change_qty_SO` because it requires a sender's email address configured. Runbot - [229621](https://runbot.odoo.com/odoo/error/229621) Forward-Port-Of: odoo/odoo#220181
This update fixes internal mail-related tests so they pass consistently when an optional file detection library is installed. It helps maintain release quality and reduces false test failures without changing customer-facing behavior.
Original PR description
Those tests are failing when python-magic is installed. Since 26f9c82b99 Odoo > saas-18.4 has this lib as a requirement and comes with appropriate fixes. This commit adapts some test from 17.0 up to saas-18.4 to also work when the python-magic lib is installed. Forward-Port-Of: odoo/odoo#223642 Forward-Port-Of: odoo/odoo#223609
This fix changes how the web test runner handles missing excluded test or suite IDs passed through URLs. It prevents automated Runbot sub-builds from failing repeatedly because of harmless missing IDs, while still surfacing useful information when an included ID cannot be found.
Original PR description
Before this commit, URL test/suite IDs were warned in the console if they didn't match any test/suite registered by the test runner. This is an issue for Runbot which runs sub-builds with the same URL parameters regardless of the installed addons, which repeatedly fails such builds. This commit changes the warning to a regular log, so that these builds stop failing, while still allowing a developer to get the information that an ID has been removed/ignored. runbot [230082](https://runbot.odoo.com/odoo/runbot.build.error/230082) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223242
After downloading the ADEME emissions database in ESG, users are now taken directly to the emissions factors page instead of remaining on the database screen. The update also adds timing logs to help monitor how long ADEME data retrieval takes.
Original PR description
Steps to reproduce: - go on configuration -> databases in ESG - download the ademe database What's happening: A success message is displayed, but the user stays on the database page. What's expected: The user is redirected towards the factor emissions page Additional fix: Small addition of an extra logger in the ADEME download process to allow checking the time needed to fetch the data from the ADEME website Task [link](https://www.odoo.com/odoo/project/967/tasks/4751902) task-4751902
FedEx shipping requests now remove the country prefix from province or state codes when needed. This helps avoid shipment processing errors for locations where standard regional codes include the country code, such as Sweden.
Original PR description
Before this commit: The province code for some countries includes the country code too. FedEx expects a two letter code in the request. For example, the standard code for Stockholms lan is "SE-AB" and the code FedEx expects is "AB". After this commit: The country code is excluded from the province code. opw-4984662 Forward-Port-Of: odoo/enterprise#92650
This fixes an issue where changing a product variant during subscription checkout could apply the selected plan to an outdated dropdown. The update makes the checkout tour more reliable and helps ensure customers see the correct subscription plan selection.
Original PR description
The subscription plan selection gets removed and replaced (static template website_sale_subscription.SubscriptionPricingSelect) So the change of value occurs, but on the wrong select. This was happening as when changing the variant we will replace the plan_select in the widget with another template and since this will happen before the RPC set the plan_id that we are choosing as the default one we will actually have the old select option back on the dom to be selected. https://github.com/odoo/enterprise/blob/82593f9932e92800251d18453b0c73e5ce9b5ec0/website_sale_subscription/static/src/js/variant_mixin.js#L35-L41 We are setting the select option to the old one after replacing it. This commit introduces a delay to prevent the test to fail (which happened most of the time) runbot-error-110627 Forward-Port-Of: odoo/enterprise#86639
A failing automated test in the batch payment accounting module was corrected for Python 3.13. This helps keep the accounting test suite reliable across supported Python versions without changing business behavior.
Original PR description
**Issue:** "test_partner_account_batch_payments_with_journal_entry" is failing when executed in a Python 3.13 env. **Cause:** Sorting the account move lines on a tuple doesn't necessarily result in the same order between version 3.13 and previous ones. runbot-230794
Bank statement labels are now handled more safely when matching reconciliation rules. This helps avoid incorrect matches when labels contain special characters such as plus signs, slashes, dots, or asterisks.
Original PR description
This commit will change the way we normalise the label. We now firstly check that the label is a structure reference and if so we don't escape the numbers. Otherwise, we do an escape of the label and the numbers. Escaping the label will allow to avoid case where we use character like * or . that would mess up the match regex. Example: '+++344/0660/16938+++' will be \\+\\+\\+344\\/0660\\/16938\\+\\+\\+ 'This is a test' will be 'This\\ is\\ a\\ test' task-5023114
This update makes an internal automated test pass consistently whether or not an optional file-detection library is installed. It helps keep document accounting quality checks stable across different environments without changing user-facing behavior.
Original PR description
The test `test_embedded_pdf` fails when the magic lib is installed. modified cherry-pick of 22cbdb477 Adapted to work with or without the lib as the lib is not required in version < 19.0. Forward-Port-Of: odoo/enterprise#92791 Forward-Port-Of: odoo/enterprise#92778
The Danish RSU module has been renamed to better match the naming used by other Denmark-related modules. This is a minor consistency fix that helps users and administrators recognize the module more easily.
Original PR description
This commit will edit the name of the module to be consistent with the other denmark modules no task id Forward-Port-Of: odoo/enterprise#92759