Tuesday, February 3, 2026
10 changes · master
Enhancements to existing features
This update enhances the 'My Tasks' menu by displaying employee availability – including time off and unavailable periods – regardless of how tasks are grouped. This ensures users always have a clear view of their workload and upcoming absences directly within the 'My Tasks' interface, streamlining task management.
Original PR description
Currently, the unavailabilities (non-working days, time off, public holidays, and periods outside of a work contract) are only displayed if the Gantt view is grouped by users. Of course, we expect someone to know when he/she will be off. They can do it via the "All tasks" menu and filter on their own tasks, but that is the purpose of the "My tasks" menu. In this commit, display the unavailabilities of the current user, even in the case the view is not grouped by users, but only in the context of "My tasks" and not elsewhere. task-5184732
This update enhances the system's ability to prevent duplicate Vendor Bills in Colombia by specifically checking for unique CUFE (Electronic Invoice Code) identifiers. Previously, standard partner-based duplicate detection wasn't sufficient for CUFE uniqueness. Now, a warning banner will appear if a duplicate CUFE is found, ensuring accurate record-keeping.
Original PR description
When importing or editing Vendor Bills in Colombia, the CUFE (Electronic Invoice Code) serves as a globally unique identifier. The standard duplicate detection, which relies on the partner, is insufficient for ensuring CUFE uniqueness across the system. This commit overrides the duplicate detection hooks to check for existing bills with the same `l10n_co_edi_cufe_cude_ref`. Functionally, if a duplicate CUFE is detected on a Vendor Bill, the system will populate the `duplicated_ref_ids` field, triggering the standard warning banner on the form view to alert the user. Related Community PR: https://github.com/odoo/odoo/pull/240911 Task-5402480
This update enhances the Odoo POS system by allowing automatic SMS and WhatsApp notifications to customers regarding order status updates – from initial placement to completion. This improves customer communication and provides real-time updates, leading to a better customer experience and potentially increased sales.
Original PR description
… to warn the client about order status This task aims to provide a solution for communicating the status of various customer orders. Now, the POS can send an SMS or a WhatsApp message when an order at the self-service is placed, either through WhatsApp, SMS, or both. When the order is completed, the customer can also be notified. task : 5246552 community pr : https://github.com/odoo/odoo/pull/235389 Forward-Port-Of: odoo/enterprise#99318
This update aligns the TDS XLSX report with the official utility format, ensuring accurate tax documentation. By fetching partner information from AML records, the report now correctly handles miscellaneous entries, resolving a previous issue with formatting. This improves the reliability of tax reporting.
Original PR description
This commit aligns the TDS XLSX report with the official TDS utility format. Additionally, We now fetch the partner from AML record, so even miscellaneous entries generate a correctly formatted XLSX sheet. task-5237518 Forward-Port-Of: odoo/enterprise#106016 Forward-Port-Of: odoo/enterprise#104753
This update enables smaller Odoo users to connect to Shopee, a popular e-commerce platform, by utilizing the IAP service. The changes include a simplified user interface replacing the 'Shopee Account' menu with 'Shopee Shop' and supporting the IAP credential requirement for Shopee API access.
Original PR description
This is a new feature of Shopee Connector. Shopee has a minimum order requirement for sellers to apply for an API key, which small sellers cannot apply for an API key. This commit: - Enables using Shopee Connector with Odoo API credential via IAP service. - Shopee Account menu is replaced by Shopee Shop to improve UX. task id - 5022010
This update enhances the user experience by adding a cursor pointer to the headers of statement summaries in the accounting module. This allows users to easily navigate and explore their financial reports, making the system more intuitive and efficient.
Original PR description
This improves the user experience by indicating that the headers are clickable. No task ID Forward-Port-Of: odoo/enterprise#105078 Forward-Port-Of: odoo/enterprise#105023
This update streamlines the display of IM status and thread icons on avatars across Odoo. By introducing a new component, the team has reduced maintenance and improved UI consistency, ensuring a more reliable and visually appealing user experience for all users.
Original PR description
*: planning_holidays, voip, whatsapp Before this commit, IM status and thread icon were used a lot as bottom-right floating icon on a conversation or user avatar. Each context that wanted this visual…
*: planning_holidays, voip, whatsapp Before this commit, IM status and thread icon were used a lot as bottom-right floating icon on a conversation or user avatar. Each context that wanted this visual of avatar + floating icon had to craft by hand the avatar sizing and icon position, which has many drawbacks: - image and icon sizing and positioning needs manual tweak in each context, requiring lots of effort. - very-prone to inconsistencies due to high maintenance to make each context work. Current state had many inconsistencies. - handling of mask of floating icon is poor, with `.bg-inherit` on parented chainng that is hard to enforce and in some cases, just don't work at all This commit improves by introducing a new component `DiscussAvatar`, that accepts `channel`, `thread`, channel's `member` or `persona` to display avatar and conversation / person icon in the bottom-right corner. This new component has the following benefits: - one component to handle all the cases of conversation / person avatar with floating icon / im status, drastically reducing maintenance effort and increasing significantly UI consistency. - new technique to mask image with floating icon that works all the time thanks to the use of `SVG`'s mask. Part of Task-5867464 https://github.com/odoo/odoo/pull/246182
This update optimizes how report data is stored, reducing memory usage and improving performance, particularly in the web client. By changing the format of column group options from a large string to a list of integers, the system now uses significantly less memory. This results in faster report generation and a smoother user experience.
Original PR description
Each cell of a report references its column group options. Before this commit, it was using `column_group_key`, which was a serialization of the column group options. You could get the column group options, using the `options['column_groups']` dict with this key. In the web client, this takes up a lot of memory. As it is a relatively big string, created for each cell. In the backend, there's no issue as they all are just references to the same objects as in the options. With this commit, in order to save memory, `options['column_groups']` is a list instead of a dict. `column_group_index` replaces `column_group_key`. Using this index on `options['column_groups']` gives the corresponding column group options. As it is a small int, it takes far less place in memory. task-5164369
This update separates the mocked SIP.js library for demo mode, enabling better testing and future improvements. It allows for more robust unit tests and unlocks potential enhancements to the demo experience, paving the way for simulating various call scenarios.
Original PR description
This commit moves the mocked SIP.js library used in VoIP demo mode into a separate asset bundle. Benefits: - it makes the mocked SIP.js library usable in unit tests as well, and to even test the prod…
This commit moves the mocked SIP.js library used in VoIP demo mode into
a separate asset bundle.
Benefits:
- it makes the mocked SIP.js library usable in unit tests as well, and
to even test the prod mode by further extending the mocked features.
- it paves the way for future improvements in VoIP unit tests, by
allowing to have different mocked behaviors depending on the test
needs (e.g. simulating call drops, network issues, etc).
- it even allows the user agent to initialize even in demo mode,
unlocking potential future improvements of this mode.
Notable Changes:
- the bundle loading is now made inside the start of the voip service
instead of the user agent class, which makes more sense as it is the
voip service that knows in which mode it is running.
- the bundle "voip.assets_sip" is now split into three bundles:
- "voip.assets_sip_prod": contains the real SIP.js library
- "voip.assets_sip_demo": contains the mocked SIP.js library
- "voip.assets_sip_tests": contains the mocked SIP.js library plus
additional mocking for unit tests
Future improvements:
- the mocked SIP.js for unit tests is for now a bit naïve and should be
improved along with future VoIP unit tests developments.This update simplifies the setup for desk phone calls by ensuring consistent labels, helpful instructions, and a unified user interface across different settings locations. The changes clarify how to configure calls from another device, improving usability and reducing potential confusion for users.
Original PR description
The `should_call_from_another_device` field is defined both on the user model and the discuss "user settings" model (accessible via Settings > Technical > Discuss > User Settings). This commit makes sure that: - Both fields have the same clear label (also keeping the fact it fits on one line in English). - Both fields have the same clear help text (before this commit, the help text did not appear where it was the most useful: in the user preference dialog). - The UI is the same for all 3 places (user form view, preference form view and discuss user settings form view): the label, the checkbox and then the input field for the phone number; all on the same line. Notice that the `external_device_number` related field was also simplified and the placeholder "No redirect" is replaced with "Phone number" which makes it clearer that once the checkbox is checked, a phone number has to be put over there. task-4947771