Monday, June 23, 2025
30 changes · saas-18.2
Resolved issues and error corrections
This fixes cases where records could fail to save when property field definitions changed and the operation ran under a limited-access user. The system now applies default property values with the necessary permissions, preventing access errors during internal data flushing.
Original PR description
If the definition of the properties changes, the Properties fields is computed to add the default values from its definition. This is done in the `_compute` method when flushing data (because the field is stored). We need to run that method in sudo, because the default environment may have a user that doesn't have permissions to read the parent record or update the current record.
Example with `env` with public user which is the default_env for the transaction.
```
lead = env['crm.lead'].sudo().create({'name': 'test'})
lead.team_id = 2
```
Current behavior before PR:
Access error in:
```
File "/opt/odoo/odoo/orm/fields_properties.py", line 294, in _compute
{self.name: record[self.name], self.definition_record: record[self.definition_record]},
~~~~~~^^^^^^^^^^^
```
Desired behavior after PR is merged:
`lead` flushed correctly.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update fixes a timing issue that could cause automated Point of Sale checks to fail after a page refresh. It helps keep validation runs stable and reduces false failures during release testing.
Original PR description
Call to indexedDB is now debounced to avoid multiple calls, but when a tour refresh the page, the previous call is still pending and causes a failure in the test since the data are not in the database yet. runbot error: 227554
Customers who add the last item from their wishlist to the cart are redirected to the cart again. This restores the expected shopping flow and avoids leaving shoppers on an empty wishlist page.
Original PR description
Versions -------- - saas-18.2 - saas-18.3 Fix on master in FW. Steps ----- 1. Add 1 item to your wishlist; 2. go to wishlist; 3. add item to cart. Issue ----- You don't get redirected to the cart. Cause ----- Commit c0f411cc7cf17 fixed an issue where products were removed from the wishlist before they were added to the cart via the product configurator by not passing a deferred redirect to `_removeWish`. An unintended side-effect is that the user no longer gets redirected when the wishlist is empty. Solution -------- After calling `_removeWish`, check if the wishlist is empty, and if so, call `_redirectNoWish` to restore previous behavior. runbot-227042
This fixes a recurring automated test failure in the Swedish SIE4 export caused by account setup differences when extra modules are installed. The export validation is now consistent across database configurations, reducing false failures in release checks.
Original PR description
From saas-18.2, some account changes on Swedish CoA when other module(s) are installed have been breaking the test for the export (that exports all the available account). This commit adapts the expected test file to ignore this changes and ensures the result always stays the same, no matter what modules are installed on the database. This fixes the currently recurring runbot errors from saas-18.2 and up: [runbot-159821](https://runbot.odoo.com/odoo/error/159821)
The Attendance Gantt view now shows its helpful empty-state guidance when there are no attendance records, even if a default employee row is present. This makes fresh databases clearer for users by explaining what to do instead of showing an empty-looking schedule.
Original PR description
Issue / current behavior: In the gantt view of hr.attendance, the no content help screen will only show if there's no rows. In the case of a fresh database with only the Administrator employee, the help will not appear because the admin row exists by default. Required behavior: The gantt view should show the no content help screen if recordIds inside the single row is empty, meaning that there's no hr.attendance records. task-4874129
Miscellaneous changes
`l10n_eg_long_edi` is set by two different computes. This is completely useless as it will trigger a write and the actual compute will still be called when the field is read. Forward-Port-Of: odoo/odoo#215134
Original PR description
`l10n_eg_long_edi` is set by two different computes. This is completely useless as it will trigger a write and the actual compute will still be called when the field is read. Forward-Port-Of: odoo/odoo#215134
With a Spanish company and `l10n_es_edi_facturae`: - Create an invoice with a Spanish contact and confirm it. - Create a credit note for this invoice. Send and print it. In the Facturae XML, the `InvoiceClass` uses `OO` instead of `OR` (as specified on page 24 of [the specifications](https://www.facturae.gob.es/formato/Versiones/Esquema_castellano_v3_2_x_06_06_2017_unificado.pdf)). This commit also removes the hard-coded `'FC'` for `InvoiceDocumentType`, writing `'FA'` instead in the c
Original PR description
With a Spanish company and `l10n_es_edi_facturae`: - Create an invoice with a Spanish contact and confirm it. - Create a credit note for this invoice. Send and print it. In the Facturae XML, the `InvoiceClass` uses `OO` instead of `OR` (as specified on page 24 of [the specifications](https://www.facturae.gob.es/formato/Versiones/Esquema_castellano_v3_2_x_06_06_2017_unificado.pdf)). This commit also removes the hard-coded `'FC'` for `InvoiceDocumentType`, writing `'FA'` instead in the case of a simplified invoice. opw-4806099 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214732 Forward-Port-Of: odoo/odoo#211649
When the connection to the replica database fails, the worker failover to the primary database and keeps on connecting to the primary database until the worker is recycled. This makes any hicups to the replica connection degrades the system for a very long time, as workers are only recycled once/twice a week. In this work, we makes so it attempts to reconnect to the replica database once every 20 minutes. This makes to the system recovers more quickly. Description of the issue/feature t
Original PR description
When the connection to the replica database fails, the worker failover to the primary database and keeps on connecting to the primary database until the worker is recycled. This makes any hicups to the replica connection degrades the system for a very long time, as workers are only recycled once/twice a week. In this work, we makes so it attempts to reconnect to the replica database once every 20 minutes. This makes to the system recovers more quickly. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214279 Forward-Port-Of: odoo/odoo#214032
**PROBLEM** In the user menu, the text of dropdown item sometimes overlap with the checkbox next to it when it's too long. **STEP TO REPRODUCE** (happened with the italian localization of the onboarding module, but it's no longer the case because the text was shortened) 1. In `enterprise/web_enterprise/i18n/it.po`, for the msgid "Dark Mode" set the translation to something long. 2. click on the user menu and notice the text for the dark mode dropdown item is overlapping with the checkbox
Original PR description
**PROBLEM** In the user menu, the text of dropdown item sometimes overlap with the checkbox next to it when it's too long. **STEP TO REPRODUCE** (happened with the italian localization of the onboarding module, but it's no longer the case because the text was shortened) 1. In `enterprise/web_enterprise/i18n/it.po`, for the msgid "Dark Mode" set the translation to something long. 2. click on the user menu and notice the text for the dark mode dropdown item is overlapping with the checkbox next to it. **CAUSE** The checkbox in the user_menu.xml template use d-flex and flex-row-reverse, which doesn't work well with the class form-switch. form-switch add a negative left-margin of -2.5em to the <input> inside the checkbox template. **FIX** Put the description text before the checkbox in a flex div, and remove the flex-row-reverse on the checkbox. opw-4654405 Forward-Port-Of: odoo/odoo#214851 Forward-Port-Of: odoo/odoo#214127
This commit fixes an issue in the datetime_picker where clicking on an already selected start date would not initiate the selection of an end date. As a result, users were forced to select a different date first before being able to reselect the same start date. With this fix, clicking the start date again now correctly triggers the end date selection phase, improving the overall usability of the daterange picker. task-4845373 Forward-Port-Of: odoo/odoo#215037
Original PR description
This commit fixes an issue in the datetime_picker where clicking on an already selected start date would not initiate the selection of an end date. As a result, users were forced to select a different date first before being able to reselect the same start date. With this fix, clicking the start date again now correctly triggers the end date selection phase, improving the overall usability of the daterange picker. task-4845373 Forward-Port-Of: odoo/odoo#215037
- Adding new taxes required by DIOT - Adding relevant tags and accounts Enterprise PR: https://github.com/odoo/enterprise/pull/82864 task-4568859 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215170 Forward-Port-Of: odoo/odoo#204742
Original PR description
- Adding new taxes required by DIOT - Adding relevant tags and accounts Enterprise PR: https://github.com/odoo/enterprise/pull/82864 task-4568859 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215170 Forward-Port-Of: odoo/odoo#204742
Before this commit, discuss call HOOT tests retained the window object after test ended. Retained memory was about 2.5Mb-4Mb per test. An earlier PR [1] fixed a similar issue from a `const` object being used in field default value. This was a problem because JS models internal code is keeping a reference to this object, and since HOOT suite test reuses the same window object, the window of each test were retained. The PR [1] fixed the issue by not setting object as default value of the fie
Original PR description
Before this commit, discuss call HOOT tests retained the window object after test ended. Retained memory was about 2.5Mb-4Mb per test. An earlier PR [1] fixed a similar issue from a `const` object…
Before this commit, discuss call HOOT tests retained the window object after test ended. Retained memory was about 2.5Mb-4Mb per test. An earlier PR [1] fixed a similar issue from a `const` object being used in field default value. This was a problem because JS models internal code is keeping a reference to this object, and since HOOT suite test reuses the same window object, the window of each test were retained. The PR [1] fixed the issue by not setting object as default value of the field. Note that the default value and its presence in internal code of JS models happened for all tests that use `@mail` static files. That means this PR `[1]` fixed a retained memory for all `@mail` and related tests. While this fixed many tests, we still observed this retained memory on all discuss call tests. This happens because while the default value no longer uses this shared object, the computed value still does. Therefore call tests were sharing the const and thus retaining the window object. Note that the computed method is implicitly lazy, so this is only invoked in code that actually uses this `iceServers` field, hence why only discuss call tests were still affected by the issue. This commit fixes the issue by replacing the DEFAULT_ICE_SERVERS object by GET_DEFAULT_ICE_SERVERS function. This ensures each test use a different object, thus preventing retaining the window object after test has ended. [1]: https://github.com/odoo/odoo/pull/204521 Forward-Port-Of: odoo/odoo#215208
[FIX] l10n_tr_nilvera_einvoice: exclude ID without schemeID Nilvera expects a `<schemeID>` with every `<ID>`. In Odoo currently, we only support VKN or TCKN as a schemeID that get impacted from the VAT Number. Also, Nilvera reject any `<BuyerReference>` tag. Before: - The generated XML contains some `<ID>` tags without 'schemeID' attribute. - The generated XML contains some `<BuyerReference>` tag. After: - The `<ID>` tags with no 'schemeID' are removed from the XML. - The `<BuyerRefe
Original PR description
[FIX] l10n_tr_nilvera_einvoice: exclude ID without schemeID Nilvera expects a `<schemeID>` with every `<ID>`. In Odoo currently, we only support VKN or TCKN as a schemeID that get impacted from the VAT Number. Also, Nilvera reject any `<BuyerReference>` tag. Before: - The generated XML contains some `<ID>` tags without 'schemeID' attribute. - The generated XML contains some `<BuyerReference>` tag. After: - The `<ID>` tags with no 'schemeID' are removed from the XML. - The `<BuyerReference>` tag is removed from the XML. Task-4822777 runbot: https://runbot.odoo.com/runbot/bundle/18-0-tr-nilvera-partner-ref-override-tax-id-roto-376352 Forward-Port-Of: odoo/odoo#214501
## Pull Request HOOT (PRHOOT) 33 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Enterprise: https://github.com/odoo/enterprise/pull/87476 --- I confirm I have s
Original PR description
## Pull Request HOOT (PRHOOT) 33 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Enterprise: https://github.com/odoo/enterprise/pull/87476 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215199 Forward-Port-Of: odoo/odoo#213223
Issue: Before this commit, sometimes we might have different accounts with the same type, which throws a singleton error Fix: Check if all the accounts are not reconciled oes-4798698 Forward-Port-Of: odoo/odoo#214535
Original PR description
Issue: Before this commit, sometimes we might have different accounts with the same type, which throws a singleton error Fix: Check if all the accounts are not reconciled oes-4798698 Forward-Port-Of: odoo/odoo#214535
### Rationale for omitting `nbsp` in code blocks: - Code blocks, usually rendered within `<pre>` tags, inherently preserve whitespace & indentation through browser’s white-space: pre CSS behavior. Thus, inserting `nbsp` to maintain space visibility is redundant & may introduce hidden characters. ### Description of the issue/feature this PR addresses: - Indentation pasted as plain text inside code blocks was replaced by `nbsp`. ### Desired behavior after PR is merged: - Pasting pla
Original PR description
### Rationale for omitting `nbsp` in code blocks: - Code blocks, usually rendered within `<pre>` tags, inherently preserve whitespace & indentation through browser’s white-space: pre CSS behavior. Thus, inserting `nbsp` to maintain space visibility is redundant & may introduce hidden characters. ### Description of the issue/feature this PR addresses: - Indentation pasted as plain text inside code blocks was replaced by `nbsp`. ### Desired behavior after PR is merged: - Pasting plain text inside code blocks preserves indentation using normal spaces, avoiding insertion of `nbsp`. task-4815939 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211386
This commit fixes the calculation of the duration of an attendance record for an employee on a fully flexible working schedule. Previously, we were using the adjusted start and end times, which were adjusted from their original values to be the outer bounds of the interval made up of the original times and the UTC-converted times. This resulted in a duration that was too long. Now, we use the original start and end times to calculate the duration of the attendance because this value is ti
Original PR description
This commit fixes the calculation of the duration of an attendance record for an employee on a fully flexible working schedule. Previously, we were using the adjusted start and end times, which were adjusted from their original values to be the outer bounds of the interval made up of the original times and the UTC-converted times. This resulted in a duration that was too long. Now, we use the original start and end times to calculate the duration of the attendance because this value is timezone-agnostic. Forward-Port-Of: odoo/odoo#213700
Following non-deterministic test failure happens on runbot: ``` [HOOT] Test "@mail/message/message/Can edit message comment in chatter" failed: [HOOT] Error: Failed to find 1 of ".o-mail-Message .o-mail-Composer-input" with value "edited again" (Timeout of 3 seconds). Found 0 instead. ``` We couldn't reproduce in practice to see why this fails, and we are not helped from HOOT tests on runbot being run in headless mode thus screenshots are useless. One theory of failure is race conditio
Original PR description
Following non-deterministic test failure happens on runbot: ``` [HOOT] Test "@mail/message/message/Can edit message comment in chatter" failed: [HOOT] Error: Failed to find 1 of ".o-mail-Message…
Following non-deterministic test failure happens on runbot:
```
[HOOT] Test "@mail/message/message/Can edit message comment in chatter" failed:
[HOOT] Error: Failed to find 1 of ".o-mail-Message .o-mail-Composer-input" with value "edited again" (Timeout of 3 seconds). Found 0 instead.
```
We couldn't reproduce in practice to see why this fails, and we are not helped from HOOT tests on runbot being run in headless mode thus screenshots are useless.
One theory of failure is race condition of composer input still containing the trailing `\n` character when we'd expect it to be removed. The `contains({ value })` of mail test helpers checks for exact match of value thus the error.
This commit attempts to fix the issue by using relaxing the condition for input containing at least the expected character. In other words: it replaces the `{ value }` (exact match) by `:value()` (includes match). That way if the value still has the `/n` trailing character, assertion `edited again` would pass with `edited again/n`.
Note that `:value` seems to not see newlines `\n` in inputs. This is a bit annoying so we had to relax the other value assertion too. There's plan to use web selectors rather than mail ones, which is another reason to not improve mail_test_helpers further and instead put effort to migrate to web test helpers.
runbot-181952
Forward-Port-Of: odoo/odoo#214626fix in version-18.0 Forward-Port-Of: odoo/odoo#215374
Original PR description
fix in version-18.0 Forward-Port-Of: odoo/odoo#215374
Steps to reproduce: - Install payroll, l10n_mx_hr_payroll (mexican localisation) - Install l10n_mx_hr_payroll_account - Switch to a Mexican Company - Create a payslip for a mexican employee with amount < 4000 - Compute the sheet for the payslip Error message appears, this error message is not a descriptive to the user or not telling what could have gone wrong. This happens because the mexican pay structure has some salary rules that has to be computed, one of these rules is `Retiremen
Original PR description
Steps to reproduce: - Install payroll, l10n_mx_hr_payroll (mexican localisation) - Install l10n_mx_hr_payroll_account - Switch to a Mexican Company - Create a payslip for a mexican employee with…
Steps to reproduce: - Install payroll, l10n_mx_hr_payroll (mexican localisation) - Install l10n_mx_hr_payroll_account - Switch to a Mexican Company - Create a payslip for a mexican employee with amount < 4000 - Compute the sheet for the payslip Error message appears, this error message is not a descriptive to the user or not telling what could have gone wrong. This happens because the mexican pay structure has some salary rules that has to be computed, one of these rules is `Retirement, assault in elderly and old age (CEAV) IMSS (Employer)` that has mode of code. This mode means calling safe_eval on the code raw text of it written in the xml file on the data folder. This rule aims to find the suitable taxation level to be applied on the salary. It reads the limits of each level and check if the `integrated_daily_wage` of the employee falls in this level and applies that taxation level. There is no upper limit on the salary, But there is a min level, hence if the integrated_daily_wage < mdw (minimum daily wage) the function returns None that used as index in the taxation table leading to an unreadable Exception from the safe_eval call. https://github.com/odoo/enterprise/blob/747482f34ca8210d89d81b3363ec5a8fc3a4ff6f/l10n_mx_hr_payroll/data/salary_rules/hr_salary_rule_regular_pay_data.xml#L1111-L1120 opw-4576482 Forward-Port-Of: odoo/enterprise#83364
When fuzzy matching the partner name, we were checking that `supplier_rank > 0`, but this should apply for vendor bills, not for customer invoices. For those, we need to check `customer_rank > 0`. [opw-4824010](https://www.odoo.com/odoo/project.task/4824010) Forward-Port-Of: odoo/enterprise#88144 Forward-Port-Of: odoo/enterprise#87869
Original PR description
When fuzzy matching the partner name, we were checking that `supplier_rank > 0`, but this should apply for vendor bills, not for customer invoices. For those, we need to check `customer_rank > 0`. [opw-4824010](https://www.odoo.com/odoo/project.task/4824010) Forward-Port-Of: odoo/enterprise#88144 Forward-Port-Of: odoo/enterprise#87869
Currently a traceback is occurring when the user tries to create a Draft Entry, in the batch that contains payslips of multiple companies. **To reproduce this issue:** 1) Install hr_payroll_account and switch to multi-company environment 2) Create two employees with two running contracts respectively 3) Now create a Batch record from payroll/payslips/batches 4) Create two playslips with different companies with the created batch 5) Compute both the payslips and open the batch 6)
Original PR description
Currently a traceback is occurring when the user tries to create a Draft Entry, in the batch that contains payslips of multiple companies. **To reproduce this issue:** 1) Install hr_payroll_account…
Currently a traceback is occurring when the user tries to create a Draft Entry, in the batch that contains payslips of multiple companies. **To reproduce this issue:** 1) Install hr_payroll_account and switch to multi-company environment 2) Create two employees with two running contracts respectively 3) Now create a Batch record from payroll/payslips/batches 4) Create two playslips with different companies with the created batch 5) Compute both the payslips and open the batch 6) Now, try to click on the Create Draft Entry **Error:** A traceback will occur. ``` ValueError: Expected singleton: res.company(1, 2) ``` **Cause:** When the user created multiple payslips with multiple companies containing the same batch and tries to create a Draft Entry, we filtered out the payslips based on the payslip state, and try to change the state to Done using the action_payslip_done method. https://github.com/odoo/enterprise/blob/1e5d7155466f80942f0b8fe2df7fdfb86cae7417/hr_payroll/models/hr_payslip_run.py#L70 So the self will contain multiple payslip recordsets with different company in each payslip. This leads to the above traceback when accessing company_id from self https://github.com/odoo/enterprise/blob/1e5d7155466f80942f0b8fe2df7fdfb86cae7417/hr_payroll_account/models/hr_payslip.py#L61 **Solution:** In payslips, the company_id field should be in readonly state, since the value of the company_id will computed from the employee_id which is a required field. Also raised a validation Error for the previously created record to handle the traceback. Related Upgrade PR:- https://github.com/odoo/upgrade/pull/7763 opw-4797089 Forward-Port-Of: odoo/enterprise#87306 Forward-Port-Of: odoo/enterprise#86628
When we enable the integer rounding option on this report, a traceback is raised at the report opening. It happens because integer rounding didn't support a groupby when a custom engine is used. opw-4688616 Forward-Port-Of: odoo/enterprise#86452
Original PR description
When we enable the integer rounding option on this report, a traceback is raised at the report opening. It happens because integer rounding didn't support a groupby when a custom engine is used. opw-4688616 Forward-Port-Of: odoo/enterprise#86452
In this PR: ========== - We are improving the mobile view to make online orders more consistent and seamless. task-4585233 Forward-Port-Of: odoo/enterprise#80838
Original PR description
In this PR: ========== - We are improving the mobile view to make online orders more consistent and seamless. task-4585233 Forward-Port-Of: odoo/enterprise#80838
This reverts commit b9745a5 - The fix is no longer needed, as the original validation error is no longer reproducible in 17.0. - This change resulted in extra document creation and is reverted to avoid duplicates. opw-4681311 Forward-Port-Of: odoo/enterprise#87270
Original PR description
This reverts commit b9745a5 - The fix is no longer needed, as the original validation error is no longer reproducible in 17.0. - This change resulted in extra document creation and is reverted to avoid duplicates. opw-4681311 Forward-Port-Of: odoo/enterprise#87270
## Pull Request HOOT (PRHOOT) 33 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/213223 Forward-Port-Of: odoo/enterpris
Original PR description
## Pull Request HOOT (PRHOOT) 33 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/213223 Forward-Port-Of: odoo/enterprise#88150 Forward-Port-Of: odoo/enterprise#87476
Steps to reproduce: - Open Follow-up levels for 15 days -Check the option for “Automatic” - Go to the email template set in the “Content Template” and set a test email in the CC of the email configuration. - Open the follow up reports for a sample customer who is in the “15 days” stage and change the next reminder date to be a day before today. The reminder must be set to automatic. - There will appear a red ribbon on the right corner that says “In need of action” - In another tab, open sch
Original PR description
Steps to reproduce: - Open Follow-up levels for 15 days -Check the option for “Automatic” - Go to the email template set in the “Content Template” and set a test email in the CC of the email…
Steps to reproduce: - Open Follow-up levels for 15 days -Check the option for “Automatic” - Go to the email template set in the “Content Template” and set a test email in the CC of the email configuration. - Open the follow up reports for a sample customer who is in the “15 days” stage and change the next reminder date to be a day before today. The reminder must be set to automatic. - There will appear a red ribbon on the right corner that says “In need of action” - In another tab, open scheduled actions and Open the action “Account Report Followup; Execute followup” - Run this action manually Issue: Go to the previous tab and notice that the email is only sent out to the customer partner record and not the cc email address Note: This issue only occurs if the automatic followup is set. If we try to manually followup by clicking on the “Follow Up” button on the customer report, the email is sent correctly to both addresses. Cause: When running the cron, the recipients aren't in the options Solution: Add an helper to find all necessary recipients from the template if no recipient ids in the options opw-4527398 Forward-Port-Of: odoo/enterprise#86916 Forward-Port-Of: odoo/enterprise#83944
**Steps to reproduce:** 1. Install contact and l10n_be_reports 2. Export any contact with external_id and tag (category_id) columns. 3. Edit the exported file and set category_id to blank. 4. Attempt to import the modified file. **Issue:** - Import fails with the error: TypeError: 'bool' object is not iterable **Cause:** - The write method is overrided in l10n_be_reports for checking removal of the protected tag '281.50' using: https://github.com/odoo/enterprise/blob/e157890
Original PR description
**Steps to reproduce:** 1. Install contact and l10n_be_reports 2. Export any contact with external_id and tag (category_id) columns. 3. Edit the exported file and set category_id to blank. 4. Attempt…
**Steps to reproduce:**
1. Install contact and l10n_be_reports
2. Export any contact with external_id and tag (category_id) columns.
3. Edit the exported file and set category_id to blank.
4. Attempt to import the modified file.
**Issue:**
- Import fails with the error:
TypeError: 'bool' object is not iterable
**Cause:**
- The write method is overrided in l10n_be_reports for checking removal of the protected tag '281.50' using:
https://github.com/odoo/enterprise/blob/e1578908a53652603a58f8b7a594c198deb47e7a/l10n_be_reports/models/res_partner.py#L29
However, when category_id is False (as in the import case),
vals.get('category_id', []) returns False, causing the iteration to fail with a TypeError.
**Solution:**
- https://github.com/odoo/enterprise/blob/944d4efb25b522c3e726221993f4be1e0fb2c133/l10n_be_reports/models/res_partner.py#L29 This ensures a safe fallback to an empty list in case the value is False.
opw-4717387
Forward-Port-Of: odoo/enterprise#87196- Reworking the DIOT report to comply with 2025 standard - Adjusting operation_type values on res.partner to match - Adjusting DIOT tests and other tests affected by the rework Community PR: https://github.com/odoo/odoo/pull/204742 task-4568859 Forward-Port-Of: odoo/enterprise#88141 Forward-Port-Of: odoo/enterprise#82864
Original PR description
- Reworking the DIOT report to comply with 2025 standard - Adjusting operation_type values on res.partner to match - Adjusting DIOT tests and other tests affected by the rework Community PR: https://github.com/odoo/odoo/pull/204742 task-4568859 Forward-Port-Of: odoo/enterprise#88141 Forward-Port-Of: odoo/enterprise#82864
This has to be done right after l10n setup, it has no to negative effect if done above the COA loop or before setting up localisation. This seems to most affect the domain engine as it can do a lot of relatively well filtered queries, but those need to be properly planned. The repeated `ANALYZE` are not free, but trade favorably (test runs about 4mn faster locally). Forward-Port-Of: odoo/enterprise#88143 Forward-Port-Of: odoo/enterprise#88116
Original PR description
This has to be done right after l10n setup, it has no to negative effect if done above the COA loop or before setting up localisation. This seems to most affect the domain engine as it can do a lot of relatively well filtered queries, but those need to be properly planned. The repeated `ANALYZE` are not free, but trade favorably (test runs about 4mn faster locally). Forward-Port-Of: odoo/enterprise#88143 Forward-Port-Of: odoo/enterprise#88116