Daily updates from Odoo
Navigate
Branch
Thursday, April 10, 2025
40 changes
25 changes
New functionality added to Odoo
Adds a new Planning / Attendance report so businesses can compare scheduled hours with actual attendance, spot under- or over-staffing, and identify overtime or missed hours. The Planning / Timesheets analysis is also moved under Planning and now focuses on past and current records for more accurate reporting.
Enhancements to existing features
The public Knowledge website now loads article changes and the sidebar dynamically, reducing page reloads, flicker, and slow navigation. Visitors can also search articles by title or content, making information easier to find across the current knowledge site.
Original PR description
Purpose: ------- The current public view of knowledge has several flaws: - clicking on an article in the sidebar redirects to that article, which results in a complete page reload and a flicker. -…
Purpose: ------- The current public view of knowledge has several flaws: - clicking on an article in the sidebar redirects to that article, which results in a complete page reload and a flicker. - the sidebar's html is generated in backend and inserted in the dom, which makes it non reactive and slow to load. - searching for an article also generates a list of articles in backend which is inserted in the dom, and only matches article titles. To alleviate these issues, this commit introduces: - a minimalist `Article` class used as the article record in the public view. Changing article now fetches the article's data through a rpc instead of reload the public view template with the new article, avoiding the flicker and making it faster. - a component `knowledge_public_sidebar` that loads the data of the articles and render the sidebar in frontend. - a articleSearchDialog similar to the backend's command palette, which allows to find articles of the current subsite based on their title or their content. Some simplifications and feature changes have been done: - the unfolded article ids are not stored in the local storage anymore: main purpose was to keep the articles unfolded when clicking on an article in the sidebar, since the page was reloaded. But now since the sidebar isn't reloaded on article change, it's not necessary anymore. - the sidebar can be toggled in dekstop mode too. - the "load more" feature has been removed, as it was introduced for preventing the view from crashing. The new component approach prevents these crashes from happening. Task-4439155
The Chilean and Mexican e-invoicing checkout modules were updated to stay compatible with the redesigned online checkout flow. This helps customers continue entering required tax and invoicing details smoothly during website purchases.
Original PR description
See also: - https://github.com/odoo/odoo/pull/189650
The wording of rating options shown to customers has been updated in Helpdesk and Subscriptions. This makes feedback choices clearer and more consistent when users rate tickets or subscription-related interactions.
Original PR description
This PR aims to update the rating keys visible for the user. task-4614098 https://github.com/odoo/odoo/pull/201811 https://github.com/odoo/upgrade/pull/7447
The planning send wizard has been visually refreshed to make sending schedules clearer and easier for users. This improves the day-to-day experience for teams communicating planning information without changing the underlying workflow.
Original PR description
task-4701101
Copied shifts now respect an employee's actual working schedule instead of relying on broad half-day availability. Shifts outside a scheduled working time are copied as open, while flexible resources remain assigned because they are always considered available.
SEPA direct debit mandates created through online payments are now tracked more clearly and protected from accidental manual validation. Customer mandate PDFs now include the key payment validation details, making records more complete and easier to audit.
Original PR description
Prior to this commit:
- Users could validate SEPA mandates that were initiated by online payments manually without tracking.
- SEPA mandates sent as email attachments to customers had missing information (email, signature, etc.).
- Information regarding SEPA validation such as bank account, date, label, and amount was lost.
Post this commit:
- Implemented tracking for SEPA mandates created from online payments
- Added a warning popup for users attempting to manually validate a mandate
initiated from online payment.
- Added Transctions button to show all completed transactions linked to mandate.
- Modified the PDF report for mandates created from online payments, including:
- Updated introduction text to clarify the mandate's creation.
- Replaced the signature section with bank statement information, including bank account, date, label, and amount.
task-4076317The Planning app now removes a redundant "Edit" label when editing recurring shifts. This makes the screen clearer and reduces unnecessary wording for users managing schedules.
Original PR description
This commit removes the 'Edit' label from the editting of recurrency shift in planning view. This aims to remove unnecessary information and better clarity. task-id: 4485233
This change updates test coverage for field service stock workflows, helping ensure catalog section behavior continues to work as expected. It is primarily a quality improvement with limited direct impact for business users.
Live chat reporting for website helpdesk has been consolidated into a single report structure. This makes reporting easier to maintain and supports more consistent insights across channels and operators without changing the business workflow.
Original PR description
This commit merges the two existing im_livechat report models `im_livechat.report.channel` and `im_livechat.report.operator` into one model: `im_livechat.report`. The fields from the two models are merged into the new model. task-4619167
This update aligns the field service sales product catalog with recent underlying changes in Odoo. It removes duplicate internal handling and updates a renamed product filter, helping keep the catalog reliable and easier to maintain without changing day-to-day user workflows.
Original PR description
`ProductCatalogKanbanController` component extends `KanbanController` and defines a property `action` to use the action service, but `KanbanController` already has a property `actionService` to use this said service. `FSMProductCatalogKanbanController` extends `ProductCatalogKanbanController` and was using action service too, so this commit replaces `action` with `actionService` to follow change explained above. Community PR: odoo/odoo#196620
Resolved issues and error corrections
This fixes a small issue in the online rental shop that could prevent product availability information from being adjusted correctly when multiple customizations are active. It helps keep stock and rental availability messaging stable for customers without changing the shopping experience.
Original PR description
task-4531354 See also: - https://github.com/odoo/odoo/pull/195285
This update restores the required lot and serial number permissions in stock barcode test scenarios. It helps keep inventory, barcode scanning, production, subcontracting, batch picking, and expiry workflows reliably validated before release.
Original PR description
'group_production_lot' is needed for the following runbot tests to pass TestStockPickingTour.test_add_new_line_in_detailled_op TestBarcodeClientAction.test_filter_on_barcode TestInventoryAdjustmentBarcodeClientAction.test_inventory_adjustment_tracked_product_multilocation TestInventoryAdjustmentBarcodeClientAction.test_inventory_setting_count_entire_locations_on TestPickingBarcodeClientAction.test_remaining_decimal_accuracy TestPickingBarcodeClientAction.test_scan_aggregate_barcode TestPickingBarcodeClientAction.test_scrap
Miscellaneous changes
In databases migrated to Odoo 18, that has the module l10n_mx_edi_stock installed the field l10n_mx_edi_hazardous_material remains empty. This issue occurs because the CSV file (product.unspsc.code.csv) assigns the value but the records are no update As a result, customers cannot generate the Carta Porte in the l10n_mx module, encountering the following error: Error 301 (CP155): The attribute "Mercancia:MaterialPeligroso" is missing or invalid when the ClaveProdServ is declared as hazardo
Original PR description
In databases migrated to Odoo 18, that has the module l10n_mx_edi_stock installed the field l10n_mx_edi_hazardous_material remains empty. This issue occurs because the CSV file (product.unspsc.code.csv) assigns the value but the records are no update As a result, customers cannot generate the Carta Porte in the l10n_mx module, encountering the following error: Error 301 (CP155): The attribute "Mercancia:MaterialPeligroso" is missing or invalid when the ClaveProdServ is declared as hazardous. As it was mentioned here: https://github.com/odoo/upgrade/pull/7468 I modified the script to use ir_model_data to link the records and now it's on the carpet migrations of l10n_mx_edi_stock Here is a ticket with an example of the error https://www.odoo.com/odoo/project.task/4577049/action-4665/4631583 Forward-Port-Of: odoo/enterprise#82972
When the order is sent to the preparation tools, synchronization is performed twice. This is because synchronization is done in the preparation tool method and in the unsetTable method. taskId: 4664549 Forward-Port-Of: odoo/enterprise#82286
Original PR description
When the order is sent to the preparation tools, synchronization is performed twice. This is because synchronization is done in the preparation tool method and in the unsetTable method. taskId: 4664549 Forward-Port-Of: odoo/enterprise#82286
adding missing access rule (read permission to the group_purchase_user) for the test that checks it build_error-70728 Forward-Port-Of: odoo/enterprise#82753
Original PR description
adding missing access rule (read permission to the group_purchase_user) for the test that checks it build_error-70728 Forward-Port-Of: odoo/enterprise#82753
Before this fix, it was possible to add more combo products than available to the cart. Indeed, the available quantity was only checked in the combo configurator, but not in other places where the quantity could be updated (such as the product page or the cart). This fix introduces a "max quantity" concept for combo products, which is based on the available quantity of their combo items. opw-4378554 Community PR: https://github.com/odoo/odoo/pull/188860 Forward-Port-Of: odoo/enterprise
Original PR description
Before this fix, it was possible to add more combo products than available to the cart. Indeed, the available quantity was only checked in the combo configurator, but not in other places where the quantity could be updated (such as the product page or the cart). This fix introduces a "max quantity" concept for combo products, which is based on the available quantity of their combo items. opw-4378554 Community PR: https://github.com/odoo/odoo/pull/188860 Forward-Port-Of: odoo/enterprise#82373 Forward-Port-Of: odoo/enterprise#77741
1. Replace "_" with "-" for name generation. eg. "appointment_with me" to "appointment-with-me" 2. Generate a unique link. Case 1: generate "-" based link when no link exists for the appointment eg. "/schedule-a-demo". Case 2: if a link exists for the appointment -> generate random code if appointment name based short code is already used in another configuration. Task-4610207 Forward-Port-Of: odoo/enterprise#81665
Original PR description
1. Replace "_" with "-" for name generation. eg. "appointment_with me" to "appointment-with-me"
2. Generate a unique link.
Case 1: generate "-" based link when no link exists for the appointment eg. "/schedule-a-demo".
Case 2: if a link exists for the appointment -> generate random code if appointment name based short code is
already used in another configuration.
Task-4610207
Forward-Port-Of: odoo/enterprise#81665…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the data_cleaning module 2. Open psql in the terminal 3. Run the following query:” select id, name, model from ir_ui_view where model ilike 'data_%' and type = 'form';” 4. Observe that data_cleaning.model is missing from the results Expected Behavior: the form view for data_cleaning.model should
Original PR description
…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the…
…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the data_cleaning module 2. Open psql in the terminal 3. Run the following query:” select id, name, model from ir_ui_view where model ilike 'data_%' and type = 'form';” 4. Observe that data_cleaning.model is missing from the results Expected Behavior: the form view for data_cleaning.model should be present in the database. Actual Behavior: the form view for data_cleaning.model is not found in the database. **Root Cause** The form view in data_cleaning_model_views has the same id as the one in data_merge_model_views. Because data_cleaning_model_views is loaded first (as defined in __manifest__.py), it gets overwritten by data_merge_model_views. **Fix** To prevent this issue, the form view id in data_cleaning_model_views has been renamed to a unique and more appropriate identifier. Opw-4517418 Forward-Port-Of: odoo/enterprise#80594
Forward-Port-Of: odoo/enterprise#82948
Original PR description
Forward-Port-Of: odoo/enterprise#82948
Vendor bills and purchase orders should always be negative on a budget with type `both`, as they are expenses. - Create a budget with type `both` - Create a sales invoice and several purchase orders and vendor bills - The budget report's purchase order amounts are positive and added up. As soon as they are billed they become negative. Task [link](https://www.odoo.com/odoo/project/967/tasks/4568067) opw-4568067 Forward-Port-Of: odoo/enterprise#83074 Forward-Port-Of: odoo/enterprise#
Original PR description
Vendor bills and purchase orders should always be negative on a budget with type `both`, as they are expenses. - Create a budget with type `both` - Create a sales invoice and several purchase orders and vendor bills - The budget report's purchase order amounts are positive and added up. As soon as they are billed they become negative. Task [link](https://www.odoo.com/odoo/project/967/tasks/4568067) opw-4568067 Forward-Port-Of: odoo/enterprise#83074 Forward-Port-Of: odoo/enterprise#81356
**before:**  **after:**  Forward-Port-Of: odoo/enterprise#82494
Original PR description
**before:**  **after:**  Forward-Port-Of: odoo/enterprise#82494
Before this commit, the TestAustraliaTparReport.test_tpar failed in a single app context with the l10n_au_reports because the "accountant" module is not installed and the payment state will never be "in_payment". The commit evaluate the payment state as "paid" instead if the "accountant" module is not installed. [Runbot Error Build](https://runbot.odoo.com/odoo/error/134666) Forward-Port-Of: odoo/enterprise#81693
Original PR description
Before this commit, the TestAustraliaTparReport.test_tpar failed in a single app context with the l10n_au_reports because the "accountant" module is not installed and the payment state will never be "in_payment". The commit evaluate the payment state as "paid" instead if the "accountant" module is not installed. [Runbot Error Build](https://runbot.odoo.com/odoo/error/134666) Forward-Port-Of: odoo/enterprise#81693
In this commit: === - Introduced a timing filter in the preparation display to filter orders based on their scheduled time. - Added options to view All, Today, Tomorrow, and Next Days orders for better order management. related-https://github.com/odoo/odoo/pull/196122 task-4523422 Forward-Port-Of: odoo/enterprise#83062 Forward-Port-Of: odoo/enterprise#78345
Original PR description
In this commit: === - Introduced a timing filter in the preparation display to filter orders based on their scheduled time. - Added options to view All, Today, Tomorrow, and Next Days orders for better order management. related-https://github.com/odoo/odoo/pull/196122 task-4523422 Forward-Port-Of: odoo/enterprise#83062 Forward-Port-Of: odoo/enterprise#78345
Implemented a communication bridge to enable customer display support on Android PoS devices with external screens. This allows the frontend web application to control content displayed on the secondary screen. See https://github.com/odoo/mobile/pull/252 See https://github.com/odoo/mobile/pull/254 task-4456187 Forward-Port-Of: odoo/enterprise#83085 Forward-Port-Of: odoo/enterprise#82055
Original PR description
Implemented a communication bridge to enable customer display support on Android PoS devices with external screens. This allows the frontend web application to control content displayed on the secondary screen. See https://github.com/odoo/mobile/pull/252 See https://github.com/odoo/mobile/pull/254 task-4456187 Forward-Port-Of: odoo/enterprise#83085 Forward-Port-Of: odoo/enterprise#82055
15 changes
Security fixes and vulnerability patches
The Attendance Gantt view no longer shows employee names that a user is not allowed to access. This prevents misleading schedule displays and helps protect employee information from unauthorized visibility.
Original PR description
### Issue: - In the Attendance Gantt view, users can see all employees in the company, including those they are not allowed to manage or view. -While access rules prevent users from seeing attendance records for these employees, the employees' names still appear in the Gantt view. -This creates a misleading user experience and potentially exposes restricted information (employee names). ### Steps To Reproduce: 1. Log in as Marc Demo. 2. Open the attendance App. 3. Observe that all employees are shown as group headers. ### Solution: - this PR adds a test to check that the Gantt view only shows employees that the user has access to. community fix: https://github.com/odoo/odoo/pull/205031 opw-4570867
Enhancements to existing features
The customer statement button will now appear only when there is actual statement content for the selected customer, reducing confusing empty reports. Draft-entry warnings will also appear only when the selected customer has draft accounting entries, helping users focus on relevant alerts.
Original PR description
Description of the issue this commits addresses: The Customer Statement button is shown too often and leads to empty customer statements in some scenarios. The banner warning the user that some entries are draft is also shown too often and should only appear if the selected partner(s) have draft entries. --- Desired behavior after this commit is merged: The button only shows when the customer statement it will lead to has values to show. This means both making sure the partner has moves to show on the customer statement but also that the customer statement actually shows them. Same for the draft entries warning banner. It will only be shown when the selected parter(s) has(have) draft entries. --- task-4680249
Resolved issues and error corrections
Odoo Studio no longer shows the Colombian Daily Journal report in its report editor, preventing an error when users open it from customer invoices. This avoids a confusing crash for businesses using Colombian accounting reports while keeping the report available through the intended accounting reporting flow.
Original PR description
**Step to reproduce** 1. createdb with installing l10n_co_reports in 18.0 2. and install web_studio 3. open studio in customer invoice menu and tap on Daily Journal report **Below mentioned traceback…
**Step to reproduce**
1. createdb with installing l10n_co_reports in 18.0
2. and install web_studio
3. open studio in customer invoice menu and tap on Daily Journal report
**Below mentioned traceback is rasing**:
for fixing it adding in blacklist report so it won't show in studio as I have checked in this [commit](https://github.com/odoo/enterprise/commit/e7efdb09742c434f1f72ec9c8f619038c470b464) the purpose this report to show the report using accounting report
```
Traceback (most recent call last):
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 1963, in _transactioning
return service_model.retrying(func, env=self.env)
File "/home/odoo/odoo/odoo/18.0/odoo/service/model.py", line 156, in retrying
result = func()
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 1930, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 2178, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/odoo/odoo/18.0/odoo/addons/base/models/ir_http.py", line 333, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/odoo/enterprise/18.0/web_studio/controllers/report.py", line 499, in load_report_editor
report_qweb = self._get_report_qweb(report)
File "/home/odoo/odoo/enterprise/18.0/web_studio/controllers/report.py", line 636, in _get_report_qweb
render_context = report_safe_cr._get_rendering_context(report_safe_cr, [0], {"studio": True})
File "/home/odoo/odoo/enterprise/18.0/web_studio/models/ir_actions_report.py", line 44, in _get_rendering_context
ctx = super()._get_rendering_context(report, docids, data)
File "/home/odoo/odoo/odoo/18.0/addons/account/models/ir_actions_report.py", line 94, in _get_rendering_context
data = super()._get_rendering_context(report, docids, data)
File "/home/odoo/odoo/odoo/18.0/odoo/addons/base/models/ir_actions_report.py", line 1105, in _get_rendering_context
data.update(report_model._get_report_values(docids, data=data))
File "/home/odoo/odoo/enterprise/18.0/l10n_co_reports/report/libro_diario_report.py", line 17, in _get_report_values
report = self.env['account.report'].browse(options['report_id'])
TypeError: 'NoneType' object is not subscriptable
```
opw-4608924
upg-2733166This fix restores the reconnect option for disconnected credit card journals that already have transactions. It helps users resume online synchronization without manual workarounds, reducing disruption in credit card reconciliation.
Original PR description
Currently, when a credit card journal gets disconnected, and has some transactions, the reconnect button won't appear. This is caused by the condition for `display_connect_bank_in_dashboard` added in ae3ec22b6ec64f4600b5a11db2ffda5256bb75fd to omit the 'credit' type journal. Changing this condition to account for 'credit' type journals allows the reconnect button to appear on credit journals that have transactions. opw-4654051
Fixes an issue that could cause errors when retrieving contact details from a point-of-sale order in the WhatsApp POS integration. This keeps the existing standard behavior and helps avoid interruptions in related messaging workflows.
Original PR description
Before this commit, calling `_mail_get_partners` on a `pos.order` record would raise an error due to the missing `introspect_fields` argument in the overridden method. Additionally, overriding this method was unnecessary, as the parent implementation already provides the correct behavior. opw-4713552
Subscription portal payments now correctly save payment details when the payment amount matches the expected amount. This prevents customers from losing the ability to reuse payment methods for future subscription billing.
Original PR description
After https://github.com/odoo/enterprise/pull/8209 we stopped tokenize when the amount match. It is an error.
Users can now find existing contacts by typing part of their email address when sharing documents. This makes it easier to select the right recipient and avoids failed sharing attempts when the contact name does not match the email being searched.
Original PR description
Reproduce: 1. Create a partner with name "TEST" and email "bob@there.com". 2. Try to share a document using "bob" to find the partner. 3. It doesn't show up, you can't select them. Partners should be findable by their email when trying to share documents with them. Task-4656596
Shared document links can now be previewed by public users instead of always forcing a download. This makes externally shared files easier to review directly in the browser and adds test coverage to prevent the issue from returning.
Original PR description
Steps to reproduce: 1. Share a file with the outside world and grab the link. 2. Paste it incognito. 3. Hit the preview button. 4. It opens the os finder to download it. Currently, public users cannot preview shared documents; instead, the documents are always downloaded. Technical Reason: 1. In an override of the route handling document content retrieval, the argument that determines whether the document should be displayed or downloaded is lost in a `super()` call. 2. Added 'post_install' tag to ensure the test also runs after installation, so it can catch changes from other modules like 'documents_account'. After this Commit: Shared documents will be reviewable. Task-4689525
Public users opening shared document links can now preview supported files, such as PDFs and images, instead of having them downloaded automatically. This improves the sharing experience and ensures document previews work consistently when accounting document features are installed.
Original PR description
Currently, public users cannot preview shared documents; instead, the documents are always downloaded. ### Steps to reproduce 1. Install `documents_account`. 2. Share a previewable document (e.g., an image or a PDF) with a link that allows public viewing. 3. Open the share link in an incognito window. 4. Click "Preview file." The file is downloaded instead of being previewed. ### Cause In an override of the route handling document content retrieval, the argument that determines whether the document should be displayed or downloaded is lost in a `super()` call. ### Tests While the base `documents` module includes tests for this behavior, they are tagged with `at_install`, meaning they only validate the functionality at the time of the module's initial installation. This does not account for potential overrides in extension modules like `documents_account`. To address this, the test class is now tagged `post_install`. opw-4490958
Guest customers booking a paid appointment will no longer create two separate contact records during checkout. The appointment and related sales order now use the same customer details, reducing duplicate data and backend cleanup.
Original PR description
To reproduce: ============= - without sign-in, book a paid appointment - you will be asked for name/email/phone - then at checkout you will be redirected to fill address and asked for name/email/phone again - fill the form and submit - on backend you will find two contacts created one with SO and one with appointment Problem: ======== when we fill the form for appointment, a partner is created but it's not set on the appointment's sale order, that's why another partner is created when we fill the address form. Solution: ========= - set the partner on the appointment's sale order when creating it opw-4668838
Features or functions removed from Odoo
This change removes an obsolete delay configuration that is no longer used after a related platform update. It simplifies the codebase and test setup without changing customer-facing behavior.
Original PR description
In this commit we remove checkDelay from codebase because it is no longer used since https://github.com/odoo/odoo/pull/194508 has been merged.
Miscellaneous changes
This commit changes a test that checks that we cannot remove a specific member from an article. The issue was that the parameter provided didn't respect the function's signature by giving a `res.users` instead of a `knowledge.article.member`. By chance, it always worked as those model share the field partner_id that represent the same data. But it is updated so that it better represents the correct use of the method. Forward-Port-Of: odoo/enterprise#83024
Original PR description
This commit changes a test that checks that we cannot remove a specific member from an article. The issue was that the parameter provided didn't respect the function's signature by giving a `res.users` instead of a `knowledge.article.member`. By chance, it always worked as those model share the field partner_id that represent the same data. But it is updated so that it better represents the correct use of the method. Forward-Port-Of: odoo/enterprise#83024
After https://github.com/odoo/odoo/pull/144586, the modules other than base localization module should not have the countries key defined in their manifest. The issue happens because countries key works similar to auto-install and it can lead to unwanted installation of the module. As there was no check implemented, for some modules this key was used accidentally and caused issues with auto-install. This commit removes this field from the manifest of the modules that could have this pro
Original PR description
After https://github.com/odoo/odoo/pull/144586, the modules other than base localization module should not have the countries key defined in their manifest. The issue happens because countries key works similar to auto-install and it can lead to unwanted installation of the module. As there was no check implemented, for some modules this key was used accidentally and caused issues with auto-install. This commit removes this field from the manifest of the modules that could have this problem to avoid the issue. Also in https://github.com/odoo/odoo/pull/201526 a linting test is proposed to avoid having the same issue in the future. Runbot Errors: https://runbot.odoo.com/odoo/error/159875 https://runbot.odoo.com/odoo/error/159877 Forward-Port-Of: odoo/enterprise#81178
adding missing access rule (read permission to the group_purchase_user) for the test that checks it build_error-70728 Forward-Port-Of: odoo/enterprise#82753
Original PR description
adding missing access rule (read permission to the group_purchase_user) for the test that checks it build_error-70728 Forward-Port-Of: odoo/enterprise#82753
…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the data_cleaning module 2. Open psql in the terminal 3. Run the following query:” select id, name, model from ir_ui_view where model ilike 'data_%' and type = 'form';” 4. Observe that data_cleaning.model is missing from the results Expected Behavior: the form view for data_cleaning.model should
Original PR description
…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the…
…rwriting **Issue:** The data_cleaning module contains two views, data_merge_model_views and data_cleaning_model_views, that share the same form view id. **Steps to Reproduce:** 1. Install the data_cleaning module 2. Open psql in the terminal 3. Run the following query:” select id, name, model from ir_ui_view where model ilike 'data_%' and type = 'form';” 4. Observe that data_cleaning.model is missing from the results Expected Behavior: the form view for data_cleaning.model should be present in the database. Actual Behavior: the form view for data_cleaning.model is not found in the database. **Root Cause** The form view in data_cleaning_model_views has the same id as the one in data_merge_model_views. Because data_cleaning_model_views is loaded first (as defined in __manifest__.py), it gets overwritten by data_merge_model_views. **Fix** To prevent this issue, the form view id in data_cleaning_model_views has been renamed to a unique and more appropriate identifier. Opw-4517418 Forward-Port-Of: odoo/enterprise#80594