Wednesday, March 6, 2024
70 changes · master
Enhancements to existing features
When a time off type is duplicated, the copy now gets a clear “(copy)” label in its name. This helps HR users distinguish original leave types from duplicates and reduces confusion during configuration.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The HR Skills report now lets users filter results to show archived employees only. This makes it easier for HR teams to review historical employee skills data without mixing it with active employee records.
Original PR description
With this pr, you will be able to see only archived employee. task: 3688706 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The automated tests for phone number fields were moved to Odoo's newer testing framework. This improves maintainability and helps ensure phone-related behavior remains reliable without changing the user-facing product.
Original PR description
task-3705027
Vehicle contract views now show users with their avatar, making it easier to recognize the people linked to each contract at a glance. This is a small usability improvement for fleet management teams and does not change contract data or workflows.
Original PR description
task-3782687
This update improves Odoo's HOOT testing framework and related web tests, making automated tests more reliable and easier to maintain. It reduces false failures around dates, keyboard interactions, drag-and-drop, search focus, and text spacing, helping teams catch real issues faster without affecting everyday users.
Original PR description
Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10: https://github.com/odoo/odoo/pull/155639 Enterprise: https://github.com/odoo/enterprise/pull/58135 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update modernizes internal automated tests for confirmation dialogs in the web interface. It does not change how users interact with Odoo, but helps maintain quality and reliability for future web updates.
Original PR description
task-id: 3705027 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update moves web context test coverage to Odoo's newer testing framework. It does not change day-to-day functionality, but helps the team maintain the web interface with more reliable and modern automated checks.
Original PR description
task-id: 3705027 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update modernizes internal tests for the web overlay behavior, helping ensure pop-up and overlay interactions remain reliable. There is no direct change for end users, but it supports better long-term quality and maintainability of the web interface.
Original PR description
task-id: 3705027 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
Contact lists can now be ordered by name, making it easier for users to find and review records in a predictable order. This improves day-to-day navigation in the Contacts area without changing existing contact data or workflows.
Original PR description
Previously, the contacts in the list view could not be reordered by name. This PR now allows contacts to be ordered by name in the list view. Task-3754594
This update adjusts Web Studio automated tests to align with recent changes in the partner list view. It helps keep quality checks reliable so future updates can be validated without false failures.
Original PR description
Adapt tests based on the list view of res.partner in the community. Related PR-https://github.com/odoo/odoo/pull/155181 Task-3754594
Resolved issues and error corrections
Point of Sale receipts now show the correct tax percentage label instead of a generic tax value. This helps customers and cashiers see tax information clearly and avoids confusion on printed tickets.
Original PR description
Before this commit: On POS ticket, instead of `TAX%` value `Tax` value was visible in the row issue introduced in: https://github.com/odoo/odoo/commit/ab0bdf0192120671010634978f202da35ddfc79f After this commit: This commit fixes the above issue, `TAX%` is now correctly displayed on POS ticket task-3767532 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
Code cleanup and technical improvements
This update modernizes internal website tour testing tools by replacing older jQuery-based code with native JavaScript. It helps keep Odoo's automated tests easier to maintain while removing unused testing actions, with no expected direct impact on day-to-day users.
Original PR description
In this commit, we replace jQuery usages by native javascript in RunningTourActionHelper. Theses actions were removed from RunningTourActionHelper : - clicknoleave (not useful) - keydown (not used in codebase) - drag_and_drop_jquery (no longer needed) task~3600484
Miscellaneous changes
**Description of the issue/feature this PR addresses:** Function `_pre_reload_data` checks for the existance of accounts with the same code to avoid creating a duplicate. It does so however comparing with the code before normalizing it with the length from the template, failing to find possible duplicates with a normalized code. **Current behavior before PR:** If accounts with non-normalized codes _(eg 172)_ are being loaded, there's a risk that an account with a matching normalized code _(
Original PR description
**Description of the issue/feature this PR addresses:** Function `_pre_reload_data` checks for the existance of accounts with the same code to avoid creating a duplicate. It does so however comparing with the code before normalizing it with the length from the template, failing to find possible duplicates with a normalized code. **Current behavior before PR:** If accounts with non-normalized codes _(eg 172)_ are being loaded, there's a risk that an account with a matching normalized code _(eg 172000)_ already exists in the database. If the corresponding xmlid is not pointing at it, another account with the same code will be created triggering the ValidationError. **Desired behavior after PR is merged:** The comparison with existing accounts is made with the normalized code avoiding this conflicts. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156119 Forward-Port-Of: odoo/odoo#155256
New products now get the correct purchase billing setting based on their product type from the moment they are created. This prevents products from being assigned an incorrect default, reducing manual corrections and avoiding purchasing workflow inconsistencies.
Original PR description
Since 06d1e6eafbb984, the `purchase_method` is defined with a computed method, depending on the `detailed_type` of the product. But this compute method is only called if the dependency is changed after the creation. For new products, the default is set to 'receive', no matter the `detailed_type`. This commit changes the default to a precompute, so that the default is consistent by using the compute method on new products as well.
This update makes Odoo's automated test checks compare displayed text more consistently by treating different whitespace characters the same. It reduces fragile test failures in accounting flows, helping maintain quality without changing day-to-day user behavior.
Original PR description
Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10: https://github.com/odoo/odoo/pull/155639 Community: https://github.com/odoo/odoo/pull/156255 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue where signer email addresses disappeared when users changed the signing order setting on templates with multiple roles. This helps staff keep recipient details visible and reduces the risk of confusion when preparing documents for signature.
Original PR description
Before this commit, when toggling the Signing Order option in a template with more than one sign role, the signer emails would vanish (only their names would be kept). After this commit, by adding the `show_email` as true to the Send action, the signers emails no longer vanish. This will make the emails labels persist after performing onchange calls in the user interface. task-3659895
This update reorganizes internal tests for Odoo's messaging and live chat areas to prepare for a newer testing approach. It does not change customer-facing features, but it helps future development work move faster with smaller, easier-to-review changes.
Original PR description
This reduces the diff of follow-up PRs.
This update modernizes internal website tour testing tools by replacing older jQuery-based code with native JavaScript. It removes unused helper actions, reducing maintenance overhead without introducing expected changes for end users.
Original PR description
In this commit, we replace jQuery usages by native javascript in RunningTourActionHelper. Theses actions were removed from RunningTourActionHelper : - clicknoleave (not useful) - keydown (not used in codebase) - drag_and_drop_jquery (no longer needed) task~3600484
The Mexican delivery guide support has been consolidated so version 3.0 is handled directly in the main stock localization modules. This removes now-unneeded separate modules from master, simplifying maintenance without introducing a new business feature.
Original PR description
Both `l10n_mx_edi_stock_30` and `l10n_mx_edi_stock_extended_30` were added in stable to support version 3.0 of the Mexican delivery guide (Carta Porte). They are no longer needed in `master`, which is why they are being merged into their respective parent modules.
Correct the terms in this module and translate them in Italian. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155993 Forward-Port-Of: odoo/odoo#155905
Original PR description
Correct the terms in this module and translate them in Italian. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155993 Forward-Port-Of: odoo/odoo#155905
In [1], we added a rounding of the amounts in the `<PriceAmount>` tags to avoid floating point rounding errors. However, it seems the `float_round` function does not guarantee to avoid these errors. Take the example of `price_subtotal` = 250.80 and `quantity` = 3. We will compute the PriceAmount as 250.80 / 3 which yields 83.60000000000001. Even when using `float_round(amount, 10)`, it still results in the same amount with the rounding error. For that reason we use the built-in `round` met
Original PR description
In [1], we added a rounding of the amounts in the `<PriceAmount>` tags to avoid floating point rounding errors. However, it seems the `float_round` function does not guarantee to avoid these errors. Take the example of `price_subtotal` = 250.80 and `quantity` = 3. We will compute the PriceAmount as 250.80 / 3 which yields 83.60000000000001. Even when using `float_round(amount, 10)`, it still results in the same amount with the rounding error. For that reason we use the built-in `round` method of Python instead. [1] 58d57bbbaaab32ba0183890a9182e6de09b32ac5 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155949 Forward-Port-Of: odoo/odoo#155570
## Steps to reproduce - Install **eCommerce** app - Go to **Settings** and enable **Discounts, Loyalty & Gift Card** option - Go to **Website** app > **eCommerce** > **Loyalty** > **Discount & Loyalty** - Create a new coupon by setting the **Program Type** to **Coupons** and then save - Generate a new coupon by clicking the **GENERATE COUPONS** button. - Go to **Website** > **site** > **Homepage** - Go to **Shop** page - Add a product to the cart - Apply the coupon code created - Remov
Original PR description
## Steps to reproduce - Install **eCommerce** app - Go to **Settings** and enable **Discounts, Loyalty & Gift Card** option - Go to **Website** app > **eCommerce** > **Loyalty** > **Discount &…
## Steps to reproduce - Install **eCommerce** app - Go to **Settings** and enable **Discounts, Loyalty & Gift Card** option - Go to **Website** app > **eCommerce** > **Loyalty** > **Discount & Loyalty** - Create a new coupon by setting the **Program Type** to **Coupons** and then save - Generate a new coupon by clicking the **GENERATE COUPONS** button. - Go to **Website** > **site** > **Homepage** - Go to **Shop** page - Add a product to the cart - Apply the coupon code created - Remove the coupon code by clicking the bin icon next to the coupon code line - The coupon code is **_NOT_** removed. ## Investigation #### First, we'll take a look on what happens when a coupon code is applied - When a coupon code is applied, a new `sale.order.line` is created for it. - That triggers `super()._compute_website_order_line()` https://github.com/odoo/odoo/blob/d8ec7735aa8759fa94fc0223945ac9b19e05312e/addons/website_sale_loyalty/models/sale_order.py#L111 which **_filters out_** the discount order line https://github.com/odoo/odoo/blob/d8ec7735aa8759fa94fc0223945ac9b19e05312e/addons/website_sale/models/sale_order.py#L66 via the `_show_in_cart()` method https://github.com/odoo/odoo/blob/d8ec7735aa8759fa94fc0223945ac9b19e05312e/addons/website_sale_loyalty/models/sale_order_line.py#L12 - Then a new **_temporary_** sale.order.line is created by https://github.com/odoo/odoo/blob/d8ec7735aa8759fa94fc0223945ac9b19e05312e/addons/website_sale_loyalty/models/sale_order.py#L121 meaning that is has no `id` - ⚠️ Note that we can only apply one coupon from the same program type. #### Second, Let's take a look on what happens when we try to remove a coupon code - A call is made to `cart_update_json()` which calls https://github.com/odoo/odoo/blob/d8ec7735aa8759fa94fc0223945ac9b19e05312e/addons/website_sale/controllers/main.py#L811-L819 which calls https://github.com/odoo/odoo/blob/d8ec7735aa8759fa94fc0223945ac9b19e05312e/addons/website_sale_loyalty/models/sale_order.py#L159 - But as noted above the coupon order line **`has no id`** being a **_temporary_** record. Hence the `line_id` is **None** which basically cancels the cart update. opw-3744910 Forward-Port-Of: odoo/odoo#156383 Forward-Port-Of: odoo/odoo#154680
Once a user posts a review, they are able to edit this single review and not create any new ones. However if the user had multiple tabs open of the same course, then they can still access the "Add a review" functionality. This fix enforces the single review per user per course policy. Task-3721958 Forward-Port-Of: odoo/odoo#156411 Forward-Port-Of: odoo/odoo#153679
Original PR description
Once a user posts a review, they are able to edit this single review and not create any new ones. However if the user had multiple tabs open of the same course, then they can still access the "Add a review" functionality. This fix enforces the single review per user per course policy. Task-3721958 Forward-Port-Of: odoo/odoo#156411 Forward-Port-Of: odoo/odoo#153679
Forward-Port-Of: odoo/odoo#156571
Original PR description
Forward-Port-Of: odoo/odoo#156571
Current behavior before PR: Ctrl+clicking on a styled link is ineffective since the target is the styled element, which lacks an href. Desired behavior after PR is merged: The target should be set to the nearest `<a>` tag rather than on the styled tag. task-3773924 Forward-Port-Of: odoo/odoo#155820
Original PR description
Current behavior before PR: Ctrl+clicking on a styled link is ineffective since the target is the styled element, which lacks an href. Desired behavior after PR is merged: The target should be set to the nearest `<a>` tag rather than on the styled tag. task-3773924 Forward-Port-Of: odoo/odoo#155820
For repaired products with no stock, a new picking is wrongly created, leading to a gap in the repair sequence. This because the move is created in 'draft' and the function does not take it into account. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156476 Forward-Port-Of: odoo/odoo#156083
Original PR description
For repaired products with no stock, a new picking is wrongly created, leading to a gap in the repair sequence. This because the move is created in 'draft' and the function does not take it into account. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156476 Forward-Port-Of: odoo/odoo#156083
Before this PR: - Navigate to the author's profile from a course on website forum. - Go to the Questions tab and remove the existing filter - It directs to the login user's profile instead of removing the filter. After this PR: Now when the filter is removed and all the questions of the author are shown from his profile. Task-3725329 Forward-Port-Of: odoo/odoo#154901 Forward-Port-Of: odoo/odoo#153986
Original PR description
Before this PR: - Navigate to the author's profile from a course on website forum. - Go to the Questions tab and remove the existing filter - It directs to the login user's profile instead of removing the filter. After this PR: Now when the filter is removed and all the questions of the author are shown from his profile. Task-3725329 Forward-Port-Of: odoo/odoo#154901 Forward-Port-Of: odoo/odoo#153986
A new message type was added in stable. This is usually safe, however in cases where there are related fields on that same selection fetching them will raise an exception as the ORM has to fetch the translations for the selection in DB. We add a hack on mail.mail to update the selections in DB when fetching the message type the first time. Subsequent gets should be inexpensive as these are cached. task-3773301 --- I confirm I have signed the CLA and read the PR guidelines at www.odo
Original PR description
A new message type was added in stable. This is usually safe, however in cases where there are related fields on that same selection fetching them will raise an exception as the ORM has to fetch the translations for the selection in DB. We add a hack on mail.mail to update the selections in DB when fetching the message type the first time. Subsequent gets should be inexpensive as these are cached. task-3773301 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156235 Forward-Port-Of: odoo/odoo#155766
[FIX] stock: duplicating warehouse dependencies Before this commit when duplicating a warehouse, its operation types (picking.type) wouldn't get copied. This commit ensures that new picking.types are created for the duplicate warehouse. ### [Reproduce] - run odoo 17 with -i stock,mrp_subcontracting - in Inventory/Configuration/Warehouses Duplicate a Warehouse - Bug: in Inventory/Configuration/OperationTypes picking types aren't duplicated opw-3674614 Forward-Port-Of: odoo/odoo#151
Original PR description
[FIX] stock: duplicating warehouse dependencies Before this commit when duplicating a warehouse, its operation types (picking.type) wouldn't get copied. This commit ensures that new picking.types are created for the duplicate warehouse. ### [Reproduce] - run odoo 17 with -i stock,mrp_subcontracting - in Inventory/Configuration/Warehouses Duplicate a Warehouse - Bug: in Inventory/Configuration/OperationTypes picking types aren't duplicated opw-3674614 Forward-Port-Of: odoo/odoo#151769
**Current behavior:** A survey question which has a comment field counted as an answer will not reveal its text box input field when it is selected as the current answer. **Expected behavior:** After clicking on the comment field answer, the text box will be revealed and enabled. **Steps to reproduce:** 1. In the surveys app, add a question to a survey of type `Multiple choice: only one answer` 2. In the question's options, enable the `Show Comments Field` and `Comment is an answer`
Original PR description
**Current behavior:** A survey question which has a comment field counted as an answer will not reveal its text box input field when it is selected as the current answer. **Expected behavior:** After clicking on the comment field answer, the text box will be revealed and enabled. **Steps to reproduce:** 1. In the surveys app, add a question to a survey of type `Multiple choice: only one answer` 2. In the question's options, enable the `Show Comments Field` and `Comment is an answer` options 3. Go to the question in the survey, click on the comment answer and observe there is no field to enter a comment **Cause of the issue:** The function which is responsible for adapting these page elements is not selecting the correct html elements, thus their attributes are not properly changed when needed. **Fix:** Change the function variables so that they are pointing to the correct location in the DOM. opw-3748291 Forward-Port-Of: odoo/odoo#155023
The tour isn't working if you run it on mobile mode, it gets stuck at some points. To fix this issue, a mobile step was added, and one trigger was edited to work with mobile mode as well. task-3709501 Forward-Port-Of: odoo/odoo#155868 Forward-Port-Of: odoo/odoo#153444
Original PR description
The tour isn't working if you run it on mobile mode, it gets stuck at some points. To fix this issue, a mobile step was added, and one trigger was edited to work with mobile mode as well. task-3709501 Forward-Port-Of: odoo/odoo#155868 Forward-Port-Of: odoo/odoo#153444
This commit changes the computation of product having a negative forecasted quantity to create manual orderpoints. The issue was that each replenish location needed multiple `_read_group` on `stock.quant` and `stock.move` on all storable product. This commit makes only 3 `_read_group`s for all products x locations and post process the group and quantity sum by location in Python. This method gives some performance gain in time as well as in memory consumption Task: 3653272 Here is th
Original PR description
This commit changes the computation of product having a negative forecasted quantity to create manual orderpoints. The issue was that each replenish location needed multiple `_read_group` on…
This commit changes the computation of product having a negative forecasted quantity to create manual orderpoints. The issue was that each replenish location needed multiple `_read_group` on `stock.quant` and `stock.move` on all storable product. This commit makes only 3 `_read_group`s for all products x locations and post process the group and quantity sum by location in Python. This method gives some performance gain in time as well as in memory consumption Task: 3653272 Here is the time comparison before/after the patch for different configuration | | before | after | |---|---|---| | 700 loc, 300 prod | 14.08s | 850ms | |10 loc, 3k prod | 2.174s | 349ms | |700 loc, 30k prod | TO | 74s | 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 Forward-Port-Of: odoo/odoo#156507 Forward-Port-Of: odoo/odoo#149966
Before this commit, there were issues with the display and ordering of categories. Long category names would overflow their containers and overlap with other categories. Additionally, the order of parent categories was incorrect when a selected category had many parents. This was due to the `getAllChildren` function not returning all children correctly, which in turn affected the display of the parent sequence. opw-3776740 --- I confirm I have signed the CLA and read the PR guidelines at
Original PR description
Before this commit, there were issues with the display and ordering of categories. Long category names would overflow their containers and overlap with other categories. Additionally, the order of parent categories was incorrect when a selected category had many parents. This was due to the `getAllChildren` function not returning all children correctly, which in turn affected the display of the parent sequence. opw-3776740 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156105
Steps to reproduce: 1) Configure a carrier with 3d party api(for ex. fedex) 2) Create 2 shipping addresses(better to choose addresses with different delivery rates) 3) Go to /shop and add product that needs to be delivered 4) Proceed to checkout choosing a shipping address and a carrier 5) See the calculated rate 6) Click on 'edit' near the addresses and change the address 7) Click 'confirm' and observe that a new rate on the badge is not applied to the order After this commit the rate
Original PR description
Steps to reproduce: 1) Configure a carrier with 3d party api(for ex. fedex) 2) Create 2 shipping addresses(better to choose addresses with different delivery rates) 3) Go to /shop and add product that needs to be delivered 4) Proceed to checkout choosing a shipping address and a carrier 5) See the calculated rate 6) Click on 'edit' near the addresses and change the address 7) Click 'confirm' and observe that a new rate on the badge is not applied to the order After this commit the rate is recalculated and updated when the shipment address is changed. opw-3737266 Forward-Port-Of: odoo/odoo#155943 Forward-Port-Of: odoo/odoo#155170
## Description Since https://github.com/odoo/odoo/pull/76734, the new field `alias_full_name` is used in addition to `alias_name` to search on `mail.alias` and route emails in `message_route`. It's also used as a search criteria in `_search_alias_email` on `mail.alias.mixin. optional`. The issue is that the table `mail.alias` can grow quite large, and only the old field `alias_name` has an index on it, which may not be selective enough, forcing Seq.Scans on the table with possibly millions of r
Original PR description
## Description Since https://github.com/odoo/odoo/pull/76734, the new field `alias_full_name` is used in addition to `alias_name` to search on `mail.alias` and route emails in `message_route`. It's…
## Description
Since https://github.com/odoo/odoo/pull/76734, the new field `alias_full_name` is used in addition to `alias_name` to search on `mail.alias` and route emails in `message_route`. It's also used as a search criteria in `_search_alias_email` on `mail.alias.mixin. optional`. The issue is that the table `mail.alias` can grow quite large, and only the old field `alias_name` has an index on it, which may not be selective enough, forcing Seq.Scans on the table with possibly millions of records. The impact is noticeable on `message_route` which is a hot path for processing incoming emails.
Adding an index on `alias_full_name` allows PostgreSQL to do an bitmap OR scan on the two indexes, considerably speeding up search criteria that are a disjunction between `alias_name` and `alias_full_name`.
## Benchmark
For domain
```python
[
'&',
('alias_model_id', '!=', reply_model_id),
'|',
('alias_full_name', 'in', email_to_list),
'&', ('alias_name', 'in', email_to_localparts), ('alias_incoming_local', '=', True),
]
```
with test arguments, on a `mail.alias` table containing over 2M records.
| | Before | After |
|-----------|--------|-------|
| Timing | 696ms | 1ms |
| Buffer IO | 790MB | 48KB |
Specially impactful as those gains needs to be multiplied by the frequency of the searches.
## Reference
task-3724844
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#156237In the test framework at [1], when a tour is finished, a request to stop loading content is sent to the browser. This clashes with [2] which sometimes is in the middle of a fetch request from the Snippets Menu. (Specifically when loading SVGs icons for buttons.) This commit fixes that by adding a fallback to an empty SVG when the fetch fails. This could lead to buttons appearing empty. [1]: https://github.com/odoo/odoo/blob/eca34179a1657d8fcbdf845349b5b051e5fc6043/odoo/tests/common.py#
Original PR description
In the test framework at [1], when a tour is finished, a request to stop loading content is sent to the browser. This clashes with [2] which sometimes is in the middle of a fetch request from the Snippets Menu. (Specifically when loading SVGs icons for buttons.) This commit fixes that by adding a fallback to an empty SVG when the fetch fails. This could lead to buttons appearing empty. [1]: https://github.com/odoo/odoo/blob/eca34179a1657d8fcbdf845349b5b051e5fc6043/odoo/tests/common.py#L1437 [2]: https://github.com/odoo/odoo/blob/eca34179a1657d8fcbdf845349b5b051e5fc6043/addons/web_editor/static/src/js/editor/snippets.options.js#L110 runbot-54422 Forward-Port-Of: odoo/odoo#155546
User settings is used to store user's preferences, in web we use it to store the home menus apps order and in mail for various settings like push to talk key, discuss sidebar preferences, etc. Before this commit, the `setUserSettings` method from the user service overrided all the previous key that has not been changed because it kept only the changed keys returned by the backend. Leading to preferences being lost during the session when reordering the home menu apps. With this commit, we
Original PR description
User settings is used to store user's preferences, in web we use it to store the home menus apps order and in mail for various settings like push to talk key, discuss sidebar preferences, etc. Before…
User settings is used to store user's preferences, in web we use it to store the home menus apps order and in mail for various settings like push to talk key, discuss sidebar preferences, etc.
Before this commit, the `setUserSettings` method from the user service overrided all the previous key that has not been changed because it kept only the changed keys returned by the backend. Leading to preferences being lost during the session when reordering the home menu apps.
With this commit, we keep the previous keys that have not been changed.
Steps to reproduce:
- Go to the home menu
- In the Owl devtool check the settings object from the user service:
```JavaScript
{
"id": 1,
"user_id": {
"id": 2
},
"is_discuss_sidebar_category_channel_open": true,
"is_discuss_sidebar_category_chat_open": true,
"push_to_talk_key": false,
"use_push_to_talk": false,
"voice_active_duration": 0,
"volume_settings_ids": [
[
"ADD",
[]
]
],
"homemenu_config": "[\"mail.menu_root_discuss\",\"room.room_menu_root\",\"calendar.mail_menu_calendar\",\"appointment.main_menu_appointments\",\"project_todo.menu_todo_todos\",\"membership.menu_association\",\"knowledge.knowledge_menu_root\",\"contacts.menu_contacts\",\"frontdesk.frontdesk_menu_root\",\"point_of_sale.menu_point_root\",\"crm.crm_menu_root\",\"sale.sale_menu_root\",\"spreadsheet_dashboard.spreadsheet_dashboard_menu_root\",\"sale_subscription.menu_sale_subscription_root\",\"sale_renting.rental_menu_root\",\"pos_preparation_display.menu_point_kitchen_display_root\",\"account_accountant.menu_accounting\",\"documents.menu_root\",\"project.menu_main_pm\",\"hr_timesheet.timesheet_menu_root\",\"industry_fsm.fsm_menu_root\",\"planning.planning_menu_root\",\"helpdesk.menu_helpdesk_root\",\"website.menu_website_configuration\",\"website_slides.website_slides_menu_root\",\"social.menu_social_global\",\"marketing_automation.marketing_automation_menu\",\"mass_mailing.mass_mailing_menu_root\",\"mass_mailing_sms.mass_mailing_sms_menu_root\",\"event.event_main_menu\",\"survey.menu_surveys\",\"purchase.menu_purchase_root\",\"stock.menu_stock_root\",\"mrp.menu_mrp_root\",\"mrp_workorder.menu_mrp_workorder_root\",\"quality_control.menu_quality_root\",\"stock_barcode.stock_barcode_menu\",\"maintenance.menu_maintenance_title\",\"repair.menu_repair_order\",\"mrp_plm.menu_mrp_plm_root\",\"account_consolidation.menu_consolidation\",\"sign.menu_document\",\"hr.menu_hr_root\",\"hr_work_entry_contract_enterprise.menu_hr_payroll_root\",\"hr_appraisal.menu_hr_appraisal_root\",\"hr_attendance.menu_hr_attendance_root\",\"hr_recruitment.menu_hr_recruitment_root\",\"hr_referral.menu_hr_referral_root\",\"fleet.menu_root\",\"hr_holidays.menu_hr_holidays_root\",\"hr_expense.menu_hr_expense_root\",\"lunch.menu_lunch\",\"im_livechat.menu_livechat_root\",\"data_recycle.menu_data_cleaning_root\",\"approvals.approvals_menu_root\",\"whatsapp.whatsapp_menu_main\",\"iot.iot_menu_root\",\"base.menu_management\",\"base.menu_tests\",\"base.menu_administration\"]",
"voip_username": false,
"voip_secret": false,
"should_call_from_another_device": false,
"external_device_number": false,
"should_auto_reject_incoming_calls": false,
"how_to_call_on_mobile": "ask",
"is_discuss_sidebar_category_whatsapp_open": true,
"onsip_auth_username": false,
"livechat_username": false,
"livechat_lang_ids": [],
"is_discuss_sidebar_category_livechat_open": true
}
```
- Reorder an app in the home menu and check again the settings object:
```JavaScript
{
"id": 1,
"homemenu_config": "[\"mail.menu_root_discuss\",\"room.room_menu_root\",\"project_todo.menu_todo_todos\",\"calendar.mail_menu_calendar\",\"appointment.main_menu_appointments\",\"membership.menu_association\",\"knowledge.knowledge_menu_root\",\"contacts.menu_contacts\",\"frontdesk.frontdesk_menu_root\",\"point_of_sale.menu_point_root\",\"crm.crm_menu_root\",\"sale.sale_menu_root\",\"spreadsheet_dashboard.spreadsheet_dashboard_menu_root\",\"sale_subscription.menu_sale_subscription_root\",\"sale_renting.rental_menu_root\",\"pos_preparation_display.menu_point_kitchen_display_root\",\"account_accountant.menu_accounting\",\"documents.menu_root\",\"project.menu_main_pm\",\"hr_timesheet.timesheet_menu_root\",\"industry_fsm.fsm_menu_root\",\"planning.planning_menu_root\",\"helpdesk.menu_helpdesk_root\",\"website.menu_website_configuration\",\"website_slides.website_slides_menu_root\",\"social.menu_social_global\",\"marketing_automation.marketing_automation_menu\",\"mass_mailing.mass_mailing_menu_root\",\"mass_mailing_sms.mass_mailing_sms_menu_root\",\"event.event_main_menu\",\"survey.menu_surveys\",\"purchase.menu_purchase_root\",\"stock.menu_stock_root\",\"mrp.menu_mrp_root\",\"mrp_workorder.menu_mrp_workorder_root\",\"quality_control.menu_quality_root\",\"stock_barcode.stock_barcode_menu\",\"maintenance.menu_maintenance_title\",\"repair.menu_repair_order\",\"mrp_plm.menu_mrp_plm_root\",\"account_consolidation.menu_consolidation\",\"sign.menu_document\",\"hr.menu_hr_root\",\"hr_work_entry_contract_enterprise.menu_hr_payroll_root\",\"hr_appraisal.menu_hr_appraisal_root\",\"hr_attendance.menu_hr_attendance_root\",\"hr_recruitment.menu_hr_recruitment_root\",\"hr_referral.menu_hr_referral_root\",\"fleet.menu_root\",\"hr_holidays.menu_hr_holidays_root\",\"hr_expense.menu_hr_expense_root\",\"lunch.menu_lunch\",\"im_livechat.menu_livechat_root\",\"data_recycle.menu_data_cleaning_root\",\"approvals.approvals_menu_root\",\"whatsapp.whatsapp_menu_main\",\"iot.iot_menu_root\",\"base.menu_management\",\"base.menu_tests\",\"base.menu_administration\"]"
}
```
Forward-Port-Of: odoo/odoo#156060
Forward-Port-Of: odoo/odoo#155902Before this commit, an expired promotion program could still be used. This issue arose due to a recent refactoring, which resulted in the 'date_to' and 'date_from' fields not being properly converted to date format. opw-3782490 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156280
Original PR description
Before this commit, an expired promotion program could still be used. This issue arose due to a recent refactoring, which resulted in the 'date_to' and 'date_from' fields not being properly converted to date format. opw-3782490 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156280
This PR fixes issues linked to the new headers: - fix the duplicated navbar ids - consider Offcanvas instead of Collapse for "burger" menus - fix the header history, as some observed changes were breaking it (needed for the next commit, but should also be backported in earlier versions) - fix duplicated mega menu synchronization issues task-3609531 opw-3730165 Forward-Port-Of: odoo/odoo#155482 Forward-Port-Of: odoo/odoo#146492
Original PR description
This PR fixes issues linked to the new headers: - fix the duplicated navbar ids - consider Offcanvas instead of Collapse for "burger" menus - fix the header history, as some observed changes were breaking it (needed for the next commit, but should also be backported in earlier versions) - fix duplicated mega menu synchronization issues task-3609531 opw-3730165 Forward-Port-Of: odoo/odoo#155482 Forward-Port-Of: odoo/odoo#146492
Specification: The changes made in [this](https://github.com/odoo/odoo/commit/182b0554882a2eeb5d86c9cb6fdaed6618b2615b) giving user ownership of those user related keys by removing them from the session after reading them, the value of user was undefined, which resulted in traceback. Desired behavior after PR is merged: The issue to be resolved user receives the value, now we can insert signature using '/signature' task-3725358 Forward-Port-Of: odoo/odoo#152994
Original PR description
Specification: The changes made in [this](https://github.com/odoo/odoo/commit/182b0554882a2eeb5d86c9cb6fdaed6618b2615b) giving user ownership of those user related keys by removing them from the session after reading them, the value of user was undefined, which resulted in traceback. Desired behavior after PR is merged: The issue to be resolved user receives the value, now we can insert signature using '/signature' task-3725358 Forward-Port-Of: odoo/odoo#152994
Current behavior: When a user has only "User" right for point of sale and no other access some functionalities are not working properly. For example, the user cannot create an invoice from the PoS interface. And the user cannot use the "Ship Later" functionality. Steps to reproduce: - Change the right of a user to "User" for point of sale and no other access. - Log in as this user and try to create an invoice from the PoS - Try to use the "Ship Later" functionality Note: This commit m
Original PR description
Current behavior: When a user has only "User" right for point of sale and no other access some functionalities are not working properly. For example, the user cannot create an invoice from the PoS interface. And the user cannot use the "Ship Later" functionality. Steps to reproduce: - Change the right of a user to "User" for point of sale and no other access. - Log in as this user and try to create an invoice from the PoS - Try to use the "Ship Later" functionality Note: This commit modify the access right of the test pos_user so that it has the minimum access to be able to use the PoS interface properly. opw-3644739 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#153104
When listing jobs on the website, we show the number of open positions. Currently the "open positions" were crafted in the QWeb template in such a way that the translation mechanism couldn't extract it and thus it could not be translated. In this commit we fix that, so that it can be translated again. opw-3761288 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156312 Forward-Port-Of: odoo/odoo#155876
Original PR description
When listing jobs on the website, we show the number of open positions. Currently the "open positions" were crafted in the QWeb template in such a way that the translation mechanism couldn't extract it and thus it could not be translated. In this commit we fix that, so that it can be translated again. opw-3761288 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156312 Forward-Port-Of: odoo/odoo#155876
``One of the parts of the number are invalid or unknown`` error occurs when the user adds a Tax ID. This commit changes the logger exception to a warning to avoid an unnecessary error in the log. sentry-4880057848, 4972280626 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155721
Original PR description
``One of the parts of the number are invalid or unknown`` error occurs when the user adds a Tax ID. This commit changes the logger exception to a warning to avoid an unnecessary error in the log. sentry-4880057848, 4972280626 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155721
After this pr https://github.com/odoo/odoo/pull/148139 the table moves where not saved anymore. This commit makes sure that when a table is unselected or the edit move is exited, the selected tables are updated in the backend. 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 Forward-Port-Of: odoo/odoo#156369
Original PR description
After this pr https://github.com/odoo/odoo/pull/148139 the table moves where not saved anymore. This commit makes sure that when a table is unselected or the edit move is exited, the selected tables are updated in the backend. 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 Forward-Port-Of: odoo/odoo#156369
Cascade removal of account.report.expression records to corresponding account.report.external.value, avoiding the following issue when upgrading: ``` Traceback (most recent call last): File "/home/odoo/src/odoo/17.0/odoo/service/server.py", line 1302, in preload_registries registry = Registry.new(dbname, update_module=update_module) File "<decorator-gen-16>", line 2, in new File "/home/odoo/src/odoo/17.0/odoo/tools/func.py", line 87, in locked return func(inst, *args, **kw
Original PR description
Cascade removal of account.report.expression records to corresponding account.report.external.value, avoiding the following issue when upgrading: ``` Traceback (most recent call last): File…
Cascade removal of account.report.expression records to corresponding account.report.external.value, avoiding the following issue when upgrading:
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/17.0/odoo/service/server.py", line 1302, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-16>", line 2, in new
File "/home/odoo/src/odoo/17.0/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/17.0/odoo/modules/registry.py", line 113, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/odoo/src/odoo/17.0/odoo/modules/loading.py", line 536, in load_modules
env['ir.model.data']._process_end(processed_modules)
File "/tmp/tmpwrjjshgf/migrations/base/0.0.0/pre-models-no-model-data-delete.py", line 103, in _process_end
return super(IrModelData, self)._process_end(modules)
File "/home/odoo/src/odoo/17.0/odoo/addons/base/models/ir_model.py", line 2562, in _process_end
self._process_end_unlink_record(record)
File "/home/odoo/src/odoo/17.0/addons/website/models/ir_model_data.py", line 36, in _process_end_unlink_record
return super()._process_end_unlink_record(record)
File "/home/odoo/src/odoo/17.0/odoo/addons/base/models/ir_model.py", line 2491, in _process_end_unlink_record
record.unlink()
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4218, in unlink
cr.execute(SQL(
File "/home/odoo/src/odoo/17.0/odoo/sql_db.py", line 332, in execute
res = self._obj.execute(query, params)
psycopg2.errors.ForeignKeyViolation: update or delete on table "account_report_expression" violates foreign key constraint "account_report_external_value_target_report_expression_id_fkey" on table "account_report_external_value"
DETAIL: Key (id)=(94) is still referenced from table "account_report_external_value".
```
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#154191Steps to reproduce: - Install point of sale and accounting - Create a branch - Make a copy of the outstanding receipts account and change company to the branch - Attach the branch to this account in the accounting settings - Open a PoS make a transaction and close the session Issues: An error is displayed notifying the user that the journal entry draft is not valid. Solution: Accounts that are attached to a branch should be valid for them as well as their parents account. Task li
Original PR description
Steps to reproduce: - Install point of sale and accounting - Create a branch - Make a copy of the outstanding receipts account and change company to the branch - Attach the branch to this account in the accounting settings - Open a PoS make a transaction and close the session Issues: An error is displayed notifying the user that the journal entry draft is not valid. Solution: Accounts that are attached to a branch should be valid for them as well as their parents account. Task link: https://www.odoo.com/web#model=project.task&id=3659707 opw-3659707 Forward-Port-Of: odoo/odoo#148810
Steps to reproduce: - create a relational filter, let's say on `res.company` - add a default value - reference the filter in a cell with `=ODOO.FILTER.VALUE("my filter")` => every `ODOO.FILTER.VALUE` triggers an evaluation With this commit, the re-evaluation after the data is fetched uses the data source mechanism which only re-evaluates when all the data promises are resolved, instead of evaluating after every resolved promise. With this commit, the number of evaluations required
Original PR description
Steps to reproduce: - create a relational filter, let's say on `res.company` - add a default value - reference the filter in a cell with `=ODOO.FILTER.VALUE("my filter")` => every `ODOO.FILTER.VALUE`…
Steps to reproduce:
- create a relational filter, let's say on `res.company`
- add a default value
- reference the filter in a cell with `=ODOO.FILTER.VALUE("my filter")`
=> every `ODOO.FILTER.VALUE` triggers an evaluation
With this commit, the re-evaluation after the data is fetched uses the
data source mechanism which only re-evaluates when all the data promises
are resolved, instead of evaluating after every resolved promise.
With this commit, the number of evaluations required when loading the
Timesheet report on our prod goes from 5 evaluations to only 3 (each evaluation
is 2-3s) because `ODOO.FILTER.VALUE("Company")` is present two times.
One issue this commit doesn't fix: there one RPC per `ODOO.FILTER.VALUE`
(can be fixed in master very easily because we refactored data fetching)
Task: 3787125
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#156626
Forward-Port-Of: odoo/odoo#156495This PR fixes the background of notifications in the front-end. Before this PR, `.o_notification` background was set to `bg-view` . This was creating an issue in the front-end where `.bg-view` doesn't exist, making the background of the notification transparent when an user is not logged in and ultimately causing readability issues. Issue introduced in [1]. This PR changes the way we apply the background from a utility class approach to a SCSS approach. That way, we can easily override
Original PR description
This PR fixes the background of notifications in the front-end. Before this PR, `.o_notification` background was set to `bg-view` . This was creating an issue in the front-end where `.bg-view` doesn't exist, making the background of the notification transparent when an user is not logged in and ultimately causing readability issues. Issue introduced in [1]. This PR changes the way we apply the background from a utility class approach to a SCSS approach. That way, we can easily override in `website.scss` with the `$body-color` of the website. task-3716367 [1] 4e1f0b8ea522accae4860937c2fb3815281e8483 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#154337 Forward-Port-Of: odoo/odoo#152432
## Issue: - Expenses entered in currencies other than the company currency are incorrectly calculated using today's exchange rate instead of the rate applicable on the date the expense was made. This results in inaccurate totals in the "totals to submit" section of the Expenses dashboard. ## Steps To Reproduce: - Go to Expenses. - See the current total to submit. - Create a new expense that is 999,999 EUR but $1.00 USD. - See that the expenses to submit is not matching the exchange r
Original PR description
## Issue: - Expenses entered in currencies other than the company currency are incorrectly calculated using today's exchange rate instead of the rate applicable on the date the expense was made. This results in inaccurate totals in the "totals to submit" section of the Expenses dashboard. ## Steps To Reproduce: - Go to Expenses. - See the current total to submit. - Create a new expense that is 999,999 EUR but $1.00 USD. - See that the expenses to submit is not matching the exchange rate we put in the expense. ## Solution: - In the 'get_expense_dashboard' method instead of summing up of 'total_amount_currency' and then converting to the company currency. we sum up directly the 'total_amount' for each expense instead. opw-3731445 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156645 Forward-Port-Of: odoo/odoo#155221
Previously, In "one_page & page_per_section" survey, pressing Enter would submit the survey, leading to confusion and accidental submissions, as users might press Enter intending to navigate through questions. With this PR, Now, requiring "Ctrl + Enter" to submit, ensures clarity in survey submission, reducing the chance of accidental submission. task-3707763 Forward-Port-Of: odoo/odoo#152850
Original PR description
Previously, In "one_page & page_per_section" survey, pressing Enter would submit the survey, leading to confusion and accidental submissions, as users might press Enter intending to navigate through questions. With this PR, Now, requiring "Ctrl + Enter" to submit, ensures clarity in survey submission, reducing the chance of accidental submission. task-3707763 Forward-Port-Of: odoo/odoo#152850
Since the commit [1] introducing Bootstrap 5, buttons within input groups (e.g., "search bars") no longer have the same border-radius as the inputs. Steps to reproduce the bug: - In Website edit mode, drag and drop a "Search" snippet onto the page. - Click on the "Theme" tab. - Set the inputs "Border Radius" option to 25px. - Bug: The border-radius is not applied to the right side of the search bar. [1]: https://github.com/odoo/odoo/commit/9ea13513342b14e6b8d4e10e162b618a6ab2cce0 ta
Original PR description
Since the commit [1] introducing Bootstrap 5, buttons within input groups (e.g., "search bars") no longer have the same border-radius as the inputs. Steps to reproduce the bug: - In Website edit mode, drag and drop a "Search" snippet onto the page. - Click on the "Theme" tab. - Set the inputs "Border Radius" option to 25px. - Bug: The border-radius is not applied to the right side of the search bar. [1]: https://github.com/odoo/odoo/commit/9ea13513342b14e6b8d4e10e162b618a6ab2cce0 task-3662985 Forward-Port-Of: odoo/odoo#156621 Forward-Port-Of: odoo/odoo#154235
Making a mention in full composer when `im_livechat` is installed was making the following crash: ``` TypeError: Cannot read properties of undefined (reading 'type') at SuggestionService.fetchSuggestions ``` Steps to reproduce: - install module `im_livechat` - open contacts app form view - open full composer (e.g. Log note => expand icon) - type @ + a character => throws error above This happens because `SuggestionService` methods can optionally pass a thread, but livechat ov
Original PR description
Making a mention in full composer when `im_livechat` is installed was making the following crash:
```
TypeError: Cannot read properties of undefined (reading 'type')
at SuggestionService.fetchSuggestions
```
Steps to reproduce:
- install module `im_livechat`
- open contacts app form view
- open full composer (e.g. Log note => expand icon)
- type @ + a character => throws error above
This happens because `SuggestionService` methods can optionally pass a thread, but livechat overrides wrongfully assume they were always provided.
This commit fixes the issue with optional chaining, taking into account it's optional.
No test because full composer doesn't work in unit tests, tours require adding steps blindly and I've already wasted too much time to no avail.
Forward-Port-Of: odoo/odoo#156773Purpose ======= Restore the possibility to resize and drag and drop the slots when using the creation mode in the calendar. Specifications ============== The calendar events edition (drag and drop/resize actions) were previously limited to the participants of the event. This prevented, for example, users from changing the time-off events of other users. However this fix was applied on a method that is also used by the calendar slot renderers. As slots don't have any participants, their ed
Original PR description
Purpose ======= Restore the possibility to resize and drag and drop the slots when using the creation mode in the calendar. Specifications ============== The calendar events edition (drag and drop/resize actions) were previously limited to the participants of the event. This prevented, for example, users from changing the time-off events of other users. However this fix was applied on a method that is also used by the calendar slot renderers. As slots don't have any participants, their editable attribute was always set to false. Fixing the issue by forcing the slots editable attribute to true. Task-3756066 Forward-Port-Of: odoo/enterprise#57966
After some discussion, it was decided to remove the "(exclusive to Odoo)" part which may confuse the user Also add missing translation file Forward-Port-Of: odoo/enterprise#58121 Forward-Port-Of: odoo/enterprise#58070
Original PR description
After some discussion, it was decided to remove the "(exclusive to Odoo)" part which may confuse the user Also add missing translation file Forward-Port-Of: odoo/enterprise#58121 Forward-Port-Of: odoo/enterprise#58070
**Commit 1:** Since we can no longer archive documents, the 'Include Archived' toggle checkbox of the domain selector is now irrelevant and hence this commit removes it. Technical: The archive feature for documents has been removed with #37389. However, the active field is still being utilized for the 'trash' feature and hence cannot be removed. Whether the `Include Archived` toggle should be displayed or not, is determined by checking if a particular model has 'active' in its fiel
Original PR description
**Commit 1:** Since we can no longer archive documents, the 'Include Archived' toggle checkbox of the domain selector is now irrelevant and hence this commit removes it. Technical: The archive…
**Commit 1:** Since we can no longer archive documents, the 'Include Archived' toggle checkbox of the domain selector is now irrelevant and hence this commit removes it. Technical: The archive feature for documents has been removed with #37389. However, the active field is still being utilized for the 'trash' feature and hence cannot be removed. Whether the `Include Archived` toggle should be displayed or not, is determined by checking if a particular model has 'active' in its fieldDefs (i.e. if the model has archive/unarchive feature). As a result, the condition becomes true in the case of 'documents' model despite archive records feature not being available anymore. Thus, this commit adds a condition to check resModel, and hides the toggle checkbox from the domain selector in case of 'documents' model, by deleting 'active' from fieldDefs. **Commit 2:** This commit alters the view of documents workflow rule form such that the two separate pages for 'conditions' and 'actions' are now reorganized and merged altogether. Task: [3695462](https://www.odoo.com/web#id=3695462&menu_id=4722&cids=2&action=333&active_id=965&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#58080 Forward-Port-Of: odoo/enterprise#57208
Steps to reproduce: ------------------- 1. Create 2 helpdesk teams. 2. Create timesheets with different helpdesk_team_id on a single create call by passing them as a list of timesheets. This will result in having missing timesheets, since the variable `vals_list` passed in the preprocess function had a conflict with another variable. This PR changes the variable name to resolve the issue, and a unit test for bulk creation of timesheets with seperated helpdesk tickets has been added.
Original PR description
Steps to reproduce: ------------------- 1. Create 2 helpdesk teams. 2. Create timesheets with different helpdesk_team_id on a single create call by passing them as a list of timesheets. This will result in having missing timesheets, since the variable `vals_list` passed in the preprocess function had a conflict with another variable. This PR changes the variable name to resolve the issue, and a unit test for bulk creation of timesheets with seperated helpdesk tickets has been added. related Task-3669013 Forward-Port-Of: odoo/enterprise#58071
This PR fix the functionality of the salary configurator's Thank You page when employees sign their contracts. The fix involves considering the phone number from the employee's profile instead of relying on res_partner. task-3686819 Forward-Port-Of: odoo/enterprise#54485
Original PR description
This PR fix the functionality of the salary configurator's Thank You page when employees sign their contracts. The fix involves considering the phone number from the employee's profile instead of relying on res_partner. task-3686819 Forward-Port-Of: odoo/enterprise#54485
Steps to reproduce ================== - Go to timesheet - Switch to the next week - Open a record by clicking on the magnifying glass icon - Go back to the grid view by clicking on the previous breadcrumb => The previously selected week is not restored Cause of the issue ================== We don't export the current state when leaving the view opw-3729307 Forward-Port-Of: odoo/enterprise#58027 Forward-Port-Of: odoo/enterprise#57510
Original PR description
Steps to reproduce ================== - Go to timesheet - Switch to the next week - Open a record by clicking on the magnifying glass icon - Go back to the grid view by clicking on the previous breadcrumb => The previously selected week is not restored Cause of the issue ================== We don't export the current state when leaving the view opw-3729307 Forward-Port-Of: odoo/enterprise#58027 Forward-Port-Of: odoo/enterprise#57510
The negative net field is not intended to be modified by the user, so it should not be visible in the report. This commit hides the field in the report. task-3761771 Forward-Port-Of: odoo/enterprise#57236
Original PR description
The negative net field is not intended to be modified by the user, so it should not be visible in the report. This commit hides the field in the report. task-3761771 Forward-Port-Of: odoo/enterprise#57236
Not everyone works with tax deductions and computed values, we thus remove the auto install for now task-3786729 Forward-Port-Of: odoo/enterprise#58056
Original PR description
Not everyone works with tax deductions and computed values, we thus remove the auto install for now task-3786729 Forward-Port-Of: odoo/enterprise#58056
This commit enables selecting both "Company Car" and "Company Bike" on salary configurator. Task-3749460 Forward-Port-Of: odoo/enterprise#57500
Original PR description
This commit enables selecting both "Company Car" and "Company Bike" on salary configurator. Task-3749460 Forward-Port-Of: odoo/enterprise#57500
Context: ======= If none of the batch's employees have a bank number then the employee verification was no longer limited to the batch but to the entire company. With this commit this issue is solved task: 3679494 Forward-Port-Of: odoo/enterprise#54508
Original PR description
Context: ======= If none of the batch's employees have a bank number then the employee verification was no longer limited to the batch but to the entire company. With this commit this issue is solved task: 3679494 Forward-Port-Of: odoo/enterprise#54508
Issue: ====== Duration of rental product doesn't correspond to the range displayed in the daterange picker. Steps to reproduce the issue: ============================= - Install rental and ecommerce - Go to website/shop and add `rental search` snippet and save the page. - Select a period in the rental search and click on any product displayed. - The range is equal the the range selected but the duration in words isn't correct. Solution: ========= We call `_get_combination_info` wi
Original PR description
Issue: ====== Duration of rental product doesn't correspond to the range displayed in the daterange picker. Steps to reproduce the issue: ============================= - Install rental and ecommerce - Go to website/shop and add `rental search` snippet and save the page. - Select a period in the rental search and click on any product displayed. - The range is equal the the range selected but the duration in words isn't correct. Solution: ========= We call `_get_combination_info` with the `start_date` and `end_date` in the context to get the corrent `duration` and `unit`. opw-3601959 Forward-Port-Of: odoo/enterprise#57726 Forward-Port-Of: odoo/enterprise#52687
Fix the rate computation in case the rate is extremely small (thai case). If the balance is close to be 0 we want to have a write-off amount of 0. Forward-Port-Of: odoo/enterprise#58087
Original PR description
Fix the rate computation in case the rate is extremely small (thai case). If the balance is close to be 0 we want to have a write-off amount of 0. Forward-Port-Of: odoo/enterprise#58087
When the create_new_contract function is called from update_salary it should be called with no_write set to true to avoid generating the commission plan each time the salary configurator is touched and call update_salary Forward-Port-Of: odoo/enterprise#57609
Original PR description
When the create_new_contract function is called from update_salary it should be called with no_write set to true to avoid generating the commission plan each time the salary configurator is touched and call update_salary Forward-Port-Of: odoo/enterprise#57609
In #25518, the journal options were reworked to better use journal groups and multi-company reports. However, this caused a regression where _get_options_journals would select journal groups as journals This change uses the 'model' key in the journal options to only select the 'account.journal' ids --- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/enterprise#56730
Original PR description
In #25518, the journal options were reworked to better use journal groups and multi-company reports. However, this caused a regression where _get_options_journals would select journal groups as journals This change uses the 'model' key in the journal options to only select the 'account.journal' ids --- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/enterprise#56730
Adds a bunch of extra steps in the tour to avoid race errors. Also, make some minor changes in the code: - `action_add_byproduct` and `action_add_component` for `mrp.production` call `ensure_one` to be sure those methods are called with an existing record, and the ones from `mrp.workorder` call the `mrp.production` method to avoid duplicate; - For the `mrp_workorder.additional.product` wizard, the `production_id` is now got from the context. Before, it was `workorder_id` who was took from
Original PR description
Adds a bunch of extra steps in the tour to avoid race errors. Also, make some minor changes in the code: - `action_add_byproduct` and `action_add_component` for `mrp.production` call `ensure_one` to…
Adds a bunch of extra steps in the tour to avoid race errors. Also, make some minor changes in the code: - `action_add_byproduct` and `action_add_component` for `mrp.production` call `ensure_one` to be sure those methods are called with an existing record, and the ones from `mrp.workorder` call the `mrp.production` method to avoid duplicate; - For the `mrp_workorder.additional.product` wizard, the `production_id` is now got from the context. Before, it was `workorder_id` who was took from the context, but it does not make sense since the tablet view was dropped for the Shop Floor (where the MO is now the main model). Also, the `company_id` is now related from the MO. - Regarding the previous point, we pass the key `'production_id'` instead of `'default_production_id'` in the context to avoid the propagation to the creation of the move (otherwise, a component move will have the `production_id` field set and the move will also be count as a by-product move.) Run build error: 56688 Forward-Port-Of: odoo/enterprise#57032 Forward-Port-Of: odoo/enterprise#56488
Steps to reproduce: - Install Accounting and l10n_mx_edi - Switch to a Mexican company (e.g. ESCUALA KEMPER URGATE) - Create an invoice: * Customer: [a Mexican customer] (e.g. INMOBILIARIA CVA) * Invoice Date: [yesterday] * Invoice Lines: - Product: [any product with UNSPSC Category set] - Price: [any] - Taxes: [any] - Confirm the invoice - Generate CFDI via "Send & Print" button - Register a partial payment from the invoice: * Payment Way: Effectivo * Amount:
Original PR description
Steps to reproduce: - Install Accounting and l10n_mx_edi - Switch to a Mexican company (e.g. ESCUALA KEMPER URGATE) - Create an invoice: * Customer: [a Mexican customer] (e.g. INMOBILIARIA CVA) *…
Steps to reproduce:
- Install Accounting and l10n_mx_edi
- Switch to a Mexican company (e.g. ESCUALA KEMPER URGATE)
- Create an invoice:
* Customer: [a Mexican customer] (e.g. INMOBILIARIA CVA)
* Invoice Date: [yesterday]
* Invoice Lines:
- Product: [any product with UNSPSC Category set]
- Price: [any]
- Taxes: [any]
- Confirm the invoice
- Generate CFDI via "Send & Print" button
- Register a partial payment from the invoice:
* Payment Way: Effectivo
* Amount: [any partial amount] (e.g. 50%)
* Payment Date: [yesterday]
- Create Payment
- Click on "Update Payments" button
- On "CFDI" tab, force CFDI on the payment
- Check the generated CFDI XML of the payment
- Attribute `ImpSaldoInsoluto` of `<pago20:DoctoRelacionado>` element contains the correct residual amount
- Register another payment from the invoice:
* Payment Way: Effectivo
* Amount: [the remaining amount]
* Payment Date: [today]
- Create Payment
- Click on "Update Payments" button
- On "CFDI" tab, force CFDI on the payment
- Check the generated CFDI XML of the payment
Issue:
In the generated CFDI XML of the closing payment, the attribute `ImpSaldoInsoluto` of `<pago20:DoctoRelacionado>` element contains a residual amount as if no payment had been done before.
Its value should be 0 as it is a closing payment.
Cause:
In the method computing the residual amount from the chain of payments, a reverse sort on the payment date is performed on the list of payments before the computation.
opw-3745151
Forward-Port-Of: odoo/enterprise#58047
Forward-Port-Of: odoo/enterprise#57792Issue: ---------- As of now, the standard allowance is 1 rupee. Fix: --------- As per Government of India guidelines, the standard allowance is Rs 50000, so we calculated the amount based on the employee's working day. task-3672767 Forward-Port-Of: odoo/enterprise#58009 Forward-Port-Of: odoo/enterprise#56593
Original PR description
Issue: ---------- As of now, the standard allowance is 1 rupee. Fix: --------- As per Government of India guidelines, the standard allowance is Rs 50000, so we calculated the amount based on the employee's working day. task-3672767 Forward-Port-Of: odoo/enterprise#58009 Forward-Port-Of: odoo/enterprise#56593
Steps: - Install heldesk app. - Go to helpdesk app. - Open ticket view. - See ticket which contain ratings in list view. Issue: - Rating are not properly visible in ticket list view where it is properly visible in other views (kanban, form). Cause: - In list view we used `rating_last_text` field and in other view we used `rating_avg` because of that list there are not data in that field. Fix: - Replace rating_last_text by rating_avg_text field to display proper ratings. Ad
Original PR description
Steps: - Install heldesk app. - Go to helpdesk app. - Open ticket view. - See ticket which contain ratings in list view. Issue: - Rating are not properly visible in ticket list view where it is…
Steps: - Install heldesk app. - Go to helpdesk app. - Open ticket view. - See ticket which contain ratings in list view. Issue: - Rating are not properly visible in ticket list view where it is properly visible in other views (kanban, form). Cause: - In list view we used `rating_last_text` field and in other view we used `rating_avg` because of that list there are not data in that field. Fix: - Replace rating_last_text by rating_avg_text field to display proper ratings. Additional info: - There are actually two ratings created from a ticket one from demo data and other from thread send email and helpdesk ratings demo data created before ratings created from thread email and since that ratings does not contains any ratings in it gives `rating_last_text` value as false. We can create our rating demo data after thread's rating by moving ratings related demo data in different file in master. task-3589757 Forward-Port-Of: odoo/enterprise#57914 Forward-Port-Of: odoo/enterprise#52371