Wednesday, January 7, 2026
22 changes · saas-19.1
Enhancements to existing features
This update enhances the self-ordering kiosk experience by now displaying images and colors associated with product variants. Additionally, the layout of variant buttons has been adjusted to ensure consistent sizing and improved readability. This change improves the visual presentation of products on the kiosk, making it easier for customers to make selections.
Original PR description
Before the images or colors added to variants would be ignored while in the kiosk. Now if they exist they will be shown on the same card as the variant name. Also moved the extra price information from the bottom of the button to next to the name to keep the size of all the buttons consistent. Task-4537185 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231657
This update simplifies the way boxes are selected in extract reports, grouping similar boxes into clickable columns for easier selection of all contained items. This enhancement improves the user experience and efficiency when managing large amounts of data within these reports. Related CSS cleanup ensures consistent styling.
Original PR description
**[IMP] iap_extract: group boxes into selectable columns** The boxes that are vertically aligned and close together are now grouped into a column that can be clicked to select all the contained boxes at once. If similar columns are found on the next pages, they will be selected as well. task-[5177261](https://www.odoo.com/odoo/project/2068/tasks/5177261) This is how it looks like in practice (right column is being hovered, left one isn't): <img width="505" height="228" alt="image" src="https://github.com/user-attachments/assets/422817b0-f08f-4ba2-88a1-ba6265e85739" /> --- **[CLN] iap_extract: clean CSS file of manual_correction component** This CSS file was a bit of a mess, it's been simplified and factorized where it could be. It should be strictly equivalent to the old file.
Resolved issues and error corrections
This update fixes an issue where the list view of vendor bills linked to analytic accounts didn't accurately reflect the number of bills available. The change ensures that all vendor bills and receipts are displayed, aligning the button count with the actual number of expenses. This improves the user experience when managing expenses.
Original PR description
Currently, when the user clicks the vendor bill smart button from analytic accounts, the list view shows no records even though the button count is greater than 0. **Steps to replicate:** * Install…
Currently, when the user clicks the vendor bill smart button from analytic accounts, the list view shows no records even though the button count is greater than 0. **Steps to replicate:** * Install `accountant` and `hr_expense` with demo. * Enable analytic accounting from settings. * Expense > Approve and Post submitted expense * Analytic Accounts > Nebula > Vendor Bills **Observed Behaviour:** * Even though the smart button shows a count of 1 there are no records displayed in the list view. **Root cause:** * After PR [1], vendor bills were changed to receipts. Since [2] counts receipts too, the button shows a different count than the list view, as [3] does not include receipts. **Solution:** * Show purchase receipts along with the vendor bills which correctly matches with the vendor bill count. [1]: https://github.com/odoo/odoo/pull/217758 [2]: https://github.com/odoo/odoo/blob/569b2e27699a76f9bac210e61b47f8a5708c814b/addons/account/models/account_analytic_account.py#L36 [3]: https://github.com/odoo/odoo/blob/569b2e27699a76f9bac210e61b47f8a5708c814b/addons/account/models/account_analytic_account.py#L68 opw-5359320 Forward-Port-Of: odoo/odoo#238282
This update resolves an issue where product amounts remained at zero after removing optional items from a sales order. The fix ensures that when optional items are unset, the product quantities and prices are correctly restored, providing accurate order totals. This improves the reliability of sales order calculations.
Original PR description
**Steps to produce:** - Install the `Sales` module. - Create a Sales Order. - Add a section and some products under it. - In the section menu (three dots), click Set Optional. - Again, open the…
**Steps to produce:** - Install the `Sales` module. - Create a Sales Order. - Add a section and some products under it. - In the section menu (three dots), click Set Optional. - Again, open the section menu and click Unset Optional. **Issue:** - After unsetting the optional, the product amounts remain `0`. **Root cause:** - At[1], when setting options, both quantity and price are reset to `0`. - When unsetting optional, only the quantity is restored, leaving the price at `0`. **Solution:** - When unsetting optional, explicitly trigger the onchange on the field `product_uom_qty` using `.update()`. [1]https://github.com/odoo/odoo/blob/27cd0a3fea1b47a85a4f3d397b052bbec08e182b/addons/sale_management/static/src/fields/sale_order_line_field/sale_order_line_field.js#L138-L140 Before: <img width="1198" height="476" alt="image" src="https://github.com/user-attachments/assets/01dee1d6-2870-4222-8a6c-724fbfff8da1" /> After: <img width="1214" height="453" alt="image" src="https://github.com/user-attachments/assets/63ed4eb4-27cf-4b15-a957-c28a46a3ca42" /> opw-5368488 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239805
This update resolves an issue where database neutralization inadvertently wiped out records from the res.users model due to a broad database truncation operation. The fix now selectively deletes only the 'mail.partner.device' records, preventing unintended data loss during testing and upgrades. This ensures a more stable and predictable database environment.
Original PR description
### Step to reproduce: 1. Create db in version 17.0 and create a many2one field with ``mail.partner.device`` 2. neturalize the db. All records of res.users will be vanish due to ``TRUNCATE…
### Step to reproduce:
1. Create db in version 17.0 and create a many2one field
with ``mail.partner.device``
2. neturalize the db. All records of res.users will be vanish due to ``TRUNCATE mail_partner_device CASCADE;``
### Issue:
during neutralize if there is any custom/studio field many2one with ``mail.partner.device`` even if the mail partner device
record won't used it in particular model still it will wipe out all the records of that model on neutrilizing
which can issue during testing on neutrlized db
**To fix it :**
[here](https://github.com/odoo/odoo/pull/133560/files#diff-284b40b100919f9b1d4f7bee50740387fea5f11815210baa5f6de9cbf317ca6dR14) want to delete only partner device. So, adjusted query using ``DELETE FROM mail_partner_device`` instead of truncate.
below traceback will generate due to this during upgrade.
```
Traceback (most recent call last):
File "/home/odoo/bin/misc/update_module_list.py", line 25, in <module>
env["ir.module.module"].update_list()
File "<decorator-gen-87>", line 2, in update_list
File "/home/odoo/src/odoo/17.0/odoo/addons/base/models/ir_module.py", line 71, in check_and_log
log_data = (method.__name__, self.sudo().mapped('display_name'), user.login, user.id, origin)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1188, in __get__
raise MissingError("\n".join([
odoo.exceptions.MissingError: Record does not exist or has been deleted.
(Record: res.users(1,), User: 1)
[ERROR]::Error during the upgrade:
```
opw-5443072
upg-3712726
Forward-Port-Of: odoo/odoo#242081
Forward-Port-Of: odoo/odoo#241535This update resolves an issue where closing the event registration wizard in sales orders caused a technical error. The fix ensures that when an event selection is dismissed, the associated product is also removed from the sales order, preventing data inconsistencies. This improves the reliability of the sales order process.
Original PR description
**Steps to produce:** - Install `Events and Sales` modules. - Go to `sale > sale order > Open any SO > Add product > Event registration`. - When the wizard opens, dismiss it by either clicking the X…
**Steps to produce:**
- Install `Events and Sales` modules.
- Go to `sale > sale order > Open any SO > Add product > Event registration`.
- When the wizard opens, dismiss it by either clicking the X button in the
top-right corner of the modal or by pressing the `Escape` key.
**Traceback:**
`TypeError: Cannot convert undefined or null to object.`
**Root cause:**
- In this [commit], the `{ dismiss: true }` option was added to the `dismiss` call.
- At [1], when `onClose` is triggered, we only check `!closeInfo || closeInfo.special`.
Since `{ dismiss: true }` does not satisfy either condition, the code falls into the `else` branch,
where `update` is called with an `undefined` value.
**Solution:**
- Now, we also check the condition `closeInfo.dismiss`.
- So, now that we have closed the selection of the event, our product is also removed from the SO line.
[commit]: https://github.com/odoo/odoo/commit/31c00161fd3a77c9fbd260754cb8c142fcb0d652
[1]https://github.com/odoo/odoo/blob/01a896557ec2bada04db60195926c6fa61375b10/addons/event_sale/static/src/js/sale_product_field.js#L40
**opw-5349732**
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#238061A technical issue causing a traceback when canceling orders with a specific default preset was fixed. The update redirects users to the correct screen before deletion and prevents new orders from being created, ensuring a smoother order cancellation process for restaurant staff. This improves the overall user experience.
Original PR description
### step to reproduce: - Set default preset to "Takeout or Delivery" in restaurant config. - Open restaurant . - Open any table and add a product. - Cancel the order using the action button. ### issue: - A popup appears asking to select a partner/floating order name, followed by a traceback. ### cause: - Traceback occures as next screen is loaded after order deletion. ### fix: - Redirect to the default screen before deleting the order. - Ensure that no new order is created when the next screen is the floor screen. task: 5092951 Forward-Port-Of: odoo/odoo#238158 Forward-Port-Of: odoo/odoo#227925
This update fixes a bug that prevented users from registering for event slots from pages other than the event registration page. Now, the 'register' button displays available slots on all event pages, improving the user experience and making it easier for attendees to sign up for sessions. This ensures consistent registration options across the event website.
Original PR description
* = event, event_booth, event_exhibitor, event_track, event_track_quiz The "register" button displays open slots only on the registration page of an event, and not on the other pages of this one. This PR fixes this issue by making available the open slots from the event.event model for the modal_slot_registration template as an instance of this one is always present in the context of those pages. Reproduce: Create an event with the "Multiple Slots" option checked and link it to a slot of tomorrow. The "register" button will display the slot on the registration page of the event but not on the page of the talks. Task-5083175 Forward-Port-Of: odoo/odoo#226635
This update fixes an issue where allocated leave time wasn't accurately displayed in the system, showing incorrect remaining balances. The fix removes unnecessary privilege escalation and ensures the system correctly calculates leave balances based on the intended allocation date, resolving a display discrepancy.
Original PR description
Bug: - Create a new employee (also reproducible with existing employees) - Create a Paid Time Off allocation that becomes available in the future - Create a Time Off request for this employee at a…
Bug:
- Create a new employee (also reproducible with existing employees)
- Create a Paid Time Off allocation that becomes available in the future
- Create a Time Off request for this employee at a future date
- When selecting the Time Off type, it shows “0 remaining out of 0 days” even though leave has been allocated
Reason:
In `_compute_display_name`, the record is accessed using `self.sudo().` Switching to superuser triggers `_compute_leaves`, but the context is lost and therefore the `target_date` is lost as well.
In `get_allocation_data`, because target_date is False, it is replaced with today’s date. This causes `max_leaves` and `virtual_remaining_leaves` to be computed as of today instead of the intended future date.
Fix:
Remove the `sudo() `and use the current user context instead.
-------------------------------------------------------------------------------
Test fix: `test_allocation_dropdown_after_period`
Bug:
After removing `sudo() `from `_compute_display_name`, the test fails and shows “0 remaining out of 0” instead of “9 remaining out of 9”.
Reason:
The test user (Admin) did not have the employee’s company in their allowed companies.
The `name_search` method triggers `_compute_display_name`, which triggers the computation of virtual_remaining_leaves.
Before the fix, `_compute_display_name` used `sudo()`, which propagated superuser privileges down to `_compute_leaves` and `get_allocation_data`. This masked the fact that the test user did not have access to the employee’s company (multi-company rule).
After removing `sudo(),` the user no longer had access to the allocation when running `name_search`, causing the test to fail.
Fix:
Add the employee’s company to the user’s company_ids. This allows allocations and `name_search` to work correctly without using `sudo().`
-----------------------------------------------------------------------
Known limitation:
When booking time off from the employee calendar view, the default value of `holiday_status_id` in the Time Off request widget still calculates remaining days based on today’s date instead of date_from.
To avoid confusion, the display name does not include “(x days remaining out of y days)” in this context.
However, when opening the selection dropdown, the display name is correct and uses the proper date-based calculation.This update resolves an issue where deleting a used payroll rule section caused errors and prevented updates to related salary rules. The fix ensures that rule sections linked to active contracts or payslips cannot be deleted, maintaining data integrity and preventing disruptions to payroll processing.
Original PR description
### Steps to Reproduce 1. Create a Salary Rule Section. 2. Link it to a Salary Rule and add it to a contract or payslip. 3. Delete the Rule Section. 4. Go back to the Salary Rule. 5. The section field is invalid/readonly, making it impossible to assign a new section or fix the rule. ### Reason Deleting a section linked to a Salary Rule breaks the link without clearing it, leaving the rule in a broken, unusable state. ### Solution Prevent the deletion of Salary Rule Sections if they are linked to a Rule that is actively used as an input in a contract or payslip. Task: 5390387 Forward-Port-Of: odoo/enterprise#102222
This update fixes an issue where vendor names in imported UBL invoices were incorrectly displaying contact person details instead of the company's legal name. The change prioritizes the company's official registration name, ensuring accurate vendor identification as per UBL standards. This improves data consistency and compliance.
Original PR description
Steps To Reproduce ------------------ 1- Go to Accounting > Vendors > Bills. 2- Upload a UBL XML file containing both RegistrationName and Contact/Name (you can use one of the two attached in the…
Steps To Reproduce ------------------ 1- Go to Accounting > Vendors > Bills. 2- Upload a UBL XML file containing both RegistrationName and Contact/Name (you can use one of the two attached in the ticked). 3- Check the Vendor field. Issue ----- The vendor name is set to the contact person name instead of the company's legal name. Cause ----- In `_import_retrieve_partner_vals`, the XPath prioritizes `cac:Contact//cbc:Name` (contact person) over `cbc:RegistrationName` (company legal name). Fix --- Swap the priority to check `RegistrationName` first, falling back to `Contact/Name` only when no registration name exists. Legal/Standards Proof (OASIS UBL 2.1 Specification) according to sources: https://www.datypic.com/sc/ubl21/e-cac_PartyLegalEntity.html - cbc:RegistrationName: "The name of the party as registered with the relevant legal authority." http://www.datypic.com/sc/ubl21/e-cac_Contact.html - cac:Contact/cbc:Name: "The name of this contact. It is recommended that this be used for a functional name and not a personal name." The RegistrationName is the official legal company name, while Contact/Name is just a contact point at the company. Test ------ For the test I updated a test file so that `test_import_partner_fields` fails without these changes. opw-5392139 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242046
This update resolves an issue where sale order information wasn't consistently linked to the delivery moves associated with a picking. The change ensures that when a sale order is linked to a delivery, the correct delivery move references are maintained, improving order tracking and reporting accuracy. This fix was implemented to prevent discrepancies in inventory management and sales data.
Original PR description
### Steps to reproduce: - Create a picking with a move for any product #### Issue 1: > A procurement group is created and linked to the transfer - Add a second move on the picking and save #### Issue 2: > The procurement group of the picking is lost ### Cause of the issue: The `_set_sale_id` set method creates a procurment group and links it to the picking no matter if the `sale_id` is set or not. https://github.com/odoo/odoo/blob/842025976ab65e92551366def88cdd243549e5ee/addons/sale_stock/models/stock.py#L90-L93 https://github.com/odoo/odoo/blob/842025976ab65e92551366def88cdd243549e5ee/addons/sale_stock/models/stock.py#L100-L113 opw-5386424 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240426 Forward-Port-Of: odoo/odoo#239697
This update corrects a discrepancy in the calculation of Belgian withholding taxes within the Odoo Enterprise system. The changes ensure that tax rates and regulations are accurately reflected up to the year 2026, improving the financial reporting for businesses using the Belgian localization module. This is a critical fix to maintain compliance.
Original PR description
TaskID: 5403525 Forward-Port-Of: odoo/enterprise#103271 Forward-Port-Of: odoo/enterprise#103215
This update fixes an issue preventing users from updating payment methods on unpaid orders created through the kiosk POS system. Previously, a printed ticket blocked payment changes. The change ensures payments are completed before restricting payment method modifications, allowing for accurate order management from the kiosk.
Original PR description
We have a check when validating an order on the POS that would not let you change the payment method if a ticket is already printed. This makes it impossible to create payments from POS for unpaid orders from the kiosk. I added an extra check during the validation to see that the payments are actually done, and only then forbid changing the payment method. Task-[5388807](https://www.odoo.com/odoo/project/1737/tasks/5388807) 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#238888
This update resolves an issue where users couldn't answer incoming calls when opening email or SMS wizards. The fix adjusts the software's layering to ensure the softphone is always visible and clickable when a call is active. This improves the user experience and allows for immediate call handling.
Original PR description
If you get a call when opening any modal/composer like email/sms wizard, you won't be able to pick up the call as the softphone is not clickable. This is because the z-index of the softphone is less than the modal. This commit fixes that issue by making the softphone above modals only if there is a pending call. [Task-4018118](https://www.odoo.com/odoo/project.task/4018118) Forward-Port-Of: odoo/enterprise#103121 Forward-Port-Of: odoo/enterprise#103072
This update optimizes the payroll calculation process by reducing unnecessary computations and streamlining data filtering. The changes enhance the system's performance and stability, particularly within the HR payroll module. This ensures accurate and efficient payroll processing.
Original PR description
## [FIX] hr_payroll: improve performance of _compute_issues Before this commit, the compute of issues field in `hr.payslip` model computes more than expected, that is, that compute computes other records than the ones contained in self. This part is not really needed since those payslips will surely be triggered afterwards thanks to the fields dependencies set on the compute method. That compute does a lot of filtered to almost do the same filter. The translation of each warning are called for payslips in which we detect there is an issue/warning. This commit reviews the compute method to reduce the computation cost. ## [FIX] hr_payroll: add hook to be able to alter the condition in filtered This commit adds a hook to be able to easily change the condition made in a filtered instead of doing 2 times the filtered.
This update fixes a bug where push notifications could fail due to incorrect device registration settings. Specifically, it handles cases where the old subscription data isn't available during push subscription changes, and addresses issues with invalid domain names (like `.invalid`) used in push notification endpoints.
Original PR description
[FIX] mail: avoid error on service worker push subscription change Sometimes, the `pushsubscriptionchange` event is called without an `oldSubscription` defined, which can lead to an error occurring…
[FIX] mail: avoid error on service worker push subscription change Sometimes, the `pushsubscriptionchange` event is called without an `oldSubscription` defined, which can lead to an error occurring inside the service worker. Steps to reproduce: 1. Enable notification in Odoo. 2. Reset the permission in the Chrome interface 3. Re-enable the permission inside the discuss systray by clicking on the Odoobot message. => The pushsubscriptionchange is called without an oldSubscription [FIX] mail: ir_cron_web_push_notification are now more robust With a user having 5 registered devices for push notifications if a browser registers with an endpoint that has a wrong domain such as https://permanently-removed.invalid/fcm/send/XXXXXXXXXXXXX the cron job cannot resolve the invalid domain of the endpoint and ends up disabling it. [FIX] mail: push_to_end_point method to support .invalid TLD if a browser registers with an endpoint that has a TLD `.invalid` such as https://permanently-removed.invalid/fcm/send/XXXXXXXXXXXXX The TLD `.invalid`[1] is intended for use in online construction of domain names that are sure to be invalid and which it is obvious at a glance are invalid. The cron job cannot resolve the invalid domain of the endpoint and ends up disabling it. So we need to unregister a device with an endpoint with a `.invalid` TLD. [1]: https://datatracker.ietf.org/doc/html/rfc2606#section-2 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242428 Forward-Port-Of: odoo/odoo#240502
This update fixes an issue where discount values were calculated incorrectly when using promotion programs on specific products with tax included. The fix ensures that discounts are applied accurately to the product's base price, leading to more reliable pricing and promotions in the Point of Sale system. This improves the accuracy of sales calculations.
Original PR description
When using a promotion program applied only on specific products with tax included prices, the discount value was incorrect. Steps to reproduce: ------------------- * Create a product with a price of…
When using a promotion program applied only on specific products with tax included prices, the discount value was incorrect. Steps to reproduce: ------------------- * Create a product with a price of 100$ and tax of 10% included * Create a promotion program with: - Apply on: Specific Products (the product created above) - Discount Type: $ Fixed Discount - Discount Value: 10$ * Open PoS and add the product to the order * Apply the promotion code > Observation: The value of the discount is 9.09$ instead of 10$ The same steps also applies to the discount reward applied on the whole order. Why the fix: ------------ When computing the discountable amount for the promotion it would take the amount excluding tax instead of the base price. The base price should be the unit price of the product multiplied by the quantity. As it was before here : https://github.com/odoo/odoo/blob/8568baa35c9caa4c8cd3b1f5d737e1ecbec76434/addons/point_of_sale/static/src/app/models/pos_order_line.js#L470-L474 https://github.com/odoo/odoo/blob/8568baa35c9caa4c8cd3b1f5d737e1ecbec76434/addons/pos_loyalty/static/src/app/models/pos_order.js#L1112 To do so we modified the accounting helpers to provide this value instead of computing it manually. opw-[5260067](https://www.odoo.com/web#id=5260067&view_type=form&model=project.task) opw-[5242194](https://www.odoo.com/web#id=5242194&view_type=form&model=project.task) Forward-Port-Of: odoo/odoo#240289
This update fixes a bug in the Point of Sale (POS) system where variant names weren't correctly displayed when a combo product was selected. Previously, if a combo contained a variant, the variant's name wouldn't appear on the order. This change ensures that variant names are accurately shown, improving the user experience and order accuracy.
Original PR description
In POS, if in a combo, one of option has instantly created variant it will not show the variant name in the order ### Steps to reproduce: * Create a product with instantly generated variants * Create…
In POS, if in a combo, one of option has instantly created variant it will not show the variant name in the order ### Steps to reproduce: * Create a product with instantly generated variants * Create a combo choice and add one of his variants * Create a combo product and add the combo * Open an store that sells this combo * Select the combo and choose the product with variant and confirm the selection Issue : On the left size in the order the variant name will not appear. ### Observation: When it tries to retrieve the attribute information for the variant https://github.com/odoo/odoo/blob/942b7a21d7e0eb15133f4af1b47e68f48dec70c7/addons/point_of_sale/static/src/app/services/pos_store.js#L1048 It is empty since during the call of computeComboItems the attribute was not retrieved for this scenario. https://github.com/odoo/odoo/blob/942b7a21d7e0eb15133f4af1b47e68f48dec70c7/addons/point_of_sale/static/src/app/models/utils/compute_combo_items.js#L31-L33 ------------ When adding a always variant to a combo they are considered like their own product, and attribute.extra_price should not be considered. The extra price for an always variant is setup in the combo with comboItem.extra_price like stand alone products. opw-5037355 Forward-Port-Of: odoo/odoo#239314 Forward-Port-Of: odoo/odoo#227176
This update corrects a bug where changes made to nested website snippets (accordions and blockquotes) unintentionally affected other nested instances. The fix ensures that edits are applied only to the specific snippet being edited, improving the consistency and reliability of the website builder. This resolves a previous issue impacting user customization.
Original PR description
This commit fixes some issues that occur when editing nested instances of `s_accordion` and `s_blockquote` snippets. In all cases, changes applied to a parent unintentionally propagate to nested…
This commit fixes some issues that occur when editing nested instances of `s_accordion` and `s_blockquote` snippets. In all cases, changes applied to a parent unintentionally propagate to nested snippets. **Accordion issues** How to reproduce: drop two nested `s_accordion` snippets. Then: 1. Change the outer "Style" from "boxed" to "highlight active" -> both accordion change, 2. Change the outer "Round Corners" -> both accordion change, 3. Change the outer "Icon Position" -> both accordion change, 4. Change the outer "Icons" style -> both accordion change. **Blockquote issues** How to reproduce: drop two nested `s_blockquote` snippets. Then: 1. Change the outer "Decoration" -> both blockquotes change, 2. Set the inner "Decoration" to "Icon" -> works only if the outer snippet has icon too, 3. Change the outer "Author Alignment" -> only the inner blockquote changes. **Cause** The above issues occur because certain `applyTo` and certain CSS selectors match all nested elements rather than restricting the scope only to the snippet being edited. **Fix** The relevant `applyTo` and CSS rules now use more specific selectors. **Note** See also https://github.com/odoo/odoo/pull/237733 task-5362171 Forward-Port-Of: odoo/odoo#242077
This update fixes an issue where combo line prices were incorrectly set to 'automatic'. The change ensures combo line price types remain as originally defined, preventing conflicts with price updates and improving the accuracy of sales calculations. This ensures consistent pricing for combo products within the Point of Sale system.
Original PR description
After commit https://github.com/odoo/odoo/commit/69057e41fb4cd800d23401ead8ae11bf7cba7c64, the price type of combo lines was changed to 'automatic' when creating the combo line. This caused the set pricelist logic to update the price of combo lines with automatic price type, which conflicts with the intended behavior. This commit ensures that the price type of combo lines is preserved as original in cases where we want to update the price, and only set to automatic in cases like loading a sale order or refunding an order. opw-5240429 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241737 Forward-Port-Of: odoo/odoo#234575
This update fixes a bug that caused data loss when users disconnected during spreadsheet revisions. The system now automatically retries sending messages, ensuring that all changes are successfully transmitted and preventing data loss due to interruptions. This enhances the overall stability and reliability of the spreadsheet feature.
Original PR description
If, for any reason, the sending of a revision creates an error b.e. when the user is disconnected, we never reset the "waitingForAck" flag, and all future messages will be queued but never send. The result of this behavior was that any user action during any disconnection will set the spreadsheet in a state where all changes from that point are lost. This fix handles the error while sending a message and always reset the flag, so that at next change, we will try to re-send the same message until it works. Task: 5469116