Daily updates from Odoo
Thursday, February 20, 2025
40 changes · master
Enhancements to existing features
Ecuadorian companies can now record required dividend information when creating purchase withholdings for shareholder profit payments. The update adds the needed fields, tax handling, and reporting output so dividend withholdings are reflected correctly in electronic documents and ATS reports.
Original PR description
Implement dividens in purchase withholdings. When a company pays its shareholders some profits from the closed fiscal period, there is also a Purchase WTH needs to be created. Fields required in…
Implement dividens in purchase withholdings. When a company pays its shareholders some profits from the closed fiscal period, there is also a Purchase WTH needs to be created. Fields required in withholding wizard, XML and ATS report - **Dividend payment date:** it can be different to withhold date. It must be showed in ATS **`<fechaPagoDiv>`** and XML **`<fechaPagoDiv>`** - **Dividend income tax:** value of the Income Tax paid by the company that corresponds to the reported dividend. The computation of this value can be quite varied because of several parameters (exemptions, non-deductible expenses, deferred taxes, shareholder participation,annual withholding table with fixed withholding for the basic fraction, etc...). It must be showed in ATS **`<imRentaSoc>`** and XML **`<imRentaSoc>`** - **Dividend fiscal year:** The fiscal year in which earnings on the reported dividend are generated. The company could pay previous periods. It must be showed in ATS **`<anioUtDiv>`** and XML **`<ejerFisUtDiv>`** - **Show fields dividend:** Computed field to show the dividends fields. task: 865
After exporting Studio customizations, the export window now closes automatically once the zip file is successfully generated. This removes an extra manual step and avoids confusion from leaving outdated export instructions visible after the download completes.
Original PR description
Before this commit: When a user exports Studio customizations (whether or not they configure the data/demo data to export), the Studio Export window remains open, even after the .zip file has downloaded. User then has to close the window manually by clicking Cancel or by clicking X. This is especially confusing as the message still reads 'Studio Customizations will be exported'. After this commit: The dialog autoclose when the zip file generation has succeeded. opw-4583824
Financial reports now identify the exact source report when reusing figures from another report, reducing the risk of ambiguous or incorrect totals. This makes statutory and management reporting easier to maintain across countries and improves confidence in reported balances.
Payroll settings for the UAE, India, and Saudi Arabia now rely on the shared company information already available in the system. This removes duplicated setup data and helps keep company-specific payroll settings consistent across Odoo.
Original PR description
* = [l10n_ae_hr_payroll, l10n_in_hr_payroll, l10n_sa_hr_payroll] Since [1], a new `companies` key has been added to the evaluation context, and a new mechanism for adding company information to the `session_info` has also been added. This commit uses the new `companies` key and removes the `company_country_code` field from the settings. [1]: https://github.com/odoo/odoo/commit/22e9d822e8cab08114c006eb8c4054c4de0c40f2
This update changes how certain localization features handle concurrent updates by using Odoo’s standard record-locking approach instead of temporary database savepoints. It helps reduce processing conflicts and improves reliability for electronic invoicing and stock flows in Chile and Ecuador without changing user workflows.
Original PR description
Instead of creating savepoints, use the `lock_records()` method. odoo/odoo#197653
Manufacturing screens now use clearer, more readable web addresses for important actions. This makes navigation easier to understand and share without changing the underlying business process.
Original PR description
Enabled pretty URLs for key actions, making navigation clearer. task-4555148
The Move to Work Center action now lists only real, valid work centers and excludes the one currently in use. This prevents accidental creation of invalid records and helps shop floor users switch work centers more reliably.
Original PR description
Before Commit: ------------------------------ - The "Move to Work Center" action displayed invalid options like "ALL MO" and "MY WO," leading to the creation of invalid work center records. - Not all available work centers were listed, preventing users from switching to valid work centers not added to the shopfloor. - These issues caused confusion and disrupted workflow. After Commit: ----------------------------- - The list now shows only valid work centers, excluding invalid options like "ALL MO" and "MY WO." - All available work centers, except the current one in use, are displayed, ensuring users can switch to any valid work center. - This update eliminates confusion, prevents invalid records, and enhances workflow accuracy. task-4447003
The document signing experience now shows a redesigned thank-you dialog for people who are not logged in. This makes the completion step clearer and more polished for external signers, improving the overall customer-facing flow.
Original PR description
Redesign of the dialog for non-logged in users when signing a document task-id: 4426891
Purchase order status updates linked to approval requests now process more efficiently. This reduces slowdowns when many purchase orders change status at once, improving day-to-day responsiveness for purchasing teams.
Original PR description
To log the changes in the state of a purchase order to the chatter of the related approval requests, a search was done to find the product lines related to the approval requests. This search was performed inside a loop. This commit performs the search outside of the loop to avoid slowing down the system when the state of multiple purchase orders has changed. Related-PR: https://github.com/odoo/enterprise/pull/71294 task-3561514
The Documents Spreadsheet test tour for opening pivot sheets was updated to match recent changes in how user avatar fields are displayed. This helps keep automated checks aligned with the current interface and reduces the risk of false test failures.
Original PR description
We adapt the tour `spreadsheet_open_pivot_sheet` to the changes brought by https://github.com/odoo/odoo/pull/197811. Task ID: 4571809
Resolved issues and error corrections
This update removes or corrects unused styling related to the signing interface's bottom sheet. It helps keep the Sign module's front-end code cleaner and easier to maintain without changing business workflows.
Quantity quality checks no longer automatically mark stock moves as picked. This prevents other items in the same picking from being skipped during validation and keeps the picked status under user control.
Original PR description
Issue Before this Commit: ----------------------- When performing a quantity quality check on a move, the system automatically checked the picked checkbox. This resulted in only moves marked as picked being validated, causing other moves to be skipped during the picking validation. Steps to Reproduce: ---------------------- 1. Create a picking with multiple moves. 2. Perform a quantity quality check on a move. 3. Register a failed quantity. 4. Observe that the picked checkbox is automatically checked. 5. Validate the picking. (Only moves with the picked checkbox checked are validated) With this Commit: -------------------------- - Prevented the automatic marking of the 'Picked' checkbox after a quality check. - This ensures that the picked status is manually updated by the user, allowing for consistent validation behavior and preventing moves from being unintentionally skipped during the validation process. task-4517277
Purchase approval flows now use the correct units when replenishment creates orders, reducing errors in quantities and ordering. Quality checks also receive the product information needed to display unit conversion details consistently.
Original PR description
Some other fixes for UoMs refactoring. Follow-up of https://github.com/odoo/odoo/pull/184131. Task-4471379
Code cleanup and technical improvements
Odoo Enterprise was updated to use a newer internal way of identifying selected companies across many modules. This keeps multi-company behavior consistent with the main platform update and reduces future maintenance risk, with no expected direct change for end users.
Original PR description
This commit adapts the current code to use the new `companies` evaluation context key, introduced in [1]. Note that, this commit is the output of the script that migrates the code automatically. [1]: https://github.com/odoo/odoo/commit/22e9d822e8cab08114c006eb8c4054c4de0c40f2 part-of-task-id 4250356
This change updates internal wording for a search-related option used across several Odoo apps. It helps keep the codebase aligned with the main platform change, with no expected impact on day-to-day users.
Original PR description
odoo/odoo#198154
Miscellaneous changes
Different countries have different attendance rules and therefore customizing the attendance entries might be relevant. In order to be able to properly filter we introduce a domain retrieval method which can be properly inherited. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#78402 Forward-Port-Of: odoo/enterprise#78195
Original PR description
Different countries have different attendance rules and therefore customizing the attendance entries might be relevant. In order to be able to properly filter we introduce a domain retrieval method which can be properly inherited. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#78402 Forward-Port-Of: odoo/enterprise#78195
Since the employees see in their 'My Profile' tab the documents on which they are 'Contact'. We need to set them as contact when generating declaration and not only 'read' access. Forward-Port-Of: odoo/enterprise#79689
Original PR description
Since the employees see in their 'My Profile' tab the documents on which they are 'Contact'. We need to set them as contact when generating declaration and not only 'read' access. Forward-Port-Of: odoo/enterprise#79689
Forward-Port-Of: odoo/enterprise#79561
Original PR description
Forward-Port-Of: odoo/enterprise#79561
Currently a `ParseError` is arising when the user installs the `industry_fsm_sale_report` module after deleting `Field Service` product from the products. Steps to reproduce: --- - Install the `industry_fsm_sale` module - Delete `Field Service` from products - Now install `industry_fsm_sale_report` module Traceback: --- ``` Exception: Cannot update missing record 'industry_fsm_sale.field_service_product' ParseError: while parsing /home/odoo/src/enterprise/saas-18.1/industry_fsm_s
Original PR description
Currently a `ParseError` is arising when the user installs the `industry_fsm_sale_report` module after deleting `Field Service` product from the products.
Steps to reproduce:
---
- Install the `industry_fsm_sale` module
- Delete `Field Service` from products
- Now install `industry_fsm_sale_report` module
Traceback:
---
```
Exception: Cannot update missing record 'industry_fsm_sale.field_service_product'
ParseError: while parsing /home/odoo/src/enterprise/saas-18.1/industry_fsm_sale_report/data/product_product_data.xml:4, somewhere inside <record id="industry_fsm_sale.field_service_product" model="product.product">
<field name="worksheet_template_id" ref="industry_fsm_report.fsm_worksheet_template"/>
</record>
```
This commit solves the above issue by using `forcecreate="False"` to bypass record creation if it violates checks.
sentry-5731062091
Forward-Port-Of: odoo/enterprise#79759
Forward-Port-Of: odoo/enterprise#78988Related to https://github.com/odoo/odoo/pull/196447 Forward-Port-Of: odoo/enterprise#78542 Forward-Port-Of: odoo/enterprise#78533
Original PR description
Related to https://github.com/odoo/odoo/pull/196447 Forward-Port-Of: odoo/enterprise#78542 Forward-Port-Of: odoo/enterprise#78533
Steps to reproduce: - Create a new blank spreadsheet in Documens - Hit the Share button - Open the sharing link in a incognito window => it says "Frozen and copied on ..." even though it's not frozen at all See Community PR Task-4583953 Forward-Port-Of: odoo/enterprise#79520
Original PR description
Steps to reproduce: - Create a new blank spreadsheet in Documens - Hit the Share button - Open the sharing link in a incognito window => it says "Frozen and copied on ..." even though it's not frozen at all See Community PR Task-4583953 Forward-Port-Of: odoo/enterprise#79520
Users managing loans can set the flag Skip Until Date to skip the first entries. However skipped loan lines won't create any move and this create issues with assignment of the correct state when load should be closed Steps to reproduce - Create a loans as follows: - Name: any - Amount Borrowed: 20,000.00 - Interests: 107.87 - 01/01/2024 - Duration: 12 months - [Loan Settings] Skip Until: 10/31/2024 - Save, compute sheet and confirm Issues: - Once confirmed it doesn'
Original PR description
Users managing loans can set the flag Skip Until Date to skip the first entries. However skipped loan lines won't create any move and this create issues with assignment of the correct state when load should be closed Steps to reproduce - Create a loans as follows: - Name: any - Amount Borrowed: 20,000.00 - Interests: 107.87 - 01/01/2024 - Duration: 12 months - [Loan Settings] Skip Until: 10/31/2024 - Save, compute sheet and confirm Issues: - Once confirmed it doesn't change state from "draft" - If we click once again "Confirm" we will get a traceback error opw-4476981 Forward-Port-Of: odoo/enterprise#79285
Before this commit: The version set on an IoT box server side would never update as it was set only on creation. Also took the opportunity to refactor a bit this old part of the code to make it clearer and add some relevant logs to more easily investigate cases where it could be relevant After this commit: IoT version will now appear with the real value on the IoT app & beautiful relevant logs  *before this PR, the IoT would be stuck with the wrong version (here 18.0)*  *after this PR*  *logs example* opw-4502002 Forward-Port-Of: odoo/enterprise#79603
- Simplify tour `SettleDueAmountMoreCustomers` using `searchCustomerValue(..., true)` (see linked community PR). community PR: https://github.com/odoo/odoo/pull/197357 task-id: 4550203 Forward-Port-Of: odoo/enterprise#79089
Original PR description
- Simplify tour `SettleDueAmountMoreCustomers` using `searchCustomerValue(..., true)` (see linked community PR). community PR: https://github.com/odoo/odoo/pull/197357 task-id: 4550203 Forward-Port-Of: odoo/enterprise#79089
We use a couple manual SELECT queries in marketing_automation. However these do not flush before querying, meaning the result is potentially wrong if there was a change to the queried tables since the last flush. This is not too noticeable under regular use as only non-store computed fields hold statistics. However it does make the method innacurate in some cases. Notably tests need to flush manually. We now flush properly, as should have been done. As is done for the whatsapp ove
Original PR description
We use a couple manual SELECT queries in marketing_automation. However these do not flush before querying, meaning the result is potentially wrong if there was a change to the queried tables since the last flush. This is not too noticeable under regular use as only non-store computed fields hold statistics. However it does make the method innacurate in some cases. Notably tests need to flush manually. We now flush properly, as should have been done. As is done for the whatsapp override from 18.0 onwards. task-4589525 Forward-Port-Of: odoo/enterprise#79673
An issue may occur where moves are unbalanced when FEC file lines contain a device with an imprecise rounding factor. Steps to reproduce: - Create or use a currency with rounding = 1. - Add rounding to debit or credit in a FEC file, ensuring the rounded unit amount is not equal; for example, two debit lines at 100.5 and one credit line at 201 (see example in test). - In the Idevise column of the file, use the name of the created device. - Attempt to import the file. An error will occur
Original PR description
An issue may occur where moves are unbalanced when FEC file lines contain a device with an imprecise rounding factor. Steps to reproduce: - Create or use a currency with rounding = 1. - Add rounding to debit or credit in a FEC file, ensuring the rounded unit amount is not equal; for example, two debit lines at 100.5 and one credit line at 201 (see example in test). - In the Idevise column of the file, use the name of the created device. - Attempt to import the file. An error will occur: Moves report incorrect balances: Move with name '<name>' has a balance of 1.00. The issue arises because the created device is used to round the amount instead of the company's device, resulting in 100.5 being rounded to 100, hence the two line of 100 no longer balances with 201. opw-4397836 Forward-Port-Of: odoo/enterprise#79698 Forward-Port-Of: odoo/enterprise#76932
before this PR: - The income account was solely derived from the product's configuration. After this PR: - If the product’s income account is not set, we fall back to the default account defined on the POS journal. This ensures the Sales Account used in GSTR-1 computations is properly set. See: https://github.com/odoo/odoo/pull/149816 Forward-Port-Of: odoo/enterprise#79661
Original PR description
before this PR: - The income account was solely derived from the product's configuration. After this PR: - If the product’s income account is not set, we fall back to the default account defined on the POS journal. This ensures the Sales Account used in GSTR-1 computations is properly set. See: https://github.com/odoo/odoo/pull/149816 Forward-Port-Of: odoo/enterprise#79661
Several problems with records selection in kanban where identified after 0d904521. Furthermore, a flicker occurred on the control panel when de-selecting records. See details in individual commits. Task-4582340 Forward-Port-Of: odoo/enterprise#79439
Original PR description
Several problems with records selection in kanban where identified after 0d904521. Furthermore, a flicker occurred on the control panel when de-selecting records. See details in individual commits. Task-4582340 Forward-Port-Of: odoo/enterprise#79439
Impact on enterprise. We do not want to get records that don't have any roles as before the fix, False was ignored in x2m fields. odoo/odoo#197890 Forward-Port-Of: odoo/enterprise#79593
Original PR description
Impact on enterprise. We do not want to get records that don't have any roles as before the fix, False was ignored in x2m fields. odoo/odoo#197890 Forward-Port-Of: odoo/enterprise#79593
During the execution of the validation cron of the OCR, the IAP account selected could sometimes be incorrect. In the context of the validation cron, we need to know to which company the document belong in order to get the correct IAP account (i.e. the one from the company, if it exists). If we use the generic IAP account (i.e. the one that isn't linked to any company), the mismatch of accounts will cause the validation to be ignored by the OCR server. Related ticket [#4522628](https://
Original PR description
During the execution of the validation cron of the OCR, the IAP account selected could sometimes be incorrect. In the context of the validation cron, we need to know to which company the document belong in order to get the correct IAP account (i.e. the one from the company, if it exists). If we use the generic IAP account (i.e. the one that isn't linked to any company), the mismatch of accounts will cause the validation to be ignored by the OCR server. Related ticket [#4522628](https://www.odoo.com/odoo/project.task/4522628) Forward-Port-Of: odoo/enterprise#79550 Forward-Port-Of: odoo/enterprise#79525
Details in various commits Forward-Port-Of: odoo/enterprise#79533
Original PR description
Details in various commits Forward-Port-Of: odoo/enterprise#79533
Customer statement can be accessed from the partner record and eventually sent to the customer. However currently the mail wizard will add 2 signatures at the end of the mail Steps to reproduce: - Open a partner - Access Customer Statement - Click Print, send email - Check sent email Issue: The signature is duplicated opw-4456798 Forward-Port-Of: odoo/enterprise#79389
Original PR description
Customer statement can be accessed from the partner record and eventually sent to the customer. However currently the mail wizard will add 2 signatures at the end of the mail Steps to reproduce: - Open a partner - Access Customer Statement - Click Print, send email - Check sent email Issue: The signature is duplicated opw-4456798 Forward-Port-Of: odoo/enterprise#79389
This commit transforms the resize badge into a pair of time display badges that appear all basic drag actions (select cells, drag pill and resize pill). These new badges show on each side of the selection/pill the resulting time start and time stop of the action and still show the time difference in the case of a resize. This commit also allows to take into account the precision when selecting cells. task-4547819 Forward-Port-Of: odoo/enterprise#78855
Original PR description
This commit transforms the resize badge into a pair of time display badges that appear all basic drag actions (select cells, drag pill and resize pill). These new badges show on each side of the selection/pill the resulting time start and time stop of the action and still show the time difference in the case of a resize. This commit also allows to take into account the precision when selecting cells. task-4547819 Forward-Port-Of: odoo/enterprise#78855
The declaration 3519 is also needed when we ask for a reimbursement. We currently can't group them (as the fields definition don't allow it), so we will keep them separated. It is sent the same way to AspOne. task-4328721 Forward-Port-Of: odoo/enterprise#79274 Forward-Port-Of: odoo/enterprise#77104
Original PR description
The declaration 3519 is also needed when we ask for a reimbursement. We currently can't group them (as the fields definition don't allow it), so we will keep them separated. It is sent the same way to AspOne. task-4328721 Forward-Port-Of: odoo/enterprise#79274 Forward-Port-Of: odoo/enterprise#77104
This commit fix 2 columns in the Libro de IVA xlsx export file: 1. **expense_series_number**: before it was the move name, now it's the move ref 2. **reception_number**: before it was blank, now it's the move name task-4508992 Forward-Port-Of: odoo/enterprise#79459
Original PR description
This commit fix 2 columns in the Libro de IVA xlsx export file: 1. **expense_series_number**: before it was the move name, now it's the move ref 2. **reception_number**: before it was blank, now it's the move name task-4508992 Forward-Port-Of: odoo/enterprise#79459
Mod349 tax report in Spanish localization should report the total number of intra-community operators [1] However currently we count the number of operations Steps to reproduce: - With an ES company setup - Create 2 invoice to the same an EU partner - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operators is 2, but should be 1 [1] https://sede.agenciatributaria.gob.es/static_files/Sede/Proced
Original PR description
Mod349 tax report in Spanish localization should report the total number of intra-community operators [1] However currently we count the number of operations Steps to reproduce: - With an ES company setup - Create 2 invoice to the same an EU partner - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operators is 2, but should be 1 [1] https://sede.agenciatributaria.gob.es/static_files/Sede/Procedimiento_ayuda/GI28/instr_mod_349.pdf opw-4403287 Forward-Port-Of: odoo/enterprise#79522 Forward-Port-Of: odoo/enterprise#78588
- make `new_car` True by default if the `available_cars_amount` is less than the `max_unused_cars` Task: 4378810 Forward-Port-Of: odoo/enterprise#79537 Forward-Port-Of: odoo/enterprise#75876
Original PR description
- make `new_car` True by default if the `available_cars_amount` is less than the `max_unused_cars` Task: 4378810 Forward-Port-Of: odoo/enterprise#79537 Forward-Port-Of: odoo/enterprise#75876
- update the `co2_fee_min, health_indice` paramters values Task: 4563950 Forward-Port-Of: odoo/enterprise#79523 Forward-Port-Of: odoo/enterprise#78999
Original PR description
- update the `co2_fee_min, health_indice` paramters values Task: 4563950 Forward-Port-Of: odoo/enterprise#79523 Forward-Port-Of: odoo/enterprise#78999
The use of the parameters date_start and date_end in the url is not always correct in the planning gantt model. For instance, if date_start and date_end are given and are in the same week, the range selected has one day more than expected and does not start on the first day of the week. Here we fix/improve the usage of those parameters by removing the extra day (if any) and localizing appropriately the ranges. Task ID: 4500939 Forward-Port-Of: odoo/enterprise#79508 Forward-Port-Of: odoo/ente
Original PR description
The use of the parameters date_start and date_end in the url is not always correct in the planning gantt model. For instance, if date_start and date_end are given and are in the same week, the range selected has one day more than expected and does not start on the first day of the week. Here we fix/improve the usage of those parameters by removing the extra day (if any) and localizing appropriately the ranges. Task ID: 4500939 Forward-Port-Of: odoo/enterprise#79508 Forward-Port-Of: odoo/enterprise#79362
This commit fixes an issue with knowledge's members permission computation. If the additional fields given to the method weren't valid fields, the computation would crash and return an error. With this fix we filter the valid additional_fields provided so that we only use those for the computation. task-4562838 Forward-Port-Of: odoo/enterprise#79538 Forward-Port-Of: odoo/enterprise#79221
Original PR description
This commit fixes an issue with knowledge's members permission computation. If the additional fields given to the method weren't valid fields, the computation would crash and return an error. With this fix we filter the valid additional_fields provided so that we only use those for the computation. task-4562838 Forward-Port-Of: odoo/enterprise#79538 Forward-Port-Of: odoo/enterprise#79221