Thursday, December 4, 2025
7 changes · saas-18.4
Enhancements to existing features
This update significantly speeds up the process of retrieving product information, particularly when configuring products. By using a batch processing method, the system now completes this task in just 0.8 seconds, compared to 2.7 seconds previously – a 70% improvement. This change enhances the user experience and overall system performance.
Original PR description
Performing read operations on attributes and values in batch yields a significant performance improvement and is standard practice. Tested with 60 attributes and 8000 values: went from 2.7s to 0.8s (-70%) No task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#235170
This update enhances the integration with Adyen, our payment processor, by including essential application information in the payment requests. This ensures accurate transmission of key details like the external platform, leading to smoother and more reliable payment processing. A new test has been implemented to verify the functionality.
Original PR description
Add applicationInfo to the payload sent to Adyen, ensuring that externalPlatform is correctly transmitted. A test was added to verify that applicationInfo is present in the payload and that the payment request succeeds as expected. task-5157863 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237008 Forward-Port-Of: odoo/odoo#233075
Resolved issues and error corrections
This update corrects errors in how tax unit reporting is handled, particularly for OSS reports. It ensures that companies within a shared tax unit are correctly consolidated, and tax returns are always generated using the appropriate main company. This improves the accuracy and reliability of financial reporting.
Original PR description
This PR delivers multiple fixes to ensure consistent and accurate behavior when working with tax units across OSS and standard tax return reports: [FIX] l10n_eu_oss_reports: Correct Tax Unit…
This PR delivers multiple fixes to ensure consistent and accurate behavior when working with tax units across OSS and standard tax return reports: [FIX] l10n_eu_oss_reports: Correct Tax Unit Detection for OSS Reports OSS reports lack a country, causing _get_available_tax_units to return no results. As a consequence, only the environment's main company was considered. This fix ensures that when multiple companies belong to the same tax unit, their OSS reports are correctly consolidated under that shared unit. [FIX] account_reports: Link Tax Unit Returns to the Main Company When generating domestic tax returns for a company that is part of a tax unit, the main company of the unit should be used since it is responsible for filing. This update ensures tax return generation is always aligned with the appropriate main company. [FIX] account_reports: Enforce Main Company When Generating Report Options get_options previously relied on the order of companies within a tax unit, assuming the first entry was the main company. Because this order is not guaranteed, the call is now explicitly scoped using with_company to ensure the main company is always used when preparing report options. Forward-Port-Of: odoo/enterprise#99715
This update resolves an issue where pressing the TAB key while adding notes to sale order lines would clear and remove the entered text instead of saving it. The fix ensures that users can now correctly add and save notes within the sale order line interface, improving data accuracy and usability.
Original PR description
## Versions 18.0 > saas-18.4 Fixed in 19.0 thanks to bc6592a8514d6557037868a0f42265070fa02263 introducing the `parseLabel` method: https://github.com/odoo-dev/odoo/blob/19e03df5d9546d3948c2a184a6f26db7ba3aec71/addons/account/static/src/components/product_label_section_and_note_field/product_label_section_and_note_field.js#L47-L51 ## Issue When adding a section or a note line in the sale order lines list view, pressing TAB key caused the line to be cleared and removed instead of being saved. ## Steps to reproduce - Open an invoice or create one for any customer: - Click either on "Add a section" or "Add a note"; - Write something down; - Press the TAB key. ## Fix Handle the field with the appropriate `useInputField` hook. opw-4967733 Forward-Port-Of: odoo/odoo#237375 Forward-Port-Of: odoo/odoo#230644
This update resolves an issue where promotion rewards automatically added to cart lines couldn't be removed. The fix ensures the correct context is passed to the removal process, now allowing users to successfully remove promotion rewards from their shopping carts. This improves the user experience and prevents unwanted promotions from remaining in orders.
Original PR description
Steps: - Add a loyalty program of type promotion - Program trigger should be Automatic - Go to Shop > Add a product that triggers the reward of promotion - Try to remove the promotion added from the cart lines Issue: - Remove does not work for the automatically applied promotion reward Cause: - Context is not properly passed to the unlink method that removes the cart line of the promotion reward. - Since the unlink method is not receiving context properly, removal is bypassed Fix: - Instead of adding context in `self`, adding it directly in the `order_line` context fixes the issue. task-5076061 Forward-Port-Of: odoo/odoo#226789
This update fixes a reporting issue by ensuring the NIF (tax identification number) is now included in the BOE export for model 347, as required by Spanish tax regulations. Previously, the system only included VAT, but this change ensures accurate reporting to the Agencia Tributaria, aligning with specific documentation requirements.
Original PR description
[FIX] l10n_es_reports: include NIF in boe export for model 347 The NIF must be included in the BOE export for modelo 347 https://sede.agenciatributaria.gob.es/static_files/Sede/Disenyo_registro/DR_300_399/archivos/347.pdf pages 3 & 12. Before this commit, we read the vat but if it doesn't start with 'ES' we return an empty string because we based on TIN. Now we'll read the vat (without 'ES' if it starts with it). The user is responsible to fill a correct number in the vat field of the company. opw-5207241 Forward-Port-Of: odoo/enterprise#100489
This update resolves a crash that occurred when saving website forms that used property fields. The issue stemmed from incorrect handling of property field types, specifically when whitelisting fields. The fix ensures property fields are correctly processed, improving website form stability and functionality.
Original PR description
[FIX] website, website_crm: fix crash on save if property field in form --- __Before commit:__ 1. Go to CRM app 2. Open a lead 3. Add a new property field by clicking on the cogwheel at the top left…
[FIX] website, website_crm: fix crash on save if property field in form
---
__Before commit:__
1. Go to CRM app
2. Open a lead
3. Add a new property field by clicking on the cogwheel at the top left
and then *Edit Properties*
4. Open the website builder
5. Drag a new form
- Set *Action* to *Create an Opportunity*
- Set *Sales Team* to *Sales*
6. Add a new field and set *Type* to the newly created property field
7. Save
=> Traceback:
`ValueError: Unable to whitelist field(s) ['xxxx'] for model 'crm.lead'`
__Cause:__
We are trying to whitelist a property field which is not an actual field
to the `crm.lead` model but rather a property of one of the `crm.team`.
__Fix:__
Filter the property fields to whitelist.
---
[FIX] html_builder: make builder_list work with non-integer ids
---
__Before commit:__
1. Go to CRM app
2. Open a lead
3. Click on the cogwheel at the top left and then on *Edit Properties*
- Set *Field Type* to *Selection*
- Add two values
4. Open the website builder
5. Drag a new form
- Set *Action* to *Create an Opportunity*
- Set *Sales Team* to *Sales*
6. Add a new field and set *Type* as the newly created property field
7. Click on *Add New Radio*
=> There are still items to add although there are already all included.
8. Click on an item
=> Two tracebacks appear:
- `TypeError: Cannot use 'in' operator to search for '_id' in null`
- `TypeError: Cannot read properties of null (reading 'id')`
__Cause:__
When adding item to the selection, the id is casted to `Number` although
it can be a string if the field type is a property.
__Fix:__
When comparing two ids, cast both side of the comparison to strings to
make sure a match can always be found.
task-5248526