Friday, December 5, 2025
29 changes · 19.0
Enhancements to existing features
This update enhances the handling of Chilean electronic invoices by ensuring folio numbers align with available CAF files. A new validation rule requires a valid owner document for certificates, improving data accuracy and compliance with SII regulations. These changes contribute to smoother invoice processing and reduced errors.
Original PR description
This pull request introduces improvements to the handling of Chilean electronic document sequences, enforces stricter validation for certificate data, and modernizes string formatting throughout the…
This pull request introduces improvements to the handling of Chilean electronic document sequences, enforces stricter validation for certificate data, and modernizes string formatting throughout the codebase. The most significant changes focus on ensuring that document folio numbers are correctly managed in accordance with available CAFs, making the certificate model more robust, and updating code style for clarity and consistency. This improvement is mostly made because CAFs have expiration dates and fixed folio numbers. If the expiration date is reached but the folios were not fully consumed, the system will try to generate a document with following number in the sequence but an error will be raised because that number belongs to an expired CAF, althought the user had already uploaded a new CAF. To fix this, whenever the system looks for the highest number to set to a document, it previously check if that number is between the folio numbers of a valid CAF file. ### Chilean electronic document sequence management * Added `_get_last_sequence` method to `account_move.py` to ensure that the folio number used for Chilean electronic documents (DTE) is valid and corresponds to an available CAF. If no CAF is available for the current folio, the sequence is reset using the document type's prefix and starting number. ### Certificate model validation * Made `subject_serial_number` a required field in the `Certificate` model, enforcing that every certificate has a valid owner document and improving data integrity. We made this change to prevent the field being empty after loading the certificate in Odoo, since it is required by the SII to validate invoices. Forward-Port-Of: odoo/enterprise#92208
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#237037 Forward-Port-Of: odoo/odoo#235170
This update automatically opens the Return creation wizard when generating reports with no existing returns, eliminating the need for users to manually re-enter information. This improves efficiency and reduces the time spent on report generation, particularly for Intrastat and standard reports.
Original PR description
Currently, accessing the 'Returns' view from a report with no existing returns shows an empty list. The user then has to click 'New' and manually re-enter values like dates and the report itself, which are already known. This commit improves the workflow. If no returns exist for the current report, the system will now automatically open the Return creation wizard pre-filled with the corresponding default values derived from the report context. This removes the redundant data entry step for the user. task-5155832
Resolved issues and error corrections
This update fixes an issue where stock deliveries weren't accurately reflecting the FIFO (First-In, First-Out) valuation method. The change ensures that the quantity already delivered is properly accounted for, leading to more precise cost of goods calculations. This improves the accuracy of financial reporting related to stock movements.
Original PR description
Steps to reproduce: - Have a product valued in fifo - Create 3 PO for it, each for 1 qty of price 10, 20 and 30. - Confirm these PO & validate their receipts - Create 2 SO for this product, each for 1 qty - Confirm these SO & validate their deliveries together Issue: The value associated to the delivery moves (and so the cogs generated from them) is 10 for both. When calling `_action_done()` on the moves, we'll set the value of each move before moving them. To get the correct value from the fifo stack, we rely on the `qty_available` at the time. However, since we're going to set the value of multiple moves before validating them, the `qty_available` won't be updated between each call. opw-5359484 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where promotion rewards automatically added to cart lines couldn't be removed. The fix ensures that the necessary context is passed during the removal process, allowing users to correctly remove promotion rewards from their shopping carts. This improves the user experience and prevents unwanted promotion applications.
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 an issue where changing a manufacturing order (MO) in the Gantt view would incorrectly update product information, leading to inconsistencies in reporting and data. Specifically, it prevents the `product_id` from changing after confirmation, ensuring accurate component tracking and preventing misleading by-product displays on shop floor reports.
Original PR description
Steps to reproduce: 1- Create MO and confirm 2- In gantt view move it to another product's line Issue: Product is changed, after being confirmed and it causes a lot of inconsistencies, as it changes into the new product with the main product's component and in the shop floor the main product is shown as a by-product even if the by-products are disabled. Task: 5362247 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where Point of Sale orders with variant kits didn't correctly generate picking lists. Previously, only one variant's specific components were included. Now, the system accurately creates picking lists for all variants within a kit, ensuring complete fulfillment of orders.
Original PR description
When selling a bom kit that have some components that applies on specific variants only, the picking was not correctly created. It would only take one kit variant into account, even if you sold 2…
When selling a bom kit that have some components that applies on specific variants only, the picking was not correctly created. It would only take one kit variant into account, even if you sold 2 kits with different variants. Steps to reproduce: ------------------- * Create a product P * For product P, create an attribute with type "No variant" and values V1 and V2 * Create a BoM Kit for product P, with 3 components C1 C2 and C3 - C2 applies only for variant V1 - C3 applies only for variant V2 * Create a POS order with 2 lines of product P: - 1 with variant V1 - 1 with variant V2 * Validate the order and check the created picking > Observation: Only C1 and C2 are in the picking, C3 is missing Why the fix: ------------ When creating the picking, the code was grouping the order lines by product only, and not by product variant. Therefore, the 2 lines would be grouped together, and only one of the variant-specific components would be taken into account. opw-5051289 Forward-Port-Of: odoo/odoo#237844 Forward-Port-Of: odoo/odoo#235528
This update corrects an issue where fiscal year start dates were inconsistent, leading to incorrect return generation based on the current date. The fix ensures that returns are always generated with the correct fiscal year start date, regardless of the current date. This improves the accuracy of financial reporting across Belgium, New Zealand, and the UK.
Original PR description
compute_fiscalyear_dates using date.today() is wrong and can lead to different start_dates depending the current date. For instance if we create a custom fiscal_year from sept 2025 to Dec 2025 and we are currently the 10th Sept 2025. Then, we try to generate a return for January. The start date would be set to the 1st Sept. Then later, when trying to generate the same return for January 2025 but being after that custom fiscal year (for instance 20th January 2026), We get a completely different start date. The fix is to avoid using the custom fiscal years in get_start_date_elements. An improvement will be done in master to add that feature. We can also safely remove the custom start_date from the belgian localization as now it is not used anymore. See: https://github.com/odoo/enterprise/pull/100034 Forward-Port-Of: odoo/enterprise#100022
This update ensures the NIF (tax identification number) is now included in the BOE export file for model 347, as required by Spanish tax regulations. Previously, the system only included VAT, but this change corrects a data omission, aligning with specific reporting requirements outlined in official documentation. Users are responsible for accurately entering the NIF in the company's VAT field.
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 fixes a payroll issue in Belgium where public holidays were incorrectly paid during long-term sick leaves. The fix ensures that public holidays are no longer included in pay calculations after 30 calendar days of sick leave, aligning with Belgian labor laws. This ensures accurate payroll processing for employees on long-term sick leave.
Original PR description
Bug: In Belgium, after 30 calendar days of sick leave, all public holidays during the sick leaves are no longer paid. But here they were still being paid. Cause: The method that was checking what to do about public holidays was never seeing public holidays since they were already changed to their corresponding work entries at the work entry generation. Fix: Add the public holidays in the context and change the condition for checking if the current leave is actually from a public holiday or not. Task: 3864585 Forward-Port-Of: odoo/enterprise#98661 Forward-Port-Of: odoo/enterprise#95178
This update fixes an error in the payroll calculations for Switzerland (l10n_ch_hr_payroll) where the wrong employee ID was being used. The fix ensures accurate record linking by consistently referencing the primary employee record instead of a historical version, improving payroll accuracy.
Original PR description
Commit [46052c4](https://github.com/odoo/enterprise/commit/46052c4bc5ad1bd2549a6125202e0671b56beac8) introduced the `hr.version` model, which contains historical information about an employee record. Some of the updated lines use the hr.version ID when they should use `hr.employee`. Ticket [5218215](https://www.odoo.com/odoo/project.task/5218215) Forward-Port-Of: odoo/enterprise#100079
This update resolves an error that occurred when creating time off allocations using hours, particularly when each attendance had a defined start and end date. The fix prevents a division-by-zero error, ensuring time off allocations are created correctly. While this addresses the immediate issue, the underlying problem isn't fully resolved.
Original PR description
_ ## Short functional explanation of the error When creating a time off allocation with a time off type expressed in hours, and having start/end dates for every attendance in the corresponding…
_ ## Short functional explanation of the error When creating a time off allocation with a time off type expressed in hours, and having start/end dates for every attendance in the corresponding calendar, an error is raised. ## Reproduction Steps 1. Go to Employees and click on the Configuration tab > Working Schedules. 2. Click on a schedule and click on the button next to Work Entry Type to show the Starting date. 3. Set a starting date for each entry. 4. Go to Time Off. Click on the Configuration tab > Time Off Types. 5. Click on a time off and next to the Take Time Off in, select Hours. 6. Click on the Management tab > Allocations. Click on New. 7. Select an employee that has the schedule you updated earlier. ## Expected behavior The allocation is created. ## Unexpected Behavior A traceback occurs: ``` ZeroDivisionError: float division by zero ``` ## Origin of the issue When setting a start or/and an end date to an attendance, this attendance won't be taken into account for global attendances anymore. This leads to an erroneous computation of hours_per_day, leading to a few issues; one of them is related to time off allocation: When setting a time off with a time off type expressed in hours, if every single attendance in the calendar has a start/end date, there will be no global attendance hours left, leading to a division by 0: https://github.com/odoo/odoo/blob/8097b674a23858ed7692a0b30ca74419b8f890f7/addons/hr_holidays/models/hr_leave_allocation.py#L262 After discussion, we decided that this fix would only fix a symptom, and not the problem itself. _ opw-5340056 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237782
This update fixes an issue where debit notes created in the Uruguayan localization were incorrectly assigned as e-invoices (type 111). The fix ensures debit notes automatically use the correct document type (113), streamlining invoice processing for Uruguayan businesses. This improves data accuracy and compliance.
Original PR description
**Steps to reproduce:** * Install and activate the **Uruguayan Localization** for the company. * Create a contact located in Uruguay. * Create an invoice for this customer and set **Document Type =…
**Steps to reproduce:** * Install and activate the **Uruguayan Localization** for the company. * Create a contact located in Uruguay. * Create an invoice for this customer and set **Document Type = 111 (e-Invoice)**. * From the invoice's gear icon, create a **Debit Note**. **Observed behavior:** * The debit note is automatically assigned **Document Type 111 (e-Invoice)**, even though it should use **113 (e-Invoice Debit Note)**. * Attempting to change the document type manually only shows 113 as an option, confirming the debit note should not have been set to 111. **Cause:** * `_compute_l10n_latam_document_type()` applies a rule that assigns Document Type **111** to all Uruguay electronic invoices with RUT identification. * This logic does **not** check whether the move is a **debit note** (`m.debit_origin_id`), and therefore incorrectly overrides the expected debit note document type. * The override prevents the correct selection (internal_type == *debit_note*) from being applied. **Fix:** * Add a condition in the automatic e-Invoice assignment logic. * Debit notes now bypass the e-Invoice assignment and fall through to the parent method, which correctly assigns **Document Type 113**. opw-5154599 Forward-Port-Of: odoo/enterprise#100938
This update resolves an error that occurred when creating time off requests. Specifically, the system would fail if a start date was removed and then the employee was changed. The fix ensures the system only checks for past dates when a start date is provided, preventing the error.
Original PR description
Currently, an error occurs when creating a time off request for an employee. Steps to Reproduce: - Install the `hr_holiday` module. - Go to `Management > Time Off`. - Create a `new time off` and…
Currently, an error occurs when creating a time off request for an employee. Steps to Reproduce: - Install the `hr_holiday` module. - Go to `Management > Time Off`. - Create a `new time off` and `remove the start date`. - Now `change the employee`. `AttributeError: 'bool' object has no attribute 'date'` This error occurs when creating a time off request for an employee. If the start date is removed and then the employee is changed, the compute method [1] runs to determine whether the time off can be approved and to update the states [2]. During this process, the system checks whether the time off date is in the past, and since the start date is missing, it results in the error [3]. This commit ensures that the system only checks whether the time off is in the past when a start date is provided. [1]- https://github.com/odoo/odoo/blob/aa53689d3c593a8a41479c51edc2b01e3c284f96/addons/hr_holidays/models/hr_leave.py#L594-L597 [2]- https://github.com/odoo/odoo/blob/aa53689d3c593a8a41479c51edc2b01e3c284f96/addons/hr_holidays/models/hr_leave.py#L1279 [3]- https://github.com/odoo/odoo/blob/aa53689d3c593a8a41479c51edc2b01e3c284f96/addons/hr_holidays/models/hr_leave.py#L1237 No Task ID --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238281
This update resolves an issue where the 'Import Records' function within the Master Production Schedule (MPS) module wasn't working correctly. The fix ensures that initialization for client actions, triggered by the MPS feature, is properly executed, allowing users to import records as intended. This improves the usability of the MPS workflow.
Original PR description
Steps to reproduce: ------------------- 1. Install mrp_mps 2. Go to Inventory > Operations > Procurement > MPS 3. Click "Toggle search panel"(▼) 4. Click “Import Records” Issue: ------ Nothing…
Steps to reproduce: ------------------- 1. Install mrp_mps 2. Go to Inventory > Operations > Procurement > MPS 3. Click "Toggle search panel"(▼) 4. Click “Import Records” Issue: ------ Nothing happens when clicking “Import Records”. Cause: ------ After this 646bee6, initialization moved to `onWillStart()`, but it only runs when the current action type is `ir.actions.act_window`. MPS triggers the import from a [client action](https://github.com/odoo/enterprise/blob/142d86ad89435cd0751e9865ff62e8263a67e060/mrp_mps/views/mrp_mps_menu_views.xml#L4-L9), so the condition returns early and [get_import_templates](https://github.com/odoo/odoo/blob/f272eb19813be4254fd461ec21f1cc47e8834559/addons/base_import/static/src/import_model.js#L238) never loads. Solution: --------- Allow initialization for client actions as well, same as window actions. Reference: MPS(Master Production Schedule) opw-5248073 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a bug preventing ECPay invoice generation in version 19.0. The previous system attempted to access a removed field, causing an error. The fix removes the outdated field reference and now utilizes the standard 'phone' field for contact information, ensuring reliable ECPay integration.
Original PR description
**Steps to reproduce:** 1. Install l10n_tw_edi_ecpay. 2. Switch to the TW company. 3. Go to Configuration → search for "ECPay". 4. Enable staging mode. 5. Enter all credentials. 6. Create a new…
**Steps to reproduce:**
1. Install l10n_tw_edi_ecpay.
2. Switch to the TW company.
3. Go to Configuration → search for "ECPay".
4. Enable staging mode.
5. Enter all credentials.
6. Create a new invoice → select “Taiwan Semiconductor” as customer → set an email and leave the phone field empty.
7. Add a product → confirm → click “Send” → select only “Send to ECPay” → send.
> You can find ECPay testing credentials here : https://developers.ecpay.com.tw/?p=24174
**Issue:**
A traceback occurs while sending the e-invoice:
`AttributeError: 'res.partner' object has no attribute 'mobile'`
**Cause:**
In commit https://github.com/odoo/odoo/commit/6b820eb6fc6f782ba6a83d605d87b4a1dd2a87be the `mobile` field was removed from `res.partner`. The ECPay integration still attempted to read `partner.mobile`, which causes the traceback on versions where the field no longer exists.
Additionally, the code was still using the deprecated `self._cr` cursor reference, which was replaced by `self.env.cr` as part of the cleanup in: https://github.com/odoo/odoo/pull/193636/commits/ad7606195a4ba44bf9854506bf2e305d3dd13dbb
**Fix:**
Remove the reference to the obsolete `mobile` field and rely solely on the `phone` field, which is the only supported contact number field in 19.0.
Also replace deprecated `self._cr` with `self.env.cr`
**opw-5357429**The timesheet grid now accurately reflects company working schedules with flexible hours enabled. Previously, it incorrectly displayed unavailable days, but this update ensures all days are considered working, resolving a confusing and inconsistent user experience. This improvement provides accurate timesheet availability for teams using flexible work arrangements.
Original PR description
**Description** When a company's working schedule has flexible hours enabled, the timesheet grid was incorrectly displaying random weekdays as non-working days (greyed out cells). The affected days…
**Description** When a company's working schedule has flexible hours enabled, the timesheet grid was incorrectly displaying random weekdays as non-working days (greyed out cells). The affected days varied by month because the unavailability calculation was time-dependent. **Steps to reproduce** 1. Enable flexible hours on company's working schedule 2. Go to Timesheets > All timesheets 3. Switch to Grid view and filter by month 4. Observe that random weekdays (e.g., Wed/Thu or Mon/Tue) are greyed out **Fix** The grid_unavailability method now checks if the company calendar has flexible_hours enabled. When true, it returns an empty list of unavailable days, treating all days as potential working days. This fix adds the flexible_hours check in two locations within the grid_unavailability method to cover all code paths: 1. get_company_unavailable_dates() helper function - prevents unnecessary calculation when called as fallback 2. company_unavailable_days assignment from calendar_work_intervals - handles the direct path when company calendar is found This follows the same pattern as the gantt view fix #100385 opw-5215646 Forward-Port-Of: odoo/enterprise#100881
This update corrects a previous error in the EPF (Employee Provident Fund) tax calculations for our Malaysian payroll system. The changes ensure accurate rounding of tax amounts to the nearest ringgit, aligning with current legislation. This update improves the precision and compliance of payroll processing.
Original PR description
Previous behavior did not account for the rounding of the amount of tax to the next ringgit. Also the employee's rate has been updated in accordance to the legislation. task-5286179 Forward-Port-Of: odoo/enterprise#100736
This update increases the time allowed for sending log data from the IoT boxes to the database, resolving previous issues that caused frequent errors. By extending the timeout to 10 seconds and increasing the log transmission frequency to 12 seconds, the system is now more reliable in capturing and transmitting important data.
Original PR description
Currently the request to send logs to the db from the iot box is at 0.5s timeout. This leads to many exceptions and failed requests. This commit sets the timeout for such requests to 10s (previously 0 5s) and the frequency of sending logs to every 12s (previously 0.5s) Forward-Port-Of: odoo/odoo#238648
This update resolves a crash that occurred when users attempted to create bank statements using journals other than the default. The fix ensures the correct journal is associated with the statement, preventing data inconsistencies and improving stability. It addresses a technical issue related to how the system handles statement creation.
Original PR description
The system will crash when user tries to create new bank statement line. **Steps to produce:** - Install `Invoicing` module without demo data. - Go to `Configuration > Journals` and duplicate the…
The system will crash when user tries to create new bank statement line. **Steps to produce:** - Install `Invoicing` module without demo data. - Go to `Configuration > Journals` and duplicate the default Bank journal to create `Bank (Copy)`. - Dashboard and `Click on 3 dots` of Bank(Copy) and click on Transactions. - Create a new transaction and set the Statement also(Create new and assign it). - Go to that statements and Add a line and set the `foreign currency` as USD. **Error:** `ValueError: Wrong value for account.bank.statement.journal_id: account.journal(7, 6)` **Cause:** - When we try to create a transaction in a statement of a non-default journal, its journal is not set by default, resulting in two records being fetched. At line [1], our code attempts to read `statement_id.journal_id` , but encounters multiple records, causing the issue. **Solution:** - Here I added context to pass `journal_id` as default and made `payment_ref` required(because at [2], also we do the same). - Also added hidden `journal_id` field in the list view. [1]: https://github.com/odoo/odoo/blob/ec2d8d026d9f13c8fb869ad1f7b8026a144e85ec/addons/account/models/account_move.py#L887 [2]: https://github.com/odoo/enterprise/blob/bff451101bb23b4f9acc7982ed1138d7cefa13b9/account_accountant/views/bank_rec_widget_views.xml#L220 **sentry-6928858335** **opw-5256565**
This update fixes an issue where taxes weren't automatically applied during Express Checkout using Stripe, requiring users to reload the page. The change ensures the correct fiscal position (based on the user's address) is used for pricing and tax calculations, improving the checkout experience for eCommerce customers.
Original PR description
## Issue: When a fiscal position should apply based on the address provided during Express Checkout, it was not applied automatically The correct fiscal position only appeared after reloading the…
## Issue: When a fiscal position should apply based on the address provided during Express Checkout, it was not applied automatically The correct fiscal position only appeared after reloading the checkout page This issue affects public users using the eCommerce with Stripe Express Checkout ## Cause: The fiscal position was correctly determined during the `availableCarriers` computation, but it was not propagated to the payment request itself As a result, prices and taxes were only updated after a full page reload ## Steps to reproduce: - Configure Stripe with Express Checkout (e.g., Google Pay) - Create a fiscal position with automatic detection (Country = US, Tax mapping: 15% → 0%) - Create a product using the 15% tax - Go to the website shop and add the product to the cart - Use Express Checkout with a US address - Observe that the fiscal position is not applied unless the page is reloaded opw-5018238 Forward-Port-Of: odoo/odoo#238690 Forward-Port-Of: odoo/odoo#236832
This update resolves a crash when saving forms with property fields in the CRM lead section. The fix addresses an issue where the system incorrectly handled property field types, leading to data validation errors. It ensures proper handling of property fields within website forms and CRM leads.
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
Forward-Port-Of: odoo/odoo#237638This update resolves an issue where filters weren't consistently applied to reports included within annual reports. Specifically, the analytic group by filter was missing from the Profit & Loss (US) report when it was part of a larger annual report. This ensures accurate reporting for key financial metrics within annual reports.
Original PR description
For reports that are part of an annual reports, the _compute_report_option_filter prevent the update of the filters when the report is added as a section of another report. In the case of the analytic group by for example, even when the options was enabled, the filter was not present on the profit and loss (us) since it is a section of the annual report. opw-5185296
This update fixes a bug where the HTML editor toolbar overlay remained visible after actions like discarding edits or expanding the editor. The change ensures the overlay correctly adjusts to the user's selection, providing a smoother and more intuitive editing experience. This improves usability for users creating and editing content within the Odoo platform.
Original PR description
task-https://www.odoo.com/odoo/project/1695/tasks/5125676
This commit reverses changes that were causing incorrect pricing calculations for products with multiple plans and variants. The previous update removed essential logic, leading to inaccurate pricing. Reverting restores the correct price computation for these products, ensuring accurate sales pricing.
Original PR description
This commit reverts the modifications introduced in the one-time sale [PR](https://github.com/odoo/enterprise/pull/77981). Those changes caused incorrect pricing behavior for products with variants, as the necessary logic for handling multiple plans and variants was removed. By reverting, we restore the correct price computation for products that have both multiple plans and variants. opw-5224319,5152566 Forward-Port-Of: odoo/enterprise#93463