Daily updates from Odoo
Friday, October 27, 2023
41 changes · master
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