Friday, August 29, 2025
12 changes · saas-18.2
Resolved issues and error corrections
This fixes an issue where Point of Sale did not pick up changed extra prices for product attribute values configured without creating variants. Businesses can now trust that updated option prices are reflected correctly during POS sales.
Original PR description
Before this commit, when changing the extra price of a ptav with the no variant creation mode, the updated price was not loaded. After this commit, the updated extra price is correctly loaded. opw-5015868 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents errors when the website SEO tools receive missing descriptions or when Google suggestion lookups fail. Business users should see a more stable SEO editing experience instead of unexpected crashes or broken previews.
Original PR description
Ensure the Google suggest fallback always returns a JSON list, even on IOError, instead of raising a serialization traceback. JS (SEOPreview): guard against undefined/empty descriptions with optional chaining and default empty string to avoid runtime errors. opw-4963552 Forward-Port-Of: odoo/odoo#224637 Forward-Port-Of: odoo/odoo#224424
This update prevents an error that could happen if a user left or crashed out of a Discuss call at the same time another participant joined. It makes calls more stable by safely handling timing issues when call connection events arrive after the call has already ended.
Original PR description
Before this commit, since https://github.com/odoo/odoo/pull/200981, a race condition could occur where the call is over when the the rtc session matching a track event is obtained. This could occur if you crash or leave at the moment another user arrives. You could get a track event from the SFU, wait for the rtc session record from Odoo, leave te call, finally get the rtc session from odoo. This would lead to a traceback as this handler expected that the call was still ongoing. Forward-Port-Of: odoo/odoo#224588
This fix prevents required Nilvera e-Dispatch values from being translated incorrectly. It ensures the system sends the exact expected true or false value, reducing the risk of rejected Turkish e-Dispatch documents.
Original PR description
Before this commit, since we hardcoded the value, the value was present in the pot and po file. Except that nilvera want a precise value which is 'false' or 'true' and not something translated. task-5009049 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222669
Product kits now respect quantity-on-hand filters based on their computed available quantity from components. This prevents kits from appearing in product searches when they do not actually match the selected stock quantity range, improving inventory list accuracy.
Original PR description
#### Issue: - When filtering products on "Quantity on hand", kits may appear when they shouldn't #### Step to reproduce: - with MRP - create a new product - create a BoM for this product as kit - make sure you have product of the BoM on hand - go to product - add filters: - "Quantity on hand" > 1 - "Quantity on hand" < *less_than_you_have* #### Current behavior: - kit appears #### Expected behavior: - kit doesn't show #### Cause: - kit were filtered has having both 0 quantity (as unstored product) and their quantity (computed from stock of BoM products). Therefore they were compliant with both filter. #### Solution: - remove kits from products compliant with the filter if they don't comply with the filter with their computed quantity opw-4967763 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224601 Forward-Port-Of: odoo/odoo#221224
Opening All Orders from the customer list no longer clears the currently selected customer in Point of Sale. This prevents extra re-selection steps and keeps checkout workflows smoother for store staff.
Original PR description
Before this commit, opening the All Orders from the partner list would reset the selected partner. As a result, the user had to reselect the partner after returning, which disrupted the workflow. opw-4972314 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222507
This fixes an internal test setup issue in the Discuss test module by using the correct test model. It helps keep automated checks reliable and avoids failures caused by depending on the wrong supporting module.
Original PR description
PR #223438 uses `mail.test.rating` model (which belongs to `test_mail_full` module) as the test model in `test_discuss_full` module. This PR changes the test model to the correct one. runbot-231321
This fixes a Point of Sale issue where applying a gift card could add an extra gift card line with a zero amount. Cashiers now see cleaner orders and customers avoid confusing receipt or checkout details.
Original PR description
When selling some product and applying a giftcard, there could be 2 giftcard lines applied on the order one with a correct amount and the other one with 0 as amount. Steps to reproduce: ------------------- * Create a gift card with 50€ * Open PoS and add a Desk Pad and a Black Drawer > Observation: There are 2 giftcard lines applied on the order Why the fix: ------------ Sometimes the discountable amount could get weird values that are really close to 0 but that was not interpreted as False. To fix this we use `floatIsZero()` instead. Note: ---------- I will introduce a hoot test in 18.3 to cover this weird use case. opw-4866358 Forward-Port-Of: odoo/odoo#223948
Odoo now requires an update path when setting up server actions that update records. This prevents incomplete configurations that could otherwise lead to errors when the action runs.
Original PR description
[FIX] base: make update_path required for 'Update Record' server actions If a server action was previously created without an `update path`, the resulting error already fixes with this commit [1]. This commit ensures that the `update_path` field is marked as required when the action type is set to `Update Record`. [1]: https://github.com/odoo/odoo/pull/217723/commits/9d0144f97795d71474bf84bdfd7ed7025fd8a9a2 Forward-Port-Of: odoo/odoo#207928
Users can now enter an ampersand character in filter values without causing an error. This prevents crashes when creating or applying custom search filters, making filtering more reliable.
Original PR description
Example of steps: - Open any domain selector with an archive checkbox (via custom filter for example) - Try to add char `&` in value input - focus out or try to apply the filter - Traceback ``` UncaughtPromiseError > OwlError Uncaught Promise > The following error occurred in onWillUpdateProps: "Cannot read properties of undefined (reading 'filter')" ``` The problem comes from the fact that we expect to have multiple nodes in our domain if we have an `&` as a value. However, there is a difference between using `&` in a text search for example (type `condition`), and using `&` as an AND between two nodes (type `connector`). The solution is to restrict the condition so that it not only checks that the value is equal to `&`, but also checks that the tree type is indeed a connector and not a condition. opw-5015281 Forward-Port-Of: odoo/odoo#224664 Forward-Port-Of: odoo/odoo#224567
Payroll users can now change salary rule colors reliably in both the Salary Rules screen and the salary rule pop-up opened from Salary Structures. This ensures rule previews show the intended styling, reducing confusion when reviewing or configuring payroll rules.
Original PR description
Steps to Produce: - open payroll app - Go to Salary Rules or go to Salary Structures and open any salary rule. - try to change color of any rule. issue: - The color does not change in the Salary Rules. - Additionally, styles do not apply in the salary rule pop-up accessed through Salary Structures. Fix: - Instead of changing the color with formrenderer, a custom widget was created to apply styles directly to the field. opw-4716810 task-4774448
This fix prevents the French VAT report wizard from crashing when required report dates or report information are not yet available. It makes the calculation safer and ensures values are refreshed when key inputs change, improving reliability for affected payroll/accounting setups.
Original PR description
steps to reproduce the issue : 1- install l10n_fr_hr_payroll_account without demo data 2- and run this test .test_computed_fields_without_dependencies Added a dependencies using…
steps to reproduce the issue :
1- install l10n_fr_hr_payroll_account without demo data
2- and run this test .test_computed_fields_without_dependencies
Added a dependencies using @api.depends('report_id', 'date_from', 'date_to') on the _compute_vat_amount method to ensure automatic re-evaluation when any of these fields change.
In test_computed_fields_without_dependencies, the record is created using model.new(), which means required fields like report_id, date_from, and date_to may not be set yet. This caused a crash due to ensure_one() on an empty report_id.
Even though these fields are required, they are not automatically filled when using model.new() (unlike saved records).
Also introduced early exits by setting default values (vat_amount = 0.0, is_vat_due = False) and skipping computation when any of the required fields (report_id, date_from, date_to) or result VAT lines are missing because of ensure_one() in options.
These safeguards prevent errors in the test
build_error-115299