Daily updates from Odoo
Navigate
Branch
Friday, October 27, 2023
67 changes
41 changes
New functionality added to Odoo
The report editor now lets users add a dynamic table based on related records, such as order lines or linked entries. This makes it easier to build richer business reports without manually setting up repeated table rows, and related fixes improve field selection and undo/redo behavior while editing.
Original PR description
After this commit, there is a new command on the report editor (Dynamic table). A popover with only the x@many fields is shown and after the selection of the field, a table with a foreach is created. Inside of the foreach's row you can access to the sub field chosen previously.
Enhancements to existing features
This update improves the user experience around salary contract offers, simulation links, and related Belgian payroll screens. It should make HR processes smoother and easier to navigate for teams preparing or managing employee salary packages.
Original PR description
task-3561708
This update removes an outdated internal cleanup step from Odoo Studio because the related component no longer exists in the underlying platform. It helps keep Studio aligned with the main Odoo codebase and reduces the risk of maintenance issues, with no expected visible change for users.
Original PR description
This commit removes call to cleanDomFromBootstrap as it is removed in community. task id: 3439226
This change removes unused code from the self-order preparation display area, making the related restaurant order workflow easier to maintain. It should not change day-to-day behavior for users, but helps reduce future maintenance risk.
Original PR description
Remove useless code
SEPA Direct Debit and UPS website checkout now have their default payment methods set automatically. This helps ensure the right payment options are available without extra manual configuration, improving setup consistency for businesses.
Original PR description
task-3557315 See also: - https://github.com/odoo/odoo/pull/139641
Resolved issues and error corrections
The 360 feedback resend action no longer relies on private employee email information that some users cannot access. This prevents access errors and helps managers or authorized users resend appraisal feedback requests smoothly.
Original PR description
This commit fixes the feedback resend feature as it was trying to access the private email of the employee, causing access errors for non hr-users.
Swiss HR users without payroll permissions can now access employee records again. The children information field is only shown to payroll-authorized users, preventing access errors while keeping sensitive payroll-related data restricted.
Original PR description
Before this commit, a user for a swiss company having hr rights but no payroll rights wouldn't be able to access employees because of the `l10n_ch_children` o2m field on `l10n.ch.hr.employee.children` which is supposed to be only accessed by payroll officers. This commit adds a group to the field so that only the users with the correct access rights can see it.
This update improves dark mode colors, contrast, and form styling across several Odoo Enterprise apps so screens remain readable and consistent with the newer design. It fixes cases where buttons, backgrounds, labels, badges, and menus could become hard to see when users work in dark mode.
This update removes unnecessary logging and unused attributes from the marketing automation area. It is a small cleanup that helps keep the system tidier and reduces irrelevant technical noise without changing business workflows.
Original PR description
Remove unnecessary logs and attributes
This fix prevents an error when validating deliveries for inter-company sales and purchase flows that copy lot information. Businesses using synchronized sales and purchase orders can now complete delivery validation without being blocked by the popup error.
Original PR description
https://drive.google.com/file/d/1PPKX7S-FSb7NxF6XhWl-MxM7ZqnCEJMQ/view Steps to reproduce: * enable inter-company transactions * enable "Synchronize Sales and Purchase Order" in company B * enable "Copy Lots on Delivery Validation" in company B * create an SO from company A to company B with a single product, confirm * go to Delivery, click Validate Odoo will show an error popup: "AttributeError: 'stock.move' object has no attribute 'quantity_done'" The issue is caused by a recent refactoring in https://github.com/odoo/odoo/pull/137864
Fixes an issue that could cause the salary contract page to fail while loading. This helps HR users access contract salary information reliably without interruption.
The comparison filter in deferred accounting reports now keeps the styling needed to align the Apply button correctly. This restores a consistent layout with other reports and avoids a confusing visual issue for users.
Original PR description
Following 37798579dd5755f0e7f03e4f54782b0f632a3aaa, the class `filter_comparison` was missing because the div was replaced. Therefore some CSS was missing and the Apply button was misaligned. This is fixed by replacing the `<t>` element instead of the whole `<div>` **Before:**  **After (similar to other reports)** 
Several subscription sales issues were corrected, including portal payments, plan changes, and visibility of upsell or sales template options. These fixes make subscription management more reliable and reduce confusion for customers and sales teams.
Point of Sale session calculations now properly include canceled orders where required. This prevents incorrect Belgian fiscal and employee-related POS reports, improving reliability for compliance and operations.
Original PR description
pos*: pos_blackbox_be, pos_hr_l10n_be In this commit, we adapt the use of self.order_ids in pos_session overrides. Those overrides were not taken into account the canceled orders in this recordset leading to wrong computation for reports,... Community PR: odoo/odoo#139714
The automated rental product configuration checks were updated to match recent design changes. This helps keep quality checks reliable and prevents false failures during development, with no direct change for end users.
This update corrects issues in the rental sales stock flow so rental orders and warehouse movements behave more reliably. It helps reduce operational errors when managing rented products and validates the fixes with rental tests.
The Vendors menu has been updated to match the split of the Amounts to settle action into separate options. This prevents users from being sent to an overly broad reconciliation view and keeps the accounting reports aligned with the intended workflow.
Original PR description
Current behavior before PR: Currently, the "Amounts to settle" button in the "Vendors" drop-down menu opens a view showing all the account.move.line that are to be reconciled. Desired behavior after PR is merged: This commit is linked to a commit in community which splits the action responsible for this into two and therefore, the action should be renamed everywhere. Community:https://github.com/odoo/odoo/pull/139921 task-3572482
This fix ensures paid point-of-sale orders created while offline are sent to preparation displays once the system reconnects. It helps kitchen or preparation teams receive all relevant orders reliably, reducing missed orders and operational disruption.
Original PR description
Previously, when PoS was in offline mode, paid orders were not sent to preparation display due to poor error handling. Now, when the PoS is offline and reconnects, paid orders are sent to the preparation display via the create_from_ui function.
Portal users can now browse shop pages containing rental products without encountering an access error. This aligns their read access with public visitors, improving the rental shopping experience for logged-in customers.
Original PR description
Steps to reproduce: - Install website_sale_renting; - Log in as portal user; - Go to /shop on a page where there is a rental product; - Access error The error is raised because there is a missing access rule for portal user. As there is a read access to public user, we add it to portal user as well.
Miscellaneous changes
Following 37798579dd5755f0e7f03e4f54782b0f632a3aaa, the class `filter_comparison` was missing because the div was replaced. Therefore some CSS was missing and the Apply button was misaligned. This is fixed by replacing the `<t>` element instead of the whole `<div>` **Before:**  **After (similar to other reports)**  **After (similar to other reports)**  This is a backport of https://github.com/odoo/enterprise/pull/49633 Forward-Port-Of: odoo/enterprise#49717
Community: https://github.com/odoo/odoo/pull/139696 Forward-Port-Of: odoo/enterprise#49662 Forward-Port-Of: odoo/enterprise#49539
Original PR description
Community: https://github.com/odoo/odoo/pull/139696 Forward-Port-Of: odoo/enterprise#49662 Forward-Port-Of: odoo/enterprise#49539
Now the default external values are created with the negative sign, as the amount on the accounts is in credit. We need to add a minus in front to correct the amount. The relevant test was created for an `in_invoice`, which is why the default value was not tested correctly. Forward-Port-Of: odoo/enterprise#49575
Original PR description
Now the default external values are created with the negative sign, as the amount on the accounts is in credit. We need to add a minus in front to correct the amount. The relevant test was created for an `in_invoice`, which is why the default value was not tested correctly. Forward-Port-Of: odoo/enterprise#49575
By this commit, all portal chatters have a same style and title as `Communication history` [Related PR](https://github.com/odoo/odoo/pull/139735) Part of task #2828744 Forward-Port-Of: odoo/enterprise#49566
Original PR description
By this commit, all portal chatters have a same style and title as `Communication history` [Related PR](https://github.com/odoo/odoo/pull/139735) Part of task #2828744 Forward-Port-Of: odoo/enterprise#49566
When merging the models `knowledge.article` and `knowledge.article.template`, we unintentionally forgot to add a condition in the search domain of the article selection dialog to filter out the templates from the search results. As a result, the dialog currently lists both articles and templates. This commit will simply add the missing condition in the search domain to exclude the templates from the search results. Steps to reproduce the issue: 1. Open any view 2. Click on the cog icon in t
Original PR description
When merging the models `knowledge.article` and `knowledge.article.template`, we unintentionally forgot to add a condition in the search domain of the article selection dialog to filter out the templates from the search results. As a result, the dialog currently lists both articles and templates. This commit will simply add the missing condition in the search domain to exclude the templates from the search results. Steps to reproduce the issue: 1. Open any view 2. Click on the cog icon in the control panel 3. Click on the "Knowledge" section of the dropdown 4. Click on the button "Insert view in article" => The modal allowing the user to select an article displays the articles and the templates. TO BE: The modal should only display the articles and not the templates. Reference: https://github.com/odoo/enterprise/pull/48691 task-3571715 Forward-Port-Of: odoo/enterprise#49601
Forward-Port-Of: odoo/enterprise#49597
Original PR description
Forward-Port-Of: odoo/enterprise#49597
## Task Description Since the refactor/improvement of the domain selector, there is a failling test in the chart_side_panel_test. This PR updates this tests by making the same changes that have been done in other side panels tests (PIVOT and LIST). Forward-Port-Of: odoo/enterprise#49118
Original PR description
## Task Description Since the refactor/improvement of the domain selector, there is a failling test in the chart_side_panel_test. This PR updates this tests by making the same changes that have been done in other side panels tests (PIVOT and LIST). Forward-Port-Of: odoo/enterprise#49118
This is not useful anymore with companion pr odoo/odoo#131353 Forward-Port-Of: odoo/enterprise#47313
Original PR description
This is not useful anymore with companion pr odoo/odoo#131353 Forward-Port-Of: odoo/enterprise#47313
Community: https://github.com/odoo/odoo/pull/140002 Forward-Port-Of: odoo/enterprise#49687
Original PR description
Community: https://github.com/odoo/odoo/pull/140002 Forward-Port-Of: odoo/enterprise#49687
Steps to reproduce: ------------------- - create a product which create a project and a task; - create a sale order with this product; - on the created task, add value for "Planned Date"; - go to Project / All Tasks and use Gantt view; - apply a Group By using "Sale Order Item"; Issue: ------ A traceback occurs. Cause: ------ We are trying to group the records of `project.task` model according to the `allocated_hours` field. Unfortunately, this field does not exist. Solution:
Original PR description
Steps to reproduce: ------------------- - create a product which create a project and a task; - create a sale order with this product; - on the created task, add value for "Planned Date"; - go to Project / All Tasks and use Gantt view; - apply a Group By using "Sale Order Item"; Issue: ------ A traceback occurs. Cause: ------ We are trying to group the records of `project.task` model according to the `allocated_hours` field. Unfortunately, this field does not exist. Solution: --------- Use its equivalent field (`planned_hours`) as of version saas-16.2. opw-3491920 Forward-Port-Of: odoo/enterprise#49538 Forward-Port-Of: odoo/enterprise#49435
When sending the VAT report to the French government, some lines at 0 should not be included in the xml: * the line F9 (vat unit operations) can only be transmitted if the VAT unit is enabled. * the lines VAT import (A4, I1, I2, I3, I4, I5, I6) can only be transmitted for specific tax regimes. opw-3564148 Forward-Port-Of: odoo/enterprise#49476
Original PR description
When sending the VAT report to the French government, some lines at 0 should not be included in the xml: * the line F9 (vat unit operations) can only be transmitted if the VAT unit is enabled. * the lines VAT import (A4, I1, I2, I3, I4, I5, I6) can only be transmitted for specific tax regimes. opw-3564148 Forward-Port-Of: odoo/enterprise#49476
Steps: 1. Install the WhatsApp module. 2. Create one WhatsApp account. 3. Send a template message from the account to a recipient's number. 4. Reply to the message from the WhatsApp application. 5. A new channel will be created for this conversation. 6. After 24 hours, the channel will be blocked from sending messages from the channel 7. Now send another template to that user. when sending the new template it will post a message in the channel and that channel will be allowed to send mess
Original PR description
Steps: 1. Install the WhatsApp module. 2. Create one WhatsApp account. 3. Send a template message from the account to a recipient's number. 4. Reply to the message from the WhatsApp application. 5. A…
Steps: 1. Install the WhatsApp module. 2. Create one WhatsApp account. 3. Send a template message from the account to a recipient's number. 4. Reply to the message from the WhatsApp application. 5. A new channel will be created for this conversation. 6. After 24 hours, the channel will be blocked from sending messages from the channel 7. Now send another template to that user. when sending the new template it will post a message in the channel and that channel will be allowed to send messages. This working is wrong because it should work like a deactivate channel after 24 hours of the last message of the recipient, Problem: _compute_whatsapp_channel_valid_until method uses using _channel_last_message_ids method to retrieve the last message so, in this case, the last message will be the message that can be posted by any user but we want the recipient's last message. Solution: instead of using _channel_last_message_ids created a new method to retrieve the last message of the customer in the channel. Forward-Port-Of: odoo/enterprise#49590
Forward-Port-Of: odoo/enterprise#49630
Original PR description
Forward-Port-Of: odoo/enterprise#49630
This fix aims to remove an issue present in current Worldline interface and driver related to the way we work with strings between Python and C++. Currently, we are creating string buffers in Python (char *) and passing pointers to them (char **) to our C++ Worldline EasyCTEP library. Then inside our C++ code we copy a string inside that pointer (char **). This is a mistake which can easily lead to a buffer overflow, we need to copy strings inside the buffers and not pointers to them. task
Original PR description
This fix aims to remove an issue present in current Worldline interface and driver related to the way we work with strings between Python and C++. Currently, we are creating string buffers in Python (char *) and passing pointers to them (char **) to our C++ Worldline EasyCTEP library. Then inside our C++ code we copy a string inside that pointer (char **). This is a mistake which can easily lead to a buffer overflow, we need to copy strings inside the buffers and not pointers to them. task-3562527 Replaces the closed PR: [49242](https://github.com/odoo/enterprise/pull/49242) Forward-Port-Of: odoo/enterprise#49387
[FIX] sale_subscription: Sales smart button in customer's contact page is not updating upon creating subscription quote Steps to reproduce: 1- Install Contacts and Subscriptions modules 2- Check number of sales in a customer's contact page from the smart button 3- Create a new subscription quote for a customer 4- Go to the customer's contact page 5- Check the sales smart button which will remain the same number as step 2 Current behavior before PR: The sales smart button is not coun
Original PR description
[FIX] sale_subscription: Sales smart button in customer's contact page is not updating upon creating subscription quote Steps to reproduce: 1- Install Contacts and Subscriptions modules 2- Check number of sales in a customer's contact page from the smart button 3- Create a new subscription quote for a customer 4- Go to the customer's contact page 5- Check the sales smart button which will remain the same number as step 2 Current behavior before PR: The sales smart button is not counting subscription count while when click on it you will find the last of sales quotations along with the subscription quotations Desired behavior after PR is merged: The smart button now is counting the number of both sales and subscription quotations opw-3525414 Forward-Port-Of: odoo/enterprise#49051
This PR introduces several [adjustments and fixes for darkmode](https://pad.odoo.com/p/dark-mode-improvements). Requires : - https://github.com/odoo/odoo/pull/130991 - https://github.com/odoo/o-spreadsheet/pull/3051 task-3201038 ## Why do we introduce these changes Dark mode was first released with Odoo 16. Back then the layout and color scheme of our modules was designed with a different approach. With Milk and its new design (https://github.com/odoo/odoo/pull/116641), we in
Original PR description
This PR introduces several [adjustments and fixes for darkmode](https://pad.odoo.com/p/dark-mode-improvements). Requires : - https://github.com/odoo/odoo/pull/130991 -…
This PR introduces several [adjustments and fixes for darkmode](https://pad.odoo.com/p/dark-mode-improvements). Requires : - https://github.com/odoo/odoo/pull/130991 - https://github.com/odoo/o-spreadsheet/pull/3051 task-3201038 ## Why do we introduce these changes Dark mode was first released with Odoo 16. Back then the layout and color scheme of our modules was designed with a different approach. With Milk and its new design (https://github.com/odoo/odoo/pull/116641), we introduced some changes with a direct impact of our dark mode : - We reduced the use of borders and made them more subtle ; - We made some improvements to the greyscale ; - Some components or features were introduced ; - We revamped our SCSS files and variables. All these changes led to a need of updating the dark mode for Odoo 17. ## Main key changes - **Primary color** The primary color has been turned into a light purple in dark mode. By changing it to a lighter color we replicate the logic we introduced with Milk (subtle colour use and clean interfaces with the essentials informations standing out and we also improve consistency between light and dark mode, so the user keeps his marks. We also include a variant of that primary color for component and small texts that needs a good contrast. - `#914889`, the new `$o-enterprise-color` - `#d36cc7`, the new `$o-theme-text-colors, 'primary'`, based on a lighter shade of `$o-enterprise-color`. This is used for small texts and components that needs a better contrast. - **Greyscale** The greyscale had some issues, mainly due to the colours assigned to SCSS variables (e.g a button using `$o-gray-200` as background on a `$o-view-background-color`surface using `$o-gray-200` too would make the button invisible). This made us rethink our greyscale to avoid contrast issues between each color. We also reworked the steps between each `$o-gray-x`. - **Variables assigned values** Some similar classes (e.g `bg-white` and `bg-view` being white in light mode and pure black in dark mode) tended to be used without realising what impact it would have in dark mode. We checked some edge cases where the colours would look inconsistent in dark mode regarding the light mode and fixed the classes/variables use. - **Contrast improvement** As mentioned above, some colours could sometimes be very close to the one of the surface they were applied on. This could causes issues in term of elevation of a component, or simply in term of readability. With the updated greyscale, most of these issues are fixed. - **Consistency improvement** We also took this opportunity to reinforce the consistency between `light` and `dark` mode. The idea here is not to replicate the light mode 100% but to keep the keys principles consistent no matter what theme you are using. ## Issues fixed This PR also fixes some dark mode related issues from 16.x : ### Unwanted line under Control Panel saas-16.3 | saas-16.3-darkmode-improvment-mano-chgo :-------------------------:|:-------------------------:  |  -------------------------------- ### Separator not standing out saas-16.3 | saas-16.3-darkmode-improvment-mano-chgo :-------------------------:|:-------------------------:  |  -------------------------------- ### Tags colors not standing out in dark mode saas-16.3 | saas-16.3-darkmode-improvment-mano-chgo :-------------------------:|:-------------------------:  |  -------------------------------- ### Alerts colors were really dark in dark mode saas-16.3 (from up: primary, success, warning, danger, info) | saas-16.3-darkmode-improvment-mano-chgo :-------------------------:|:-------------------------:  |  -------------------------------- ### The menu column in Settings has a white background saas-16.3 | saas-16.3-darkmode-improvment-mano-chgo :-------------------------:|:-------------------------:  |  -------------------------------- ### Timesheet dark mode adapatations saas-16.3 | saas-16.3-darkmode-improvment-mano-chgo :-------------------------:|:-------------------------:  |  -------------------------------- Forward-Port-Of: odoo/enterprise#49416 Forward-Port-Of: odoo/enterprise#44458
**steps to reproduce:** make a fresh install with only industry_fsm_sale (-i industry_fsm_sale) and run tests **before this commit:** test_task is broken as some accounting data is missing on the current company `odoo.exceptions.UserError: No journal could be found in company YourCompany for any of those types: sale ` **after this commit:** the test is independent and create relevant accounting data during the setUpClass opw-3506568 Forward-Port-Of: odoo/enterprise#49429
Original PR description
**steps to reproduce:** make a fresh install with only industry_fsm_sale (-i industry_fsm_sale) and run tests **before this commit:** test_task is broken as some accounting data is missing on the current company `odoo.exceptions.UserError: No journal could be found in company YourCompany for any of those types: sale ` **after this commit:** the test is independent and create relevant accounting data during the setUpClass opw-3506568 Forward-Port-Of: odoo/enterprise#49429
Before this commit: 1. Open studio on Home Page 2. Open an action that cannot be editable with studio through command palette 3. Traceback occurs After this commit, the NotEditableActionError is catch and show an error notification. Forward-Port-Of: odoo/enterprise#49314 Forward-Port-Of: odoo/enterprise#49175
Original PR description
Before this commit: 1. Open studio on Home Page 2. Open an action that cannot be editable with studio through command palette 3. Traceback occurs After this commit, the NotEditableActionError is catch and show an error notification. Forward-Port-Of: odoo/enterprise#49314 Forward-Port-Of: odoo/enterprise#49175
### Current behavior: When Dutch localization is installed creating `l10n_nl_reports.general_ledger_batch_size` in system parameters results in a traceback when trying to download XAF file. ### Error: Casting problem as `batch_size` is interpreted as a str. ### Expected behavior: Download XAF file with no traceback. ### Fix: we cast the variable `batch_size`. ### Affected versions: all > 14 opw-3296107 Forward-Port-Of: odoo/enterprise#49019
Original PR description
### Current behavior: When Dutch localization is installed creating `l10n_nl_reports.general_ledger_batch_size` in system parameters results in a traceback when trying to download XAF file. ### Error: Casting problem as `batch_size` is interpreted as a str. ### Expected behavior: Download XAF file with no traceback. ### Fix: we cast the variable `batch_size`. ### Affected versions: all > 14 opw-3296107 Forward-Port-Of: odoo/enterprise#49019
Prior to 5f4b3ef2c8f62357d736f32702968668787e8e4c, it was possible to have SO lines with zero as quantity. This was broken with the `valor_unitario` computation in `_l10n_mx_edi_get_invoice_cfdi_values` because it was relying on those quantities. This fix will simply exclude the lines with 0 quantities when generating the cdfi values Forward-Port-Of: odoo/enterprise#49208
Original PR description
Prior to 5f4b3ef2c8f62357d736f32702968668787e8e4c, it was possible to have SO lines with zero as quantity. This was broken with the `valor_unitario` computation in `_l10n_mx_edi_get_invoice_cfdi_values` because it was relying on those quantities. This fix will simply exclude the lines with 0 quantities when generating the cdfi values Forward-Port-Of: odoo/enterprise#49208
enterprise part of odoo/odoo#139639 Forward-Port-Of: odoo/enterprise#49485
Original PR description
enterprise part of odoo/odoo#139639 Forward-Port-Of: odoo/enterprise#49485
We rely on demo data to run the tests, while we should not. Linked to runbot error 27596, 27598, 27599, 27600, 27601, 27460, 27464, 27465, 27466, 27467, 27468, 26269, 26270, 26271, 26272, 26257, 26956, 26964, 26965, 26966, 26967 Forward-Port-Of: odoo/enterprise#49506 Forward-Port-Of: odoo/enterprise#49108
Original PR description
We rely on demo data to run the tests, while we should not. Linked to runbot error 27596, 27598, 27599, 27600, 27601, 27460, 27464, 27465, 27466, 27467, 27468, 26269, 26270, 26271, 26272, 26257, 26956, 26964, 26965, 26966, 26967 Forward-Port-Of: odoo/enterprise#49506 Forward-Port-Of: odoo/enterprise#49108
26 changes
Security fixes and vulnerability patches
This fix addresses a critical memory safety vulnerability in the Worldline payment interface where string data was being handled incorrectly between Python and C++ code. The issue could potentially cause system crashes or data corruption. The fix corrects how strings are copied to prevent buffer overflow errors.
Original PR description
This fix aims to remove an issue present in current Worldline interface and driver related to the way we work with strings between Python and C++. Currently, we are creating string buffers in Python (char *) and passing pointers to them (char **) to our C++ Worldline EasyCTEP library. Then inside our C++ code we copy a string inside that pointer (char **). This is a mistake which can easily lead to a buffer overflow, we need to copy strings inside the buffers and not pointers to them. task-3562527 Replaces the closed PR: [49242](https://github.com/odoo/enterprise/pull/49242) Forward-Port-Of: odoo/enterprise#49387
Enhancements to existing features
This update adapts report templates across multiple Odoo modules to work seamlessly with the new Report Editor introduced in Odoo 16.4. The changes enable users to customize reports more easily through the visual editor by restructuring how report content is organized and formatted. This improvement enhances the user experience when creating and modifying business reports.
Original PR description
Enhanced reports for better compatibility with Odoo 16.4's new Report Editor: - Added `<div class="oe_structure"></div>` for user customization. - Converted t-field/t-esc/t-out from div to span. - Introduced demo data and adjusted t-if/t-else branching. - Bundled t-if/elif/else directives for the 'condition selector' UI. - Refactored `<t>` nodes in tables where feasible. task-3447407
The POS preparation display now shows a notification badge on the mobile menu when a filter is active. This improvement helps users quickly see that filters are applied without needing to open the menu, improving visibility and user experience in the mobile view.
Original PR description
This commit adds a notification to the buger menu in mobile view when a filter is selected.
The system now distinguishes between incoming and outgoing emails by assigning them different message types, making it clearer which emails were received versus sent. This improvement helps organize and track email communications more effectively across the platform, with updates applied to helpdesk, sales subscriptions, and messaging modules.
This update standardizes the appearance and naming of communication sections across multiple portal pages (helpdesk, accounting, signing, etc.) by giving them all the same title format as "Communication history." This creates a more consistent and professional user experience when customers interact with your company through the portal.
Original PR description
By this commit, all portal chatters have a same style and title as `Communication history` [Related PR](https://github.com/odoo/odoo/pull/139735) Part of task #2828744
This update improves the payment experience by establishing default payment methods for SEPA Direct Debit and UPS shipping integrations. By setting sensible defaults, customers will have a smoother checkout process with pre-selected payment options, reducing friction and improving conversion rates.
Original PR description
task-3557315 See also: - odoo/odoo#139641 Backport of https://github.com/odoo/enterprise/pull/49551
This update improves tracking of the Mexican EDI usage field by enabling change history monitoring and sets its default value to 'G03' (General expenses) based on internal feedback. This ensures better audit trails for compliance purposes and simplifies configuration for users in Mexico.
Original PR description
Following internal feedbacks, make this field tracked and change its default to 'G03' ("General expenses").
task-3563407
Forward-Port-Of: odoo/enterprise#49632
Forward-Port-Of: odoo/enterprise#49312This update refreshes the Portuguese translations for Brazil-specific features in Odoo, including tax compliance and financial reporting modules. These translation updates ensure that Brazilian users see accurate and up-to-date text in their preferred language across localized functionality.
Original PR description
Community: https://github.com/odoo/odoo/pull/139696 Forward-Port-Of: odoo/enterprise#49539
Resolved issues and error corrections
A test for the chart side panel in the Documents Spreadsheet module was failing after recent improvements to the domain selector component. This fix updates the test to match the same changes that were already applied to similar tests in the Pivot and List side panels, ensuring the test suite runs successfully.
Original PR description
## Task Description Since the refactor/improvement of the domain selector, there is a failling test in the chart_side_panel_test. This PR updates this tests by making the same changes that have been done in other side panels tests (PIVOT and LIST).
This fix ensures that certain zero-value lines in French VAT reports are not sent to the government when they shouldn't be. Specifically, VAT unit operations (line F9) will only be included if VAT units are enabled, and VAT import lines (A4, I1-I6) will only be included for applicable tax regimes. This prevents unnecessary or invalid data from being submitted to French tax authorities.
Original PR description
When sending the VAT report to the French government, some lines at 0 should not be included in the xml: * the line F9 (vat unit operations) can only be transmitted if the VAT unit is enabled. * the lines VAT import (A4, I1, I2, I3, I4, I5, I6) can only be transmitted for specific tax regimes. opw-3564148 Forward-Port-Of: odoo/enterprise#49476
A bug in the Knowledge module's article selection dialog was displaying both articles and templates when users tried to insert a view into an article. This fix adds a filter to the search to show only articles, excluding templates from the list. This ensures users see the correct content when selecting where to insert their views.
Original PR description
When merging the models `knowledge.article` and `knowledge.article.template`, we unintentionally forgot to add a condition in the search domain of the article selection dialog to filter out the templates from the search results. As a result, the dialog currently lists both articles and templates. This commit will simply add the missing condition in the search domain to exclude the templates from the search results. Steps to reproduce the issue: 1. Open any view 2. Click on the cog icon in the control panel 3. Click on the "Knowledge" section of the dropdown 4. Click on the button "Insert view in article" => The modal allowing the user to select an article displays the articles and the templates. TO BE: The modal should only display the articles and not the templates. Reference: https://github.com/odoo/enterprise/pull/48691 task-3571715
This fix corrects a calculation error in Luxembourg's annual tax report where certain financial amounts were displaying with the wrong sign. The issue occurred because account balances are stored as credit amounts (negative values), but the formula wasn't accounting for this properly. The fix adds the necessary adjustment to ensure tax report figures are calculated correctly.
Original PR description
Now the default external values are created with the negative sign, as the amount on the accounts is in credit. We need to add a minus in front to correct the amount. The relevant test was created for an `in_invoice`, which is why the default value was not tested correctly.
This fix resolves an error that occurred when validating deliveries in inter-company sales transactions with lot tracking enabled. The issue prevented users from completing delivery validations when synchronizing sales and purchase orders between companies, which has now been corrected to ensure smooth order fulfillment workflows.
Original PR description
Steps to reproduce: * enable inter-company transactions * enable "Synchronize Sales and Purchase Order" in company B * enable "Copy Lots on Delivery Validation" in company B * create an SO from company A to company B with a single product, confirm * go to Delivery, click Validate Odoo will show an error popup: "AttributeError: 'stock.move' object has no attribute 'quantity_done'" The issue is caused by a recent refactoring in odoo/odoo#137864
This update adds a required data neutralization script for the Belgian CodaBox tax module that was introduced in version 17. The neutralization script ensures proper data cleanup and compliance when the module is used in certain environments. This fix completes the module's functionality that was partially deployed in a previous update.
Original PR description
Add the missing neutralisation script for the module l10n_be_codabox introduced in v17 with https://github.com/odoo/enterprise/pull/47607
This update fixes automated tests for the rental product configurator feature to work with a new user interface design. The test scripts were adapted to match the updated design, ensuring that quality assurance processes continue to function properly and catch any issues with the rental product configuration feature.
Original PR description
See also: - https://github.com/odoo/odoo/pull/140096 Backport of https://github.com/odoo/enterprise/pull/49636
This fix resolves an issue where messages in chatbot and livechat conversations were not being properly formatted. The problem occurred because code patches were not correctly handling the HTML formatting flag when inserting messages. By updating how these patches work internally, messages now display with proper formatting and security markup as intended.
Original PR description
*: approvals, voip, whatsapp Before this commit, messages in chatbot conversation were not properly markup. This comes from changes from [1] that added trusted insert. Original code in…
*: approvals, voip, whatsapp Before this commit, messages in chatbot conversation were not properly markup. This comes from changes from [1] that added trusted insert. Original code in `Record.insert()` makes a model insertion of the data using the `html` flag. Patches must not override `static insert()` as only the super call is affected by the provided `html` flag. For patches to take account of it, they must instead patch `_insert`, with `_` prefix, which is internally called by original `Record.insert()`. In addition: - `static insert` allows array of data while `static _insert` works with data on single record. Patches were designed with data on single record, so some code were not working properly - Signature of `static insert` has been overloaded with new option `html: true`, so patches must propagate it. They were only propagating `data` and omitting the 2nd paramater, which results in omitting provided `html` thus falling back to `html: false`, resulting to non-escaping message body This commit fixes all model patches to override `static _insert` instead of `static insert`. [1]: https://github.com/odoo/odoo/pull/139501 https://github.com/odoo/odoo/pull/140064
A recent code change accidentally removed styling from the comparison filter in deferred financial reports, causing the Apply button to appear misaligned. This fix restores the proper styling by preserving the filter container class, making the interface look consistent with other reports.
Original PR description
Following 37798579dd5755f0e7f03e4f54782b0f632a3aaa, the class `filter_comparison` was missing because the div was replaced. Therefore some CSS was missing and the Apply button was misaligned. This is fixed by replacing the `<t>` element instead of the whole `<div>` **Before:**  **After (similar to other reports)**  This is a backport of https://github.com/odoo/enterprise/pull/49633
Portal users were unable to view rental products in the online shop due to missing access permissions. This fix grants portal users the same read access to rental products that public users have, allowing them to browse and interact with rental offerings without errors.
Original PR description
Steps to reproduce: - Install website_sale_renting; - Log in as portal user; - Go to /shop on a page where there is a rental product; - Access error The error is raised because there is a missing access rule for portal user. As there is a read access to public user, we add it to portal user as well. Backport of https://github.com/odoo/enterprise/pull/49583
This fix prevents the payroll system from unnecessarily recalculating payslips when employees or managers make edits to them. By avoiding redundant recalculations, the system now works more efficiently and preserves intentional manual adjustments made to payslips, reducing confusion and saving processing time.
Original PR description
Forward-Port-Of: odoo/enterprise#49630
The sales smart button on a customer's contact page was not counting subscription quotes, only regular sales. This fix ensures the button now accurately displays the total count of both sales and subscription quotations, giving customers a complete view of all quote activity.
Original PR description
[FIX] sale_subscription: Sales smart button in customer's contact page is not updating upon creating subscription quote Steps to reproduce: 1- Install Contacts and Subscriptions modules 2- Check number of sales in a customer's contact page from the smart button 3- Create a new subscription quote for a customer 4- Go to the customer's contact page 5- Check the sales smart button which will remain the same number as step 2 Current behavior before PR: The sales smart button is not counting subscription count while when click on it you will find the last of sales quotations along with the subscription quotations Desired behavior after PR is merged: The smart button now is counting the number of both sales and subscription quotations opw-3525414 Forward-Port-Of: odoo/enterprise#49051
This fix resolves an error that occurred when viewing project tasks in Gantt view and grouping by Sale Order Item. The system was trying to use an outdated field reference that no longer exists, causing the view to crash. We've updated it to use the correct field name so users can now properly organize and visualize their project timelines.
Original PR description
Steps to reproduce: ------------------- - create a product which create a project and a task; - create a sale order with this product; - on the created task, add value for "Planned Date"; - go to Project / All Tasks and use Gantt view; - apply a Group By using "Sale Order Item"; Issue: ------ A traceback occurs. Cause: ------ We are trying to group the records of `project.task` model according to the `allocated_hours` field. Unfortunately, this field does not exist. Solution: --------- Use its equivalent field (`planned_hours`) as of version saas-16.2. opw-3491920 Forward-Port-Of: odoo/enterprise#49538 Forward-Port-Of: odoo/enterprise#49435
Fixed a bug where WhatsApp channels were incorrectly being reactivated when new messages were sent. The system now properly deactivates channels 24 hours after the customer's last message, rather than after any message in the conversation. This ensures WhatsApp's 24-hour messaging window policy is correctly enforced.
Original PR description
Steps: 1. Install the WhatsApp module. 2. Create one WhatsApp account. 3. Send a template message from the account to a recipient's number. 4. Reply to the message from the WhatsApp application. 5. A…
Steps: 1. Install the WhatsApp module. 2. Create one WhatsApp account. 3. Send a template message from the account to a recipient's number. 4. Reply to the message from the WhatsApp application. 5. A new channel will be created for this conversation. 6. After 24 hours, the channel will be blocked from sending messages from the channel 7. Now send another template to that user. when sending the new template it will post a message in the channel and that channel will be allowed to send messages. This working is wrong because it should work like a deactivate channel after 24 hours of the last message of the recipient, Problem: _compute_whatsapp_channel_valid_until method uses using _channel_last_message_ids method to retrieve the last message so, in this case, the last message will be the message that can be posted by any user but we want the recipient's last message. Solution: instead of using _channel_last_message_ids created a new method to retrieve the last message of the customer in the channel. Forward-Port-Of: odoo/enterprise#49590
Code cleanup and technical improvements
The system has been updated to generate asset bundles more efficiently by removing unnecessary processing steps. This change simplifies the technical infrastructure and improves system performance without affecting how users interact with financial reports.
Original PR description
This is not useful anymore with companion pr odoo/odoo#131353
This update removes unnecessary code from the Point of Sale preparation display module to improve code quality and maintainability. The cleanup simplifies the codebase without changing any user-facing functionality, making the system easier to maintain and understand.
Original PR description
Remove useless code
The "Amounts to settle" button in the Vendors menu has been reorganized to split its functionality into two separate actions, improving clarity and usability. This change aligns the enterprise version with updates made to the community version, ensuring consistency across Odoo platforms.
Original PR description
Current behavior before PR: Currently, the "Amounts to settle" button in the "Vendors" drop-down menu opens a view showing all the account.move.line that are to be reconciled. --- Desired behavior after PR is merged: This commit is linked to a commit in community which splits the action responsible for this into two and therefore, the action should be renamed everywhere. --- Community: https://github.com/odoo/odoo/pull/140040 task-3572482
Miscellaneous changes
This update exports the latest translation source files for all accounting and related modules in Odoo 17.0. These source files are used by translators worldwide to provide the software in multiple languages. The update ensures that all new features and text in version 17.0 are available for translation.
Original PR description
Community: https://github.com/odoo/odoo/pull/140002