Monday, February 12, 2024
34 changes · master
Enhancements to existing features
Odoo's automated JavaScript tests now use separate success signals for different test types, reducing the chance that one test suite is mistakenly marked complete because of another. This improves confidence in quality checks and adds clearer reporting on test volume and duration for easier monitoring.
Original PR description
This commit introduces specific success signals for each type of js tests (tours, qunit, hoot, clickbot). Before, they all waited for the string "test successful" to be logged. This already led to a very problematic issue, which was that the qunit suite was no longer run entirely (see [1] for details). With those custom signals, we reduce the risk of interferences between those types of tests. [1] https://github.com/odoo/odoo/commit/dc5632d085ce8ca1c23bbfe5c773ddd6a52f015b
The US localization module is being separated from the accounting app dependency. This keeps the base US localization lighter and makes future accounting-specific localization changes easier to manage in a dedicated module.
Original PR description
Purpose ======= Nothing depending on account itself + future accounting related stuff should go into a dedicated l10n_us_account module. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a mail group moderator emails their own group, the message is now accepted automatically instead of requiring them to approve it manually. This reduces unnecessary moderation steps and helps group discussions move faster while keeping existing moderation rules in place.
Original PR description
Purpose ======= When a moderator sends an email to his mail group, he needs to accept his own message if no moderation rules exist for him. Instead, we want to automatically accept the message. Task-3724917
Demo records were updated with French content and consistent customer details so sales demos can better showcase the translation tool. The changes affect CRM opportunities and related demo contacts used across event and website event scenarios.
Original PR description
Purpose ======= Provide demo data in French so that during demos, one can show the new translating tool. Specifications ============ 1) Updated the Opp "Info about services". [Changed the address] 2) Updated the Opp "Quote for 150 carpets" and added an incoming message in French. 3) Added customer in "Quote for 150 carpets" Opportunity. Task-3612665
Website editors can now choose to include events that are already in progress when using the events snippet. This makes event listings more useful by keeping current events visible alongside upcoming ones.
Original PR description
Add a filter 'Upcoming and Ongoing Events' to allow the user to have ongoing events selected by the dynamic snippet. Task-3628185
US payroll demo data has been reorganized so company information is shared more cleanly and the main payroll module no longer needs the accounting app as a prerequisite. This makes the US payroll setup lighter and easier to install or demonstrate without pulling in unnecessary accounting dependencies.
This update improves how automated tests for Odoo Studio detect when a test has completed successfully. It helps make internal quality checks more reliable, reducing the chance of false results during development.
Resolved issues and error corrections
Copying a chart in Spreadsheet now preserves its link to the related Odoo menu. This prevents users from losing navigation context when duplicating charts and makes copied charts behave like the originals.
Original PR description
## Task Description: When copying a chart in a spreadsheet, the link to the Odoo menu is not kept. This PR aims to fix it by storing the Odoo Menu in the new extraData key of the chart definition. ## Related Task/PR: - Task-3380568 - https://github.com/odoo/o-spreadsheet/pull/2819 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
A fix introduced in https://github.com/odoo/odoo/pull/146836/commits/5fd63c81b092d07c4c92381a0391dad52d9b76aa resulted to unpredictable server-syncing behavior when deleting an order from the ticket screen. The value of sync notification message can be different between the runs of the `pos_restaurant_sync` tour test. To make the behaviour predictable, we make sure to await the syncing when sending order for preparation. Runbot Error: 56341 Forward-Port-Of: odoo/odoo#151952 Forward-Port-Of:
Original PR description
A fix introduced in https://github.com/odoo/odoo/pull/146836/commits/5fd63c81b092d07c4c92381a0391dad52d9b76aa resulted to unpredictable server-syncing behavior when deleting an order from the ticket screen. The value of sync notification message can be different between the runs of the `pos_restaurant_sync` tour test. To make the behaviour predictable, we make sure to await the syncing when sending order for preparation. Runbot Error: 56341 Forward-Port-Of: odoo/odoo#151952 Forward-Port-Of: odoo/odoo#151325
Fixes a visual issue where statistics buttons in form dropdowns no longer used the correct styling. This keeps form actions easier to recognize and consistent for users.
Original PR description
The `oe_stat_button` class was not applied anymore in the button box dropdown. This commit fixes that by adding the `o-form-buttonbox` class to the dropdown's menu. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Point of Sale backend order screen no longer shows an inactive update button that caused an error when clicked after returning products. This prevents unnecessary crashes and gives users a cleaner, less confusing order management experience.
Original PR description
Steps to produce: open session on point of sale add some of products and validate it go to the backend and return product click on update button Issue: Trackback on update button click. Cause: There is no action bind on that button, it's just a dummy button. Solution: remove dummy button as it is doing nothing. task-3653090 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The French HR time off module no longer depends on the broader French localization package that installs accounting features. This prevents accounting from being added unnecessarily when a business only needs French holiday/time off functionality.
Original PR description
Before this commit the module was depending on `l10n_fr` which would have installed accounting.
Payroll localization modules for the UAE, France, India, Kenya, Morocco, and Saudi Arabia no longer force installation of the related accounting localization. This keeps payroll setup lighter and avoids unwanted accounting dependencies for companies that only need payroll features.
Original PR description
*: ae, fr, in, ke, ma, sa Before this commit, those modules were depending on their respective accounting l10n which is an unwanted behaviour.
This fixes a leftover outdated interface setting in Luxembourg reporting. The change prevents confusing technical console messages and keeps the codebase cleaner without affecting normal business workflows.
Original PR description
**Many2onebutton widget was removed in 11.0** Impacted versions: - 15.0 - 16.0 - 17.0 The `Many2onebutton` widget was removed in `11.0` and this is the only remaining reference in the codebase. Odoo handles the situation gracefully with only a JS console error message, but it is confusing when it shows up in code searches. Fixes: https://github.com/odoo/odoo/issues/127193
Prior to this commit, Gift cards assigned to a specific partner were restricted for use only by that partner. This commit rectifies the issue, enabling Gift cards to be usable by any customer as intended. opw-3689391 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#152950 Forward-Port-Of: odoo/odoo#149913
Original PR description
Prior to this commit, Gift cards assigned to a specific partner were restricted for use only by that partner. This commit rectifies the issue, enabling Gift cards to be usable by any customer as intended. opw-3689391 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#152950 Forward-Port-Of: odoo/odoo#149913
Description of the issue/feature this PR addresses: Current behavior before PR: This traceback raised because data is already present in with user_id 2 because if we will install ``mail`` freshly this entry will generate due to this function [``_find_or_create_for_user``](https://github.com/odoo/odoo/blob/3adeb31b9028bd70f0a692d9c13f96b29dc1cf87/addons/mail/models/res_users_settings.py#L27C9-L27C33) call from [here](https://github.com/odoo/odoo/blob/fa9e4cb93f26ada5d68de4696033da4f1db2e1a
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: This traceback raised because data is already present in with user_id 2 because if we will install ``mail`` freshly…
Description of the issue/feature this PR addresses:
Current behavior before PR:
This traceback raised because data is already present in with user_id 2 because if we will install ``mail``
freshly this entry will generate due to this function [``_find_or_create_for_user``](https://github.com/odoo/odoo/blob/3adeb31b9028bd70f0a692d9c13f96b29dc1cf87/addons/mail/models/res_users_settings.py#L27C9-L27C33) call from [here](https://github.com/odoo/odoo/blob/fa9e4cb93f26ada5d68de4696033da4f1db2e1ab/addons/mail/models/res_users.py#L188)
with no ir_model_data entry and while updating newly record introduce [here](https://github.com/odoo/odoo/blob/f839688c1cefc5113bbefe1aecfaef97067f6e59/odoo/addons/base/data/res_users_data.xml#L26) in saas-17.1 it creating new entry in res_users_setting and its voilating the unique constraint of the [user_id](https://github.com/odoo/odoo/blob/f839688c1cefc5113bbefe1aecfaef97067f6e59/odoo/addons/base/models/res_users_settings.py#L14)
Desired behavior after PR is merged:
for prevent voilation of unique constraint used forcecreate="0"
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-17.1/odoo/service/server.py", line 1286, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-14>", line 2, in new
File "/home/odoo/src/odoo/saas-17.1/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/saas-17.1/odoo/modules/registry.py", line 119, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/odoo/src/odoo/saas-17.1/odoo/modules/loading.py", line 422, in load_modules
loaded_modules, processed_modules = load_module_graph(
File "/home/odoo/src/odoo/saas-17.1/odoo/modules/loading.py", line 227, in load_module_graph
load_data(env, idref, mode, kind='data', package=package)
File "/home/odoo/src/odoo/saas-17.1/odoo/modules/loading.py", line 71, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "/home/odoo/src/odoo/saas-17.1/odoo/tools/convert.py", line 627, in convert_file
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "/home/odoo/src/odoo/saas-17.1/odoo/tools/convert.py", line 693, in convert_xml_import
obj.parse(doc.getroot())
File "/home/odoo/src/odoo/saas-17.1/odoo/tools/convert.py", line 613, in parse
self._tag_root(de)
File "/home/odoo/src/odoo/saas-17.1/odoo/tools/convert.py", line 556, in _tag_root
f(rec)
File "/home/odoo/src/odoo/saas-17.1/odoo/tools/convert.py", line 569, in _tag_root
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /home/odoo/src/odoo/saas-17.1/odoo/addons/base/data/res_users_data.xml:26, somewhere inside
<record id="user_admin_settings" model="res.users.settings">
<field name="user_id" ref="base.user_admin"/>
</record>
```
TBG-1066
upg-1311090,1311854
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#153053Steps: -------- - Install project. - Go to settings and select Custom Email Servers. - Add alias domain. - Then go to the project. - Create a new project. - The gap between the email alias and project title is too much. Issue: -------- -When we create a new project the gap between the email alias and project name is too much when only the project is installed and there are no options to display. Cause: ---------- -The margin-top taking too much space. Fix: ----- -After t
Original PR description
Steps: -------- - Install project. - Go to settings and select Custom Email Servers. - Add alias domain. - Then go to the project. - Create a new project. - The gap between the email alias and project title is too much. Issue: -------- -When we create a new project the gap between the email alias and project name is too much when only the project is installed and there are no options to display. Cause: ---------- -The margin-top taking too much space. Fix: ----- -After this commit the space between email-alias and project name is decreased. task-3550638 Forward-Port-Of: odoo/odoo#153277 Forward-Port-Of: odoo/odoo#139908
A user that is not admin cannot create an mail.alias. We can create the alias in sudo since we control the default_values and model that are created with the new alias. Check the _check_alias_domain_id_mc constraint in sudo because non amdin user cannot read model ir.model. Forward-Port-Of: odoo/odoo#153222
Original PR description
A user that is not admin cannot create an mail.alias. We can create the alias in sudo since we control the default_values and model that are created with the new alias. Check the _check_alias_domain_id_mc constraint in sudo because non amdin user cannot read model ir.model. Forward-Port-Of: odoo/odoo#153222
Since [1], the websocket worker is started when a transient thread is added to the mail store. This occurs because this PR introduced a call to the `addChannel` method of the bus service when the current user was not member of the thread. Since transient threads are not yet created, they have a partial state that does not necessarily include channel members hence the impression that the current user is not member of the channel. This PR prevent starting the bus service for transient thread
Original PR description
Since [1], the websocket worker is started when a transient thread is added to the mail store. This occurs because this PR introduced a call to the `addChannel` method of the bus service when the current user was not member of the thread. Since transient threads are not yet created, they have a partial state that does not necessarily include channel members hence the impression that the current user is not member of the channel. This PR prevent starting the bus service for transient threads. [1]: https://github.com/odoo/odoo/pull/146800 Forward-Port-Of: odoo/odoo#153064 Forward-Port-Of: odoo/odoo#153000
This commit fixes a logic operator that was not correctly used. Forward-Port-Of: odoo/enterprise#55029
Original PR description
This commit fixes a logic operator that was not correctly used. Forward-Port-Of: odoo/enterprise#55029
In the intrastat report, each account move is now grouped by country (using norm ISO 3166), currency (norm ISO 4217) and commodity code. Each line can be unfolded to show each individual account move with its corresponding values. When only Arrival or Dispatch is selected, the total value for each group is shown as well as a total line for the total value of Arrivals or Dispatches. This change was done because usually people and organisation to which they must report this information ar
Original PR description
In the intrastat report, each account move is now grouped by country (using norm ISO 3166), currency (norm ISO 4217) and commodity code. Each line can be unfolded to show each individual account move with its corresponding values. When only Arrival or Dispatch is selected, the total value for each group is shown as well as a total line for the total value of Arrivals or Dispatches. This change was done because usually people and organisation to which they must report this information aren't interested in each individual move but rather to have an overall view of how much of a certain commodity was ship to a certain country. The previous report was too verbose. People still have the options to unfold all the lines if they need it. task-3605696 Forward-Port-Of: odoo/enterprise#56353 Forward-Port-Of: odoo/enterprise#31893
Extra Translations for ecuadorian ride and change position of date field in v17.0 Forward-Port-Of: odoo/enterprise#54068
Original PR description
Extra Translations for ecuadorian ride and change position of date field in v17.0 Forward-Port-Of: odoo/enterprise#54068
Before this commit, the `test_dashboard_ui` test in payroll was relying on sign. However, `hr_payroll` does not depend on sign, which would lead to the test breaking when that module is not installed. This commit adds a check to see if sign is installed before creating the additional data related to it. Forward-Port-Of: odoo/enterprise#56196 Forward-Port-Of: odoo/enterprise#56051
Original PR description
Before this commit, the `test_dashboard_ui` test in payroll was relying on sign. However, `hr_payroll` does not depend on sign, which would lead to the test breaking when that module is not installed. This commit adds a check to see if sign is installed before creating the additional data related to it. Forward-Port-Of: odoo/enterprise#56196 Forward-Port-Of: odoo/enterprise#56051
Versions: --------- - saas-16.2 Issue: ------ The partner address disappears after saving the record. Cause: ------ Starting from version 16.2, dynamic context keys are ignored for read RPCs. Solution: --------- Assign a context key that doesn't require evaluation, such as a field. task-3604404 Forward-Port-Of: odoo/enterprise#56179 Forward-Port-Of: odoo/enterprise#54534
Original PR description
Versions: --------- - saas-16.2 Issue: ------ The partner address disappears after saving the record. Cause: ------ Starting from version 16.2, dynamic context keys are ignored for read RPCs. Solution: --------- Assign a context key that doesn't require evaluation, such as a field. task-3604404 Forward-Port-Of: odoo/enterprise#56179 Forward-Port-Of: odoo/enterprise#54534
## Description Add missing index on `user_id` and `partner_id` to support the searches done in `get_recent_phone_calls` and `_get_number_of_missed_calls`. In a long living database that is making heavy use of the module, the table can grow to the millions of records. Forward-Port-Of: odoo/enterprise#54710
Original PR description
## Description Add missing index on `user_id` and `partner_id` to support the searches done in `get_recent_phone_calls` and `_get_number_of_missed_calls`. In a long living database that is making heavy use of the module, the table can grow to the millions of records. Forward-Port-Of: odoo/enterprise#54710
Before this PR: The string for the `tax_unit_id` field was 'VAT Units'. After this PR: The `tax_unit_id` field's string has been renamed 'GST Units'. Task-3726861 Forward-Port-Of: odoo/enterprise#56120
Original PR description
Before this PR: The string for the `tax_unit_id` field was 'VAT Units'. After this PR: The `tax_unit_id` field's string has been renamed 'GST Units'. Task-3726861 Forward-Port-Of: odoo/enterprise#56120
Be sure that cron is committed before to send email. In case of concurrent update with e.g. bounce, the cron will fail and so the email send again and again... Forward-Port-Of: odoo/enterprise#55774
Original PR description
Be sure that cron is committed before to send email. In case of concurrent update with e.g. bounce, the cron will fail and so the email send again and again... Forward-Port-Of: odoo/enterprise#55774
task-3533500 Forward-Port-Of: odoo/enterprise#55990
Original PR description
task-3533500 Forward-Port-Of: odoo/enterprise#55990
Before this commit, when a customer paid a subscription from 'Generate payment link' and got an error in the transaction or if it was canceled, Odoo was creating a draft invoice (it remained open) and saving the faulty token. After this commit. the draft invoice is canceled right after the error is detected and the token is saved only if the renewal state of the subscription is authorized. Task-id: 3734247 Forward-Port-Of: odoo/enterprise#56232
Original PR description
Before this commit, when a customer paid a subscription from 'Generate payment link' and got an error in the transaction or if it was canceled, Odoo was creating a draft invoice (it remained open) and saving the faulty token. After this commit. the draft invoice is canceled right after the error is detected and the token is saved only if the renewal state of the subscription is authorized. Task-id: 3734247 Forward-Port-Of: odoo/enterprise#56232
Purpose ======= On the 3 December 2023, we are using the API version 202211. However, the version 202209 is depreciated, so it might be the time to upgrade. Technical ========= The only technical change is the fact that projections are removed. Those were useful to fetch everything we needed in a single HTTP request, and so now, we have to make many HTTP requests to fetch the data (at least, one per "model"). Task-3620605 Forward-Port-Of: odoo/enterprise#56227 Forward-Port-Of: odoo
Original PR description
Purpose ======= On the 3 December 2023, we are using the API version 202211. However, the version 202209 is depreciated, so it might be the time to upgrade. Technical ========= The only technical change is the fact that projections are removed. Those were useful to fetch everything we needed in a single HTTP request, and so now, we have to make many HTTP requests to fetch the data (at least, one per "model"). Task-3620605 Forward-Port-Of: odoo/enterprise#56227 Forward-Port-Of: odoo/enterprise#52006
The key used was the id of the journal item, this is fine for most cases but will fail due to duplicate if the "Cash basis" function is set and a receivable aml is reconciled with two payment made at different dates. In this case the report will show the receivable aml split in two with the date/amount of each payment. To support this case, we now use a markup with the date of aml to produce unique keys. When the two payments have the same date, it's ok since the receivable aml is not split
Original PR description
The key used was the id of the journal item, this is fine for most cases but will fail due to duplicate if the "Cash basis" function is set and a receivable aml is reconciled with two payment made at different dates. In this case the report will show the receivable aml split in two with the date/amount of each payment. To support this case, we now use a markup with the date of aml to produce unique keys. When the two payments have the same date, it's ok since the receivable aml is not split in the report. Steps to reproduce 1/ Create an invoice 2/ Register 2 payments at different dates for this invoice 3/ General ledger with options "Unfold all" + "Cash basis" => Traceback `Got duplicate key in t-foreach: ~account.account~6|~account.move.line~1128` opw-3687800 Forward-Port-Of: odoo/enterprise#55136
### Steps to reproduce * install `l10n_es_reports` * switch to a Spanish company * open the Tax Report * on the top right, switch the report to "Tax Report (Mod 347) (ES)" * attempt to audit any line in that report (click on the amounts) You should be met with an empty list view. ### Cause When we attempt to get the domain for the lines to display, the `MOD_347_CUSTOM_ENGINES_DOMAINS` dict keys do not match with the custom engine function name. https://github.com/odoo/enterpri
Original PR description
### Steps to reproduce * install `l10n_es_reports` * switch to a Spanish company * open the Tax Report * on the top right, switch the report to "Tax Report (Mod 347) (ES)" * attempt to audit any line in that report (click on the amounts) You should be met with an empty list view. ### Cause When we attempt to get the domain for the lines to display, the `MOD_347_CUSTOM_ENGINES_DOMAINS` dict keys do not match with the custom engine function name. https://github.com/odoo/enterprise/blob/61e565517cc54ee0af9ed6123d3dc23b52c52522/l10n_es_reports/models/aeat_tax_reports.py#L101-L106 opw-3697928 Forward-Port-Of: odoo/enterprise#56199 Forward-Port-Of: odoo/enterprise#56044
Steps to reproduce: ------------------- - install documents and fleet apps; - be a user who is not in the `base.user_admin` group; - have admin rights to fleet and document; - put a document in the "Fleet" workspace; - click on "Link to a vehicle" button; Issue: ------ - First issue: An access error is triggered when we want to get the `model` field for an `ir.model` record. - Second issue: When a `Reference` field has the `model_field` option, a read on `ir.model` is triggered and a
Original PR description
Steps to reproduce: ------------------- - install documents and fleet apps; - be a user who is not in the `base.user_admin` group; - have admin rights to fleet and document; - put a document in the…
Steps to reproduce: ------------------- - install documents and fleet apps; - be a user who is not in the `base.user_admin` group; - have admin rights to fleet and document; - put a document in the "Fleet" workspace; - click on "Link to a vehicle" button; Issue: ------ - First issue: An access error is triggered when we want to get the `model` field for an `ir.model` record. - Second issue: When a `Reference` field has the `model_field` option, a read on `ir.model` is triggered and as we don't have the rights, this causes an access error. Solution: --------- Work on the `ir.model` record in sudo. Do not use the `model_field` option and use a default value for the `Reference` field which expects a string like `"model,id"`. Note: ----- This solution avoids adding a new access right for `ir.model` as follows: ```csv access_ir_model,access_ir_model,base.model_ir_model,documents.group_documents_user,1,0,0,0 ``` opw-3502558 Forward-Port-Of: odoo/enterprise#56147 Forward-Port-Of: odoo/enterprise#50784
Versions -------- - saas-16.2+ Steps ----- 1. Create a Sale Order; 2. add a Recurrence & click Save; 3. remove Recurrence & click Confirm; 4. cancel the SO; 5. click Set to Quotation. Issue ----- Sale Order still displays as a Subscription Quotation. Cause ----- The `write` method filters subscriptions on the `is_subscription` field before calling `super().write(vals)`. The `is_subscription` field is dependent on the `recurrence_id` field, so when setting `recurrence_id` to
Original PR description
Versions -------- - saas-16.2+ Steps ----- 1. Create a Sale Order; 2. add a Recurrence & click Save; 3. remove Recurrence & click Confirm; 4. cancel the SO; 5. click Set to Quotation. Issue ----- Sale Order still displays as a Subscription Quotation. Cause ----- The `write` method filters subscriptions on the `is_subscription` field before calling `super().write(vals)`. The `is_subscription` field is dependent on the `recurrence_id` field, so when setting `recurrence_id` to `False`, `is_subscription` should also be `False`. As this computation happens after filtering, `write` still adds a `subscription_state` to the record, despite it not being a subscription. Solution -------- Double check `is_subscription` before adding a `subscription_state` on write. opw-3709457 Forward-Port-Of: odoo/enterprise#56082 Forward-Port-Of: odoo/enterprise#55741