Daily updates from Odoo
Tuesday, June 24, 2025
24 changes · master
Enhancements to existing features
This update adjusts automated tests for spreadsheet pivot views after an underlying library change. It helps keep quality checks reliable so future document spreadsheet updates can be validated with confidence.
This update streamlines how customer follow-up records check whether related accounting activity exists. It avoids a more fragile query pattern, helping keep the feature reliable without changing day-to-day user workflows.
Original PR description
odoo/odoo#205208
The field service task form has been reorganized so planned dates and allocated hours appear in the main left section instead of crowding the right side. This makes the most relevant scheduling and workload information easier to find when working on field service tasks.
Original PR description
Before this commit, the task form view of a fsm task contains many fields in the right part. This commit moves the planned dates and the allocated_hours in the left part of the form view but only for fsm tasks. task-4753294
The Colombian electronic invoicing module has been updated to use the latest retry process. This keeps invoice submission recovery aligned with the main platform changes and helps maintain reliability when retrying failed electronic document operations.
Original PR description
in odoo/odoo#211194 we refactored the retry mechanisim, l10n_co_edi is the only edi that is using the refactored function, hence, need to updated task-4728978
Resolved issues and error corrections
This fix prevents editor-only styling files from being included in the main website builder asset bundle. It reduces the risk of unintended visual effects or maintenance issues in appointment, knowledge, rental sales, and studio website editing features.
Original PR description
*: website_appointment, website_knowledge, website_sale_renting, website_studio
In commit [1], the website builder was rewritten in owl. The concept of `*.inside.scss` files was introduced: style that is loaded on pages, inside the iframe only during edition.
The `html_builder.assets` bundle was not supposed to have those. We fix this issue and potential future issues by adding a remove on all modules that include all files within `static/src/{website_builder,plugins}`.
[1]: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2
Community PR https://github.com/odoo/odoo/pull/215218Spreadsheet filter editors now handle cases where a filter has no default value without causing incorrect behavior. This helps users configure spreadsheet filters more reliably, especially when leaving optional filter values blank.
Original PR description
Task: 4886119
Code cleanup and technical improvements
The Planning app code has been reorganized by moving separate planning classes into their own files. This does not change user-facing behavior, but it makes the codebase easier to maintain and safer to update in the future.
Original PR description
- split planning classes each to its own file extract from this: odoo/enterprise#81319 Task: 4866865
The IoT-related driver and homepage components were consolidated into a single module structure. This reduces internal complexity and helps keep maintenance of connected device features more consistent without changing day-to-day business workflows.
Original PR description
`hw_posbox_homepage` files had no reason to be placed in a separate module, we then merged it into `hw_drivers`, that we renamed `iot_drivers` in the meantime. Community PR: odoo/odoo#213749 Task: 4860513
Miscellaneous changes
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#87014 Forward-Port-Of: odoo/enterprise#83944
When creating a SEPA Direct Debit (SDD) mandate for a contact, mandates linked to a child contact are not recognized as valid at payment registration. It should be but it suggests a configuration issue so it needs a warning but not an error. task-4507135 Forward-Port-Of: odoo/enterprise#85882
Original PR description
When creating a SEPA Direct Debit (SDD) mandate for a contact, mandates linked to a child contact are not recognized as valid at payment registration. It should be but it suggests a configuration issue so it needs a warning but not an error. task-4507135 Forward-Port-Of: odoo/enterprise#85882
**Current behavior:** A user who can otherwise use the entire mps can not add 'rows' to the view (i.e., write on `ResCompany` `mrp_mps` fields). **Expected behavior:** Can add rows to the MPS. **Steps to reproduce:** 1. Install `mrp_mps` with demo data 2. Edit "Demo" user access rights so they only have the mrp manager group 3. Open MPS -> click `Rows` dropdown (under search bar) and add/remove one -> access error **Cause of the issue:** Field is on `ResCompany` and the MPS us
Original PR description
**Current behavior:** A user who can otherwise use the entire mps can not add 'rows' to the view (i.e., write on `ResCompany` `mrp_mps` fields). **Expected behavior:** Can add rows to the MPS. **Steps to reproduce:** 1. Install `mrp_mps` with demo data 2. Edit "Demo" user access rights so they only have the mrp manager group 3. Open MPS -> click `Rows` dropdown (under search bar) and add/remove one -> access error **Cause of the issue:** Field is on `ResCompany` and the MPS user can't write to that model. **Fix:** Permit writes on `ResCompany` `mrp_mps` fields if they are on an mps field and the user has the mrp manager group. opw-4591655 Forward-Port-Of: odoo/enterprise#87765 Forward-Port-Of: odoo/enterprise#80881
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 Forward-Port-Of: odoo/enterprise#87874
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 Forward-Port-Of: odoo/enterprise#87874
Steps to Reproduce: - Open the Planning app. - Click on the avatar of a resource. - Refresh the page, then click on the avatar of a resource again. Issue: - A traceback error occurs when clicking on the avatar after a page refresh, likely due to component destruction or incomplete loading. Solution: - Consolidated multiple RPC calls into a single method in the parent component to avoid issues with component destruction during `super.onWillStart`. - Modified `onWillStart` to ensure `h
Original PR description
Steps to Reproduce: - Open the Planning app. - Click on the avatar of a resource. - Refresh the page, then click on the avatar of a resource again. Issue: - A traceback error occurs when clicking on the avatar after a page refresh, likely due to component destruction or incomplete loading. Solution: - Consolidated multiple RPC calls into a single method in the parent component to avoid issues with component destruction during `super.onWillStart`. - Modified `onWillStart` to ensure `hr_access` data is fetched without risking lifecycle conflicts. task-4210513 Forward-Port-Of: odoo/enterprise#86878 Forward-Port-Of: odoo/enterprise#75121
- 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#88253 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#88253 Forward-Port-Of: odoo/enterprise#82864
In this PR: ========== - We are improving the mobile view to make online orders more consistent and seamless. task-4585233 Forward-Port-Of: odoo/enterprise#88166 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#88166 Forward-Port-Of: odoo/enterprise#80838
### Issue: Steps to reproduce: - In the settings enable packagings - Create a storable product P with Units as uom and a barcode - Inventory > Configuration > Product > Units & Packagings - Click on pack of 6 > Packaging Barcodes > New - Create one for your product with a different barcode - Go to barcode > Inventory count #### Issue 1: - Scan your packaging > It create a line for 1 Pack of 6 - Apply #### > If you check on the product form you have 1 on Hand unit #### Issue 2
Original PR description
### Issue: Steps to reproduce: - In the settings enable packagings - Create a storable product P with Units as uom and a barcode - Inventory > Configuration > Product > Units & Packagings - Click on…
### Issue: Steps to reproduce: - In the settings enable packagings - Create a storable product P with Units as uom and a barcode - Inventory > Configuration > Product > Units & Packagings - Click on pack of 6 > Packaging Barcodes > New - Create one for your product with a different barcode - Go to barcode > Inventory count #### Issue 1: - Scan your packaging > It create a line for 1 Pack of 6 - Apply #### > If you check on the product form you have 1 on Hand unit #### Issue 2: - Scan your packaging > It create a line for 1 Pack of 6 - Scan your product > Nothing happens rather than adding one unit #### Issue 3: - Scan your product > It create a line for 1 Unit - Scan your packaging > Nothing happends rather than adding 6 units ### Cause of the issue: The issue 1 is the most problematic as it introduce corrupted data. The issue has been introduced by Commit 188ad6980222a77168c462cf149cb79bf28ca2e6 where packagings have been merged with uoms. Prior to this commit, scanning a packaging would convert the barcodeData to to be expressed in the uom of the product: https://github.com/odoo/enterprise/commit/188ad6980222a77168c462cf149cb79bf28ca2e6 The commit came with the additional feature of creating lines refering dirrectly to the packaging, for instance scanning a pack of 6 would create one line: 1 pack of 6. While this behavior make sense in the context of pickings since stock moves can bear different uoms than the product it self, it does not in the context of stock.quant's since the uom of the quant is necessarily the one of the product: https://github.com/odoo/odoo/blob/9f8e9ca2676f5e3ccc34522d444d1f02e2d21f92/addons/stock/models/stock_quant.py#L53-L55 Now, the issue is that in inventory counts you edit quants via the barcode lines. When the barcode changes are applied in db, we provide the data's to write or create via these lines: https://github.com/odoo/enterprise/blob/38e0ae75c2cfddfe76535847ff8b67823b0c6419/stock_barcode/static/src/models/barcode_model.js#L920-L928 https://github.com/odoo/enterprise/blob/f2dd6326c2084ed467c3e4c3e9d931f41309ad79/stock_barcode/static/src/models/barcode_quant_model.js#L307-L320 which can not provide to the backend the packaging uom in order to convert the related quantities (as it is not a quant field). In particular, the Command.create and Command.update are simply populated expecting these qties to be expressed in the product_uom. ### Fix: Converting the barcodeData's quantity in case a packaging is provided will solve all issues since all the save commands will be expressed in the expected uom and since the barcode machinery is already tailored to treat the addition of appropriate qties. opw-4872894 Forward-Port-Of: odoo/enterprise#87999
The size of fields for Previous Payroll IDs was set to 20 characters. According to the STP xml schema, the max size is 200. This is already checked with the schema validation so the limit can be safely removed. This commit also adds a disclaimer for the users informing them regarding STP compliance. opw-4820852 Forward-Port-Of: odoo/enterprise#88248 Forward-Port-Of: odoo/enterprise#87068
Original PR description
The size of fields for Previous Payroll IDs was set to 20 characters. According to the STP xml schema, the max size is 200. This is already checked with the schema validation so the limit can be safely removed. This commit also adds a disclaimer for the users informing them regarding STP compliance. opw-4820852 Forward-Port-Of: odoo/enterprise#88248 Forward-Port-Of: odoo/enterprise#87068
**Current behavior:** Scanning a package type in an MO in barcode while having a raw move line (component line) selected will result in a traceback. **Expected behavior:** Put the comp line in a new pack of that package type. **Steps to reproduce:** 1. Make a packge type 2. Make a new MO -> open it in barcode 3. Scan some component, select the new line 4. Scan the barcode of the package type -> traceback **Cause of the issue:** We end up calling `action_put_in_pack` when `
Original PR description
**Current behavior:** Scanning a package type in an MO in barcode while having a raw move line (component line) selected will result in a traceback. **Expected behavior:** Put the comp line in a new pack of that package type. **Steps to reproduce:** 1. Make a packge type 2. Make a new MO -> open it in barcode 3. Scan some component, select the new line 4. Scan the barcode of the package type -> traceback **Cause of the issue:** We end up calling `action_put_in_pack` when `this.resModel` is `MrpProduction` (which does not define this method). **Fix:** Define the method for the barcode MRP model to display a notification to, rather, scan a product (scanning a package here doesn't make sense). opw-4564834 Forward-Port-Of: odoo/enterprise#87629 Forward-Port-Of: odoo/enterprise#81374
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#87618 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#87618 Forward-Port-Of: odoo/enterprise#86452
Before this commit, the statement attachment was created only when doing an import but not when creating the statement manually. This commit will move the logic to create the attachment into the create of account bank statement task-4863754 Forward-Port-Of: odoo/enterprise#87599
Original PR description
Before this commit, the statement attachment was created only when doing an import but not when creating the statement manually. This commit will move the logic to create the attachment into the create of account bank statement task-4863754 Forward-Port-Of: odoo/enterprise#87599
Before, The closing balance of saft export for the unaffected earnings account was always at zero which makes no sense. Now this is fixed as the closing balance should always be equal to the initial balance. Forward-Port-Of: odoo/enterprise#88096 Forward-Port-Of: odoo/enterprise#87419
Original PR description
Before, The closing balance of saft export for the unaffected earnings account was always at zero which makes no sense. Now this is fixed as the closing balance should always be equal to the initial balance. Forward-Port-Of: odoo/enterprise#88096 Forward-Port-Of: odoo/enterprise#87419
Removed the module as it was removed in fe442111dc22b5d0bb9717ff69a5f473e1e81d50, and mistakenly resurrected in 65ed1bddbb2d032f74ef84afc9add85a1503dec5 Forward-Port-Of: odoo/enterprise#87742
Original PR description
Removed the module as it was removed in fe442111dc22b5d0bb9717ff69a5f473e1e81d50, and mistakenly resurrected in 65ed1bddbb2d032f74ef84afc9add85a1503dec5 Forward-Port-Of: odoo/enterprise#87742
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) Forward-Port-Of: o
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) Forward-Port-Of: odoo/enterprise#86752
Since #82896 reconciling bank statement line that has a partner with company_id set to a branch company leads to removing the partner from the statement line when validating the reconciliation. Steps: - Create a branch company and select it. - Create a contact with company_id == the branch company. - Create and confirm an invoice with that contact as partner. - Go back to accounting dashboard, and open bank reconciliation widget. - Create a new transaction with the invoice amount and tha
Original PR description
Since #82896 reconciling bank statement line that has a partner with company_id set to a branch company leads to removing the partner from the statement line when validating the reconciliation. Steps: - Create a branch company and select it. - Create a contact with company_id == the branch company. - Create and confirm an invoice with that contact as partner. - Go back to accounting dashboard, and open bank reconciliation widget. - Create a new transaction with the invoice amount and that partner. - Select it, and select the invoice we created, and click on Validate. - Notice that the partner is not set (removed) from the transaction. Fix: Add another condition to check if the statement line company matches the partner company before trying to unset the partner if its company isn't a root company. opw-4809740 Forward-Port-Of: odoo/enterprise#88103 Forward-Port-Of: odoo/enterprise#87440