Saturday, September 6, 2025
2 changes · saas-18.2
Resolved issues and error corrections
Loyalty discount calculations now round point usage according to the order currency precision. This prevents customers from being charged slightly too many loyalty points due to tiny calculation inaccuracies.
Original PR description
## Version
18.0+
## Issue
A slightly higher number of loyalty points might be used when python division can't be precise enough.
## Steps to reproduce
- Create a new Discount & Loyalty program:
- Program Type: Loyalty Cards;
- Conditional rules: None;
- Rewards: 1:
- Reward Type: Discount;
- Discount: 0.03$ per point on Order.
- Create a new Loyalty Card for any partner (remember which one):
- Change the points balance for 3030.
- Create a new Quotation for the previously selected partner as customer:
- Add a product:
- Use any product;
- Quantity: 1;
- Unit Price: 3000.0;
- Taxes: None.
- Apply the Reward and Confirm the SO;
- Check Loyalty Card's details at the bottom of the SO.
opw-4928963
Forward-Port-Of: odoo/odoo#219640The Unsplash image picker now ignores duplicate images returned in the same search results. This prevents crashes when users search for images and keeps the media selection experience stable.
Original PR description
This commit fixes an OwlError when we try to render the images received from Unsplash after a search. The issue is that Unsplash can send duplicate images in the same batch of images. When we render those in a `t-foreach` and use the image `id`s as the keys, we get a duplicate key error. This is fixed by expanding on the previous filtering code, which ignored duplicates over multiple batches. We now ignore duplicates within batches as well. At the time of writing, Unsplash is sending us duplicate images on a search for "Inventory". opw-5027032 P.S., this is really just an extension of this PR here #224059. Specifically, the 18.0 FW. In 18.0, the Unsplash code that I changed in the original PR (#223789) was moved from `addons/web_unsplash/static/src/components/media_dialog/image_selector.js` to `(...)/components/media_dialog_legacy/image_selector.js`. This PR fixes the "copy" of that code that got moved. Forward-Port-Of: odoo/odoo#224541