Daily updates from Odoo
Wednesday, May 13, 2026
16 changes
2 changes
Enhancements to existing features
This update enhances the system's partner suggestion feature by prioritizing partners who have recently communicated within a discussion thread. The system now considers message recency when ranking suggestions, making it more likely that you'll see individuals you've interacted with most recently. This improves efficiency and connection within the platform.
Original PR description
backport of https://github.com/odoo/odoo/pull/262708 This commit adds a compare criteria to the `partnerCompareRegistry` used to sort partner suggestions. With this new criteria, partners that have recently authored a message in the thread will be ranked higher in the suggestion list, with the internal ordering depending on message recency. task-5932229 Forward-Port-Of: odoo/odoo#263783
This update improves the handling of invoices from CBC Belgium, a key customer. It now automatically extracts the vehicle license plate number (`LCPL-NO`) from these invoices, ensuring accurate record-keeping. This enhancement streamlines invoice processing and compliance with CBC Belgium's requirements.
Original PR description
Used on invoices from CBC Belgium Forward-Port-Of: odoo/odoo#263878
12 changes
Enhancements to existing features
This update simplifies filtering of bank reconciliation reports by introducing a new message type for transaction details. This change enhances the user experience by allowing for more precise and efficient filtering of bank statement data within the bank rec widget. It's an improvement to the existing bank reconciliation process.
Original PR description
Following this commit: This commit will introduce a new message type for the transaction details used in the bank rec widget to ease the filtering of those message. task-5932620
This update restricts the 'Flexible Employment' (FLX) category option in the Belgian payroll module for Odoo Enterprise, aligning with specific Belgian labor regulations. It now requires a compatible Joint Committee (CP) and NACE company code to be selected, ensuring compliance and accurate reporting. This change improves data integrity and reduces potential errors related to FLX category selection.
Original PR description
[IMP] l10n_be_hr_payroll: restrict dimona flx category FLX in employee_type is selectable only for certain CPs (Joint Committees) and NACE codes of the company Ref list link:…
[IMP] l10n_be_hr_payroll: restrict dimona flx category
FLX in employee_type is selectable only for certain CPs (Joint Committees) and NACE codes of the company
Ref list link: https://emploi.belgique.be/fr/themes/contrats-de-travail/contrats-de-travail-particuliers/contrat-de-travail-flexi-job#toc_heading_3
1 - I created a new allowed_employee_types_ids M2M field to determine which employee types will be shown in the selection box (or flex will be shown or not)
1.1 - If the egov3 code of the joint committee is one of the determined codes in the ref link, the flex type is shown.
1.2 - Sometimes egov3 code of joint committee and NACE code of the company need to be combined
2 - In hr_version, joint committee field in UI was reseting after changing employee type to Flex or changing type from Flex to False, now it remains unchanged
3 - In employee form view, allowed_employee_types_ids is added as a domain to employee_type_id to show flex type or not
task - 6131721This update enhances the sorting of contacts within the VoIP module to address inconsistencies in how names and numbers are displayed. Specifically, it now correctly handles umlauts in German names and sorts numbers in a more user-friendly, lexicographical order, ensuring contacts appear in the expected sequence.
Original PR description
### German Phonebook In German phonebook sorting, umlauts are expanded to their two-letter equivalents before sorting: - ä becomes ae - ö becomes oe - ü becomes ue - ß becomes ss ### Numbers Sorting numbers in lexicographical order leads to "10" coming before "9", but when browsing a list of contacts, you'd expect "Guest 2" to show up before "Guest 10000". This commit adapts VoIP's contact tab to account for these two aspects.
This update automatically calculates and displays the subscription duration on customer quotes (both PDF and Portal views) when a template has a defined duration. Previously, the duration wasn't visible until a subscription started, leading to a poor customer experience. The changes also improve the reliability of subscription synchronization.
Original PR description
**Why** Currently, when a quotation template has a duration, the end date is only computed and set when the subscription starts. As a result: - The duration is not visible to the customer on the PDF quote. - The duration is not visible to the customer on the Portal. - If a user manually defines a start date on the quote, the end date is not computed automatically. **What** - Made `end_date` a computed field depending on `start_date`. If the start date is set and the template has a fixed duration, the end date is now computed automatically. - Updated the Portal quote view to display the template's duration (Duration + Unit) if no start date is defined yet. - Updated the PDF quote report to display the template's duration if no start date is defined yet. - Refactored confirmation hook to maintain recurrence synchronization safely without redundant loops. **task**: 5969513
This update simplifies the process of canceling old invoices in Mexico's EDI system. When a new invoice replaces an existing one, the system now automatically cancels the original invoice, eliminating the need for manual intervention. This improves efficiency and reduces potential errors related to invoice management.
Original PR description
Triggers the EDI document cancellation method for the substituted invoice when the substitute document is signed, removing the requirement for the user to go back and click cancel again as well as bypassing calling a wizard with no options for the user to select from. task-5927581 Forward-Port-Of: odoo/enterprise#116959 Forward-Port-Of: odoo/enterprise#107541
This update improves how expenses are tracked within Odoo Enterprise by allowing for more detailed configuration. Previously, a generic 'EXPENSE' rule limited expense tracking, but now businesses can define specific input types for product categories, ensuring expenses are handled accurately according to local regulations and business needs.
This update enhances document creation by standardizing chatter messages, providing clear details like author, source, and document name. This improves traceability and reduces user confusion when managing documents, leading to a better overall experience.
Original PR description
Currently, when documents are created, their chatter messages are inconsistent, lack important details, or simply do not exist. This creates confusion and wastes users' time when trying to trace a document's origin. To solve this problem and improve the user experience, this PR introduces a standardized chatter message format that cleanly captures all essential information. Displayed information: - Document Author - Original document name - Document source (e.g., user upload, email, PEPPOL, or an Odoo app) - Notes section (hidden if empty; used to display the related record when saving an attachment from the chatter) Implementation notes: - adapted the tests of `account_invoice_extract` to account for new creation message. - Enabled logs for documents generated from emails. - A recent commit completely rewrote the "Add" document operation but left the old implementation intact. This PR removes that obsolete code. task-5498838
This update aligns the data cleaning views with standard Odoo list views, resolving inconsistencies in mass editing actions. By moving key actions like 'validate,' 'archive,' and 'unarchive' to the header, the user experience is now more intuitive and consistent with other Odoo workflows.
Original PR description
In the deduplication, and field cleaning views, mass selection did not behave consistently with standard Odoo list views and displayed redundant action buttons. This commit moves the validate, archive (discard), and unarchive (undiscard) actions from view buttons to header buttons so they behave like standard mass-edit actions in Odoo and provide a more consistent UX. task-6112028
This update adds a client ID field to the list view for account online links, providing the support team with crucial information. This optional field is hidden by default for customers who don't require it, ensuring a streamlined experience. It improves support efficiency and data accessibility.
Original PR description
The aim of this commit is adding the client id of an account online link into the list view to help the support. The field is added in optional hide for the customers who don't need this information. no task id
This update enhances Odoo's support for Mexican import/export regulations (IMMEX) to align with CFDI 4.0 standards. Specifically, the 'External Trade' field now supports additional trade type codes, and defaults are set based on customer information for improved accuracy. This ensures proper tax reporting for Mexican businesses.
Original PR description
IMMEX is a program created by the Mexican government which enables companies to import goods into Mexico without paying taxes because they will be exported back in a short time. The "External Trade"(`l10n_mx_edi_external_trade_type`) field now includes values 01, 02, 03, and 04 to comply with CFDI 4.0. - Default value is "01 - Does not apply". - The field in `account.move` now defaults based on `res.partner` value. Populate 'External Trade' field in demo records: - Azure Interior: [02] - Definitive - Escuela Kemper Urgate: [04] - Definitive without alienation For `account.move` and `sale.order`, when the partner is a foreign customer, the "CFDI to public" (`l10n_mx_edi_cfdi_to_public`) field is automatically enabled. target: master task: 4819749
This update integrates the EC Sales List into the standard account returns process, streamlining the handling of returns related to online sales. The system now directly associates return information with the account return record, improving data accuracy and reporting. A new safeguard prevents incorrect return status resets when returns have been accepted by Digipoort.
Original PR description
This commit introduces the EC Sales List into the standard account returns flow and refactors the SBR status service to attach its messages directly to the account return instead of the closing entry. Specific changes include: * EC Sales List Integration: The EC Sales List report is now configured to auto-generate. * Status Service Refactoring: The `closing_entry_id` field on the `l10n_nl_reports.sbr.status.service` model has been replaced by `account_return_id`. * Message Processing Updates: The `_process_messages_and_statuses` method is updated to accept a consolidated `message_data` dictionary and apply it directly to the account return. * State Safeguards: A new safeguard (`action_reset_2_states`) prevents the resetting of an EC Sales return if it has already been accepted by Digipoort.
This update fixes inconsistencies in string sorting across different languages, ensuring accurate ordering for users in various locales. The new `localeCompare` function provides a locale-sensitive sorting method, addressing issues with default string comparisons and improving overall user experience.
Original PR description
Alphabetical order differs from one language to another. For example, in Estonian, Z comes after S and before T. This means that the order of strings displayed to the end users needs to be adapted…
Alphabetical order differs from one language to another. For example, in Estonian, Z comes after S and before T. This means that the order of strings displayed to the end users needs to be adapted depending on the current locale. This commit introduces the `localeCompare` utility function, which allows comparing two strings in a locale-sensitive way. ### What's wrong with the default behavior of `Array.prototype.sort`? `Array.prototype.sort` compares strings according to the UTF-16 code unit values of their characters. This results in behaviors that may not be what the end user expects. For example, "Zebra" is sorted before "apple", as uppercase letters come before lowercase letters in the ASCII table. "Élise" is not grouped with "Elise", and two same accented letters with different normalization forms aren't considered to be equivalent. ### Why not just use `String.prototype.localeCompare`? - Our `localeCompare` uses `user.lang` by default, which the string method doesn't - Our `localeCompare` comes with sensible defaults, such as sorting numbers based on their numerical value rather than their position in the ASCII table (i.e. "User 9" should come before "User 10000") - Our `localeCompare` always reuses the same instance of `Intl.Collator`, sparing the theoretical cost of instantiating it every time. Community: https://github.com/odoo/odoo/pull/264047
2 changes
Enhancements to existing features
This update removes restrictions on the fiduciary VAT field within the connection wizard for the l10n_be_codabox module. This change provides greater flexibility for users configuring VAT settings related to Codabox, streamlining the process and accommodating evolving business requirements. It's a minor improvement focused on usability.
Original PR description
This commit will remove the readonly on the fiduciary_vat in the connection wizard. It will give more flexibility for fiduciary. task-6148930
This update automatically sends email reminders to customers 7 days before an account return deadline. This improves the process of collecting returns and reduces the risk of missed deadlines, leading to better inventory management. The change was implemented as an improvement to the existing account return workflow.
Original PR description
Send reminder mail to submit an account return 7 days before the deadline. task-4752152