Saturday, September 6, 2025
4 changes · saas-18.4
Resolved issues and error corrections
The website homepage tour now includes a step for the theme options tab, helping confirm that theme-related settings open correctly. This reduces the chance of theme-specific issues reaching users and restores expected behavior for theme homepage tours.
Original PR description
This commit adds the `goToTheme` step to the homepage tour. This step is used to showcase the theme features and to ensure no theme specific error on that tab in `test_02_homepage_tour_every_theme` test.
This fixes an issue where loyalty discounts could use slightly more points than intended because of decimal precision differences. Loyalty point calculations now align with the sale currency precision, helping customers see accurate point usage on sales orders.
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 search now safely ignores duplicate images returned in the same result set. This prevents the media dialog from crashing when users search for images, improving reliability for website content editing.
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 fixes an issue where the final automatic follow-up reminder could be sent to the same customer every day for an already-processed overdue invoice. Odoo now recognizes invoice items that were already included in that follow-up level, helping prevent duplicate customer communications.
Original PR description
**Steps to reproduce:** - Install Accounting - Go to "Accounting / Configuration / Invoicing / Follow-up Levels" - Create a unique follow-up level: * Remind 1 day after due date * Send Email:…
**Steps to reproduce:** - Install Accounting - Go to "Accounting / Configuration / Invoicing / Follow-up Levels" - Create a unique follow-up level: * Remind 1 day after due date * Send Email: [checked] * Automatic: [checked] - Create an invoice: * Customer: [any] * Invoice Date: [1 month ago] * Due Date: [1 month ago] * Invoice Lines: [any] - Confirm the invoice - Go to "Settings / Technical / Automation / Scheduled Actions" - Open "Account Report Followup; Execute followup" - Run it manually => A reminder is correctly sent to customer (i.e. message on partner record) - Wait for the following day - Run the scheduled action again **Issue:** The same reminder in sent again. The last reminder will be sent every day even if there is no new invoice. **Cause:** When computing the follow-up status for a contact, all the entries that are due are taken into account. The entries that have already been included in a follow-up should be ignored when computing the same follow-up again. **Solution:** A field on a journal item (i.e. followup_line_id) tracks in which follow-up level the item has been included. We can exclude the journal items that has this field set to the next follow-up level. opw-4964103 Forward-Port-Of: odoo/enterprise#94026 Forward-Port-Of: odoo/enterprise#92191