Daily updates from Odoo
Thursday, January 8, 2026
162 changes · master
New functionality added to Odoo
This update adds a new wizard to consolidate and generate all 281.xx reports required for Belgian payroll compliance. This simplifies the reporting process and ensures accurate data for tax filings, addressing a key requirement for our Belgian clients. The changes also include thorough testing to guarantee report accuracy.
Original PR description
add new wizard to populate all the 281.xx reports Task: 5114330
This update adds new pivot and graph views to the Activities interface. These views will provide users with improved tools for analyzing and reporting on their tasks and communications, leading to better insights and decision-making.
Original PR description
Adds pivot and graph views to the Activities interface, allowing better analysis and reporting. Task-5342832
This update adds a 'country_code' field to the resource calendar model. Previously, calendar displays were not tailored to specific countries, leading to potential inconsistencies. Now, calendars will display dates and times in the correct format for each user's location, enhancing the user experience and ensuring accurate scheduling.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update introduces a new model within the l10n_be_hr_payroll module to manage reorganisation measures related to employee contracts in Belgium. This allows for more accurate tracking and reporting of these changes, specifically addressing requirements for Belgian tax regulations. It impacts how employee contracts are handled within the payroll system.
Original PR description
TaskID: 5383912
Enhancements to existing features
This update introduces a new button within the holiday attest form, streamlining the process for directly allocating paid time off. Previously, users had to navigate through multiple steps to create an allocation; now, they can do it more quickly and efficiently. This improves user experience and reduces administrative overhead.
Original PR description
In this PR, we added a button in the holiday attest in the year n1 to ease the flow of creating an allocation directly. task-5214143.
This update makes the payment report wizard more user-friendly by adjusting the layout of fields. The change prevents fields from stretching across the entire wizard width, improving readability and ease of use. This is a minor UX enhancement.
Original PR description
-Minor UX change in the payment report wizard so that fields don't extend to full wizard width. -See https://github.com/odoo/enterprise/pull/101664 Task: #5388635
This update improves the payment reporting process by allowing the inclusion of unpaid payslips in single payments and adjusting report formats (CSV, SEPA) to reflect the new logic. The 'Include partners' feature has been removed, and the revert action now correctly marks payslips as paid, enhancing reporting accuracy and usability.
Original PR description
New adjustments have been introduced to the payment flow: -Include unpaid feature to include other "validated" payslips in the same payment. -CSV and SEPA formats for payment report have been adjusted to adhere to the new logic accordingly. -"Include partners" feature has been removed. -Revert action now marks both payslips as "paid". -Payslip report for My company,US,AU,CH companies has been enhanced for better readability. -Batch account move line settings has been clarified. -Some minor UX changes in the payment report wizard. Task: #5388635
This pull request ensures that accounts used for receivables and payables are consistently configured across all Odoo localization modules (l10n_*) to avoid discrepancies. This update streamlines financial reporting and improves data accuracy for international business operations. The changes involve updating configuration files for various localization modules.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This pull request updates the core spreadsheet component within Odoo. It includes several improvements and bug fixes related to functionality, performance, and user experience, specifically enhancing the spreadsheet editor and conditional formatting features. These changes ensure the spreadsheet remains a reliable and efficient tool for managing data.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ac2fa3e6d4 [REL] 19.2.0-alpha.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ac2fa3e6d4 [REL] 19.2.0-alpha.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/811ec6d6d2 [FIX] session: always return a Promise [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/900df13338 [FIX] session: recover from errors when sending messages [Task: 5469116](https://www.odoo.com/odoo/2328/tasks/5469116) https://github.com/odoo/o-spreadsheet/commit/f832009ebf [REF] side_panel: rename CSS classes for clarity [Task: 4982596](https://www.odoo.com/odoo/2328/tasks/4982596) https://github.com/odoo/o-spreadsheet/commit/ada17cb231 [REF] side_panel: split CF into main and editor panels, use store [Task: 4982596](https://www.odoo.com/odoo/2328/tasks/4982596) https://github.com/odoo/o-spreadsheet/commit/c3ee9f24ab [REF] side_panel: separate data validation list and editor logic [Task: 4982596](https://www.odoo.com/odoo/2328/tasks/4982596) https://github.com/odoo/o-spreadsheet/commit/f255b8720d [FIX] data validation: fix date criterion [Task: 5343580](https://www.odoo.com/odoo/2328/tasks/5343580) https://github.com/odoo/o-spreadsheet/commit/f19bf803a4 [IMP] cf: add top10 conditional formatting operator [Task: 5367065](https://www.odoo.com/odoo/2328/tasks/5367065) https://github.com/odoo/o-spreadsheet/commit/559cdd8ff1 [FIX] dashboard: properly handle grid resize in dashboard mode [Task: 5223156](https://www.odoo.com/odoo/2328/tasks/5223156) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update simplifies the way data extraction groups related boxes, allowing users to select and manage multiple boxes at once. This enhancement improves the user experience and efficiency when working with large datasets. The underlying CSS has also been cleaned and optimized for better performance.
Original PR description
**[IMP] iap_extract: group boxes into selectable columns** The boxes that are vertically aligned and close together are now grouped into a column that can be clicked to select all the contained boxes at once. If similar columns are found on the next pages, they will be selected as well. task-[5177261](https://www.odoo.com/odoo/project/2068/tasks/5177261) This is how it looks like in practice (right column is being hovered, left one isn't): <img width="505" height="228" alt="image" src="https://github.com/user-attachments/assets/422817b0-f08f-4ba2-88a1-ba6265e85739" /> --- **[CLN] iap_extract: clean CSS file of manual_correction component** This CSS file was a bit of a mess, it's been simplified and factorized where it could be. It should be strictly equivalent to the old file. Forward-Port-Of: odoo/enterprise#102812
This update simplifies event slot creation by allowing users to confirm and adjust event time ranges when adding slots outside the original event timeframe. It also enhances the user interface with a new 'Slots' button and a more intuitive form dialog for slot creation, improving overall usability.
Original PR description
Purpose ======= Improve the event slots feature and some other small improvements. Specification =========== Event form: - Add a "Slots" stat button to ease access to slots in addition to the link…
Purpose ======= Improve the event slots feature and some other small improvements. Specification =========== Event form: - Add a "Slots" stat button to ease access to slots in addition to the link already present next to the multiple slots field. - Make "Sales Start" hidden by default for the event tickets. - Make sure the left column fields labels are correctly aligned with the title. A bottom margin was missing underneath the event image and was messing the form display. Slot views: - In calendar view, instead of restricting the creation of slots outside of the event time range, ask confirmation and adjust the event time range to include the new slots. - In list view, removing the editable bottom behavior which is messy and tricky to use from mobile. Instead opening the slot form in a dialog. This also now provides the timezone info to the user. - In calendar and list view, adding a "New" button to allow single event slot creation. - Add an hint for the user to make sure they understand that they need to select days in order to add multiple slots. - Changing the multi create "Add" button color to primary to make it more noticeable at first sight. - For the slots out of time range validation error. Format the event time range the same way as the slot time range so that it's easier to compare the 2. Task-5114075 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update simplifies the theme editor by arranging font names alphabetically. This change reduces user confusion and makes it easier to find the desired font, ultimately improving the user experience and making it quicker to customize the look of Odoo.
Original PR description
To avoid cognitive load, and improve usability, this commit lists font alphabetically on the theme tab. task-5410041 Forward-Port-Of: odoo/odoo#240968
This update enhances collaboration by displaying the current time and date in avatar cards and direct message headers, taking into account each user's timezone. This ensures users across different time zones see the time accurately, improving communication and workflow efficiency.
Original PR description
**Specifications:** • Display the current time and date in the avatar card using the timezone of the user only if the card user's timezone differs from the current user's. • Show the local time below the user name in the header of direct messages . **Purpose:** • Enhance cross-timezone collaboration by presenting the local time of other users during interactions task-4613148 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#210094
This update enhances the user experience by adding keyboard navigation to the many2many tags dropdown field within Odoo. Previously, users could only interact with this field via the mouse. Now, keyboard users can easily select tags, improving accessibility and efficiency.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update separates the granularity of time off requests from allocations, allowing accrual plans in hours to be taken in days when needed. This change enhances flexibility in managing employee time off, aligning with how accruals are currently handled. The update also includes related data and test updates.
Original PR description
Previously, the time off given to the employee (Accrued/Allocated) had the same granularity of that which the employee requests, for example the employee accrues hours in his plan and consequently can use this time off type in hours, or can only accrue days to time off types in days and half-days. This task separates the dependency between both so that accrual plans in hours can be taken only in days if needed task: 4596117 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects and enhances the data related to leave types within Odoo, ensuring accurate calculations and reporting. The changes, driven by a separation of time off given/taken, have been thoroughly tested to guarantee reliable leave management across various modules. This improves the overall accuracy of time off tracking.
Original PR description
Following the separation of granularity between time off given/taken, all leave types data is updated to correctly reflect the current settings task:4596117
This update streamlines how Odoo handles binary data (like images and files) by moving away from base64 encoding. This change improves performance and prepares Odoo for future changes in how binary data is stored in the cache, ultimately reducing data usage and simplifying the codebase.
Original PR description
`datas` is base64-encoded and we directly decode it once set. Most of code should use `raw` directly and avoid handling base64 encoded data, because in the future we will change the cache…
`datas` is base64-encoded and we directly decode it once set. Most of code should use `raw` directly and avoid handling base64 encoded data, because in the future we will change the cache representation to avoid handling encoded values. This PR simplifies current usages and will allow to change the representation of binary fields in cache (which are today base64 encoded). base64 takes more space and there is a lot of encoding/decoding involved depending on the abstraction layer, the end goal is to only handle raw data and encode only for the client. - In `odoo.tools.images` a few base64 functions are deprecated (one remaining for later). - Allow importing files (see convert) without going though base64. - Binary fields have now `convert_to_read` (encode as base64) and `convert_to_write` (use the cache format) defined. The *read format* is used by the client and should not be used in the models. - base tests define common data that can be reused. task-4251301 https://github.com/odoo/enterprise/pull/100997 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update streamlines how Odoo handles data, primarily shifting from using 'datas' to 'raw' formats. This change improves efficiency and reduces the amount of data stored, leading to potential cost savings and faster performance. The team has focused on simplifying data exports and imports, ensuring data is handled more effectively.
Original PR description
https://github.com/odoo/odoo/pull/238171 See referenced PR: - Mostly use `raw` instead of `datas`. - `pdf_rotate` does not work as it uses inexisting fields (just removing it from the code). - web_studio exports raw - ...
This update enhances the HTML editor's undo/redo feature by grouping consecutive changes to the same text node into a single operation. This results in smoother and more reliable editing, preventing issues where multiple edits were not correctly reflected when undoing or redoing. It improves the overall user experience when making multiple edits within the HTML editor.
Original PR description
This commit undoes/redoes all consecutive steps that modify the same text node in a single call to `undo/redo()`. task-5155954
This update enhances how Odoo tests filter activity records, particularly within the 'web' module. By extending support for filtering on related 'x2Many' fields, developers can now test activity scenarios more effectively without needing to modify existing business code. This improves testing efficiency and stability.
Original PR description
For the activity view, the following domain is used to retrieve all records with activities completed (active=False) or not: [["activity_ids.active", "in", [true, false]]] To avoid having to patch business code when testing activities, we extend a bit what is supported for filtering records in tests by supporting filtering on x2Many nested fields. Note that not everything is supported, see the test. Co-authored-by: Pierre-Yves Dufays <pydu@odoo.com> Task-5089173
This update allows each company within an Odoo setup to define its own customer lead times for products. This ensures more accurate forecasting and planning across different business units, addressing inconsistencies in delivery timelines.
Original PR description
*= sale_stock In multi-company environments, different companies often operate with distinct delivery lead times, and these values may differ from one company to another. This enhancement allows each company to configure its own customer lead time on a product, ensuring clearer and more accurate planning across multi-company setups. Task - 5153210
This update allows each company within an Odoo setup to define its own customer lead time for products. This ensures more accurate sales forecasting and planning across multiple companies, aligning with recent community updates for smoother inter-company order flows.
Original PR description
In multi-company environments, different companies often operate with distinct delivery lead times, and these values may differ from one company to another. This change makes the sale_delay field company-specific. To align with recent community changes, the customer lead time is now computed based on the current company of the purchase order line, ensuring a smooth and consistent inter-company flow. This enhancement allows each company to configure its own customer lead time on a product, ensuring clearer and more accurate planning across multi-company setups. Task - 5153210
This update enhances the visual consistency of section, subsection, and combo lines across Odoo's portal, reports, and sales order views. The change addresses a font size discrepancy between the Odoo portal and website, ensuring readability and accessibility for users. This improves the overall user experience and presentation of key information.
Original PR description
Improve consistency of the section, subsection and combo lines on portal, reports and SO. Note: website has a different font-size-base than portal, thus using small on the table in portal will render 12.25px without website but 14px when website is installed. 12.25px is barely accessible, which is why `max()` is used, ensuring the font-size of portal SO preview doesn't get too small. [task-5439762](https://www.odoo.com/web#id=5439762&cids=1&menu_id=4720&action=333&active_id=1695&model=project.task&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This update resolves an issue where touch screen scrolling was interfering with the preparation display on iOS devices (small and medium). The change prevents unwanted scrolling, resulting in a smoother and more reliable user experience for iOS customers.
Original PR description
This commit introduces a small fix for IOS (small and medium) devices to prevent touch screen gesture in the pos preparation display. Task : 5113851
This update enhances the way payroll categories are defined and utilized within the system. The change allows for multiple category IDs to be associated with a payslip, providing greater flexibility and accuracy in calculating payroll amounts. This improves the system's ability to handle complex payroll scenarios.
Original PR description
task-5431460
This update corrects an issue where payroll views were incorrectly referencing the wrong module. The changes ensure that the correct Odoo module is used for these views, improving the accuracy and reliability of payroll calculations, particularly for our Belgian clients. This resolves a previously reported task.
Original PR description
fix related to Task-5136867
This update fixes a bug that caused data loss when the spreadsheet application experienced interruptions. Now, if a message sending attempt fails, the system will automatically retry until successful, ensuring all changes are properly reflected. This enhances the stability and data integrity of the spreadsheet feature.
Original PR description
If, for any reason, the sending of a revision creates an error b.e. when the user is disconnected, we never reset the "waitingForAck" flag, and all future messages will be queued but never send. The result of this behavior was that any user action during any disconnection will set the spreadsheet in a state where all changes from that point are lost. This fix handles the error while sending a message and always reset the flag, so that at next change, we will try to re-send the same message until it works. Task: 5469116
This update ensures that new Odoo users automatically have access to VoIP groups (admin and officer) during upgrades. Previously, these groups were only added to new databases. This change enforces a consistent approach, simplifying administration and preventing potential access issues.
Original PR description
Commit [1] introduced new groups for VoIP: admin and officer. Before that, the related rights came with the base admin group of Odoo. With that in mind, it made the new groups implied by the base…
Commit [1] introduced new groups for VoIP: admin and officer. Before that, the related rights came with the base admin group of Odoo. With that in mind, it made the new groups implied by the base admin group, but put them in a noupdate area of the security XML file, meaning only new databases would get the new groups assigned to the admin group. There were two possibles solutions: - An upgrade script to add the new groups to admin users (and/or the fact it is implied by the admin group). - Move the group definitions to a non-noupdate area, which re-forces the fact the VoIP groups are implied by the admin group at each upgrade, to any Odoo version. There is no guideline about this in Odoo and it is left to a per-app per-group choice. After consultation, the second solution was chosen: we prefer to enforce the fact that each new VoIP codebase, each version, relies on the fact admins are supposed to have those VoIP rights; forcing any customization of that fact to re-check it is working at each Odoo upgrade (and/or make a proper customization with custom apps instead of user manipulation). [1]: https://github.com/odoo/enterprise/commit/88b8de95e1a28a8037a386fc8fb6a044a98217e7 task-5440305 Forward-Port-Of: odoo/enterprise#103348
This update corrects a bug that prevented certain website-related modules, like 'ai_website', from receiving translations. Previously, only modules starting with 'website' were added to the translation list. Now, all website modules are correctly included, ensuring consistent translations across the platform.
Original PR description
Current behavior before PR: Only the modules with names starting with 'website' were added to the website translated modules. Causing modules such as 'ai_website' to miss translations. Desired behavior after PR is merged: All the modules related to 'website' are selected and added. task-5375210 parent support task-5210084 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242229
This update fixes a bug that prevented users from registering for event slots on pages other than the event registration page. Now, the 'register' button displays available slots across all event pages, improving the user experience and ensuring attendees can easily secure their spots. This enhancement simplifies the event registration process.
Original PR description
* = event, event_booth, event_exhibitor, event_track, event_track_quiz The "register" button displays open slots only on the registration page of an event, and not on the other pages of this one. This PR fixes this issue by making available the open slots from the event.event model for the modal_slot_registration template as an instance of this one is always present in the context of those pages. Reproduce: Create an event with the "Multiple Slots" option checked and link it to a slot of tomorrow. The "register" button will display the slot on the registration page of the event but not on the page of the talks. Task-5083175 Forward-Port-Of: odoo/odoo#226635
This update fixes issues with image dragging and dropping, ensuring images with captions are correctly copied and pasted, and preventing duplication of images after drops. It streamlines the editor's data transfer process for better image handling and formatting.
Original PR description
**Current behavior before PR:** - When dragging and dropping elements with attributes and classes, any non-whitelisted attributes and classes were removed during the `cleanForPaste` process. This…
**Current behavior before PR:** - When dragging and dropping elements with attributes and classes, any non-whitelisted attributes and classes were removed during the `cleanForPaste` process. This caused structural issues and loss of formatting after the drop. - When an image had a caption and only the image was selected and cut, the image was removed but the caption incorrectly remained - When dragging and dropping an image without an active selection on the image, the image was not removed during the drop. This resulted in the image being duplicated, one at the original position and another at the drop location. - When selecting an image with a caption and performing copy-paste, only the image was copied and pasted. **Desired behavior after PR is merged:** - An `application/vnd.odoo.odoo-editor` dataTransfer type is now set during `dragstart` for editor elements. As a result, we no longer need to clean the `dataTransfer` content during drop, preserving the original structure and preventing the loss of attributes and classes. - Cutting an image that contains a caption now correctly removes both the image and its associated caption. - The image is now selected on pointerdown event . As a result, when the image is dropped, deleteSelection correctly removes the original image before inserting the new one, preventing duplication. - Now, when an image with a caption is selected and copy-pasted, the entire image along with its caption is correctly copied and pasted. task: 4914451 Forward-Port-Of: odoo/odoo#241153 Forward-Port-Of: odoo/odoo#217125
This update fixes an issue where attachments added to chatter activity notes wouldn't show their overview (the blue box). The team decided to maintain static rendering for these overviews to ensure consistent functionality. This change ensures that users can easily see the attachments associated with their chatter activity.
Original PR description
--- ## Short functional explanation of the error When in the chatter, we can create an activity. If we add an attachment to the notes of this activity and save it, the overview of the attachment won't show in the chatter. ## Reproduction Steps 1. Open an app that gives you access to the chatter, for instance, an invoice in Accounting. 2. Click on Activity. Click on Log a Note... and on the button Upload a file. Upload an attachment and save. ### Expected behavior The overview of the file (blue box with the name of the attachment) should appear. ### Unexpected behavior The overview doesn't appear ## Origin of the issue Since 19.0, we want to replace static rendering with embedded components everywhere for rendering attachments, but this creates issues for the rendering of the overview in the chatter. Therefore, after internal discussion, we agreed to keep rendering overviews statically. opw-5356016 Forward-Port-Of: odoo/odoo#240114
This update corrects a visual issue in the Enterprise module's Gantt chart where the hours view would overlap when work entries were activated in 'sparse mode'. This ensures a cleaner and more functional user experience for managing work entries and project timelines. It's a minor improvement focused on usability.
Original PR description
When the work entry is activated in sparse mode prevent the hours view from overlapping. task-5410789 Forward-Port-Of: odoo/enterprise#101939
This update fixes an issue where time off allocations were incorrectly displayed as showing zero remaining days, even when leaves were allocated. The fix resolves a context issue within the Odoo system that prevented accurate calculation of remaining leave balances, ensuring correct display of allocated time off.
Original PR description
Bug: - Create a new employee (also reproducible with existing employees) - Create a Paid Time Off allocation that becomes available in the future - Create a Time Off request for this employee at a…
Bug:
- Create a new employee (also reproducible with existing employees)
- Create a Paid Time Off allocation that becomes available in the future
- Create a Time Off request for this employee at a future date
- When selecting the Time Off type, it shows “0 remaining out of 0 days” even though leave has been allocated
Reason:
In `_compute_display_name`, the record is accessed using `self.sudo().` Switching to superuser triggers `_compute_leaves`, but the context is lost and therefore the `target_date` is lost as well.
In `get_allocation_data`, because target_date is False, it is replaced with today’s date. This causes `max_leaves` and `virtual_remaining_leaves` to be computed as of today instead of the intended future date.
Fix:
Remove the `sudo() `and use the current user context instead.
-------------------------------------------------------------------------------
Test fix: `test_allocation_dropdown_after_period`
Bug:
After removing `sudo() `from `_compute_display_name`, the test fails and shows “0 remaining out of 0” instead of “9 remaining out of 9”.
Reason:
The test user (Admin) did not have the employee’s company in their allowed companies.
The `name_search` method triggers `_compute_display_name`, which triggers the computation of virtual_remaining_leaves.
Before the fix, `_compute_display_name` used `sudo()`, which propagated superuser privileges down to `_compute_leaves` and `get_allocation_data`. This masked the fact that the test user did not have access to the employee’s company (multi-company rule).
After removing `sudo(),` the user no longer had access to the allocation when running `name_search`, causing the test to fail.
Fix:
Add the employee’s company to the user’s company_ids. This allows allocations and `name_search` to work correctly without using `sudo().`
-----------------------------------------------------------------------
Known limitation:
When booking time off from the employee calendar view, the default value of `holiday_status_id` in the Time Off request widget still calculates remaining days based on today’s date instead of date_from.
To avoid confusion, the display name does not include “(x days remaining out of y days)” in this context.
However, when opening the selection dropdown, the display name is correct and uses the proper date-based calculation.
Forward-Port-Of: odoo/odoo#241448This update resolves an issue where deleting a linked payroll rule section would render the associated rule unusable. The change prevents deletion of sections connected to active payroll rules, ensuring rules remain functional and editable. This improves data integrity and reduces potential disruptions to payroll processing.
Original PR description
### Steps to Reproduce 1. Create a Salary Rule Section. 2. Link it to a Salary Rule and add it to a contract or payslip. 3. Delete the Rule Section. 4. Go back to the Salary Rule. 5. The section field is invalid/readonly, making it impossible to assign a new section or fix the rule. ### Reason Deleting a section linked to a Salary Rule breaks the link without clearing it, leaving the rule in a broken, unusable state. ### Solution Prevent the deletion of Salary Rule Sections if they are linked to a Rule that is actively used as an input in a contract or payslip. Task: 5390387 Forward-Port-Of: odoo/enterprise#103375 Forward-Port-Of: odoo/enterprise#102222
This update fixes an issue where the chat bubble message previews appeared too light in dark mode, impacting readability. The change reverts to a darker background style, enhancing accessibility and the visibility of key elements like the close button. This ensures a better user experience for all users, especially those using the dark theme.
Original PR description
In dark theme, the chat bubble message previews have dark background for improved readability of text. The chat hub hidden menu was intended to use same color scheme, but this was mistakenly removed from style improvements to discuss. The default style of popover is too light in dark theme. This commit reverts to style before 19.0, using darker background. This improves accessibility of item selection and the "x" button. Before / After <img width="278" height="405" alt="Screenshot 2026-01-05 at 18 05 18" src="https://github.com/user-attachments/assets/d764adbf-5378-4d59-870d-baf159920898" /> <img width="288" height="410" alt="Screenshot 2026-01-05 at 18 31 03" src="https://github.com/user-attachments/assets/142605cf-fab6-499d-95fa-71fcbb7ec36a" /> Forward-Port-Of: odoo/odoo#242157 Forward-Port-Of: odoo/odoo#242094
This update prevents Odoo from creating duplicate bank accounts during the bank reconciliation process. Specifically, it avoids creating a new account if the same account number is already used by another active partner. This reduces confusion and simplifies bank statement management.
Original PR description
When using the bank reconciliation widget, avoid creating a new bank account on the selected partner if the same account number already exists on another active partner. This change is intentionally limited to the reconciliation flow only, to reduce noise caused by duplicate bank accounts, and does not affect other partner or bank account creation use cases. task- 5236503 Forward-Port-Of: odoo/odoo#242459 Forward-Port-Of: odoo/odoo#234531
This update corrects an issue with how invoices are formatted for electronic delivery to ECPay in Taiwan. The change removes the company name from the EDI address and formats the address as a single, comma-separated line, ensuring compliance with ECPay requirements. This ensures accurate invoice transmission and avoids potential delivery problems.
Original PR description
In this commit: --- Update EDI address formatting to remove the company name and send a comma-separated single-line address. task-5410619 Forward-Port-Of: odoo/odoo#242287 Forward-Port-Of: odoo/odoo#241108
This update fixes a limitation in the HTML editor where code blocks with syntax highlighting couldn't be easily converted back to regular paragraphs. A new button has been added to allow users to seamlessly switch between highlighted code and standard text, improving the overall note editing experience. This ensures users can format their code effectively without workarounds.
Original PR description
When syntax highlighting is activated on code blocks, neither the powerbox nor the toolbar is available inside the block, making it impossible to convert it back into a paragraph. This commit adds a button to convert such code blocks back into paragraphs. Steps to reproduce: - Go to a "To Do" note - Insert a code block with `/code` => There was no way to convert it back to a paragraph task-5241467 Forward-Port-Of: odoo/odoo#240692
This change corrects a technical issue in the Planning/Attendance Analysis report where a monetary widget was incorrectly applied to numeric fields. Removing this widget resolves a traceback error that occurred when selecting certain cost measures. This ensures the report functions correctly and provides accurate attendance cost data.
Original PR description
### Steps to reproduce: - Navigate to Planning > Reporting > Planning / Attendance Analysis - From measure select Attendance Cost or Cost Difference or Planned Cost - A traceback will pop up ### Cause: We are using widget monetary for the three fields in the view while their field type is float and there is no currency field defined in the model ### Fix: Remove the monetary widget from the view In master we will do something like this commit https://github.com/odoo/enterprise/pull/99059/commits/17f05bef0dad3e9645b6e0ed8df14d3308440812 opw-5438221 Forward-Port-Of: odoo/enterprise#103067
This update fixes a potential error in Odoo's push notifications that could occur when users manage their notification settings. Specifically, it addresses issues related to invalid push notification endpoints, particularly those using the `.invalid` TLD, ensuring more reliable device registration and disabling.
Original PR description
[FIX] mail: avoid error on service worker push subscription change Sometimes, the `pushsubscriptionchange` event is called without an `oldSubscription` defined, which can lead to an error occurring…
[FIX] mail: avoid error on service worker push subscription change Sometimes, the `pushsubscriptionchange` event is called without an `oldSubscription` defined, which can lead to an error occurring inside the service worker. Steps to reproduce: 1. Enable notification in Odoo. 2. Reset the permission in the Chrome interface 3. Re-enable the permission inside the discuss systray by clicking on the Odoobot message. => The pushsubscriptionchange is called without an oldSubscription [FIX] mail: ir_cron_web_push_notification are now more robust With a user having 5 registered devices for push notifications if a browser registers with an endpoint that has a wrong domain such as https://permanently-removed.invalid/fcm/send/XXXXXXXXXXXXX the cron job cannot resolve the invalid domain of the endpoint and ends up disabling it. [FIX] mail: push_to_end_point method to support .invalid TLD if a browser registers with an endpoint that has a TLD `.invalid` such as https://permanently-removed.invalid/fcm/send/XXXXXXXXXXXXX The TLD `.invalid`[1] is intended for use in online construction of domain names that are sure to be invalid and which it is obvious at a glance are invalid. The cron job cannot resolve the invalid domain of the endpoint and ends up disabling it. So we need to unregister a device with an endpoint with a `.invalid` TLD. [1]: https://datatracker.ietf.org/doc/html/rfc2606#section-2 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242428 Forward-Port-Of: odoo/odoo#240502
This update fixes a bug in the holiday pay calculation for Belgian employees. Previously, the system incorrectly skipped processing commission loss calculations when specific contract end conditions or public holidays were met. Now, the system correctly handles these scenarios, ensuring accurate commission loss deductions.
Original PR description
When we enter in the conditions regarding the the end of a contract and the public holidays, it return and does not enter in the part of the code that handle the loss of commission on public holidays. So instead of returning the res, we just continue to the next condition. Forward-Port-Of: odoo/enterprise#103352 Forward-Port-Of: odoo/enterprise#102963
This update fixes an issue where discount values were calculated incorrectly when using promotion programs on products with tax included. The fix ensures that discounts are accurately applied based on the product's full price, including tax, leading to more reliable pricing in the Point of Sale system. This improves the accuracy of promotions and customer order totals.
Original PR description
When using a promotion program applied only on specific products with tax included prices, the discount value was incorrect. Steps to reproduce: ------------------- * Create a product with a price of…
When using a promotion program applied only on specific products with tax included prices, the discount value was incorrect. Steps to reproduce: ------------------- * Create a product with a price of 100$ and tax of 10% included * Create a promotion program with: - Apply on: Specific Products (the product created above) - Discount Type: $ Fixed Discount - Discount Value: 10$ * Open PoS and add the product to the order * Apply the promotion code > Observation: The value of the discount is 9.09$ instead of 10$ The same steps also applies to the discount reward applied on the whole order. Why the fix: ------------ When computing the discountable amount for the promotion it would take the amount excluding tax instead of the base price. The base price should be the unit price of the product multiplied by the quantity. As it was before here : https://github.com/odoo/odoo/blob/8568baa35c9caa4c8cd3b1f5d737e1ecbec76434/addons/point_of_sale/static/src/app/models/pos_order_line.js#L470-L474 https://github.com/odoo/odoo/blob/8568baa35c9caa4c8cd3b1f5d737e1ecbec76434/addons/pos_loyalty/static/src/app/models/pos_order.js#L1112 To do so we modified the accounting helpers to provide this value instead of computing it manually. opw-[5260067](https://www.odoo.com/web#id=5260067&view_type=form&model=project.task) opw-[5242194](https://www.odoo.com/web#id=5242194&view_type=form&model=project.task) Forward-Port-Of: odoo/odoo#240289
This update corrects a visual inconsistency in Odoo's chatter messages. Previously, paragraphs added in the composer didn't maintain the same bottom margin when posted to the chat. This change ensures that messages displayed in the chatter match the formatting in the composer and sent emails, improving overall communication clarity.
Original PR description
Problem: When adding a paragraph in the composer and sending the message, the paragraph posted in the chatter has a `margin-bottom` of 0. Cause: Paragraphs in the chatter rendering override the default bottom margin, resulting in inconsistent spacing compared to the composer and the sent email. Solution: Update selector to only target the last `p`. Steps to reproduce: - Open the chatter composer. - Add a paragraph using "/Paragraph". - Add some text. - Send the message. - Observe that the message posted in the chatter has no bottom margin, unlike in the composer. opw-5378129 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240082
This update resolves an issue preventing users from selecting different test types when adding quality checks within the Shop Floor workflow. Previously, a field was restricted, limiting flexibility in quality control processes. This change ensures users can accurately define test types, improving the efficiency and accuracy of quality checks.
Original PR description
This commit fixes the problem where the `test_type_id` of the `quality_check` is readonly when adding a step in Shop Floor. Task-5404503 Forward-Port-Of: odoo/enterprise#103351 Forward-Port-Of: odoo/enterprise#102810
This update ensures that users are prevented from adding rental products to their cart when resources are unavailable during the selected time period. Previously, the system didn't check availability if the ‘website_sale_renting_stock’ module wasn’t installed. This change improves the rental booking experience by preventing incorrect order placements.
Original PR description
Before this commit, when the user goes to the webshop to take a rental service with rental service unavailable at a certain period, the system does not block the user when the resource is not available during 2 hours in the period chosen by the user. The reason is because the hours are not checked when website_sale_renting_stock is not installed. This commit moves the code checking the time of the rental period made in website_sale_renting_stock in website_sale_renting to be able to have that verification for rental service used with planning to make sure the system will prevent the user to add the product in his cart when the resource is unavailable. task-5123239 Forward-Port-Of: odoo/enterprise#102071 Forward-Port-Of: odoo/enterprise#96241
This update ensures that variant names are correctly displayed on POS orders when a combo product includes a variant option. Previously, the order didn't show the variant's name, which hindered accurate product selection. This fix resolves a technical issue related to how the POS system retrieves product information for combo orders.
Original PR description
In POS, if in a combo, one of option has instantly created variant it will not show the variant name in the order ### Steps to reproduce: * Create a product with instantly generated variants * Create…
In POS, if in a combo, one of option has instantly created variant it will not show the variant name in the order ### Steps to reproduce: * Create a product with instantly generated variants * Create a combo choice and add one of his variants * Create a combo product and add the combo * Open an store that sells this combo * Select the combo and choose the product with variant and confirm the selection Issue : On the left size in the order the variant name will not appear. ### Observation: When it tries to retrieve the attribute information for the variant https://github.com/odoo/odoo/blob/942b7a21d7e0eb15133f4af1b47e68f48dec70c7/addons/point_of_sale/static/src/app/services/pos_store.js#L1048 It is empty since during the call of computeComboItems the attribute was not retrieved for this scenario. https://github.com/odoo/odoo/blob/942b7a21d7e0eb15133f4af1b47e68f48dec70c7/addons/point_of_sale/static/src/app/models/utils/compute_combo_items.js#L31-L33 ------------ When adding a always variant to a combo they are considered like their own product, and attribute.extra_price should not be considered. The extra price for an always variant is setup in the combo with comboItem.extra_price like stand alone products. opw-5037355 Forward-Port-Of: odoo/odoo#239314 Forward-Port-Of: odoo/odoo#227176
This update corrects a problem where new applicant offers weren't automatically using the correct sign template. The fix ensures that the salary configurator is accessible when an offer is created from a partially signed application, preventing delays in the hiring process. This improvement streamlines the offer creation workflow for recruiters.
Original PR description
steps to reproduce: - an applicant have signed with a company car + a car to order - go to Recruitment < Offers < Partially signed < Find the applicant - click on Contract Details to access the version - create a new offer through the smart button - the offer doesn't have a sign template so the salary configurator is not accessible Fix: use `sign_template_id` instead of `contract_update_template_id` as the sign template of the offer if the version is not active (because it is created from an offer which is half signed and it's basically a new offer not an offer for contract update) task-id: 5401539 Forward-Port-Of: odoo/enterprise#103371 Forward-Port-Of: odoo/enterprise#101724
This update corrects a bug where reimbursement amounts for public/train transport benefits didn't reset to zero when the option was unchecked in the salary configurator. The fix ensures that the amount field automatically resets to zero when the benefit is removed, improving data accuracy and simplifying salary management.
Original PR description
Issue: public and train transport reimbursed amounts not reseting after unchecking them Steps to reproduce: - open salary configurator - check public(train) transportation - change the value in the input field - uncheck public(train) transportation - the value for the reimbursed amount doesn't reset to 0 Fix: - made the value reset for public and train transport to 0 in the ui of the configurator - made the employee amount reset to 0 in the employee form if the benefit is unchecked task-id: 5386766 Forward-Port-Of: odoo/enterprise#103374 Forward-Port-Of: odoo/enterprise#101592
This update resolves an issue where arrow keys didn't function properly when adjusting range values (like intensity) in certain Odoo features. The fix replaces a flawed conversion method with one that correctly handles fractional numbers, ensuring accurate control over these settings. This improves usability for users adjusting scroll effects and other range-based parameters.
Original PR description
**Problem** Arrow-keys don't work properly on `BuilderRange` if the `step` value is fractional. **How to reproduce** The problem is present on every `BuilderRange` having fractional `step`. For example: snippet `s_parallax` -> set "Scroll Effect" to "Parallax to Top" -> "Intensity" range. **Why the problem happens** The method `BuilderRange.onKeydown` retrieves the range value as a string, converts it to a number using `parseInt`, and then adds or subtracts the step value. Of course, `parseInt` is inappropriate when the value is expected to be fractional. **Fix** `parseInt` has been replaced by `parseFloat`. task-5405036 Forward-Port-Of: odoo/odoo#241141 Forward-Port-Of: odoo/odoo#239428
This update resolves an issue where users couldn't answer incoming calls when opening modals like email or SMS wizards. The fix adjusts the software's layering to ensure the softphone is always visible and clickable when a call is active. This improves the user experience by allowing immediate call handling.
Original PR description
If you get a call when opening any modal/composer like email/sms wizard, you won't be able to pick up the call as the softphone is not clickable. This is because the z-index of the softphone is less than the modal. This commit fixes that issue by making the softphone above modals only if there is a pending call. [Task-4018118](https://www.odoo.com/odoo/project.task/4018118) Forward-Port-Of: odoo/enterprise#103417 Forward-Port-Of: odoo/enterprise#103072
This update ensures that IoT Box records are correctly updated during upgrades from older Odoo versions. Specifically, the IoT Box now needs to provide its MAC address alongside its serial number, allowing the system to transition from using the MAC address to the serial number as the primary identifier in the database. This resolves an issue impacting data consistency.
Original PR description
When upgrading from <v19.0 to v19.0+, the IoT Box needs to provide its mac address along with its serial number in order for the IoT Box record in the db updates the identifier from mac to serial no. see odoo/enterprise#103331 Forward-Port-Of: odoo/odoo#242356 Forward-Port-Of: odoo/odoo#242212
This update fixes an issue where the IoT Box identifier wasn't correctly updated after a database upgrade. Previously, the identifier was based on the device's MAC address, but now it uses the serial number, ensuring accurate tracking of IoT Boxes. This improves data consistency and reliability.
Original PR description
After upgrading a db, the IoT Box updates. Before v19.0, the IoT identifier was its mac address, after it's the serial number. We now search boxes idenfied by both mac address or serial number and update accordingly. see odoo/odoo#242212 Forward-Port-Of: odoo/enterprise#103398 Forward-Port-Of: odoo/enterprise#103331
This update fixes an issue where combo line prices were incorrectly set to 'automatic' after certain actions. Now, combo line price types will retain their original setting, ensuring accurate price updates during sales and order processing. This improves the reliability of point-of-sale pricing.
Original PR description
After commit https://github.com/odoo/odoo/commit/69057e41fb4cd800d23401ead8ae11bf7cba7c64, the price type of combo lines was changed to 'automatic' when creating the combo line. This caused the set pricelist logic to update the price of combo lines with automatic price type, which conflicts with the intended behavior. This commit ensures that the price type of combo lines is preserved as original in cases where we want to update the price, and only set to automatic in cases like loading a sale order or refunding an order. opw-5240429 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241737 Forward-Port-Of: odoo/odoo#234575
This update ensures that the 'Create on Order' field is now visible when a product is designated for rental within Odoo. Previously, this field was hidden for rental products, which created a usability issue. This change simplifies the process for users managing rental products.
Original PR description
Currently, the "Create on order" field is not visible when a product is just to rent. This commit ensures that it is visible in such a case. Enterprise PR: https://github.com/odoo/enterprise/pull/103255 Upgrade PR: https://github.com/odoo/upgrade/pull/9214 task-4886404
This update optimizes how grouped lists and kanban views retrieve data, reducing unnecessary data transfer. Previously, the system sent data even when a user simply navigated between views, impacting performance and potentially causing issues with the offline feature. Now, opening information is only sent when a user actively interacts with a group, improving efficiency and reliability.
Original PR description
Grouped list and kanban views perform a web_read_group call to fetch their data. This call returns the groups, and if some groups are opened, the records (or groups if grouped by several fields)…
Grouped list and kanban views perform a web_read_group call to fetch their data. This call returns the groups, and if some groups are opened, the records (or groups if grouped by several fields) inside those groups. For subsequent loads (e.g. after opening a record in form view and coming back), an `opening_info` param is provided to web_read_group, for the python to know which groups are opened, and what is the limit/offset inside opened groups, to return the correct data to display inside opened groups. This didn't map very well with the cache system, which simply uses the the stringified version of rpc params as cache key. As a consequence, from a grouped kanban view, clicking on a record to open it in form view and coming back wouldn't benefit from the cache, because the web_read_group params were different. Whether this isn't really an issue with the cache, because it's only a matter of speeding up the navigation, it's more problematic for the offline feature, as the view would simply not be accessible again, even though we just left it. This commit thus fixes the issue by only sending opening_info when it is necessary, that is, when the user opened/closed a group or used the pager inside a group. If he didn't do any of that, there's no point providing opening_info, as the server already knows which groups are opened and which aren't. Task~5473450 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update optimizes the account accounting module by preventing unnecessary transmission of opening information. This change improves system performance and reduces data transfer, leading to faster processing times. It aligns with efforts to streamline Odoo's efficiency.
Original PR description
This commit is the enterprise counterpart of odoo/odoo#242493 Task~5473450
This update fixes a bug where the 'Space' key wasn't functioning correctly on the 'Edit' and 'Trash' buttons within Odoo's Kanban quick create records. Now, users can utilize the 'Space' key (and 'Shift+Space') to perform these actions, improving usability and efficiency.
Original PR description
In kanban's quick create record, the 'Space' key is not working on 'Edit' and 'Trash' buttons as earlier versions. After this commit 'Space' key will work as expected. Task-5319051 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239478
This update resolves an issue where the 'View Reactions' button in the customer portal was causing errors when clicked. Now, users can reliably access and view reactions associated with messages, improving the overall customer experience.
Original PR description
Before this PR: - Clicking the 'View Reactions' button from the message right-click menu was throwing an error. After this PR: - Clicking the 'View Reactions' button from the message right-click menu now opens the reactions list correctly without errors. task-5449199 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242025
This update fixes a bug that caused confusing error messages when using QWeb with `etree` nodes. Now, error messages include surrounding code snippets, providing immediate context and making it much easier for developers to quickly identify and resolve QWeb issues.
Original PR description
This PR fixes the error logging when QWeb is used with an `etree` node instead of a standard xmlid or id, to display the path of the directives (xml node) crossed. I have also improved the logging output when running with `--dev=qweb`: the error message now includes the generated code snippet surrounding the line that caused the error. This should make debugging much more intuitive by providing immediate context for the failure. Forward-Port-Of: odoo/odoo#242251
This update resolves an issue where UI tours were failing to display the product column on invoices and bills. The change makes the column visible by default within the tours, ensuring they function as intended. This improves the user experience for training and onboarding.
Original PR description
Commit 9c8e012 changed the visibility of the product column on invoices and bills. This caused several tours to fail as they expected the column to be visible by default. This commit fixes the failures by explicitly toggling the column visibility within the affected tours when required. runbot-234710 runbot-234871 runbot-234872 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242247
This update resolves a technical issue that was causing duplicate test runs due to how data was being pre-fetched. The fix ensures tests run correctly and reliably, improving the stability of the base Odoo system. This change doesn't impact users directly but contributes to a more robust and dependable platform.
Original PR description
Forward-Port-Of: odoo/odoo#242574
This update fixes a recurring test failure in the MRP planning module. The change creates the planning leave manually instead of calculating it, making the test more reliable and consistent. This improves the overall stability of the MRP system.
Original PR description
Before this commit: Introduced in https://github.com/odoo/odoo/commit/d06dcfbca96273b540c87252b9188603879ac1b4, the test was failing on runbot in some cases. The issue is deterministic, but requires a specific set of modules installed to fail. After this commit: Use a more robust approach in the test, by creating the leave manually instead of computing the number of operations needed. runbot-234638 Forward-Port-Of: odoo/odoo#242067 Forward-Port-Of: odoo/odoo#239717
This update resolves a previous issue where cash basis reporting tests were not running during the automated build process, leading to undetected errors. By adding a specific test trigger, we now guarantee that these reports are thoroughly tested before being merged, preventing future problems and ensuring data accuracy.
Original PR description
The account_reports_cash_basis module was previously blacklisted on Runbot, causing its test suite to be bypassed during CI. Consequently, several regressions remained undetected (notably Runbot error 234873). This commit adds the `post_install_l10n` tag to ensure tests are executed prior to merging, preventing future regressions in this module. -------------------------------------------------------------- A previous change (see https://github.com/odoo/enterprise/commit/eba96e1f976b953fb8056249ea494e8f06e3c668) modified the reporting logic for Unaffected Earnings. Some cash basis test scenarios were not updated in the initial PR, leading to assertion failures. This commit updates the expected test values to match the current reporting format. runbot-234873 Forward-Port-Of: odoo/enterprise#103462
This update resolves a redundant permission check within the voip_crm module. Previously, the system was unnecessarily verifying user group membership, which has now been simplified to only check for the necessary 'group_sale_salesman' role. This improves system efficiency and security.
Original PR description
`group_sale_manager` implies `group_sale_salesman`[1] [2]. Just checking `group_sale_salesman` is enough. [1]: https://github.com/odoo/odoo/blob/54681272e9f00a171fe49f690979e2a8353ff5fb/addons/sales_team/security/sales_team_security.xml#L25-L33 [2]: https://github.com/odoo/odoo/blob/54681272e9f00a171fe49f690979e2a8353ff5fb/addons/sales_team/security/sales_team_security.xml#L17-L23i Task-5461729 Forward-Port-Of: odoo/enterprise#103537 Forward-Port-Of: odoo/enterprise#103378
This update resolves an issue where credit notes with allowances issued more than 6 days after the original invoice would fail to process through ECpay. The fix removes the outdated 'AllowanceDate' parameter and ensures 'InvoiceRemark' is only populated when a customer reference is provided, aligning the process with standard ECpay invoice generation.
Original PR description
**AllowanceDate**: l10n_tw_edi_ecpay has an issue on Credit Notes (Allowances). When we `_l10n_tw_edi_generate_issue_allowance_json()`, we send the `l10n_tw_edi_invoice_create_date` which is was set…
**AllowanceDate**:
l10n_tw_edi_ecpay has an issue on Credit Notes (Allowances).
When we `_l10n_tw_edi_generate_issue_allowance_json()`, we send the
`l10n_tw_edi_invoice_create_date` which is was set to the associated
invoices creation date, and not the Allowance's creation date.
This creates a potential issue where allowances issued more than 6 days
after the original invoice would bounce back from ECpay with errors.
To be consistent with invoices send to ECPay, we do not send the
`AllowanceDate` parameter at all
Manual Testing/Verification:
1. Create an invoice that has a `l10n_tw_edi_invoice_create_date`,
visible in the Invoice's ECPay tab more than 6 days ago. (Requires
sending to ECPay via the custom wizard via the "Send" button)
2. Create a credit note from the invoice and send to ECPay.
3a. Before this, see that an error would appear.
3b. Now, there would be no error
*InvoiceRemark*:
When Customer Reference `ref` is not set, the code sets the parameter
value as `False`, displaying it's string on the e-invoice and official
printout. We only set the parameter if there exists the `ref` now,
eliminating the issue.
Tests:
1. (both cases) undo the `account_move.py` changes and run the tests.
task-[5455847](https://www.odoo.com/odoo/project/967/tasks/5455847)
---
# New test failed output
<img width="1458" height="353" alt="image" src="https://github.com/user-attachments/assets/77df8e51-5005-4d99-985c-71757c0f62a6" />
```bash
07:47:53,055 ERROR l10n_tw_edi_ecpay-demo-vy2vd3s0 odoo.addons.l10n_tw_edi_ecpay.tests.test_edi: FAIL: L10nTWITestEdi.test_01_can_generate_file
Traceback (most recent call last):
File "/home/odoo/odev/worktrees/18.0-l10n_tw_edi_ecpay-fix-allowance-date-erle/odoo/addons/l10n_tw_edi_ecpay/tests/test_edi.py", line 61, in test_01_can_generate_file
self.assertIsInstance(json_data["InvoiceRemark"], str)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: False is not an instance of <class 'str'>
07:48:02,516 ERROR l10n_tw_edi_ecpay-demo-vy2vd3s0 odoo.addons.l10n_tw_edi_ecpay.tests.test_edi: FAIL: L10nTWITestEdi.test_13_b2b_refund_upload_deadline_restriction
Traceback (most recent call last):
File "/home/odoo/odev/virtualenvs/18.0/lib/python3.13/site-packages/freezegun/api.py", line 885, in wrapper
result = func(*args, **kwargs)
File "/home/odoo/odev/worktrees/18.0-l10n_tw_edi_ecpay-fix-allowance-date-erle/odoo/addons/l10n_tw_edi_ecpay/tests/test_edi.py", line 430, in test_13_b2b_refund_upload_deadline_restriction
self.assertNotIn("AllowanceDate", json_data,
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"B2B Allowances should not include AllowanceDate to avoid >6 day limit errors."
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
AssertionError: 'AllowanceDate' unexpectedly found in {'MerchantID': '1234', 'Details': [{'OriginalInvoiceNumber': 'AB11100099', 'OriginalInvoiceDate': '2025-01-06', 'OriginalSequenceNumber': 0, 'ItemName':
'product_a', 'ItemCount': 1.0, 'ItemPrice': 1000.0, 'ItemAmount': 1000.0}], 'TotalAmount': 1000.0, 'TaxAmount': 50.0, 'CustomerEmail': 'partner_b@tsointsoin', 'AllowanceDate': '2025-01-06 15:00:00'} : B2B
Allowances should not include AllowanceDate to avoid >6 day limit errors.
```
---
Things to think about:
- FWP
- [ ] 19.0
- [ ] master
Forward-Port-Of: odoo/odoo#241973This update fixes an issue where the item name sent to the SInvoice system was incomplete, missing descriptions or failing to include product details. The change ensures that all line item information, including descriptions and default units, are correctly transmitted, improving data accuracy for invoicing.
Original PR description
Currently, the item name in the data sent to the SInvoice system is comprised only of the product name on the line. This brings a few issues that should be corrected: - Any description set on the line on top of the product won't be sent - If there is no product, the required item name will be set to False - If there is no product, the required unit name will be set to False too To fix these issues, we will: - Use the line name directly and not the product name and; - Default to 'Units' for the unit name in all cases where it wouldn't be set. task-5438691 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241503
This update fixes an issue where Verifactu invoices generated from Point of Sale (PoS) orders were incorrectly using 'F1' instead of 'F3' invoice types. The change ensures that when a simplified PoS order is fully invoiced, the Verifactu document accurately reflects the correct 'F3' invoice type, aligning with Spanish tax regulations. This ensures accurate reporting and compliance.
Original PR description
To reproduce ------------- 1. Install `l10n_es_edi_verifactu_pos`, and select the ES company 2. Make an order in PoS with a price less than 400, and don't invoice it. 3. Close the PoS session, then…
To reproduce ------------- 1. Install `l10n_es_edi_verifactu_pos`, and select the ES company 2. Make an order in PoS with a price less than 400, and don't invoice it. 3. Close the PoS session, then go to PoS > Orders, and select the previously made order 4. It will have a Verifactu generated document with invoice type as 'F2', which is correct since it's a simplified order. 5. Click invoice to invoice the order; the invoice is no longer simplified. Notice now that the new Verifactu document has an invoice type of 'F1', which corresponds to a normal non simplified invoice. However, since the new invoice is replacing an old simplified one, it should be of type 'F3' instead. The fix ------- We add a new field on the `pos.order` model to retain if that order was previously invoiced with a simplified invoice, in that case, we set its type to 'F3' instead of 'F1' when fully invoicing it. Sources: -------- Difference between 'F1', 'F2', and 'F3' invoice types: https://sede.agenciatributaria.gob.es/Sede/iva/sistemas-informaticos-facturacion-verifactu/preguntas-frecuentes/procedimientos-facturacion.html?faqId=bdbd20022fe06910VgnVCM100000dc381e0aRCRD opw-5343973
This update fixes an issue where customers couldn't directly edit their bank account BIC codes within the ASPOne VAT report wizard. The change allows users to now modify this critical field, ensuring accurate bank information is submitted for VAT reporting. This improves data accuracy and simplifies the reporting process.
Original PR description
Since this commit [[1]], it's no longer possible for a customer to edit the BIC code of his bank account directly in the ASPOne declaration wizard. This commit changes the readonly default value of a related field for False to allow users to edit the field. no task id [1]: https://github.com/odoo/enterprise/commit/a78e85496fbb199e0a64dd12037b021dbcc89f8c
This update fixes an issue where URLs containing commas were not correctly recognized in email content. Now, URLs with commas, like those used for tagging, will be properly identified and handled. This ensures accurate link tracking and display in emails.
Original PR description
Currently a valid url like: `https://www.odoo.com/1,2,3/test` Will only be matched up to the first comma: `https://www.odoo.com/1` As we use commas quite often for tag urls, they should be supported. Additionally one should be able to write: "For more info, go to `https://www.odoo.com/`." without the url containing a random dot. We can assume commas and dots should only be matched if they're not followed by spaces or the end of the line. task-4876650
This update corrects a minor issue in the Web Studio module where the input type for a property was incorrectly defined as 'string'. The change simplifies the configuration by reverting to the default 'text' type and removing an unused class. This ensures consistent behavior and improves the overall stability of the Web Studio interface.
Original PR description
Before this commit, the input type was set to `string` instead of `text`. Since the default type is `text`, we simply removed this line. We also removed the class, as it seems to be unused.
This update resolves an issue where the pivot table export feature would fail when no data was provided. The system now returns a standard error message (422) to indicate invalid data, ensuring a smoother user experience and preventing unexpected errors during export operations.
Original PR description
Currently an exception is generated when controlled `/web/pivot/export_xlsx' tries to export xlsx with empty data. `KeyError: 'title'` This PR resolves the issue by raising an `UnprocessableEntity` exception when empty data is provided. The resulting 422 response indicates that the server understood the request and its syntax, but cannot process it because the data is invalid. sentry-6321555617 Forward-Port-Of: odoo/odoo#242511 Forward-Port-Of: odoo/odoo#241415
This update resolves an issue where users without administrator permissions encountered errors when opening duplicated reports within the Studio feature. The fix prevents a traceback by ensuring the system handles permission errors gracefully, improving the user experience for all users.
Original PR description
When a user opens a duplicated report in Studio after their administrator rights are removed, a traceback is raised. Steps to reproduce the error: - Install ``account`` and ``web_studio`` - Login as…
When a user opens a duplicated report in Studio after their administrator rights are removed, a traceback is raised. Steps to reproduce the error: - Install ``account`` and ``web_studio`` - Login as Mitchell Admin > grant Administrator and Invoicing Administrator rights to Mark Demo - Login as Mark Demo in incognito tab > Open invoices > Open studio > Reports > duplicate any report - Login as Mitchell Admin, remove administrator right of Marc Demo - In Mark Demo, Open the duplicated report Traceback: ```py UnboundLocalError: cannot access local variable 'studio_view' where it is not associated with a value ``` https://github.com/odoo/enterprise/blob/58dc97cb5a7185dc2acd801bb3af0e6c35add0b6/web_studio/controllers/report.py#L379 The bug occurs because ``_get_and_write_studio_view()`` method performs a search on ``ir.ui.view`` before returning ``studio_view``. For users without the required permissions, this ``search()`` raises an AccessError. https://github.com/odoo/enterprise/blob/58dc97cb5a7185dc2acd801bb3af0e6c35add0b6/web_studio/controllers/report.py#L393-L400 Since this exception is raised before the assignment completes, the local variable ``studio_view`` is never bound. However, the finally block of ``deactivate_studio_view`` is always executed and attempts to access ``studio_view.active``, resulting in an ``UnboundLocalError``. sentry-7149350379 Forward-Port-Of: odoo/enterprise#103017
This update simplifies vendor bill emails by removing the unnecessary 'Preview on Portal' button, which previously caused issues with the portal payment process. Additionally, a minor UI adjustment was made to improve the visibility of the input field for email notifications. This ensures vendor bills contain the original PDF and streamlines the email experience.
Original PR description
Vendor bill emails are meant to include the vendor’s original PDF rather than an Odoo-generated invoice. The "Preview on Portal" button was hidden to avoid facing errors in the portal payment page. Additionally, remove the CopyClipboardChar widget from the "incoming_einvoice_notification_email" field to make the input placeholder visible. task-5438315 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a visual bug where long date ranges in task planning caused the Kanban card layout to break. The fix ensures the date range widget stays within the card boundaries, maintaining a clean and consistent user interface. This improves the overall usability of the Field Service module.
Original PR description
Steps to reproduce: ---------------------------- 1. Install Field Service module 2. Open any task from Field service module 3. In the Planned date field set a wide range spanning years, for example:…
Steps to reproduce: ---------------------------- 1. Install Field Service module 2. Open any task from Field service module 3. In the Planned date field set a wide range spanning years, for example: Dec 16, 2024, 1:30 PM → Oct 13, 2026, 6:00 PM. 4. Go back to kanban view 5. Adjust display to around 360 px Observation: ---------------------------- The planned date daterange widget overflows and extends outside the kanban card, breaking the card layout and visual containment. Issue: ---------------------------- The daterange widget's parent container did not enforce a width, so the widget could grow beyond the kanban card boundary when a long date range was used. Solution: ---------------------------- Add the w-100 class to the daterange container div to enforce full-width layout within the kanban card. Before: <img width="584" height="529" alt="before_css" src="https://github.com/user-attachments/assets/e89302b0-975c-47eb-91ec-89dbfe813493" /> After: <img width="561" height="528" alt="after_css" src="https://github.com/user-attachments/assets/48b60a78-18da-4504-98ef-a9c4013b107b" /> opw-5219941 Forward-Port-Of: odoo/enterprise#102093
This update corrects a technical issue where duplicate keys were generated for report templates, potentially causing customization conflicts and data inconsistencies. The fix ensures unique keys across all report templates, improving the reliability and accuracy of report generation and preventing unexpected behavior.
Original PR description
Before this commit: ------------------------- The sequence used in the template key was computed based only on the last active template. If the next sequence number corresponded to an inactive…
Before this commit: ------------------------- The sequence used in the template key was computed based only on the last active template. If the next sequence number corresponded to an inactive template, the system could end up generating duplicate template keys — one for the inactive template and one for the newly created active template. After this commit: ----------------------- The sequence for the template key is now computed based on the last template, regardless of whether it is active or inactive. This ensures that template keys remain unique across all report templates. Why this commit: ----------------------- if a template is inactive, the report engine should raise an error. However, because duplicate template keys were being generated, the inactive template could silently fall back to the active template with the same key, preventing the expected exception and bringing customization of one report to another. Additionally, if the inactive template is later corrected and reactivated, both reports would still reference the same template (the one with the smaller ID) because they shared identical template keys. This fix prevents such conflicts by ensuring unique template key generation. Forward-Port-Of: odoo/enterprise#101894
This update resolves an issue where the Company Paid Time Off field in the Time Off settings was blank. The fix ensures that the 'l10n_fr_reference_leave_type' field is correctly populated in the demo data, preventing validation errors when creating new leave requests. This ensures accurate leave management.
Original PR description
**Steps to reproduce:** - Install l10n_fr_hr_holidays module. - Go to Time Off > Configuration > Settings. - Company Paid Time Off field should blank. - Employee `resource_calendar_id` is not same as company's. - Create new leave > a validation error will occur. **Cause:** - The demo data for 'res.company' did not correctly set the `l10n_fr_reference_leave_type` field. - 'l10n_fr_reference_leave_type' field should be required. **Fix:** - Updated demo record to correctly assign `l10n_fr_reference_leave_type` field. - Set the `l10n_fr_reference_leave_type` field as required. Task - 5139488 Forward-Port-Of: odoo/odoo#242390 Forward-Port-Of: odoo/odoo#231385
This update resolves a problem preventing correct installation of the 'accountant' module for several localized versions of Odoo (e.g., Mauritius). The issue stemmed from a missing configuration setting, which has now been added to ensure proper module setup and functionality across these localized environments.
Original PR description
Steps to reproduce: 1. Install 'accountant' 2. Create a new company without a country and switch to that company 3. Accounting > Configuration > Fiscal Localization 4. Select Mauritius and save Issue: It gives a traceback: KeyError: 'mu' Cause: 'auto_install' is not present in the manifest file. Solution: Add 'auto_install': ['account'] in the manifest as it is done in other localization modules. opw-5231064 Forward-Port-Of: odoo/odoo#240170 Forward-Port-Of: odoo/odoo#236207
This update fixes inconsistencies in the Point of Sale discount dialog and number popup appearance. The dialog title has been simplified for clarity, and the number popup styling has been standardized. Additionally, the width of the number pop-up dialogs has been adjusted to match previous versions, ensuring a consistent user experience.
Original PR description
Before this commit: =================== - The dialog title was `Discount Percentage`, even though the global discount can be applied either as a fixed amount or as a percentage. - The NumberPopup has double primary buttons (Type and Confirm buttons), which leads to an inconsistent UI - Also, since this commit https://github.com/odoo/odoo/commit/01741aa2619998078bd19aca848146ac75c027fc, the PoS NumberPopup dialogs have some extra width. After this commit: ================== - We renamed the dialog title to `Discount` to make it more generic. - We updated the NumberPopup type selector styling to make UI consistent. - Also reduced the width for the number pop-up dialogs, same as the previous version. Task: 5424805 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241074
This update fixes a cluttered appraisal form view when a large number of appraisal templates are used. The change simplifies the form by reverting to a standard, searchable dropdown, enhancing usability and reducing visual confusion for users.
Original PR description
Steps to reproduce: - Install the hr_appraisal module. - Open the form view of an appraisal when more than 100 appraisal templates exist. Issue: When the appraisal form view is opened with a large number of templates, the view becomes cluttered because all templates are displayed at once. Fix: This PR removes the widget and reverts to a standard related field with a searchable dropdown, improving readability and usability. task-5438146 Forward-Port-Of: odoo/enterprise#102866
This update fixes a potential confusion in the sales details report by ensuring payment order is consistent and predictable. The report now sorts by payment method and session, making it easier for users to understand sales transactions and improve reporting accuracy. This change enhances the reliability of sales data analysis.
Original PR description
Before this commit, payment order was not guaranteed and could confuse users reviewing sales details report, especially as the cash register lines are ordered before. This commit orders the results by payment method and session to make the output more readable. opw-5240864 Forward-Port-Of: odoo/odoo#242387 Forward-Port-Of: odoo/odoo#237040
This update improves the self-order experience by ensuring the order note input field maintains a consistent size across all devices, particularly in kiosk mode. Previously, resizing the text area could cause UI shifts, leading to a less reliable user experience. This change ensures a stable and predictable layout for self-ordering transactions.
Original PR description
In this commit - ------------- - Make the self order note textarea non-resizable and enforce a fixed size to avoid UI shifts in self/kiosk mode Task-5469804 Forward-Port-Of: odoo/odoo#242269
This update enhances the HTML editor's `/separator` command to split text blocks more intuitively, placing the separator at the cursor position instead of after the entire block. Additionally, a bug was fixed where the 'Toggle List' command created empty toggle blocks, now correctly using the existing line's content. This improves the overall user experience and consistency within the HTML editor.
Original PR description
When using the `/separator` command, the separator used to be added after the current block. In this commit this is changed towards a more intuitive behavior that splits the block at the current cursor position. task-5367766
This update resolves issues preventing actions from working correctly in the document activity view. The changes re-enable key features like sharing and selection, addressing previous bugs and inconsistencies. The activity view now functions as intended, providing a more reliable way to manage documents.
Original PR description
We have hidden the actions in the activity view for previous versions because they were not working well (see odoo/enterprise#86436). We re-enable them here after having fixed the following problems:…
We have hidden the actions in the activity view for previous versions because they were not working well (see odoo/enterprise#86436). We re-enable them here after having fixed the following problems: - the actions were not always related to the selected document in the detail panel - the selection was not working - only custom actions along with download and share actions were present - the selection box was absent - the search box was not hidden when a selection was active Note that we have decided to reset the selection when switching to the activity view because that view doesn't support multiple selection like other views and often the selected record in other view is not present in the activity view because the record doesn't have activities. Technical note: In the DOCUMENT_RELOAD event implementation, we remove await env.model.load(); and await env.model.notify(); because await env.searchModel._reloadSearchModel(true); already call them. This solves the problem of reloading in the activity view as the method load was called without the right parameters (which is not the case when called by _reloadSearchModel). To reproduce the problem, share a document in the activity view, an error happens in the console during the reload and if you click on share again, you get a second error and the share panel won't open anymore. Task-5089173
This update simplifies the process of displaying available registration slots on the website. Previously, slots were filtered repeatedly, leading to maintenance challenges. Now, slots are filtered once within the registration modal, improving code clarity and reducing the risk of errors.
Original PR description
* = event, event_booth, event_exhibitor, event_track, event_track_quiz This PR cleans this fix (https://github.com/odoo/odoo/pull/226635). The open slots were filtered in each route displaying the slots modal. However, this solution makes the code difficult to maintain as the slots must be added in the return of the new routes, which is easy to forget. A better solution is to filter the slots once and for all inside the slots modal. That solution was not doable in stable as it required the update of the XML records. Task-5083175
This update improves the HTML Editor by allowing users to cancel ongoing file uploads. Previously, uploads couldn't be stopped, leading to potential delays and frustration. A trash icon has been added to the upload progress notification, providing a simple way to interrupt the process.
Original PR description
Currently upload_service doesn't support cancel an ongoing upload. This PR aims to add a fa-trash button in upload progress toast. Clicking on it will cancel the ongoing upload for corresponding file. task-5262931 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a previous issue in the payroll calculation by ensuring the negative net amount is accurately tied to the payslip's net amount. Previously, a portion of the net would carry over to the next payslip. Now, the deduction is fully applied to the current payslip, providing a more precise and consistent payroll reporting process.
Original PR description
The negative net to report is now bounded to the net of the payslip. Ex: if the total net is 2000€ and the payslip net is 1800€, it will deduct 1800€ and 200€ will still need to be deducted on the next payslip. task-5106858
This update corrects a grammatical error in the action helper text for the Gift Cards & ewallets feature within the Odoo Sales module. The change ensures consistent and professional communication for users managing loyalty programs and gift card transactions. This improves the user experience and overall clarity.
Original PR description
Steps to produce: - Install `Sale` module without demo data. - From the settings, enable `Discounts, Loyalty & Gift Card`. - Go to `Sales > Products > Gift Cards & ewallets`. Observation: - Observed that the action helper text contained incorrect English grammar. Solution: - The changes were made according to the PO’s requirements. Before: <img width="400" height="400" alt="image" src="https://github.com/user-attachments/assets/ac4d2461-000e-4979-b956-5cf0cc24419d" /> After: <img width="400" height="400" alt="image" src="https://github.com/user-attachments/assets/ab41ed14-8933-493d-8803-b8834371bf9d" /> opw-4859713 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a technical issue that prevented the Enterprise POS list view from loading correctly when in debug mode. The fix addressed a mismatch in data types within the POS settings, ensuring the list view now functions without errors and improving overall system stability.
Original PR description
In this commit, --- - Removed the color option from the Stages field. - The color_field option only supports Integer fields, while the stage color field was of type Char. - This mismatch caused a traceback when opening the list view in debug mode. Fixing this ensures the list view loads correctly without errors. task-5446781 Forward-Port-Of: odoo/enterprise#103018
This update resolves an issue where images weren't appearing in email marketing campaigns. The fix ensures images are fully loaded before their dimensions are determined, preventing them from being rendered as invisible. This improves the visual quality of email campaigns and ensures recipients receive the intended content.
Original PR description
Problem: When sending an email marketing, some images are not visible in the received email. Cause: After 354b8f60dbabcfac690d90bf657592e1347e4f86, we clone the `editable`, append it to…
Problem: When sending an email marketing, some images are not visible in the received email. Cause: After 354b8f60dbabcfac690d90bf657592e1347e4f86, we clone the `editable`, append it to `processingContainer`, and call `toInline` on it. During `toInline`, images with the `.card-img-top` class are queried and their size is fixed using `getComputedStyle`. Because the editable is freshly cloned, images may not be loaded yet. Calling `getComputedStyle` on an unloaded image returns a height of `0`, which results in images being rendered as invisible. Solution: After cloning the editable, wait for all images inside it to finish loading before running `toInline`. This ensures `getComputedStyle` returns the correct dimensions. Steps to reproduce: - Open Email Marketing. - Add a Columns snippet with images. - Send the email. - Observe that the received email is missing some images. opw-5215534 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240530
Code cleanup and technical improvements
This update modernizes the Odoo codebase by incorporating recent Python typing improvements introduced in versions 3.11 and 3.12. These changes enhance code readability and maintainability, particularly in how data types are defined, ultimately contributing to a more robust and efficient system.
Original PR description
Description of the issue/feature this PR addresses: Various typing additions in python 3.11, 3.12 than can simplify some declarations. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update refactors how WhatsApp channel expiration dates are managed within Odoo Enterprise. Specifically, the date used to determine channel validity is now correctly integrated into the channel model. This ensures accurate channel management and prevents potential issues related to outdated channel access.
This update enhances the WhatsApp integration by utilizing a dedicated channel for managing contact threads. This change streamlines the process of viewing and interacting with conversations, leading to a more organized and efficient user experience within WhatsApp. It's a refinement of the existing WhatsApp functionality.
This update refactors how WhatsApp channels are managed within Odoo, specifically addressing a technical detail related to account identification. This change enhances the stability and efficiency of the WhatsApp integration, ensuring smoother communication flows for users. It's an internal technical update focused on improving the core functionality.
This update refactors how WhatsApp channels handle new messages, streamlining the process for users. Specifically, the automatic opening of a chat window when a new message arrives has been moved to the channel itself, enhancing efficiency and reducing potential conflicts. This change improves the overall WhatsApp experience within Odoo Enterprise.
Original PR description
PR community: https://github.com/odoo/odoo/pull/242275
This update refactors how new messages automatically open chat windows within Odoo channels. Previously, this feature was available across all chats, but now it's specifically tied to channel conversations. This change streamlines the chat experience and ensures new messages are linked to the relevant channel discussions.
Original PR description
PR enterprise: https://github.com/odoo/enterprise/pull/103360
This update refactors how important messages are tracked within WhatsApp channels. Previously, this information was scattered; now, it's consolidated within the channel itself, leading to a more organized and efficient system for managing channel activity. This change enhances the overall WhatsApp experience for users.
Original PR description
PR community: https://github.com/odoo/odoo/pull/242234
This update refactors how Odoo tracks important emails, moving the tracking to the Discuss channel. This change enhances email organization and reporting within Odoo, making it easier to manage and analyze email conversations related to customer interactions.
Original PR description
PR enterprise: https://github.com/odoo/enterprise/pull/103340
This update refactors how commands are executed within live chat channels. Moving command execution to the channel ensures commands are handled more efficiently and reliably, improving the overall chat experience. This change focuses on internal improvements to the Odoo platform.
This update refactors how the 'isDisplayed' flag is managed within Odoo's live chat and email channel systems. Moving this tracking to the channel itself improves data accuracy and consistency, ensuring more reliable channel status reporting. This change enhances the overall reliability of messaging functionality.