Daily updates from Odoo
Saturday, September 6, 2025
4 changes · saas-18.3
Resolved issues and error corrections
Loyalty discounts now calculate points using the order currency's rounding rules, preventing customers from being charged slightly too many points due to tiny calculation inaccuracies. This makes loyalty card balances more accurate when applying monetary rewards.
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#219640This update prevents IoT boxes from being treated as new devices when they connect to databases on older versions. By sharing both the serial number and MAC address, the system can recognize and update the existing IoT box instead of ignoring it, reducing setup and connection failures.
Original PR description
We are currently experiencing a bug with the image 25_07 build on saas-18.4 In this version the "identifier" used in iot app is the iot box's serial number In versions < 18.4 the identifier used is the iot box's mac address When connecting to a database in version 18.3 or less, the iot box: 1) Calls send_all_devices --> create a new iot box in the database with identifier = serial number 2) Runs git checkout to align itself to the database version 3) Calls send_all_devices again, this time with identifier = mac address 4) The database ignores the request because it considers it a new iot box with a different token This PR fixes the issue by sending both mac address and serial number to the database If the database has an iot box with the corresponding serial number as an identifier, it updates it. Enterprise PR: https://github.com/odoo/enterprise/pull/93657 Forward-Port-Of: odoo/odoo#225431 Forward-Port-Of: odoo/odoo#225043
The Unsplash image search now handles duplicate images returned in the same search results, preventing the media dialog from crashing. This keeps image selection reliable for users when Unsplash sends repeated results.
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
This fix ensures IoT boxes remain correctly recognized when connecting across versions that use different device identifiers. It prevents duplicate or ignored IoT box records, helping connected hardware keep working after version alignment.
Original PR description
We are currently experiencing a bug with the image 25_07 build on saas-18.4 In this version the "identifier" used in iot app is the iot box's serial number In versions < 18.4 the identifier used is the iot box's mac address When connecting to a database in version 18.3 or less, the iot box: 1) Calls send_all_devices --> create a new iot box in the database with identifier = serial number 2) Runs git checkout to align itself to the database version 3) Calls send_all_devices again, this time with identifier = mac address 4) The database ignores the request because it considers it a new iot box with a different token This PR fixes the issue by sending both mac address and serial number to the database If the database has an iot box with the corresponding serial number as an identifier, it updates it. community PR: https://github.com/odoo/odoo/pull/225043 Forward-Port-Of: odoo/enterprise#93848 Forward-Port-Of: odoo/enterprise#93657