Wednesday, February 4, 2026
41 changes · saas-19.1
Resolved issues and error corrections
This update resolves an issue where the carrier type selection would become disabled after validating a mobile barcode. The fix ensures the carrier number input remains editable whenever the carrier type is changed, allowing users to correctly select and input carrier information during the order process. This prevents data loss and improves the user experience.
Original PR description
carrier type After the user clicks on "Validate" button to validate the mobile barcode, the carrier type selection is disabled and the carrier type pass to the SO is None. This commit fixes the issue by instead of disabling the carrier type selection, we just set the input box of carrier number to readonly and set back the carrier number to not readonly when the user changes the carrier type to ensure the carrier number input is editable. task-5880421 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246767 Forward-Port-Of: odoo/odoo#246053
This update resolves an issue where the cost of kit products was incorrectly reset to zero when a delivery was validated. The fix ensures the correct kit price is calculated by using the sale order line's product ID instead of the stock move record, leading to accurate cost calculations for delivered orders.
Original PR description
Currently when the user validates a sale order delivery which has a kit the cost gets reset to 0. <h2>Steps to produce:</h2> * Install sale_margin, sale_management, mrp * Create a product with an…
Currently when the user validates a sale order delivery which has a kit the cost gets reset to 0. <h2>Steps to produce:</h2> * Install sale_margin, sale_management, mrp * Create a product with an AVCO or FIFO product category * Create a BOM of type ‘Kit’ for that product. * Add components A and B to the BOM, each with an on-hand quantity and a cost of 10. * On the kit product compute the cost according to the BOM * Create and confirm SO for 1 unit of the kit product * Delivery > Validate the Delivery and go back to the Sale Order Replication video: [Link](https://drive.google.com/file/d/1PgAh1xwBZX7RsRQ5ZsQipqYjuxvex2CA/view?usp=sharing) <h2>Observed Behavior:</h2> The product cost on the sale order is set to 0, but it should be 20. <h2>Root cause:</h2> After commit [1], an override for `_get_price_unit` was added to correctly calculate kit prices for BOM products. The goal was to prevent the cost from being set to 0 after a delivery is validated. However, when this logic is triggered during delivery validation, it doesn’t behave as intended. After the delivery is validated, compute [2] runs and calls function [3]. However, `self` at [3] refers to a stock move record, so we get the components of the kit instead of the kit product itself. The function `_bom_find` expects the main kit product, not the components. Because of this, the kit’s unit price isn’t calculated, and the parent function [4] ends up setting the purchase price to 0. <h2>Solution:</h2> Use the kit product IDs from the sale order lines instead of the move lines, ensuring the main kit product (not its components) is used and the BOM is found properly. Return unit price for kit products instead of total value for the function `_get_kit_price_unit` Update the test case to account for delivered quantities: **Before:** The sales order used Units as the unit of measure while the product and stock moves use a pack of 10. Since only 3 units get delivered and one product equals 10 units, this was not counted as a full delivery. Therefore, the delivered quantity was treated as 0, which allowed the product cost to be set at [5] and pass the test case **After:** The test now covers the case where a full quantity is delivered by using a pack of 10 as the unit of measure on the sales order. This ensures the product cost is handled correctly when the delivered quantity is 1 or more. [1]: https://github.com/odoo/odoo/commit/5a44ae1ec71573c57a5d60903f9b81e842fc582b [2]- https://github.com/odoo/odoo/blob/d4b6897211c65ba6d6ba8132480627e6fa66c481/addons/sale_stock_margin/models/sale_order_line.py#L11-L34 [3]- https://github.com/odoo/odoo/blob/d4b6897211c65ba6d6ba8132480627e6fa66c481/addons/sale_mrp/models/stock_move.py#L9-L16 [4]- https://github.com/odoo/odoo/blob/d4b6897211c65ba6d6ba8132480627e6fa66c481/addons/stock_account/models/stock_move.py#L230-L233 [5]- https://github.com/odoo/odoo/blob/d4b6897211c65ba6d6ba8132480627e6fa66c481/addons/sale_stock_margin/models/sale_order_line.py#L21-L22 opw-5479266 Forward-Port-Of: odoo/odoo#246030
This update resolves an error that occurred when users created reminders in the calendar module. The issue stemmed from a recent change in how selection fields are handled, specifically when clearing the 'Type' field. This fix ensures the system correctly processes this action, preventing the error and allowing users to successfully create reminders.
Original PR description
Currently, an error occurs when user creates a reminder. **Steps to Reproduce:** - Install the `calendar` module. - Go to `Calendar` > `Configuration` > `Reminders`. - Create a `new reminder` and…
Currently, an error occurs when user creates a reminder.
**Steps to Reproduce:**
- Install the `calendar` module.
- Go to `Calendar` > `Configuration` > `Reminders`.
- Create a `new reminder` and clear the `Type` field.
`KeyError: False`
**Cause**:
- Error started occurring in 19.0 due to a change in selection field behavior. Since change https://github.com/odoo/odoo/pull/214422/commits/8d2a42ac419fdf7943a0c11beb8c5de6c6f85bef, selection fields no longer display an “empty” value.
- To remove a value from a selection field, the user must clear the field, similar to a many2one field.
- When the Type field is cleared, its value becomes False, which raise the error here [1].
**Fix:**
- This commit ensures that when the alarm type is False, display_alarm_type is set to an empty value
similar to the display interval [2].
- Since both fields are required, once they are set again, the correct name is computed accordingly.
[1]: https://github.com/odoo/odoo/blob/2ee2f7678ed262036ee8cf8719ceafd3d69d4062/addons/calendar/models/calendar_alarm.py#L72-L74
[2]: https://github.com/odoo/odoo/blob/97e90f14ea40e4dc8645f845ef78eb579bb3e8dc/addons/calendar/models/calendar_alarm.py#L71
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#243526This update fixes an issue where the loyalty program button was incorrectly highlighted when rewards weren't available. Now, the button will only appear if the user has valid rewards, providing a cleaner and more accurate representation of the loyalty program options for customers.
Original PR description
Before this commit: ========= - The more control button was being highlighted even if rewards were not available. After this commit: ========= - The more control button will be highlighted if only valid rewards are there. task-5438708 Forward-Port-Of: odoo/odoo#241976
This update fixes a visual inconsistency in video link previews, specifically for YouTube videos. Previously, thumbnails left blank spaces, resulting in a broken layout. Now, thumbnails consistently fill the container, ensuring a uniform and professional appearance for all video previews.
Original PR description
**Purpose of this PR:** Before this commit, video thumbnails from youtube left blank spaces in the container, creating inconsistent layouts across different video links. After this commit, thumbnails consistently fill the entire container, ensuring uniform appearance for all video link previews. **Before/After:** <img width="533" height="407" alt="image" src="https://github.com/user-attachments/assets/ce2ba872-27b7-4be5-9d85-fbbe6f272e14" /> <img width="481" height="386" alt="image" src="https://github.com/user-attachments/assets/523f5d16-2983-49c1-9dcc-01adb4284e56" /> task-5424534 Forward-Port-Of: odoo/odoo#246856 Forward-Port-Of: odoo/odoo#244176
This update resolves an issue where website editing was blocked while the global search modal was open. The change automatically closes the search modal when you enter edit mode, allowing users to seamlessly add and manage website snippets. This improves the overall website editing experience.
Original PR description
Steps to reproduce: 1. Go to the Website. 2. Click the search icon in the header. 3. When the search modal opens, click 'Edit' to enable website editing. 4. Attempt to add a snippet. Observed behavior: - Snippets cannot be added while the global search modal remains open. Expected behavior: - Snippets should be draggable and added normally in edit mode. This commit ensures that the global search modal is closed when entering edit mode, preventing it from blocking add snippet. task-5421051 Forward-Port-Of: odoo/odoo#241414
This fix addresses an issue where users could attempt to consolidate invoices for multiple orders within the Veri*Factu POS module. The system has been updated to prevent this consolidation, ensuring that invoices are created for each order individually. This change improves data accuracy and avoids potential errors related to combining multiple sales transactions.
Original PR description
Step to reproduce: - install `l10n_es_edi_verifactu_pos` and open POS - finalize 2 order with same customer (do not invoive it) - close session - go to pos orders, select both order and try to create…
Step to reproduce:
- install `l10n_es_edi_verifactu_pos` and open POS
- finalize 2 order with same customer (do not invoive it)
- close session
- go to pos orders, select both order and try to create consolidated invoice
Traceback:
```
File "/home/odoo/addons/l10n_es_edi_verifactu_pos/models/pos_order.py", line 293, in _prepare_invoice_vals
res['l10n_es_edi_verifactu_refund_reason'] = self.l10n_es_edi_verifactu_refund_reason
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/odoo/orm/fields.py", line 1365, in __get__
record.ensure_one()
```
Cause:
- `_prepare_invoice_vals` is written to accept only one order at time but it can contain multiple orders
Fix:
- we now do not allow invoice consolidation for Veri*Factu
- the consolidation flag has been made invisible so every order now has
to be invoiced individually.
opw-5379577
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#239391This update resolves an issue where setting a receivable or payable account on the 'Expense Account' or 'Income Account' settings would trigger an error when creating a bill. The fix ensures the correct domain constraint is applied to related fields, preventing this user error and improving bill creation functionality.
Original PR description
**Steps to reproduce:** - Install Accounting - Go to "Accounting / Configuration / Settings" - Edit "Expense Account" property **Issue:** It is possible to set a receivable or payable account for the property. If a payable account is set, a constraint will trigger a UserError when trying to create a bill with that account. The same issue happens for "Income Account". **Cause:** The field is a related field. On the original field, there is a domain to prevent selecting these types of account, but the domain is not applied to the related field. **Solution:** Checking the company will retrieve the domain set on the original field. opw-5492092 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246798
This update corrects a random test failure related to how Odoo's datetime fields are rendered in editable list views. The fix ensures consistent rendering of the date picker, preventing unexpected UI behavior. This improves the stability and reliability of the web application.
Original PR description
This commit fixes two unit tests involving the datetime field which are randomly failing since [1]. In the first one, we add a record in an editable list view. The first field is automatically…
This commit fixes two unit tests involving the datetime field which are randomly failing since [1].
In the first one, we add a record in an editable list view. The first field is automatically focused (in `onMounted`). Before this commit, the first field was the datetime. When it is focused, the datetime field re-renders itself (from a `<button>` to an `<input>` with datepicker). The test failed when those two renderings were done within the same animationFrame, which was rare but possible. We fix the test by moving `foo` field before `date`, that way, the date field is never focused, and we can properly assert the default date value.
In the second one, again in an editable list, we select a date in the picker, and we then assert that the field is rendered with a `<button>` whose text is correct. The test sometimes failed because there was no button (the field was still displaying an `<input>`). When the value is selected, an update is done in the model, which triggers a re-rendering. At that moment, the picker still states that there's an `activeInput` ("date"), so the field is rendered with an input. The picker state is only updated afterwards, so there's another rendering, where `picker.activeInput` is "", which leads to the expected `<button>` being rendered. However, that rendering can happen in another animationFrame, thus triggering the issue. This commit fixes it by simply waiting for the button to be displayed.
[1] https://github.com/odoo/odoo/pull/218387
runbot error-238437 (1)
runbot error-238758 (2)
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#247026This update resolves an issue where enabling tracking on custom HTML fields within invoices caused update failures. The change hides the 'Enable Ordered Tracking' option for these fields, preventing the error and ensuring data updates work correctly. This improves stability and reliability for users modifying invoice data.
Original PR description
From https://github.com/odoo/odoo/pull/241367#issuecomment-3711040501 Nothing prevent tracking from being enabled on HTML fields, but if it is enabled, updates of the field systematically fail. This commit avoids this error by hiding the "Enable Ordered Tracking" for HTML fields. Steps to reproduce: - Install sale and web_studio - Activate debug mode - Add a custom HTML field inside the invoice form view - Open the "More..." of the field (or go to Settings/Technical/Field) and go to the new field - Set "Enable Ordered Tracking" to 1 - Save - Go to an invoice and modify the new field - Save => An error was displayed task-5236436 Forward-Port-Of: odoo/odoo#242183
This pull request addresses several bugs and improvements within the Hoot system, enhancing its reliability and test coverage. The fixes include correcting error messages, expanding the mocked API for more robust testing, and streamlining test assertions. These changes ensure Hoot functions correctly and provides a more stable experience.
Original PR description
### [FIX] Hoot fixes This PR contains several fixes for the Hoot system. See each commit description for more details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246402 Forward-Port-Of: odoo/odoo#244726
This update fixes a technical issue that prevented loyalty rewards from applying correctly when associated products were archived or invalid. The system now intelligently skips loading these rewards, ensuring a smoother and more reliable experience for users. This improves the overall stability of the POS loyalty program.
Original PR description
Steps: --------- - Install pos_loyalty. - Add a product to a loyalty reward’s reward product, or assign a product tag with no actual products as a reward product tag. - Archive/delete the reward product. - Open session. Issue: ---------- - A traceback appears when attempting to apply the affected reward, due to the archived/deleted or invalid reward product is being loaded in the POS. FIX: ----------- - Skip loading loyalty rewards whose reward product is archived/deleted or whose reward product tag contains no valid products. Task-5226654 Forward-Port-Of: odoo/odoo#242776 Forward-Port-Of: odoo/odoo#235081
This update resolves a slow loading issue for custom fonts on the Odoo website, particularly when users upload large images. The change optimizes a key process to reduce the time it takes to apply custom fonts, improving the user experience and preventing timeouts.
Original PR description
Steps: - Install `website` - Open website editor - Themes -> Font Family -> Add a Custom font - Choose a random font from the list - Uncheck "Serve font from Google servers" - Save and Reload - Timeout in case of *.odoo.com because it can take a very long time (more than two minutes) This commit improves `make_scss_customization`, because there is a regex that scans the file several times to find the user_values.scss hook in our case. This regex can easily be improved by checking only the beginning of lines after spaces instead of checking all characters. from ```py updatedFileContent = re.sub(r'( *)(.*hook.*)', r'\1%s\1\2' % replacement, updatedFileContent) ``` to ```py updatedFileContent = re.sub(r'^( *)(.*hook.*)', r'\1%s\1\2' % replacement, updatedFileContent, count=1, flags=re.MULTILINE) ``` opw-5178930 Forward-Port-Of: odoo/odoo#245907
This update adjusts the size of confirmation dialogs across Odoo to better align with frontend design standards and prevent interruptions. By allowing different sizes, the dialogs are now more appropriately sized for various scenarios, improving the user experience and reducing context-switching. This change ensures a smoother and more intuitive confirmation process.
Original PR description
### Context: A confirmation dialog must be small and minimal for several reasons: - Users are being interrupted mid-task. A wall of text forces them to context-switch and parse information when they…
### Context: A confirmation dialog must be small and minimal for several reasons: - Users are being interrupted mid-task. A wall of text forces them to context-switch and parse information when they just need to make a quick decision - The goal is a binary choice (confirm/discard). Too much content complicates what should be a simple yes/no moment - ... In the backend, our dialogs `SM` size is set to a **forgiving** `460px`. This value allows dialogs to be relatively small, while still providing enough tolerance to showcase more content if necessary. In the frontend, instead, the default value in use is BS default, thus `300px`. A website default font-size is also much bigger, `16px` against `13px` in the backend. As a result, the dialog may be too small when used in scenarios that are not "confirmation dialogs" strictly speaking. ### The issue: In some cases, enforcing SM size to any confirmation dialog gives bad results in the frontend. | backend | fronted | |--------|--------| | <img width="644" height="370" alt="image" src="https://github.com/user-attachments/assets/ab40312a-06df-4203-8b3d-3b2074341986" /> | <img width="667" height="416" alt="image" src="https://github.com/user-attachments/assets/c0770de4-e3c0-4a15-b2a5-6a498c94fb20" /> | Enforcing a higher `SM` value for the frontend (eg. `500px`) is not a solution because the default BS value is technically correct and users can customize it anyway by overriding this setting. ### The solution: Allow the ConfirmationDialog component to use sizes different from `SM`. This commit sets some portal dialogs to MD size. | saas-19.1 | this pr | |--------|--------| | <img width="667" height="416" alt="image" src="https://github.com/user-attachments/assets/c0770de4-e3c0-4a15-b2a5-6a498c94fb20" /> | <img width="953" height="605" alt="image" src="https://github.com/user-attachments/assets/07eab456-97c3-4e9d-8ce2-dd79ac5b82d4" /> | task-5906425 note: Several design improvements are necessary and will be handled in forward-port targeting master --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a validation error preventing employees from requesting time off when using a 2-week calendar schedule. The issue stemmed from visual calendar lines used for formatting that were incorrectly impacting date calculations. This change ensures accurate PTO requests are processed for all calendar types.
Original PR description
Steps to reproduce: - Choose France as the company location, and download "France - Work Entries Time Off" module. - From Employees > Configuration > Settings > French Time Off Localization, select…
Steps to reproduce: - Choose France as the company location, and download "France - Work Entries Time Off" module. - From Employees > Configuration > Settings > French Time Off Localization, select Paid time Off. - Create a new employee and a new contract (in running state) for that employee that starts on 01/01/2025. - While in the contract screen, create a new schedule that has 2 weeks calendar and Europe/Paris timezone. - From Time Off > Management > Allocations, allocate 1+ paid time off days for the newly created employee that's valid from 01/01/2025. - From the employee's profile > Time Off, try to take a Monday off. Issue: - The user gets a Validation error stating that the "start date" is later than the "end date". Fix: - In a 2 weeks calendar, there are 2 lines that are there to separate the first week from the second week (for aesthetic purposes). These lines have "hour_from" and "hour_to" = 0, which are taken into account when calulating the minimum hour to start the day off. - Add a check to remove lines from calendar that are just there for display purposes. opw-5387347 Forward-Port-Of: odoo/odoo#246565 Forward-Port-Of: odoo/odoo#246094
This update streamlines Odoo tests by disabling unnecessary device checks during testing. Previously, tests triggered frequent queries to detect device changes, slowing down the testing process. This fix improves test performance and efficiency without impacting the core functionality of Odoo.
Original PR description
In tests, when using `authenticate`, we create a session. When this session is retrieved (for example because we use `url_open`), we detect a new device and insert a log. The consequence is that a query is performed in many tests and that is not necessary. The fix consists of disabling the `res.device.log` feature by default in tests. task-5894825 Forward-Port-Of: odoo/odoo#246445
This update resolves an issue where the color filter applied to video backgrounds would disappear after saving the page. The fix ensures that the color filter is correctly re-applied when a video background block is selected and saved, maintaining the intended visual style. This improves the consistency and reliability of video background customizations.
Original PR description
The color filter applied to a video background would disappear after selecting the block and saving the page again. Steps to reproduce: =================== 1. Enter Edit mode on the website. 2. Drag…
The color filter applied to a video background would disappear after selecting the block and saving the page again. Steps to reproduce: =================== 1. Enter Edit mode on the website. 2. Drag and drop a snippet (e.g., "Intro"). 3. Set a video background for the block and apply a color filter. 4. Save the page. 5. Enter Edit mode again, click the block to select it, and Save. -> The color filter is removed from the video background. Cause: ====== Selecting the block triggers the `toggleBgImageClasses()` function. This function attempts to determine the background configuration. Since a video background is used, there is no standard image URL, so the code proceeds to call `setImageBackground` with an empty URL ([1]). This update process involves re-applying the color filter via the `selectFilterColor` action. However, the current background image style (the filter color) was not being passed to this function during this specific update flow. Consequently, the function assumed no filter existed and removed it ([2]). Solution: ========= Retrieve the current `filterColor` (which exists in background-image style) and pass it explicitly when calling the apply function. [1]: https://github.com/odoo/odoo/blob/fa482e36bc36809e55b6a11ebcc5bb130f20fd31/addons/html_builder/static/src/plugins/background_option/background_image_option.js#L18-L20 [2]: https://github.com/odoo/odoo/blob/fa482e36bc36809e55b6a11ebcc5bb130f20fd31/addons/html_builder/static/src/plugins/background_option/background_image_option_plugin.js#L170 opw-5448696 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242236
This pull request restores previously disabled tests in the project and stock accounting modules. A recent change removed key code components needed for accurate accounting related to manufacturing orders, causing tests to fail. The fix reintroduces these components with updated names and necessary sudo permissions to ensure correct operation.
Original PR description
Bring back all tests temporarily disabled by [1]. Below are the explanations about the needed changes in the code. --- Change in `/project_mrp_account:MrpProduction.write` Tested by…
Bring back all tests temporarily disabled by [1]. Below are the explanations about the needed changes in the code. --- Change in `/project_mrp_account:MrpProduction.write` Tested by `/project_mrp_account.test_changing_mo_analytic_account` In the test, when changing the project of the MO: https://github.com/odoo/odoo/blob/08b62a4bbcc6f9a391b2cc00a621ef4c76100229/addons/project_mrp_account/tests/test_analytic_account.py#L211-L212 We reach the override in `project_mrp_account`. On Odoo 18.0, a line calls the method `_account_analytic_entry_move`: https://github.com/odoo/odoo/blob/706431510110a005618a2acaf6566f2bb61d5114/addons/project_mrp_account/models/mrp_production.py#L31 This line is in charge of creating AA/AAL related to the SM. However, the commit [1] has removed `account_analytic_entry_move` and all its calls. This is why the test fails in the first assert: https://github.com/odoo/odoo/blob/08b62a4bbcc6f9a391b2cc00a621ef4c76100229/addons/project_mrp_account/tests/test_analytic_account.py#L210 It doesn't find anything. However, the commit [2] brings the method back with a brand-new name: `_create_analytic_move`. We therefore need to connect it again where it is needed. --- Change in `/stock_account:StockMoveLine.write` Tested by `/project_mrp_account.test_update_components_qty_to_0` Quite the same as above. Commit [1] removes this while it's actually needed. One difference, a `sudo` call, because a stock user doesn't have any access to analytic world. --- Change in `/stock_account:StockMoveLine.unlink` Tested by `/project_mrp_account.test_mo_qty_analytics` Same as above, also with a new `sudo`. --- [1] https://github.com/odoo/odoo/commit/08b62a4bbcc6f9a391b2cc00a621ef4c76100229 [2] 35db55618fa70146afc89e662410aca95947e17b Forward-Port-Of: odoo/odoo#245864
This update resolves an issue where a specific filter in the Accounting app was failing due to an unsupported operator ('any') in how it searched for analytic distribution accounts. The change converts 'any' to 'in' and 'not any' to 'not in', aligning with standard relational field behavior and ensuring the filter works correctly. This prevents errors and allows users to accurately filter journal items based on their analytic distribution.
Original PR description
`distribution_analytic_account_ids` is a virtual relational field backed by the `JSON` field `analytic_distribution`. Its custom search method did not handle the `any` / `not any` operators, causing…
`distribution_analytic_account_ids` is a virtual relational field backed by the `JSON` field `analytic_distribution`. Its custom search method did not handle the `any` / `not any` operators, causing domains like:
```py
('distribution_analytic_account_ids', 'any', <analytic.account domain>)
```
to fail during domain optimization with errors such as:
```py
ValueError: Cannot use 'any' with non-relational fields in condition ('analytic_distribution', 'any', [('plan_id', 'in', [2])])
```
This commit adds support for relational semantics in `_search_distribution_analytic_account_ids` by resolving the RHS domain on `account.analytic.account` into ids and converting:
- `any` → `in`
- `not any` → `not in`
This aligns the behavior with relational field expectations while keeping the logic at the field search level instead of modifying domain internals.
**Steps to reproduce:**
- Created a `v19` db and install Accounting app
- Navigate to `journal items` menu
- Add the custom filter: `[("distribution_analytic_account_ids.plan_id", "in", [2])]`
- In logs you will see:
```py
ValueError: Cannot use 'any' with non-relational fields in condition ('analytic_distribution', 'any', [('plan_id', 'in', [2])])
```
- In UI it will pop up domain is invalid.
opw-5875337
upg-3855669
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#246965This update corrects a technical issue where overtime calculations were imprecise due to storing minutes as 'minute and twelve seconds'. This change ensures more accurate overtime totals, particularly when processing large attendance records for reporting and balance calculations. It improves the reliability of our HR data.
Original PR description
### Current behavior: Overtime hours are stored with a two-decimal point precision. This means a minute is stored as a minute and twelve seconds in the worst case, which would amplify the overtime given or taken on a particular attendance. This is problematic when aggregating the records for large datasets to compute the balance or for reporting ### Expected behavior: A minute should be stored closer to its real decimal value to minimize the error in aggregations as a minute and 1.2 seconds opw-5422827 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244962
This update resolves an issue where the website preview would briefly delay after a hover, causing a slight lag for users. The fix ensures previews revert instantly as text is typed, preventing data loss. This enhancement improves the overall user experience when customizing website elements.
Original PR description
With commit aa3a2a694930d077aab5ff55e72655cc453a64ff, the delay of one animation frame in the preview of `templatePreviewableWebsiteConfig` is not necessary anymore. This was the only preview with a delay that can be triggered by hovering a button (the others needs to open a dropdown or input in text field). With commit be032732d1f5d1f7b28da3fa7bf19bffbef4a46d, previews are reverted as soon as the user starts typing, to avoid loosing the typed text when the preview is reverted. But this does not handle completely previews that are async: they may revert just after the first character is typed, and thus loose that character. This commit eliminates async preview that can be triggered while keeping focus in the editor. task-5493193 Forward-Port-Of: odoo/odoo#243727
This update prevents a situation where users in different branches could create the same tax name. Previously, Odoo only checked for duplicates within a user's visible branches. Now, Odoo checks all branches to guarantee that tax names are unique, avoiding potential errors and data inconsistencies when managing taxes across multiple company locations.
Original PR description
**Description of the issue/feature this PR addresses:** In companies with many branches, a user could create a tax name that already exists in another branch. This happened because Odoo only checked for duplicates in the branches the user could see. To reproduce: 1. Create `Branch A` and `Branch B`. 2. A user with access ONLY to `Branch A` creates "Tax 1". 3. A user with access ONLY to `Branch B` creates "Tax 1". 4. Both are saved, creating a duplicate name. This fix adds sudo() to the check. Now, Odoo will check all branches to make sure the name is unique, even if the user cannot see the other branches. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243364 Forward-Port-Of: odoo/odoo#243185
This update fixes a bug where users weren't receiving notifications for sub-channels they were mentioned in, but weren't officially members of. The change automatically adds these users to the sub-channel, ensuring they receive pinned notifications and don't miss important updates.
Original PR description
Before this commit, when a user was mentioned in a sub-channel they were not member of, the sub-channel would not appear in their sidebar. This could lead to some missed pings. This commit fixes the issue by automatically adding mentioned users to the sub-channel, ensuring it is pinned to their sidebar. task-5233958 Forward-Port-Of: odoo/odoo#246822 Forward-Port-Of: odoo/odoo#237538
This update fixes an issue where the description field in the calendar popover wasn't wrapping text properly, causing long descriptions to overflow and be difficult to read. The change adds a 'text-wrap' class to the description field, ensuring that descriptions are displayed neatly and fully within the popover window. This improves the user experience when viewing calendar events with detailed notes.
Original PR description
Changes done: - [x] `calendar`: Add `class="text-wrap"` in the description field of the calendar view to use it in the popover - [x] `web`: Define the appropriate class in the calendar popover field **Before** <img width="548" height="428" alt="antes" src="https://github.com/user-attachments/assets/77060ee6-30a1-47ed-8ba4-d5c2baa33fe3" /> **After** <img width="559" height="627" alt="despues" src="https://github.com/user-attachments/assets/cc9dfb47-3f98-4b5b-80c2-c3e5c15df0b0" /> @Tecnativa TT60670 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247111 Forward-Port-Of: odoo/odoo#246924
This update fixes a problem that was preventing new PEPPOL registrations from working correctly. The issue stemmed from a previous update causing conflicts with existing user accounts, leading to a failure for all new registrations. This ensures seamless registration processes for our PEPPOL users.
Original PR description
Fix regression of participant fetch cron introduced in forward port odoo/odoo#245038 Indeed self might be a record set in lots of different cases, which leads to users at least 1 existing edi proxy user in their company, all future registrations will fail