Daily updates from Odoo
Monday, October 27, 2025
7 changes · master
Resolved issues and error corrections
Helpdesk can now create tickets from incoming emails even when the sender matches a contact belonging to another company. This prevents valid customer messages from being blocked by company-matching rules and ensures support teams receive the ticket as expected.
Original PR description
**Steps to reproduce** - Have a helpdesk team for company A, with an email alias set up. - Have a `res.partner` belonging to company B with an email. To reproduce, there should be no contact with…
**Steps to reproduce** - Have a helpdesk team for company A, with an email alias set up. - Have a `res.partner` belonging to company B with an email. To reproduce, there should be no contact with this email in company A or with no company. - Send a message with the email of the `res.partner` to the alias of the helpdesk team. Issue: the ticket is not created. **Cause** The `_check_partner_id_has_the_same_company` constraint fails, preventing the ticket from being created. **Solution** We stop using the `author_id`, since it is not guaranteed to respect the constraint. https://github.com/odoo/enterprise/blob/a1fe558c8d6e27b435d350c23e19b93bbe611eb7/helpdesk/models/helpdesk_ticket.py#L755 This values comes from `_mail_find_partner_from_emails` in the mail module, which will prioritise a contact from the same company, but will not prevent one from another company being used. The existing code in `create` will call `_find_or_create_partner` to find/create one based on the name and mail. `_mail_find_partner_from_emails` is used instead of `find_or_create` to be able to provide an additional domain to ensure company consistency. opw-5154449 Forward-Port-Of: odoo/enterprise#98129 Forward-Port-Of: odoo/enterprise#97734
FedEx rate requests no longer fail when a customer's state code is longer than FedEx accepts, such as East Flanders in Belgium. Odoo now omits invalid state codes when FedEx does not require them, helping sales teams get shipping rates without interruption.
Original PR description
**Issue**: Sending a `stateOrProvinceCode` longer than 2 characters causes a FedEx error. **Steps to reproduce**: - Ensure the FedEx delivery carrier is installed. - Open the Sales application. - Create a new quotation with a Belgian customer whose state is set to `East Flanders`. - Click on "Add shipping". - Select "FedEx International" and click on "Get rate". - An error is raised. **Cause**: Some Odoo state codes are longer than 2 characters and are not covered by [this commit](https://github.com/odoo/enterprise/commit/38276c9a237a1779ce7a3e6f31102ff615691690). **Solution**: According to FedEx developer support, in such cases the `stateOrProvinceCode` field is not required. Therefore, we simply omit sending it when the code length is invalid. **Additional note** This commit also fixes 3 mistakes among the mandatory countries: - 3 for United Arab Emirates opw-4875939 Forward-Port-Of: odoo/enterprise#93642
Users with accounting access can now create SEPA Direct Debit mandates without running into an access error. This removes an unnecessary administrator-only permission check, making the mandate creation process smoother for invoicing and banking teams.
Original PR description
Have the Payment Provider Sepa Direct Debit module installed. Connect with a user with access right for Accounting: Invoicing & Banks. Create a Direct Debit Mandate => Get an access error. Reason: the compute does a read_group with a value on payment.provider, which non System Admin have no access to. Solution: Add a sudo for these _read_group Forward-Port-Of: odoo/enterprise#97127
Ingenico payment terminals no longer trigger unnecessary database requests when their status has not changed. This prevents payment screen errors during checkout and reduces background load, while also updating a deprecated internal call.
Original PR description
Currently when paying with ingenco there is an error: "Uncaught (in promise) TypeError: can't access property "payment_method", line is undefined." This is due to the fact that Ingenco sends requests to the database every second even when the status of the driver didn't change since the last payment. This PR fixes the issue by only sending requests to the database if a) THe driver status has changed b) A payment is being processed It also fixes the deprecation warning for isSet() replaced by is_set(). opw-5166439 opw-5181429 opw-5164612 opw-5170658 Forward-Port-Of: odoo/enterprise#98059 Forward-Port-Of: odoo/enterprise#97945
This fixes an issue that prevented managers from creating employee appraisals when they should have been allowed to do so. A test was added to help ensure this manager workflow continues to work correctly in future updates.
Original PR description
fixed with https://github.com/odoo/enterprise/commit/d4b708d22c0c3768cbb50bd5a43e91db419ff277 added test to cover the use case opw-4794641 Forward-Port-Of: odoo/enterprise#87831
The AI live chat snippet now correctly recognizes the assigned AI agent when visitors start a chat from a website. This restores expected automated chat behavior and helps prevent missed or broken AI-assisted conversations.
Original PR description
The ai_agent_id field was added to the mail.thread model in commit afa1ab2. However, the field was added inside a patch of thread_model that was only included in the backend asset bundle. This caused the AI livechat snippet to stop working because the threads created from the snippet didn't have the ai_agent_id set. Fix: Add ai_agent_id field to a different patch of thread_model which is included in both the backend and im_livechat.asset_embed_core asset bundles. task-5177678
Accounting report formulas now reject newly added or edited empty account code prefixes, such as a trailing plus sign. This prevents reports from accidentally including all accounts and showing duplicated or overstated amounts.
Original PR description
Empty account code prefixes in report expressions (e.g., "12 + 13 +") unintentionally include all accounts, which can lead to duplicated amounts. This PR raises a UserError when a newly created or modified expression includes an empty prefix. Community and main part of the PR: https://github.com/odoo/odoo/pull/230302 task-id: 4975559 Forward-Port-Of: odoo/enterprise#96522