Tuesday, December 23, 2025
5 changes · 17.0
Enhancements to existing features
This update adjusts payroll rule parameters to reflect changes in US payroll regulations for the 2026 tax year. Ensuring these parameters are current is crucial for accurate salary calculations and maintaining compliance with US tax laws. This update directly impacts payroll processing.
Original PR description
Purpose: Certain US Payroll values changes yearly. The payroll rule parameters must be updated for accurate salary calculation for 2026 for compliance. task-5409739
Resolved issues and error corrections
This update fixes an issue where removing an icon from a paragraph would leave it unusable. The change ensures that paragraphs remain accessible after icon removal or when inserting content, preventing disruptions to the editor's functionality. It also addresses a bug where pressing Enter wouldn't work before an icon, now correctly handling cursor placement.
Original PR description
**Issue 1:** Steps to reproduce: - Insert a icon in an empty paragraph. - Remove the inserted icon. - The paragraph becomes unreachable. Cause: - When a paragraph contains only an icon, removing that…
**Issue 1:** Steps to reproduce: - Insert a icon in an empty paragraph. - Remove the inserted icon. - The paragraph becomes unreachable. Cause: - When a paragraph contains only an icon, removing that icon during the delete process does not trigger `fillEmpty`. As a result, the paragraph ends up with no content, leaving it empty and unreachable. Solution: - During the delete process, after the icon is removed, call the `fillEmpty` method. This ensures that if the block becomes empty, a `<br>` is inserted inside the paragraph, keeping it accessible. **Issue 2:** Steps to reproduce - Insert an icon in an empty paragraph. - Place the cursor before the icon. - Press Enter. - Nothing happens. Cause - When the cursor is placed before a `contenteditable=false` element, `getDeepRange` sets the selection deep inside the non-editable element as a result, when Enter is pressed, the action is ignored because the selection is not in an editable context. Solution - Instead of setting the selection inside `getDeepRange`, set the selection after calling `getDeepRange` only if the returned range is not within a `contenteditable=false` element. task-3540454 Forward-Port-Of: odoo/odoo#237891
This update optimizes how Odoo searches for product quantities, significantly speeding up searches in large product catalogs. The change avoids unnecessary calculations and filtering, resulting in faster response times when checking product availability. This improves the overall user experience and system performance.
Original PR description
The performance when searching by `qty_available`, `virtual_available`, `free_qty`, `incoming_qty`, or `outgoing_qty` on databases with a large number of `product.product`s is currently poor. Both…
The performance when searching by `qty_available`, `virtual_available`, `free_qty`, `incoming_qty`, or `outgoing_qty` on databases with a large number of `product.product`s is currently poor. Both `product.product.type` and `product.product.uom_id` are computed from `product_tmpl_id`. With large databases, `_compute_related()` is a large bottleneck when running `_compute_quantities()` We fix this performance issue using two fast paths. Instead of searching all products, we specify `type != 'service'` within the search domain in `_search_product_quantity()` and skip the filter in the compute methods. And in `_compute_quantities_dict()` we directly set quantities to 0.0 if there are no quants or moves for the current product, skipping the unnecessary `uom_id` and `float_round()` computations. Benchmark | `product.product` count | Before this PR | After this PR | | ----------------------- | -------------- | ------------- | | 5,000 | 1.01s | 0.41s | | 50,000 | 9.97s | 2.90s | | 500,000 | 144s | 43s | opw-4930856
This update ensures that packaging quantities for kit products are rounded correctly, aligning with how non-kit products are handled. Previously, the system didn't round kit quantities, leading to discrepancies in delivery slips. This change improves accuracy and consistency in order fulfillment.
Original PR description
Problem: There is no rounding done for the packaging quantity computation for kit products. This is inconsistent with non-kit products as we call _compute_qty and round. Purpose: This will properly…
Problem: There is no rounding done for the packaging quantity computation for kit products. This is inconsistent with non-kit products as we call _compute_qty and round. Purpose: This will properly round the kit quantity and make the behavior consistent with the non-kit products. Steps to Reproduce on Runbot: 1. Enable product packages and display lots on delivery slips. 2. Create a kit product. 3. On the kit product create a product package that holds 9 units. 4. Create a component product and make it tracked by lots. 5. On the component product create one lot with 9.0 units and a second lot with 12.6 units. 6. Create a kit type BoM for the kit product and add the component product with a quantity of 0.1 units. 7. Create a sale order for 216 units of the kit product, which will use 24 packages. 8. Validate the receipt and print the delivery slip. 9. Observe that the delivery slip shows 13 packages used for the 12.6 units instead of 14. opw-5258735 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where closing a Point of Sale (POS) session with a new rescue session would incorrectly report the balance. The change ensures the closing balance is calculated accurately, reflecting the true end-of-session balance regardless of whether a rescue session was used. This improves the reliability of financial reporting for POS transactions.
Original PR description
Before this commit, when calculating the end balance during closing a POS session, if a new rescue session was created after opening the current session, the closing balance calculation would incorrectly consider the rescue session as the last session. This led to an inaccurate closing balance as the opening balance of the rescue session is always zero. opw-5222527 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr