Daily updates from Odoo
Monday, October 20, 2025
43 changes
9 changes
Enhancements to existing features
The website editor now detects when a browser cannot support image filters and disables that option instead of showing an error. This improves editing reliability for users on systems where WebGL is unavailable, such as some recent Chrome on Linux setups.
Original PR description
On recent versions of Chrome for Linux (v140+), the old SwiftShader software fallback for WebGL has been removed. As a result, new window.WebGLImageFilter() now throws if no GPU context is available, typically when WebGL is disabled or unsupported. Since the application cannot enable WebGL from JavaScript, this commit improves the user experience by detecting the absence of a WebGL context early and disabling image filters in edit mode. Instead of raising a traceback, the editor now skips the filter feature and can optionally display a friendly message explaining that WebGL is required to use image filters. This avoids runtime errors and ensures a more robust behavior on platforms where WebGL is unavailable. task-5117584 Forward-Port-Of: odoo/odoo#232009 Forward-Port-Of: odoo/odoo#229705
Odoo now supports Uruguay's reduced VAT category for applicable sales, helping businesses meet local electronic invoicing and tax reporting requirements. The update adds the needed tax reporting grid and ensures reduced-rate VAT amounts are represented correctly in official tax data.
Original PR description
To fully comply with regulatory requirements, we need to support an additional category called "Reduced Tax Rate" when a product line has a Reduced VAT rate (e.g., 20%) for sales of goods and…
To fully comply with regulatory requirements, we need to support an additional category called "Reduced Tax Rate" when a product line has a Reduced VAT rate (e.g., 20%) for sales of goods and services to final consumers when payment is made by debit card or electronic money instrument (and other specific reductions in similar cases).
1. Detecting "Reduced Tax Rate":
* Identify product lines with a VAT rate that is neither 0% (exempt), 10% (minimum), nor 22% (basic). Any VAT rate outside these three should be considered "Reduced Tax Rate".
2. Modifying XML Output:
* In the <Totales> section of the XML, include the total amount of VAT under the "Reduced Tax Rate" in the <MntIVAOtra> tag.
* Example: xml <MntIVAOtra>140</MntIVAOtra> (where 140 corresponds to the VAT calculated at the reduced tax rate, e.g., 20%).
* For each product line using "Reduced Tax Rate," set the <IndFact> tag to 4: xml <IndFact>4</IndFact>
*Ensure the total amount reflects the base amount plus the VAT under "Reduced Tax Rate".
3. Tax Grid for Configuration:
*Add a new tax grid called Sales Reduced VAT to be used for the tax configuration of the "Reduced Tax Rate."
* This will ensure proper reporting and consistency in tax declarations.
* The new tax grid should be selectable when configuring other taxes.
Odoo Implementation Considerations:
* The tax computation logic in Odoo already supports defining taxes at different rates.
* Adapt the XML generation logic to check for product lines with a non-standard VAT rate and apply the necessary modifications. Ensure the final totals in the XML align with Odoo's computed tax amounts.
Task latam side: 1330
Task Adhoc side: 52999
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#231642
Forward-Port-Of: odoo/odoo#221073Uruguayan electronic invoices can now identify and report VAT rates outside the standard exempt, minimum, and basic rates. This improves tax declaration accuracy by including reduced-rate VAT totals in the official invoice XML and adding a dedicated tax grid for configuration.
Original PR description
1) Detecting "Reduced Tax Rate": * Identify product lines with a VAT rate that is neither 0% (exempt), 10% (minimum), nor 22% (basic). Any VAT rate outside these three should be considered "Reduced…
1) Detecting "Reduced Tax Rate":
* Identify product lines with a VAT rate that is neither 0% (exempt), 10% (minimum), nor 22% (basic). Any VAT rate outside these three should be considered "Reduced Tax Rate".
2) Modifying XML Output:
* In the `<Totales>` section of the XML, include the total amount of VAT under the "Reduced Tax Rate" in the `<MntIVAOtra>` tag.
* Example: ```xml <MntIVAOtra>140</MntIVAOtra> ``` (where 140 corresponds to the VAT calculated at the reduced tax rate, e.g., 20%).
* For each product line using "Reduced Tax Rate," set the `<IndFact>` tag to `4`: ```xml <IndFact>4</IndFact> ```
* Ensure the total amount reflects the base amount plus the VAT under "Reduced Tax Rate".
3) Tax Grid for Configuration:
* Add a new tax grid called Sales Reduced VAT to be used for the tax configuration of the "Reduced Tax Rate."
* This will ensure proper reporting and consistency in tax declarations.
* The new tax grid should be selectable when configuring other taxes.
Odoo Implementation Considerations:
* The tax computation logic in Odoo already supports defining taxes at different rates.
* Adapt the XML generation logic to check for product lines with a non-standard VAT rate and apply the necessary modifications. Ensure the final totals in the XML align with Odoo's computed tax amounts.
Task latam side: 1330
Task Adhoc side: 52999
Forward-Port-Of: odoo/enterprise#97223
Forward-Port-Of: odoo/enterprise#91392Peruvian customer records no longer require a ZIP code, reflecting that ZIP codes are not commonly used in Peru. This makes customer data entry easier and helps avoid unnecessary validation issues for Peruvian addresses.
Original PR description
As ZIP codes are not widely used in Peru, the requirement for a ZIP code to be provided for a Peruvian customer should not be present. task-5012593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223157
Payment terminals connected through Odoo IoT will no longer be automatically registered for event handling, because they already manage their own events. This reduces unnecessary background handling and aligns terminal behavior with devices that send events independently.
Original PR description
As for printers that can send event whenever they want, payment terminals handle event themselves. We then removed auto event registering for payment terminals. odoo/enterprise#97617
Point of Sale payment terminals connected through an IoT Box now use the same communication service as other IoT actions. This enables more connection methods, including WebRTC and websockets, which can improve reliability and responsiveness when processing payments.
Original PR description
As for any other actions sent from the db to the IoT Box, we updated payments terminals logic to use the `iot_http` service in order to allow them using webrtc and websocket in addition to longpolling. Backport of odoo/enterprise#92896 (`iot_http` service refactoring only, to allow listening without sending action) Backport of odoo/enterprise#96634 odoo/odoo#232282
This change makes Odoo's automated test browser shutdown more robust when Chrome reports rare shutdown errors. It helps prevent stuck test builds and lingering browser processes, improving runbot reliability without affecting normal users.
Original PR description
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if…
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if this is in response to `stop`-ing the page, or a pre-existing navigation directive interfereing with the stop-ing of the browser. I tried reproducing locally under the assumption that the `Page.stopLoading` might be the cause but got nowhere[^1]. This issue seems extremely infrequent, and in most cases is but a minor annoyance, an error appears on the corresponding build, and that's it. However if the error occurs during `ChromeBrowser.stop` then the browser is not terminated, which on runbot prevents the docker image from shutting down properly, and leaves zombie builds. Therefore make `ChromeBrowser.stop` more resilient to errors in the initial section so that we do terminate the browser even if the "graceful CDTP shutdown" fails. While at it, add a fallback to kill the browser if it does not terminate gracefully. https://runbot.odoo.com/odoo/error/233442 [^1]: and the error only happening in 18.0 and later when `Page.stopLoading` was present long before that makes it likely the proximal cause is in the code being run, especially as all the errors sampled from the builds list are related to pos and the failure are immediately preceded by ongoing HTTP requests Forward-Port-Of: odoo/odoo#232222 Forward-Port-Of: odoo/odoo#232060
Swedish batch payments can now include both international IBAN accounts and local BBAN, Bankgiro, or Plusgiro accounts in the same batch. When mixed account types are used, the system generates a ZIP file containing separate XML payment files, reducing manual splitting and making payment processing more flexible.
Original PR description
This commit add a new behaviour for batch payments in Sweden. Before this commit: batch payment with mixed payment for iban and bban/bankgiro/plusgiro wasn't allowed After this commit: now if the user create a batch payment with both type of account, we create a zip file with 2 xml files, one for iban and one for bban/bankgiro/plusgiro. Linked:https://github.com/odoo/odoo/pull/230104 [task-5107240](https://www.odoo.com/odoo/project/967/tasks/5107240) Forward-Port-Of: odoo/enterprise#97556 Forward-Port-Of: odoo/enterprise#95463
Luxembourg payroll parameters have been updated to reflect 2025 minimum social salary and related tax credit changes. This helps businesses calculate employee payroll more accurately and stay aligned with official Luxembourg requirements.
Original PR description
Sources: - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202501.pdf - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202505.pdf task-5176255 Forward-Port-Of: odoo/enterprise#97468
5 changes
Enhancements to existing features
The website editor now detects when a user's browser or device cannot support the technology needed for image filters. Instead of showing an error, it disables those filters and can show a clearer message, making editing more reliable on affected systems.
Original PR description
On recent versions of Chrome for Linux (v140+), the old SwiftShader software fallback for WebGL has been removed. As a result, new window.WebGLImageFilter() now throws if no GPU context is available, typically when WebGL is disabled or unsupported. Since the application cannot enable WebGL from JavaScript, this commit improves the user experience by detecting the absence of a WebGL context early and disabling image filters in edit mode. Instead of raising a traceback, the editor now skips the filter feature and can optionally display a friendly message explaining that WebGL is required to use image filters. This avoids runtime errors and ensures a more robust behavior on platforms where WebGL is unavailable. task-5117584 Forward-Port-Of: odoo/odoo#232009 Forward-Port-Of: odoo/odoo#229705
This improves the reliability of automated test runs by ensuring Chrome is still closed even when a rare shutdown error occurs. It helps prevent stuck build environments and reduces unnecessary build failures or manual cleanup.
Original PR description
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if…
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if this is in response to `stop`-ing the page, or a pre-existing navigation directive interfereing with the stop-ing of the browser. I tried reproducing locally under the assumption that the `Page.stopLoading` might be the cause but got nowhere[^1]. This issue seems extremely infrequent, and in most cases is but a minor annoyance, an error appears on the corresponding build, and that's it. However if the error occurs during `ChromeBrowser.stop` then the browser is not terminated, which on runbot prevents the docker image from shutting down properly, and leaves zombie builds. Therefore make `ChromeBrowser.stop` more resilient to errors in the initial section so that we do terminate the browser even if the "graceful CDTP shutdown" fails. While at it, add a fallback to kill the browser if it does not terminate gracefully. https://runbot.odoo.com/odoo/error/233442 [^1]: and the error only happening in 18.0 and later when `Page.stopLoading` was present long before that makes it likely the proximal cause is in the code being run, especially as all the errors sampled from the builds list are related to pos and the failure are immediately preceded by ongoing HTTP requests Forward-Port-Of: odoo/odoo#232117 Forward-Port-Of: odoo/odoo#232060
Peruvian customer addresses no longer need a ZIP code. This better matches local address practices in Peru and reduces unnecessary friction when creating or updating customer records.
Original PR description
As ZIP codes are not widely used in Peru, the requirement for a ZIP code to be provided for a Peruvian customer should not be present. task-5012593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223157
Swedish batch payments can now include both international IBAN accounts and domestic BBAN, Bankgiro, or Plusgiro accounts in the same payment run. When mixed account types are used, the system automatically creates a ZIP file with separate XML payment files, reducing manual work and avoiding blocked batches.
Original PR description
This commit add a new behaviour for batch payments in Sweden. Before this commit: batch payment with mixed payment for iban and bban/bankgiro/plusgiro wasn't allowed After this commit: now if the user create a batch payment with both type of account, we create a zip file with 2 xml files, one for iban and one for bban/bankgiro/plusgiro. Linked:https://github.com/odoo/odoo/pull/230104 [task-5107240](https://www.odoo.com/odoo/project/967/tasks/5107240) Forward-Port-Of: odoo/enterprise#97556 Forward-Port-Of: odoo/enterprise#95463
Updates Luxembourg payroll settings to reflect 2025 minimum social salary and related tax credit changes from official government sources. This helps ensure payroll calculations remain aligned with current legal rates for Luxembourg employees.
Original PR description
Sources: - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202501.pdf - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202505.pdf task-5176255 Forward-Port-Of: odoo/enterprise#97468
2 changes
Enhancements to existing features
Swedish batch payments can now include both IBAN and BBAN, Bankgiro or Plusgiro payments in the same batch. When mixed account types are used, the system generates a ZIP file containing separate payment files, reducing manual work and avoiding blocked payment batches.
Original PR description
This commit add a new behaviour for batch payments in Sweden. Before this commit: batch payment with mixed payment for iban and bban/bankgiro/plusgiro wasn't allowed After this commit: now if the user create a batch payment with both type of account, we create a zip file with 2 xml files, one for iban and one for bban/bankgiro/plusgiro. Linked:https://github.com/odoo/odoo/pull/230104 [task-5107240](https://www.odoo.com/odoo/project/967/tasks/5107240) Forward-Port-Of: odoo/enterprise#95463
This update adjusts Luxembourg payroll settings to reflect 2025 minimum social salary values and updated employee tax credit rules. It helps businesses calculate payroll more accurately and stay aligned with the latest official Luxembourg social security and tax parameters.
Original PR description
Sources: - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202501.pdf - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202505.pdf task-5176255 Forward-Port-Of: odoo/enterprise#97468
14 changes
Enhancements to existing features
WhatsApp conversations now manage offline participants in the main discussion channel data, making chat information more consistent across the app. This should improve reliability for WhatsApp-related discussions and reduce inconsistencies in how correspondents are displayed or handled.
Chat contact information is now handled through the channel member record for AI and WhatsApp conversations. This keeps conversation behavior more consistent across messaging features and reduces the risk of mismatched contact details.
Original PR description
task-4675831 PR community: https://github.com/odoo/odoo/pull/230067
This update reorganizes how chat and channel membership information is stored and accessed across Discuss, AI, Live Chat, and WhatsApp. It improves consistency behind the scenes, helping messaging features remain reliable and easier to maintain without changing the core user experience.
WhatsApp discussions now align with the updated way Odoo tracks offline members in chat channels. This keeps WhatsApp-related conversations consistent with the main messaging system and helps avoid display or availability mismatches after the underlying platform change.
Original PR description
This commit adapt the whatsapp code to the move of offlineMembers to discuss channel model. PR community: https://github.com/odoo/odoo/pull/231395
Spreadsheet border handling has been reorganized to make spreadsheet editing behavior more reliable and easier to maintain. This supports consistent autofill behavior in list and pivot spreadsheet views, reducing the chance of formatting issues as the feature evolves.
The Monster recruitment integration apps now use updated icons that match company icon guidelines and Monster's official brand colors. This improves visual consistency and makes the related apps easier to recognize in Odoo.
Original PR description
*: hr_recruitment_integration_skills_monster, hr_recruitment_integration_website_monster Prior to this change, the module icons did not comply with our icon guidelines. They have now been updated to use the Monster logo with official branding colors. task-4724804 | Before | After | |--------|--------| | <img width="1021" height="162" alt="image" src="https://github.com/user-attachments/assets/baf8bff0-deca-49f7-999e-750617302331" /> | <img width="1040" height="184" alt="Capture d’écran 2025-09-29 à 15 45 31" src="https://github.com/user-attachments/assets/9edd5023-9a1e-40c0-806f-01def0c84462" /> |
The Hong Kong payroll form now shows the employer return year only for Original forms. This reduces confusion by hiding an unnecessary field when other form types are selected.
Original PR description
- made the field `year_of_employer_return` only visible when `type_of_form` is Original task-id: 5050409
The payroll menu previously labeled “Resume” has been renamed to “Salary Summary” so users can more easily understand its purpose. This improves clarity and consistency when navigating salary-related information.
Original PR description
The 'Resume' menu label was misleading, as it did not accurately reflect its purpose. It has been renamed to 'Salary Summary' for better clarity and consistency. task-5172597
The IoT module now uses a clearer and consistent name for request session identifiers. This reduces ambiguity in internal communication between IoT components and supports easier maintenance across related systems.
Original PR description
In order to standardize the session id (id to the request received), we renamed all occurrences of old "owner" key to "session_id" Community PR: odoo/odoo#225190
WhatsApp conversations now use the dedicated channel loading method directly. This is a small internal improvement that should make the code path clearer and help maintain reliable access to WhatsApp chats without changing the user experience.
Original PR description
This PR use `discuss.channel` getOrFetch method directly instead of `mail.thread`
Odoo now uses the original line descriptions for most Mexican CFDI credit notes, aligning refund documents with SAT requirements. The fixed generic description is kept only for point-of-sale global invoice refunds, reducing compliance risk while preserving the required PoS behavior.
Original PR description
The SAT specifies how the description of redunded product should be set. Currently, Odoo uses the lines' names as the description for credit notes of normal invoices, but a forced text for the credit notes of global invoices. The actual need is to leave the forced text for credit notes of global invoices made from the PoS. Otherwise, the lines' names should be used. task-5170675
The mail composer now recognizes and highlights links correctly while users write messages. This makes shared URLs clearer and easier to use, while also simplifying the underlying editor setup for easier maintenance.
Original PR description
This commit enables the link plugin in the mail composer so that the link will be properly parsed and hightlighted. This commit also improves the plugin set and clean up the duplicated plugin lists. task-5172795 https://github.com/odoo/odoo/pull/232119
Swedish payment batches can now include both IBAN and local BBAN, Bankgiro, or Plusgiro accounts. When mixed account types are used, the system automatically creates a zip file containing separate payment files, helping businesses process more payments together without manual splitting.
Original PR description
This commit add a new behaviour for batch payments in Sweden. Before this commit: batch payment with mixed payment for iban and bban/bankgiro/plusgiro wasn't allowed After this commit: now if the user create a batch payment with both type of account, we create a zip file with 2 xml files, one for iban and one for bban/bankgiro/plusgiro. Linked:https://github.com/odoo/odoo/pull/230104 [task-5107240](https://www.odoo.com/odoo/project/967/tasks/5107240) Forward-Port-Of: odoo/enterprise#97556 Forward-Port-Of: odoo/enterprise#95463
Links entered in the mail composer are now recognized and highlighted more reliably. The update also simplifies the underlying editor setup, making future maintenance easier without changing the user workflow.
Original PR description
This commit enables the link plugin in the mail composer so that the link will be properly parsed and hightlighted. This commit also improves the plugin set and clean up the duplicated plugin lists. task-5172795 backport - https://github.com/odoo/enterprise/pull/97504 https://github.com/odoo/odoo/pull/232347 Forward-Port-Of: odoo/enterprise#97666
7 changes
Enhancements to existing features
Peruvian customer addresses no longer need a ZIP code to be accepted. This better reflects local address practices in Peru and reduces unnecessary data entry friction for customers and staff.
Original PR description
As ZIP codes are not widely used in Peru, the requirement for a ZIP code to be provided for a Peruvian customer should not be present. task-5012593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223157
Payslips in the Mexican payroll CFDI flow now show issue alerts when required information is missing. This helps payroll teams identify and correct problems earlier so CFDI documents can be generated correctly.
Original PR description
We now have a "issues" system on the payslips. Let's use it to signal what is missing for the correct generation of the CFDI. Task: 5068311
This update makes automated browser shutdown more reliable when Chrome reports rare errors during test cleanup. It helps prevent unfinished test environments and zombie builds, improving stability of the development and release pipeline.
Original PR description
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if…
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if this is in response to `stop`-ing the page, or a pre-existing navigation directive interfereing with the stop-ing of the browser. I tried reproducing locally under the assumption that the `Page.stopLoading` might be the cause but got nowhere[^1]. This issue seems extremely infrequent, and in most cases is but a minor annoyance, an error appears on the corresponding build, and that's it. However if the error occurs during `ChromeBrowser.stop` then the browser is not terminated, which on runbot prevents the docker image from shutting down properly, and leaves zombie builds. Therefore make `ChromeBrowser.stop` more resilient to errors in the initial section so that we do terminate the browser even if the "graceful CDTP shutdown" fails. While at it, add a fallback to kill the browser if it does not terminate gracefully. https://runbot.odoo.com/odoo/error/233442 [^1]: and the error only happening in 18.0 and later when `Page.stopLoading` was present long before that makes it likely the proximal cause is in the code being run, especially as all the errors sampled from the builds list are related to pos and the failure are immediately preceded by ongoing HTTP requests Forward-Port-Of: odoo/odoo#232222 Forward-Port-Of: odoo/odoo#232060
Swedish batch payments can now include both IBAN and BBAN, Bankgiro, or Plusgiro recipients in the same batch. The system automatically separates them into two XML files inside one zip file, reducing manual work and avoiding blocked mixed payment batches.
Original PR description
This commit add a new behaviour for batch payments in Sweden. Before this commit: batch payment with mixed payment for iban and bban/bankgiro/plusgiro wasn't allowed After this commit: now if the user create a batch payment with both type of account, we create a zip file with 2 xml files, one for iban and one for bban/bankgiro/plusgiro. Linked:https://github.com/odoo/odoo/pull/230104 [task-5107240](https://www.odoo.com/odoo/project/967/tasks/5107240) Forward-Port-Of: odoo/enterprise#97556 Forward-Port-Of: odoo/enterprise#95463
Links typed into the mail composer are now recognized and highlighted more reliably. This improves the message-writing experience while also simplifying the underlying editor setup for easier maintenance.
Original PR description
This commit enables the link plugin in the mail composer so that the link will be properly parsed and hightlighted. This commit also improves the plugin set and clean up the duplicated plugin lists. task-5172795 backport - https://github.com/odoo/enterprise/pull/97504 https://github.com/odoo/enterprise/pull/97666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Links added in the mail composer are now recognized and highlighted more reliably. This improves message clarity for users and also simplifies the underlying editor setup to reduce duplicated configuration.
Original PR description
This commit enables the link plugin in the mail composer so that the link will be properly parsed and hightlighted. This commit also improves the plugin set and clean up the duplicated plugin lists. task-5172795 backport - https://github.com/odoo/enterprise/pull/97504 https://github.com/odoo/odoo/pull/232347
Updates Luxembourg payroll calculations to reflect the 2025 minimum social salary and related tax credit changes. This helps ensure employee payslips and payroll obligations stay aligned with the latest official Luxembourg rates.
Original PR description
Sources: - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202501.pdf - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202505.pdf task-5176255 Forward-Port-Of: odoo/enterprise#97468
5 changes
Enhancements to existing features
This update simplifies how accounting tax calculations handle grouped tax details in the browser. It reduces the need for extra manual setup in the code, making tax-related interfaces easier to maintain and less prone to implementation mistakes.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves and fixes Odoo's Hoot unit testing tools while keeping changes limited to the test ecosystem. It helps maintain more reliable automated testing without affecting normal business workflows or end-user features.
Original PR description
## Pull Request HOOT 38 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/231263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Luxembourg payroll rules have been updated with the 2025 minimum social salary and related tax credit values. This helps ensure employee payslips and payroll calculations reflect the latest official rates.
Original PR description
Sources: - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202501.pdf - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202505.pdf task-5176255
Peruvian customer addresses no longer require a ZIP code because ZIP codes are not widely used in Peru. This makes customer data entry easier and avoids unnecessary validation issues for businesses working with Peruvian contacts.
Original PR description
As ZIP codes are not widely used in Peru, the requirement for a ZIP code to be provided for a Peruvian customer should not be present. task-5012593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223157
Estonia VAT report XML exports have been optimized to handle large accounting periods without timing out. The change reduces repeated processing, allowing very large monthly reports to complete successfully and improving reliability for businesses with high transaction volumes.
Original PR description
Behavior before: When exporting the VAT report to XML, each newly added line triggered a fresh _compute_expression_totals_for_each_column_group call. With large volumes of journal items, this…
Behavior before: When exporting the VAT report to XML, each newly added line triggered a fresh _compute_expression_totals_for_each_column_group call. With large volumes of journal items, this resulted in excessive repeated queries and, for big datasets, timeout errors. Behavior after: Introduced _custom_unfold_all_batch_data_generator, which batches the computation of expression totals for all lines. Now, journal items are resolved in bulk and mapped back to their respective moves, significantly reducing redundant queries. The VAT XML export completes successfully, even on months with very large datasets. Root cause: The Estonia VAT report was missing a batch unfold method (_custom_unfold_all_batch_data_generator). Without it, the system executed totals computation for each line individually instead of in batch, causing major performance degradation. Benchmark: | Period size (journal items) | Before patch | After patch | |----------------------------------------|----------------------|--------------------| | ~15k | 7s | 5s | | ~200k+ | Timeout error| 21s | opw-5046077 Forward-Port-Of: odoo/enterprise#95047
1 change
Enhancements to existing features
This update refreshes Luxembourg payroll parameters for 2025, including minimum social salary values and employee tax credit calculations. It helps payroll teams apply the latest official Luxembourg social security and tax rules accurately in salary computations.
Original PR description
Sources: - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202501.pdf - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202505.pdf - https://impotsdirects.public.lu/fr/az/c/CIP/cip2025.html - https://impotsdirects.public.lu/fr/az/c/credit-impot-salaries/cis2025.html task-5176255