Thursday, January 29, 2026
23 changes · saas-19.1
Enhancements to existing features
This update simplifies the process for users to view project details linked to a manufacturing order. Previously, project information was hidden within a less prominent section of the MO form. Now, a dedicated 'Project' button provides instant access, streamlining workflows and improving efficiency.
Original PR description
When a MO is linked to a project and a user wants to check it, they have to find it in the miscellaneous section of the form, which is easy to miss and makes it harder for users to quickly navigate to the related project compared to other documents (for example, sales orders) where related records are directly accessible through a smart button. This change adds a `Project smart button` on the manufacturing order form when a project is set, allowing users with access to the Project app to open the related project directly from the MO. TaskID-5438411 Forward-Port-Of: odoo/odoo#241854
This update grants the Invoicing & Banks role read-only access to critical accounting reports like the General Ledger and Profit & Loss. Previously, this role was restricted, hindering their ability to fully utilize key financial data. This change improves reporting capabilities and operational efficiency for users in this role.
Original PR description
Before: The Invoicing & Banks role did not have access to important accounting reports such as General Ledger, Trial Balance, and Profit & Loss. After: The role now inherits read-only privileges, allowing access to all essential accounting reports. Task-5418541 Forward-Port-Of: odoo/enterprise#105322 Forward-Port-Of: odoo/enterprise#104868
This update improves tax data and reporting within Odoo to align with Taiwanese business practices. Key changes include the addition of required tax reports (401, 403, 404) and refined tax groups, ensuring accurate compliance with Taiwanese tax regulations.
Original PR description
This is an improvement on tax data and reports, to more precisely match common business practices in Taiwan. It also introduces key tax reports to support standard compliance and reporting requirements. Updates: - Refine Taiwanese tax and tax groups - Add fiscal positions - Add tax reports: Business Tax Declaration Forms (401, 403, and 404) [Task-3371895](https://www.odoo.com/odoo/project.task/3371895) Forward-Port-Of: odoo/odoo#243980
This update ensures document discoverability settings (like public or private access) are consistently maintained when moving documents within the system. Previously, moving a document could unintentionally change its visibility based on the destination folder. The change includes updated confirmation dialogs to clearly communicate that the original settings will be preserved.
Original PR description
This commit improves the handling of a document's discoverability setting (`is_access_via_link_hidden`) when it is moved between folders. Previously, when a document was moved, it would inherit the…
This commit improves the handling of a document's discoverability setting (`is_access_via_link_hidden`) when it is moved between folders. Previously, when a document was moved, it would inherit the discoverability setting from the destination folder. This could lead to unintended changes in a document's visibility. For example, a publicly discoverable document could become private (requiring a direct link) simply by being reorganized into a different folder. This behavior was inconsistent with a previous improvement that prevented discoverability from propagating downwards from a parent folder to its children. See PR-93697. With this change, a document's discoverability is now treated as an intrinsic property that is fully preserved when the document is moved. It is no longer affected by the settings of its destination folder. To ensure clarity for the user, the move confirmation dialog has been updated to reflect this new logic. It now correctly informs the user that the document's original discoverability setting will be maintained. Task-5159832 Forward-Port-Of: odoo/enterprise#97045
Resolved issues and error corrections
This update resolves an error that occurred when users removed the start date on a leave request and then assigned a resource. The fix ensures the system correctly calculates the calendar ID for leave records, regardless of whether a contract start date is present, improving the reliability of leave scheduling.
Original PR description
Currently, an error occurs when user sets the resource on a resource leave. **Steps to Reproduce:** - Install `hr_contract` with demo data. - Go to `Resource Time Off`. - Create a new record and…
Currently, an error occurs when user sets the resource on a resource leave. **Steps to Reproduce:** - Install `hr_contract` with demo data. - Go to `Resource Time Off`. - Create a new record and remove the `start date` value. - Select the `Anita Oliver` resource `(employee record with running contract)`. **Error:** `TypeError: '<=' not supported between instances of 'datetime.datetime' and 'bool'` **Cause:** This error occurs when the user removes the start date and sets a resource that is linked to an employee with a contract. In this case, the system groups leave records based on the contract [1], and while computing calendar_id for the leave, it filters records by checking whether the leave start date falls between the contract start and end dates [2]. Since the leave start date is False, the comparison raises the error. Another issue is that when the user changes the start date, the calendar_id should be updated based on the employee’s current contract. **Fix:** This commit ensures that when setting or changing the resource_id, for contracts with and without a start date, the calendar_id is computed correctly. [1]: https://github.com/odoo/odoo/blob/5f8336c7d8ab891103a3035a9ebb5242cfa46ce6/addons/hr_contract/models/resource_calendar_leaves.py#L17 [2]- https://github.com/odoo/odoo/blob/5f8336c7d8ab891103a3035a9ebb5242cfa46ce6/addons/hr_contract/models/resource_calendar_leaves.py#L29 **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#244372 Forward-Port-Of: odoo/odoo#241638
This update corrects a bug where the Product List page incorrectly kept the last selected category active after a self-order kiosk purchase. The change ensures that the category selection resets upon order confirmation, providing a smoother and more accurate checkout experience for kiosk users. This resolves a potential issue with order accuracy.
Original PR description
The Product List page was keeping the previously selected category active after checkout in kiosk mode. This commit resets the category selection on order confirmation. Task-5877912 Forward-Port-Of: odoo/odoo#245830
This update fixes a visual issue where the virtual keyboard would cover the bottom sheet in point of sale, making it difficult for users to see what they were typing. The change ensures the bottom sheet always remains visible by properly resizing the viewport when the keyboard appears. This improves usability and the overall user experience.
Original PR description
Before this commit, when you clicked on an input that didn’t have focus inside a bottom sheet, the virtual keyboard popped up on top of the bottom sheet, hiding the input. As a result, you couldn’t…
Before this commit, when you clicked on an input that didn’t have focus inside a bottom sheet, the virtual keyboard popped up on top of the bottom sheet, hiding the input. As a result, you couldn’t see what you were typing. This happens because, in this case, the browser opens the virtual keyboard in overlay mode and does not resize the viewport. This seems to be a common behavior for inputs inside fixed or overlay-based layouts such as bottom sheets. Strangely, when you clicked on an input that was already the active element, the keyboard still popped up, but the viewport was resized and the bottom sheet remained visible. In this situation, the browser treats the keyboard appearance as a viewport change and recomputes the layout to keep the active element visible (safe mode?). To fix this inconsistency, we now explicitly control how the virtual keyboard affects the layout by forcing the bottom sheet to resize with the viewport. This is done by using `interactive-widget: resizes-content`, which ensures the viewport is resized when the keyboard appears and prevents the bottom sheet from being covered. Note that we should probably apply this change on the web as well, but it seems that we currently don’t have any inputs inside bottom sheets there. Since this is a fix, we prefer to apply it only where it is necessary for now. https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/name/viewport#interactive-widget opw-5491343 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#244538
This update fixes an issue where editing component quantities on the shop floor incorrectly displayed components from all internal locations instead of just the intended source location. The fix ensures that work orders accurately reflect the origin of components, improving inventory accuracy and reducing errors in production.
Original PR description
In the shop floor when you edit the quantity of components, all the components for the internal localization will appear instead of only the one from the source location Steps to reproduce:…
In the shop floor when you edit the quantity of components, all the components for the internal localization will appear instead of only the one from the source location
Steps to reproduce:
-------------------
- Active lot/serial number in settings
- Create component A tracked by lot, and add quantities in two location (WH/stock and WH/random)
- Create a product with a bom that use component A
- Create an operation for that bom
- Update the bom to consume the component during the operation
- Create a workorder for the product, confirm it and go to the shop floor
- Click on the operation
- Edit the quantity of components
-> all internal localisation appear (WH/{stock/random})
Observation:
-------------
The domain consider all localisation where the usage is internal: https://github.com/odoo/enterprise/blob/e99c20547528f6664d091cd230ce94cf76a08eb1/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.js#L119
opw-5268989
Forward-Port-Of: odoo/enterprise#102902This update corrects a previous issue where the company flag on customer records was incorrectly determined based solely on the partner's country. Now, the system correctly identifies companies (VKN) based on Turkish tax ID rules (10 or fewer digits) regardless of the partner's location, ensuring compliance with UBL TR e-invoicing requirements. This ensures accurate invoicing and reporting for Turkish businesses.
Original PR description
Currently, the company flag on res.partner is determined based on whether the partner country is Türkiye or not. This causes incorrect behavior for partners using the UBL TR e-invoicing flows, where the company definition must follow Turkish identification rules regardless of the country of origin. This change updates the logic to rely on the invoice_edi_format. When the format is set to ubl_tr. Any partner valid numeric TAX ID with 10 digits or less is set as a company (VKN) and any partner Tax ID with 11 digits or more (TCKN) is set as individual task-5468521 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where signed documents sometimes showed incomplete fields before the PDF was fully loaded. By refreshing the sign items after the PDF iframe is ready, the system now consistently displays signed documents with all available fields, improving the user experience.
Original PR description
Ensure sign items are refreshed after the PDF iframe is fully loaded to avoid displaying partially signed documents without fields when not in sign mode. task-5877678 Forward-Port-Of: odoo/enterprise#105533
This update resolves an issue where product attributes and values within the Purchase Product Matrix weren't being translated correctly for partners with different languages. The fix ensures that all product information, including names and values, is displayed in the appropriate language based on the selected vendor contact. This improves the accuracy and usability of the Purchase Order process for international customers.
Original PR description
When adding a product with never variant, their name and values are not translated in the language of the partner. ### Steps to reproduce: * Activate the setting Variants and Variant Grid Entry. *…
When adding a product with never variant, their name and values are not translated in the language of the partner. ### Steps to reproduce: * Activate the setting Variants and Variant Grid Entry. * Create a product , add a translation for its name. * Create a attribute and a translation for its name, with variant creation set to never. * Create values for the attribute and add translation for their name. * Add the attribute and it's values to the product . * Create a contact and change it's language to the language of the translation. * Create a purchase order set the contact as the vendor * Add the product, and set the grid number to 1 -> the attribute and attribute value is not translated. ### Observation: When adding a product via the variant grid, the attribute and value names are added. For other attribute creation types, this information is retrieved directly from the product: https://github.com/odoo/odoo/blob/f95bcc097fd7e70af8d28a66c010ae9b9490f439/addons/purchase/models/purchase_order_line.py#L283-L288 But in case of never attribute, the name it retrieved after and we don't set the context: https://github.com/odoo/odoo/blob/f95bcc097fd7e70af8d28a66c010ae9b9490f439/addons/purchase_product_matrix/models/purchase.py#L173-L174 -> we retrieve the information but in the wrong language opw-5396058 Forward-Port-Of: odoo/odoo#242692
This update fixes an issue where negative procurement quantities were not being processed correctly in the MRP system. The change impacts how MTO products are ordered, ensuring accurate quantity adjustments when users reduce product orders. This resolves a discrepancy where the PO quantity was incorrectly showing as 1.
Original PR description
Steps to reproduce ----- - Enable routes - Unarchive MTO - Create a MTO product with a vendor - Create a final product - Create a MO for final product - Confirm MO - Open catalog - Add 0.5 of the MTO…
Steps to reproduce ----- - Enable routes - Unarchive MTO - Create a MTO product with a vendor - Create a final product - Create a MO for final product - Confirm MO - Open catalog - Add 0.5 of the MTO product - Open the linked purchase > Quantity on the PO is 1 Cause ----- The catalog creates a move with a default quantity of 1 when the product is clicked. Then, when the user updates the quantity in the catalog, it triggers a `write` of the `product_uom_qty` (which triggers a procurement). Error comes from the code added in commit c0f00e4, which changed the `_run_procurement` of `stock.move` to avoid creating returns for done moves. https://github.com/odoo/odoo/blob/07198521ea1defb6abb9a6e619b8824bbb1d16a7/addons/mrp/models/stock_move.py#L493-L497 In our case, all of the conditions are met: - the quantity update is negative - the move is MTO - `move_orig_ids` is empty, so the `all()` is also true This means the move gets skipped for procurement, although that was not the goal of the commit. Even if we were to fix this last condition, there is also a problem with https://github.com/odoo/odoo/blob/07198521ea1defb6abb9a6e619b8824bbb1d16a7/addons/mrp/models/stock_move.py#L505-L507 that was also affected by the mentioned commit. Since `move_orig_ids` is empty, `possible_reduceable_qty` is 0. And because `procurement_qty` is negative, taking the max of the 2 will always mean `procurement_qty` is 0. This again does not match the goal of the original commit. ----- Ticket: opw-5440296 Forward-Port-Of: odoo/odoo#245865
This update fixes an issue where the Gantt chart controls would overlap the user interface, particularly when using custom date ranges or the Dutch language. The change ensures the controls are displayed correctly, improving usability and preventing visual clutter, especially on smaller screens.
Original PR description
Steps to reproduce ================== - Switch to dutch - Emulate an iPhone SE viewport in the browser settings - Open a project - Switch to the gantt view - Use a custom date range -> The gantt controls are displayed on top due to the daterange format being to long | Before | After | |--------|--------| | <img width="736" height="1542" alt="image" src="https://github.com/user-attachments/assets/7c573ab1-fbf8-4f31-83ba-21d66ebc504d" /> | <img width="736" height="1542" alt="image" src="https://github.com/user-attachments/assets/62ab3d47-701e-4e2d-aaef-5c92675236cb" /> | opw-5340869 Forward-Port-Of: odoo/enterprise#105229 Forward-Port-Of: odoo/enterprise#104821
This update fixes a bug where users could successfully pay invoices with expired Sales Orders. Now, the system automatically prevents payment attempts when the Sales Order's expiry date has passed, ensuring accurate payment processing and preventing revenue loss. This improves the reliability of our invoicing system.
Original PR description
## Issue: Payment link should expire if payment is expired. #### Steps to reproduce: 1- Create a new quotation. 2- Set the expiry date in the past. 3- Open the action menu and generate a payment link. 4- Open the payment link and pay. Expected result: The payment should fail if the so is expired. opw-5478691 Forward-Port-Of: odoo/odoo#245982 Forward-Port-Of: odoo/odoo#244061
This update resolves an issue where Stripe payments were failing for certain currencies like ISK and UGX. The problem stemmed from a mismatch in how the system converted amounts between the currency used for the payment and the currency expected by Stripe. This fix ensures accurate payment processing across all supported currencies.
Original PR description
### Issue: Stripe payment is failing in some special currencies (e.g. ISK, UGX). ### Steps to reproduce: 1- Configure Stripe 2- Enable ISK currency 3- Create a SO with ISK currency and generate a…
### Issue: Stripe payment is failing in some special currencies (e.g. ISK, UGX). ### Steps to reproduce: 1- Configure Stripe 2- Enable ISK currency 3- Create a SO with ISK currency and generate a payment. 4- Pay using Stripe. The payment will fail due to the amount mismatch. ### Cause: Commit https://github.com/odoo/odoo/commit/9493475273a40320228b92940be15ad8cb0643cb added support for special currency but did not adapt amount validation method in fw. In stripe payload, we are using `const.CURRENCY_DECIMALS` as `arbitrary_decimal_number` to convert the amount to minor currency unit: https://github.com/odoo/odoo/blob/6e2a29bbb23a8233132dc039d144d97be4feb3af/addons/payment_stripe/models/payment_transaction.py#L161-L166 However, we are not using the same constant in conversion back to major currency unit in `compare_notification_data`: https://github.com/odoo/odoo/blob/6e2a29bbb23a8233132dc039d144d97be4feb3af/addons/payment_stripe/models/payment_transaction.py#L393-L395 opw-5871420 Forward-Port-Of: odoo/odoo#245911 Forward-Port-Of: odoo/odoo#245689
This update fixes a discrepancy in Odoo's Balance Sheet reports for several localized versions (CO, EC, KR, US, and Zambia). It ensures that 'Other Expenses' (expense_other) are now correctly included in the unallocated earnings calculations, aligning with standard reporting practices. This improves the accuracy of financial reporting for these localized businesses.
Original PR description
*= co, ec, kr, us, zm Currently, the `Other Expense(expense_other)` account type, introduced in saas-18.3, is missing from the Balance Sheet reports of certain `localizations`, even though it's…
*= co, ec, kr, us, zm Currently, the `Other Expense(expense_other)` account type, introduced in saas-18.3, is missing from the Balance Sheet reports of certain `localizations`, even though it's correctly implemented in the standard reports. **Steps to reproduce:** - Install the `l10n_co_reports` and `accountant` modules. - Switch to `CO company `and navigate to Accounting > Reporting > Balance Sheet. - Ensure the `report` smart button is set to `Balance Sheet (CO)`. - Equity > Previous Years Unallocated Earnings and click the `info icon`. - Observe the formula of `balance_domain`. **Observation:** The formula does not include the `expense_other` account type. **Root Cause:** After PR [1], at [2] `expense_other` was added to the Previous Years Unallocated Earnings balance domain only in the main `account_reports` module. The corresponding localization reports mentioned above were not updated accordingly, resulting in incomplete Balance Sheet formulas. **Fix:** This commit updates the Balance Sheet report and includes the `expense_other` account type in the Previous Years Unallocated Earnings balance domain, aligning them with the standard reports. [1]: https://github.com/odoo/enterprise/pull/101591 [2]: https://github.com/odoo/enterprise/blob/316a5965e5fae83bd7d901929160c87eb28d13cf/account_reports/data/balance_sheet.xml#L205 opw-5491639 Forward-Port-Of: odoo/enterprise#105838 Forward-Port-Of: odoo/enterprise#105262
This update resolves an issue where administrators couldn't view sales order information linked to serial numbers, even when those orders belonged to other users. The fix removes a restriction on access to this data, ensuring all users can see the total number of sales orders associated with a specific serial number. This improves reporting and inventory management.
Original PR description
Steps to reproduce the bug - Create a storable product P1: - Tracking: Serial Number - Log in as Marc Demo - Create a sales order with 1 unit of P1 - Validate the delivery using serial number SN1 -…
Steps to reproduce the bug
- Create a storable product P1:
- Tracking: Serial Number
- Log in as Marc Demo
- Create a sales order with 1 unit of P1
- Validate the delivery using serial number SN1
- Log in as Mitchell Admin
- Go to Settings:
- Manage Users
- Mitchell Admin
- Sales: User: own documents only
- Go to the Serial Numbers list view:
- Try to open SN1
**Problem:**
An access error is triggered:
```
Uh-oh! Looks like you have stumbled upon some top-secret records.
Sorry, Mitchell Admin (id=2) doesn't have 'read' access to:
- Sales Order Line, S00025 - P1 (Deco Addict) (sale.order.line: 51)
Blame the following rules:
- Personal Order Lines
```
When clicking on SN1, the `stock.lot` form view.
it's contains the field "sale_order_count", which is a computed field that needs to access all `sale.order` records using the serial number in order to compute the count.
Since Mitchell Admin is restricted to his own sales orders only, an access error is raised during the computation.
There is also a many2many view widget that triggers an access errors. This widget can be removed since the smart button is now available. The widget has already been removed in v19.
**Solution:**
In this view, any stock user, admin or not, must be able to see how many sales orders use a given serial number, regardless of whether those sales orders belong to them or not.
opw-5400731
Forward-Port-Of: odoo/odoo#246009
Forward-Port-Of: odoo/odoo#244570This update fixes a previous issue where the weigh scale displayed incorrect prices due to a lack of consideration for pricelists and fiscal positions. Now, the weigh scale accurately reflects the price, including any adjustments defined in a customer's pricelist or fiscal position, ensuring accurate sales transactions.
Original PR description
Before this commit, the pricelist and fiscal position where not taken into account when displaying the price on the weigh scale. This caused confusion when selling products with pricelists or fiscal positions that modified the price. opw-5456144 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243260
This update fixes an issue where the weigh scale displayed incorrect prices due to a lack of consideration for pricelists and fiscal positions. Now, the weigh scale accurately reflects the price based on the customer's selected pricelist or fiscal position, improving sales accuracy and customer satisfaction.
Original PR description
Before this commit, the pricelist and fiscal position where not taken into account when displaying the price on the weigh scale. This caused confusion when selling products with pricelists or fiscal positions that modified the price. opw-5456144
This update resolves an issue where Mexican CFDI invoices generated with Solution Factible were being rejected due to incorrect exchange rate precision. The fix applies a rounding adjustment previously implemented for other PACs, ensuring invoices with larger payment values are now processed correctly. This prevents invoice rejection and ensures compliance with Mexican tax regulations.
Original PR description
The PACs Quadrum and SwSapien both require the exchange rate to have 6 decimal places. This can cause some valid invoices to be rejected for large enough payment values. Pull request…
The PACs Quadrum and SwSapien both require the exchange rate to have 6 decimal places. This can cause some valid invoices to be rejected for large enough payment values. Pull request [83499](https://github.com/odoo/enterprise/pull/83499) added rounding precision for these PACs. Now, the remaining PAC (Solution Factible) appears to the same requirement. This commit ensures that the previous bug fix is applied to all PACs. [opw-5165200](https://www.odoo.com/odoo/project.task/5165200) ## Steps to reproduce: [Setup](https://drive.google.com/file/d/1BUkNG-Ezk-I47yvbNolOmlj0ne1iqDto/view?usp=sharing) 1. Navigate to Apps and install l10n_mx_edi. 2. Switch to any of the Mexican companies that appear. 3. Navigate to Accounting > Configuration > Currencies. 4. Click into the USD currency. 5. Change the current rate to be 20.101796407186 MXN per USD. (inverse_company_rate field). 6. Navigate to Accounting > Configuration > Settings, and set the PAC to Solution Factible. [Workflow](https://drive.google.com/file/d/11TFZ78QGDYdnD9R3CoJDAuFI-1_0dNyG/view?usp=sharing) 1. Navigate to Accounting > Customers > Invoices. 2. Select New to create a new invoice. 3. Add a mexican customer (such as XENON INDUSTRIAL ARTICLES). 4. Add the 45 day Payment terms. This should change the payment policy to PPD. 5. Change the currency to USD. 6. Add the product FURN_8220 (or any with the unspsc_code_id set). 7. Set the unit price of the product to 58968.29. 8. Confirm the invoice. 9. Select Send & Print, then ensure that the CFDI option is selected before clicking Send & Print again. 10. Select Register Payment, then Confirm Payment. 11. Select the Update Payments smart button. 12. Navigate to the CFDI tab; there will be a "Payment Send in Error" line. Forward-Port-Of: odoo/enterprise#105102 Forward-Port-Of: odoo/enterprise#102557
This update fixes an issue where dialog windows were hidden behind the AI chat window, making them difficult to use. Now, the AI chat window remains consistently above all other dialogs, ensuring a clearer and more intuitive user experience for interacting with the system.
Original PR description
**Description of the issue this PR addresses:** ------------------------------------------------ Dialogs were rendered behind chat windows, making them difficult to see and interact with. **Current behavior before PR:** --------------------------------- - The dialog appears behind the chat window **Desired behavior after PR is merged:** ----------------------------------------- - Dialogs are displayed above all chat windows except AI - The AI chat window remains intentionally above dialogs **Task:** 5367135 Forward-Port-Of: odoo/enterprise#105710 Forward-Port-Of: odoo/enterprise#103076
This update fixes a previous issue where the VoIP ringtone would play incorrectly due to multiple tabs receiving notifications. Now, a central SharedWorker determines the best tab to play the ringtone, ensuring only one ringtone plays at a time and addressing potential reliability problems like connection loss or throttling.
Original PR description
Each Odoo tab establishes a WebSocket connection with the VoIP provider. This causes problems with incoming calls: each tab receives the notification, which leads to the associated callbacks being…
Each Odoo tab establishes a WebSocket connection with the VoIP provider. This causes problems with incoming calls: each tab receives the notification, which leads to the associated callbacks being called as many times as there are open tabs. This used to be particularly annoying with the ringtone, which would play in unison. To solve this problem, we decided that only the "main tab" should be responsible for playing the ringtone. Since there can only be one main tab at a time, there can only be one ringtone at a time. Problem solved. This seemed to be an easy and effective solution. However, we were informed that sometimes the call wouldn't ring at all 🤬 This called the reliability of the system into question. What would happen if: - The main tab loses the WebSocket connection? - The main tab is throttled? - The main tab was never interacted with, preventing us from playing audio? - The notification arrives after the main tab is killed and before a new main tab is elected? This commit attempts a new approach ⋆✴︎˚。⋆ All tabs receiving incoming call notifications will now send a message to a central authority—The _SharedWorker_ 🙀—along with information about whether or not they can play audio. The SharedWorker then selects the first tab that can play audio and assigns it the task of playing the incoming ringtone. This is expected to solve the problems mentioned above, as it guarantees that the "player tab" is a tab that: - effectively received the incoming call notification - is allowed to play audio [Task-5411760](https://www.odoo.com/odoo/project.task/5411760) Backport of https://github.com/odoo/enterprise/pull/104885 Forward-Port-Of: odoo/enterprise#105022
This update fixes an issue where changes to form fields weren't immediately reflected in the builder interface. By moving key properties to the component and using a state management system, the builder now correctly updates when field types or settings are modified, ensuring a more responsive and accurate editing experience.
Original PR description
*: website After the [refactoring of html_builder], containers weren't updated all the time properly. They were updated only when the options' length or ids, respectively, have been changed, which is not the desired behavior. For example, if `isCloneDisabledReason` changes, we won't be able to see the changes right away. That's why we moved some options containers' props to the component to use `useDomState`. Steps to see the issue: - Open website and start editing - Drop a form - Add a field and click on it - Change its type to one of the existing fields, e.g. 'Alias Domain' => The duplicate button of the builder is not deactivated, while it should be. The issue exists vice versa too (when we change the type from an existing field to a custom one). [refactoring of html_builder]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-5391316 Forward-Port-Of: odoo/odoo#246150 Forward-Port-Of: odoo/odoo#239235