Daily updates from Odoo
Monday, October 27, 2025
21 changes · master
Enhancements to existing features
The bank reconciliation screen no longer highlights statement line amounts with a success-style text color. This makes the display more neutral and avoids implying that an amount is already successful or confirmed based only on its color.
Original PR description
This commit will remove the text success of the statement line amount. no task id Forward-Port-Of: odoo/enterprise#98044
The AI chat launcher now connects to discussion channels using the channel service directly. This is a small internal improvement that aligns the chat flow with the intended messaging component and helps keep the feature easier to maintain.
Original PR description
This commit now uses the discuss.channel getOrFetch method directly instead of the one from mail.thread.
Studio now explains that list column widths can include minimum and maximum values. This helps users configure column sizing more accurately when customizing views.
Original PR description
PR odoo/odoo#232988 adds the support of minimal/maximal widths for the `width` attribute in list archs. This commit adapts the tooltip of the width attribute in studio accordingly. task~5194492
An unused attachment template was removed from the Helpdesk Live Chat module. This is a small cleanup that reduces obsolete code without changing how users interact with the system.
Original PR description
This commit removes the unused attachment template. For reference, see https://github.com/odoo/enterprise/pull/94970 Related Upgrade: https://github.com/odoo/upgrade/pull/8703
The AI live chat integration was updated to stay compatible with recent internal changes in how chat conversations are created. This helps keep website live chat working smoothly without changing the experience for visitors or support teams.
Original PR description
This commit adapts the code to the _createThread refactor and rename. PR community: https://github.com/odoo/odoo/pull/232298
Resolved issues and error corrections
This update fixes inconsistent employee payroll fields and makes Australian payroll API tests independent from demo data. It helps keep payroll-related builds stable and reduces false failures during validation.
Original PR description
- Remove test dependency on demo data - Fix inconsistency on employee fields runbot-231643 runbot-230983 Forward-Port-Of: odoo/enterprise#96217
The EC Sales report now correctly shows the Code filter, making it easier for users to narrow report results as intended. This fixes a configuration placement issue so the report behavior matches the expected experience in newer versions.
Original PR description
Before: EC Sales report Code filter was not visible. As custom_display_config options was defined in the generic ec sales list code inside function `_custom_options_initializer` while it should actually be placed inside `_init_core_custom_options`. After: Like 18.4 now EC Sales report Code filter visible task-5109538 Forward-Port-Of: odoo/enterprise#96028
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
This update adjusts Odoo Enterprise unit tests to match recent changes in the Hoot testing framework. It helps keep automated testing reliable while limiting changes to test code, reducing risk to business features.
Original PR description
## Pull Request HOOT 38 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/232536 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#98075 Forward-Port-Of: odoo/enterprise#97851
When users transfer a VoIP call, the contact search box is now cleared instead of showing the previous search. This prevents confusion and makes the call transfer flow cleaner for users.
Original PR description
**Purpose:** Previously, when a contact was searched and made a call. During a call, clicking "Transfer" showed the old search term. **Specification:** Now, the search box is explicitly emptied when transferring the call by resetting this.softphone.addressBook.searchInputValue. **Task-** 5087938 Forward-Port-Of: odoo/enterprise#98016 Forward-Port-Of: odoo/enterprise#95102
This fix ensures each payslip uses the correct template, even when no template is available in some cases. It helps prevent payroll document generation from applying the wrong template across multiple payslips.
Original PR description
Since the function that will return the template can return None in some cases, we need to check for each payslip what is the template. Forward-Port-Of: odoo/enterprise#97639
A typo was corrected in Odoo Studio's list of new field options, changing “Multine” to “Multiline.” This improves clarity for users when creating or editing fields, with no change to functionality.
Original PR description
This commit fixes a typo in one of the newFields name: 'Multine' -> 'Multiline' Forward-Port-Of: odoo/enterprise#97771 Forward-Port-Of: odoo/enterprise#97713
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
The complete contact address now includes the second street address line when it is filled in. This ensures email templates and other uses of the full address show all relevant address details, reducing incomplete or unclear customer communications.
Original PR description
Issue: If a user with `street2` wants to utilize the `contact_address_complete` field, the `street2` field is not included. Purpose of this PR: To include the `street2` field in the `contact_address_complete` Steps to reproduce on Runbot: install contact fill in a contact's `street2` create email template that uses the `contact_address_complete` `street2` is omitted from the complete address opw-5186218 Forward-Port-Of: odoo/enterprise#98103
Code cleanup and technical improvements
The WhatsApp integration now uses a standard internal process to update chat participant data. This is a behind-the-scenes cleanup that should make the messaging code easier to maintain without changing the user experience.
Original PR description
community PR: https://github.com/odoo/odoo/pull/232615 This commit refactors the `discuss.channel.member/fetched` bus notification to be a `mail.record/insert` as there is no other logic than inserting channel member data in the store. task-5177252
This change moves Odoo's internal test add-ons into a dedicated tests subdirectory. It does not change business features, but it makes the codebase easier to maintain and helps development teams manage testing assets more clearly.
Original PR description
Same as community but a different variant as all addons live at the toplevel of the repo: test addons are moved to a subdirectory.