Thursday, September 25, 2025
7 changes · saas-18.2
Resolved issues and error corrections
Point of Sale now reads pricelist rule end times in the correct timezone. This prevents valid discounts or prices from being ignored before their intended expiration time, especially for users outside UTC.
Original PR description
Currently, when entering a validity period on a pricelist, it can happen that a pricelist rule is not applied while being before the end period. Steps to reproduce (for BE timezone):…
Currently, when entering a validity period on a pricelist, it can happen that a pricelist rule is not applied while being before the end period.
Steps to reproduce (for BE timezone):
-------------------------------------
* Create a pricelist
* Add a pricelist rule for a product (min qty=1, price=5$)
* Add a validity period for the rule, set the end date 30minutes after your current time
* In the settings of the pos add the pricelist to the list of available pricelists
* Open session
* Add the product related to the rule
* Change the pricelist
> Observation: The rule is not applied
Why the fix:
------------
Let's say on the computer it's 15h. The rule is thus set to end at 15h30.
`luxon.DateTime.now()` -> 15h, the zone name is brussels. `deserializeDate(item.date_end)` -> 13h30, zone name is brussels as well.
And 15h in brussels is greater then 13h30 in brussels.
`date_end` is already in UTC format, so we need to specify it. Now, `deserializeDate(item.date_end, { zone: "utc" })` -> 13h30, zone name is utc And 15h in brussels is before 13h30 in utc (since 13h30 is 15h30 in BXL)
opw-4992892
Forward-Port-Of: odoo/odoo#224665This fix restores a database index used by the Stock app to keep upgrade checks consistent. It prevents misleading upgrade log messages and helps maintain expected performance for stock rule records linked to companies.
Original PR description
due to conflict on this forward port https://github.com/odoo/odoo/pull/113045 ``index=True`` was removed according to this pr https://github.com/odoo/odoo/pull/90531 So, adding it back during upgrade it shows misleading logs ``` 2025-08-26 22:19:25,039 23 INFO db_3112946 odoo.schema: Keep unexpected index stock_rule_company_id_index on table stock_rule ``` opw-5052223 upg-3112946 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226268
The expense list view no longer shows an extra, unnecessary link to attachments. This reduces visual clutter and helps users access expense information more clearly without duplicate options.
Original PR description
remove an unnecessary link to the attachments of expenses in the list view. task-4684825 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Refund orders created from the backend now receive the required identifier before they are loaded in the Point of Sale. This prevents draft refund orders from getting stuck when staff try to complete payment in the PoS interface.
Original PR description
Before this commit, refunded orders created from the backend were missing a UUID. This could cause issues when trying to load a draft refund order into the PoS UI and proceed with its payment. opw-5081385 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227528
General Ledger PDF reports now display longer company names in the footer instead of cutting them off. This improves report presentation for businesses with company names longer than 24 characters, with added spacing to keep the footer readable.
Original PR description
**Steps to reproduce:** 1. Install the Accounting module. 2. Set a company name longer than 24 characters. 3. Go to Accounting → Reporting → General Ledger. 4. Print the report → in the PDF footer,…
**Steps to reproduce:** 1. Install the Accounting module. 2. Set a company name longer than 24 characters. 3. Go to Accounting → Reporting → General Ledger. 4. Print the report → in the PDF footer, the company name is truncated. **Issue:** - The company name in the General Ledger report footer is cut off if it exceeds 24 characters. **Cause:** - The footer uses a static value limited to 24 characters: https://github.com/odoo/enterprise/blob/08564f3312c255f2f3ab95cef5a9bfc57727bd1f/account_reports/models/account_report.py#L5850-L5860 **Solution:** - Increased the footer text limit from 24 to 80 characters. - Adjusted page margin by changing `'data-report-margin-bottom': 15` → `'data-report-margin-bottom': 20` to ensure proper spacing for longer company names in the PDF. **After Apply Solution** <img width="1038" height="86" alt="After solution" src="https://github.com/user-attachments/assets/51ece47c-1950-4a54-8be3-f7ac2bbd8a0d" /> **Before Without Solution** <img width="1050" height="66" alt="Before Solution" src="https://github.com/user-attachments/assets/a13b9132-bf04-422a-8e32-1db5225afc33" /> opw - 5025972 Forward-Port-Of: odoo/enterprise#94535
Users can no longer try to send a WhatsApp message after removing the required template. This avoids an unexpected error and gives a clearer validation path, improving reliability when sending WhatsApp messages from contacts.
Original PR description
Currently, an error occurs when the user attempts to send a whatsapp message without selecting a template. **Steps to Reproduce:** 1. Configure a WhatsApp Business Account and synchronize the…
Currently, an error occurs when the user attempts to send a whatsapp message without selecting a template. **Steps to Reproduce:** 1. Configure a WhatsApp Business Account and synchronize the templates. 2. Open any contact and click the **WhatsApp** button next to the phone number. 3. Remove the template and click **Send Message**. **Error:** `ValueError - Expected singleton: whatsapp.template()` **Cause:** At [1], it attempts to fetch the formatted body and header from the template ID. Since no template is selected, it results in an error. **Fix:** This commit makes the field `wa_template_id` required, preventing users from sending a whatsapp message without a template. In stable versions, raise a validation error if a user attempts to send a message without selecting a template. [1] - https://github.com/odoo/enterprise/blob/fff9ad7999d4ff13adf899b2517e750a36c1261a/whatsapp/wizard/whatsapp_composer.py#L319 sentry-6854466874 Forward-Port-Of: odoo/enterprise#93898
Scheduled account report emails now skip customers that were deleted after being selected for batch sending. This prevents the automated send job from failing and helps ensure remaining customer statements are still processed smoothly.
Original PR description
When a partner included in a batch send is deleted before the cron "Send account reports automatically" runs, the cron fails because the partner no longer exists. Steps to reproduce: 1. Create partner A and a draft invoice linked to it 2. Go to Partner Ledger and select Customer Statement report 3. Click on Send and validate - Ensure the scheduled action is not executed immediately (e.g. by deactivating it) 4. Delete partner A 5. Run the cron "Send account reports automatically" -> Cron fails with "Record does not exist or has been deleted" This fix ensures only existing partners are kept for processing. opw-5085571 Forward-Port-Of: odoo/enterprise#95127