Thursday, April 3, 2025
30 changes · saas-18.2
Enhancements to existing features
This update standardizes the discussion area on Indonesian e-Faktur Coretax documents. It helps keep messages, notes, and activity tracking consistent with the rest of Odoo, with minimal impact on daily workflows.
Original PR description
Use the `<chatter/>` tag 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
Resolved issues and error corrections
This fix helps the accounting mail gateway correctly identify records when processing incoming emails. It reduces the risk of misrouted or failed email-based accounting actions, improving day-to-day reliability for users who work with vendor bills, invoices, or related messages by email.
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
Miscellaneous changes
**Current behavior before PR:** prior to this PR ellipsis was overlapping the leave warning dialog-box. **Desired behavior after PR is merged:** now issue was resolved by adding z-index to dialog-box higher then ellipsis. task-4630702 before PR:  after PR:  --- I confirm I have signed the CLA and re
Original PR description
**Current behavior before PR:** prior to this PR ellipsis was overlapping the leave warning dialog-box. **Desired behavior after PR is merged:** now issue was resolved by adding z-index to dialog-box higher then ellipsis. task-4630702 before PR:  after PR:  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204544 Forward-Port-Of: odoo/odoo#200649
Fixes an issue where creating a new Gamification challenge could trigger an error before users could complete the form. This helps administrators use Gamification settings reliably without encountering terminal errors during setup.
Original PR description
Currently, an error occurs when opening a new gamification challenge. Steps to Reproduce: --- - Install the `Gamification` application - Setting > Gamification Tools > Challenges - Click NEW - Error in Terminal Traceback: --- NotImplementedError At [1], an incorrect domain was passed, which led to a NotImplementedError at [2]. After this commit - https://github.com/odoo/odoo/commit/4f13b617547a27c714af69529cf69d799bdb601c#diff-0346840e191cc12e28d8578cf78319e2bf932324ef9c7a270f14e5093064ff57 [1]- https://github.com/odoo/odoo/blob/1731c2aa14b0630c0a8a3505cbaa202776bac280/addons/gamification/models/gamification_challenge.py#L70 [2]- https://github.com/odoo/odoo/blob/1731c2aa14b0630c0a8a3505cbaa202776bac280/odoo/addons/base/models/res_groups.py#L216-L217 sentry-6474367890 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where refusing a newly created recruitment application with missing applicant details could cause an error. Recruiters can now refuse incomplete applications without the process being interrupted.
Original PR description
Currently, a traceback is occurring when trying to refuse an application. To reproduce this issue: 1) Install `hr_recruitment` 2) Open any job position 3) Create a new application record 4) Don't…
Currently, a traceback is occurring when trying to refuse an application. To reproduce this issue: 1) Install `hr_recruitment` 2) Open any job position 3) Create a new application record 4) Don't give any values and click on refuse button Error:- ``` TypeError: sequence item 0: expected str instance, bool found ``` This issue was occurring because of the refactoring from the below commit https://github.com/odoo/odoo/pull/169955/commits/e9bad7ebc795c34052a667a227c2103aa58fb861 When the user clicks on the refuse button, `_compute_applicant_without_email` method triggers with the applicant as a new origin object. Partner_name is not a required field and the applicant is a new origin object, So indeed we won't get any value for `display_name` or `partner_name`. This leads to the above traceback from the below line https://github.com/odoo/odoo/blob/1a1354727f965b018374aa2001b0bb7f981d1cc1/addons/hr_recruitment/wizard/applicant_refuse_reason.py#L38-L42 sentry-6409185730
When Belgian salary contract users clear the “Other dependent” option, related dependent details are now removed as well. This prevents hidden dependent values from remaining on employee records and keeps the salary package information consistent with the backend behavior.
Original PR description
When you uncheck the 'Other dependent' box, it keeps the value in the dependent fields. This leads to have values set on the employees that are not visible. To avoid this issue, we empty the 'dependent' fields when we uncheck the 'Other Dependent' checkbox. This is the same behaviour of what is done in the onchange on backend view.
Remove the use of this widget in quant list and kanban views where it is useless. Enterprise PR: odoo/enterprise#82640 Forward-Port-Of: odoo/odoo#204252
Original PR description
Remove the use of this widget in quant list and kanban views where it is useless. Enterprise PR: odoo/enterprise#82640 Forward-Port-Of: odoo/odoo#204252
Before this commit, if a pricelist was based on the product cost, it wasn't working as it didn't load the cost of the product variants. opw-4654773 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203133
Original PR description
Before this commit, if a pricelist was based on the product cost, it wasn't working as it didn't load the cost of the product variants. opw-4654773 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203133
In a previous commit 4a6af867dd2eb13659c93e553d5e553cacb3048d, price was intended to be hidden when prevent zero sale is enabled. However the fix wrongly removed the outer div containing also the editable price that can be updated from the editor. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204524
Original PR description
In a previous commit 4a6af867dd2eb13659c93e553d5e553cacb3048d, price was intended to be hidden when prevent zero sale is enabled. However the fix wrongly removed the outer div containing also the editable price that can be updated from the editor. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204524
Following https://github.com/odoo/odoo/pull/180774, forward port https://github.com/odoo/odoo/pull/203549 didn't work as expected. This PR fixes the issue by taking combos into account. Forward-Port-Of: odoo/odoo#204348
Original PR description
Following https://github.com/odoo/odoo/pull/180774, forward port https://github.com/odoo/odoo/pull/203549 didn't work as expected. This PR fixes the issue by taking combos into account. Forward-Port-Of: odoo/odoo#204348
Steps to reproduce: 1. Drop the website_form snippet. 2. Select name field & change with the many2one field having no record. 3. Switch the type: "dropdown list" => "radio" --> It will throw a traceback : This commit, fix the uncaught promise by adding validation before using variable. task-3932086 Forward-Port-Of: odoo/odoo#166108
Original PR description
Steps to reproduce: 1. Drop the website_form snippet. 2. Select name field & change with the many2one field having no record. 3. Switch the type: "dropdown list" => "radio" --> It will throw a traceback : This commit, fix the uncaught promise by adding validation before using variable. task-3932086 Forward-Port-Of: odoo/odoo#166108
These commits fix two issues: - If a block that has an image selected as background is given a border, its background image will fit awkwardly in the surrounding border, and similarly if the background image is positioned all the way to any edge, it does not cover all the block. - If a video is selected as background for a block, the video does not always fill the block. Steps to reproduce: Bug 1 - Add a masonry block/big boxes block - Add a background image to an element o
Original PR description
These commits fix two issues: - If a block that has an image selected as background is given a border, its background image will fit awkwardly in the surrounding border, and similarly if the…
These commits fix two issues: - If a block that has an image selected as background is given a border, its background image will fit awkwardly in the surrounding border, and similarly if the background image is positioned all the way to any edge, it does not cover all the block. - If a video is selected as background for a block, the video does not always fill the block. Steps to reproduce: Bug 1 - Add a masonry block/big boxes block - Add a background image to an element of the masonry/big boxes - Add a big border - Make the border translucent if it isn't already to better see the bug => The background image overflows on the border randomly - Change the background position by shifting the image all the way to the left => The image does not cover all the border-box Bug 2 - Add a masonry block/big boxes block - Add a video background => The video does not always fill the box, especially when the window gets resized After the changes the image/video background completely covers its block, even when resized or when a border is applied. task-4174638 Forward-Port-Of: odoo/odoo#203571 Forward-Port-Of: odoo/odoo#201200
**Problem**: When the text is long, the switch for "Autoconvert to Relative Link" is not visible. **Solution**: Adjust CSS to properly display the switch when the text is long. **Before**:  **After**:  **Steps to Reproduce**: 1. Change language to **Dutch**. 2. Open the **website editor**. 3. Click on
Original PR description
**Problem**: When the text is long, the switch for "Autoconvert to Relative Link" is not visible. **Solution**: Adjust CSS to properly display the switch when the text is long. **Before**:  **After**:  **Steps to Reproduce**: 1. Change language to **Dutch**. 2. Open the **website editor**. 3. Click on any **link**. 4. Copy your current link and paste it into the link input to trigger the "Autoconvert to Relative Link" switch. - **Issue**: The switch is not visible. **opw-4558476** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204286 Forward-Port-Of: odoo/odoo#204244
If prevent zero sale is active, prices should be hidden from the page opw-4650460 See also: https://github.com/odoo/enterprise/pull/82082 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204210 Forward-Port-Of: odoo/odoo#202867
Original PR description
If prevent zero sale is active, prices should be hidden from the page opw-4650460 See also: https://github.com/odoo/enterprise/pull/82082 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204210 Forward-Port-Of: odoo/odoo#202867
**Current behavior before PR:** - Rotating a cropped image reset the cropper to cover the entire image. - When saving the record, all attributes not in the safe_attrs list were sanitized. As a result, if the record contained a cropped image, its crop-related attributes were also sanitized. Consequently, when the cropper was reopened, the container displayed the entire image instead of the cropped version. **Desired behavior after PR is merged:** - The cropper now retains
Original PR description
**Current behavior before PR:** - Rotating a cropped image reset the cropper to cover the entire image. - When saving the record, all attributes not in the safe_attrs list were sanitized. As a result, if the record contained a cropped image, its crop-related attributes were also sanitized. Consequently, when the cropper was reopened, the container displayed the entire image instead of the cropped version. **Desired behavior after PR is merged:** - The cropper now retains its size when rotating a cropped image, maintaining the original crop area. - Image attributes such as data-width, data-height, data-scale-x, data-scale-y, data-x, and data-y are no longer sanitized during the save process. This ensures that when the cropper is reopened for a cropped image, the container correctly displays only the cropped portion of the image, rather than the entire image. task-4290693 Forward-Port-Of: odoo/odoo#204000 Forward-Port-Of: odoo/odoo#186864
Steps to reproduce: - go to a blog post with several paragraph - edit translations Issue 1: - select several paragraph completely and use the translate tool - insert the translation => the translation are not inserted Issue 2: - select 3 paragraphs but don't start at the beginning or end of the text - insert translation - see that all translations is inserted at end of paragraph 1, paragraph 2 is emptied and paragraph 3 selected part is removed - save => paragraph 1 and 2 a
Original PR description
Steps to reproduce: - go to a blog post with several paragraph - edit translations Issue 1: - select several paragraph completely and use the translate tool - insert the translation => the…
Steps to reproduce: - go to a blog post with several paragraph - edit translations Issue 1: - select several paragraph completely and use the translate tool - insert the translation => the translation are not inserted Issue 2: - select 3 paragraphs but don't start at the beginning or end of the text - insert translation - see that all translations is inserted at end of paragraph 1, paragraph 2 is emptied and paragraph 3 selected part is removed - save => paragraph 1 and 2 are deleted (so we show original lang value), selected part of paragraph 3 is removed Why: In the blog post content, we are inside a "blog.post().content" editable field, this allows the editor to select several translations nodes which will work wrongly with the editor because translation mode only expect to change the content of translation nodes. The first paragraph translation is saved empty because the editor is cloning the node with the same "data-oe-translation-source-sha" because we are inserting several paragraphs inside it. Fix: in translation mode, make the editable node of html fields around translation nodes uneditable so we can't select several translation nodes thanks to how browser handle selection and content editable. Note: the added test step is very light, because in javascript it is programmatically possible to select 2 separate content editable. At the step that is added in the tour, with the fix it is not possible to select both the H1 and P nodes. opw-4221993 opw-4482717 pr note: opw-4221993 could possibly solved by this fix too (the video reproduction seemed to be about a bulleted list but I could not reproduce, and the original report video is deleted) Forward-Port-Of: odoo/odoo#204188 Forward-Port-Of: odoo/odoo#197511
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the two Purchase Orders have the same currency, but if there is more than one currency, the traceback will be displayed. **Steps to reproduce:** - Go to the purchase app and select two Purchase Orders that have different currencies (you can make a group by Currencies). - Click on Action then
Original PR description
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the…
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the two Purchase Orders have the same currency, but if there is more than one currency, the traceback will be displayed. **Steps to reproduce:** - Go to the purchase app and select two Purchase Orders that have different currencies (you can make a group by Currencies). - Click on Action then Accrued Expense Entry. - The traceback appears. **Cause of the issue:** https://github.com/odoo/odoo/blob/a07a8589a8cb391a801ef1ffd60e02d83fc963f8/addons/account/wizard/accrued_orders.py#L246 The currency is given as a parameter to a function that requires only one parameter. With this code, if there are multiple currencies in orders, all of them will be given, which creates a traceback. **Fix:** After checking with a PO, the multiple currency use case is not supported. Hence make sure that there is only one currency in the quotations we are trying to work with. If there is more than one, we throw an error telling the user to only pick quotations with the same currency. opw-4562933 Forward-Port-Of: odoo/odoo#204007 Forward-Port-Of: odoo/odoo#202733
Steps to reproduce: - Install the Website. - Enter edit mode. - Click on the "Add to Cart Button" snippet in the snippet menu. - Bug: The message displayed in the dialog is "Do you want to install the Add to Cart Button app?". This is incorrect; the app name should be the module name instead of the snippet name. This commit displays the module name as expected and slightly enhances the design of the dialog (line break before the link + add an arrow icon before the link to the app info).
Original PR description
Steps to reproduce: - Install the Website. - Enter edit mode. - Click on the "Add to Cart Button" snippet in the snippet menu. - Bug: The message displayed in the dialog is "Do you want to install the Add to Cart Button app?". This is incorrect; the app name should be the module name instead of the snippet name. This commit displays the module name as expected and slightly enhances the design of the dialog (line break before the link + add an arrow icon before the link to the app info). #### Preview | Before | |--------| |  | | After | |--------| |  | task-4434981 Forward-Port-Of: odoo/odoo#202158 Forward-Port-Of: odoo/odoo#201757
Steps to reproduce: 1. Create a survey with 'multiple choice: only one answer' question no.1 2. Go to the question's options Tab > enable these three options 'Show comment field' & 'Comment is an answer' & 'Mandatory answer'. (For question no.1) 3. Add a second question to that survey. (any type) 4. Test the survey. 5. Click on the continue button without selecting the answer. 6. The error message overlaps the comment field Technical reason: The height of the `<div>` containing the <te
Original PR description
Steps to reproduce: 1. Create a survey with 'multiple choice: only one answer' question no.1 2. Go to the question's options Tab > enable these three options 'Show comment field' & 'Comment is an answer' & 'Mandatory answer'. (For question no.1) 3. Add a second question to that survey. (any type) 4. Test the survey. 5. Click on the continue button without selecting the answer. 6. The error message overlaps the comment field Technical reason: The height of the `<div>` containing the <textarea> was not properly set. After this commit: The alert message should be displayed below the comment field. Task-4663115 Forward-Port-Of: odoo/odoo#203209
In this commit: ------------------- - Changed the list with a sorted list without any conditioning of the search word based on display names. So, now all the time the products will be displayed alphabetically. Task - 4672224 Forward-Port-Of: odoo/odoo#204342 Forward-Port-Of: odoo/odoo#203683
Original PR description
In this commit: ------------------- - Changed the list with a sorted list without any conditioning of the search word based on display names. So, now all the time the products will be displayed alphabetically. Task - 4672224 Forward-Port-Of: odoo/odoo#204342 Forward-Port-Of: odoo/odoo#203683
We encountered an error when trying to open `Furniture` or `Clothes` from the `Dashboard` if the Administrator has been assigned Admin rights to a new user. Step to Reproduce: - Install the Point of Sale module without demo data. - Navigate to `Settings` > `Users` and `create` a new user with `Admin rights` of POS. - Log in with the newly created admin user. - Try to load sample data for `Furniture` or `Clothes`. Traceback: ``` while parsing /home/odoo/src/odoo/saas-18.1/addons/pro
Original PR description
We encountered an error when trying to open `Furniture` or `Clothes` from the `Dashboard` if the Administrator has been assigned Admin rights to a new user. Step to Reproduce: - Install the Point of…
We encountered an error when trying to open `Furniture` or `Clothes` from the
`Dashboard` if the Administrator has been assigned Admin rights to a new user.
Step to Reproduce:
- Install the Point of Sale module without demo data.
- Navigate to `Settings` > `Users` and `create` a new user with `Admin rights` of POS.
- Log in with the newly created admin user.
- Try to load sample data for `Furniture` or `Clothes`.
Traceback:
```
while parsing /home/odoo/src/odoo/saas-18.1/addons/product/data/product_demo.xml:5, somewhere inside
<record id="base.group_user" model="res.groups">
<field name="implied_ids" eval="[(4, ref('product.group_product_variant'))]"/>
</record>
```
Error[2] generated when solving above problem :
Traceback :
```
while parsing /home/odoo/odoo/community/addons/point_of_sale/data/orders_demo.xml:86,
somewhere inside <function model="pos.session" name="update_closing_control_state_session" eval="[[ref('pos_closed_session_1')], '']"/>
```
This issue was occuring since new users does not have access right of `res.groups`.
This commit will fix the above errors by using Superuser environment to load data..
sentry-6239966848
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#195374Following a change of behaviour of the library, hidden headers are not considered in a chart data, and the pie chart of Cost Repartition was stripped of its data. Task-4687551 Forward-Port-Of: odoo/enterprise#82673
Original PR description
Following a change of behaviour of the library, hidden headers are not considered in a chart data, and the pie chart of Cost Repartition was stripped of its data. Task-4687551 Forward-Port-Of: odoo/enterprise#82673
Description ----------- The non-stored field `user_has_access` is the primary `ir.rule` used for a `knowledge.article` and is included in every query. As a result, the method `_search_user_has_access` is frequently called and quickly becomes a performance bottleneck. This is particularly noticeable when opening the Knowledge app, as it involves reading the displayed article along with loading the sidebar. This update optimizes the method as follows: - For generic article access, the opti
Original PR description
Description ----------- The non-stored field `user_has_access` is the primary `ir.rule` used for a `knowledge.article` and is included in every query. As a result, the method…
Description
-----------
The non-stored field `user_has_access` is the primary `ir.rule` used for a `knowledge.article` and is included in every query. As a result, the method `_search_user_has_access` is frequently called and quickly becomes a performance bottleneck. This is particularly noticeable when opening the Knowledge app, as it involves reading the displayed article along with loading the sidebar.
This update optimizes the method as follows:
- For generic article access, the optimization leverages the field `inherited_permission`, which already contains the propagated `internal_permission` of the article along the hierarchy. This removes the need to recompute these permissions dynamically with a complex query since the data has already been precomputed.
- For member access, the query logic has been revised while maintaining the same outcome: Previously, the process involved: `for all articles, append the member and their permission, recurse into child articles for all in-sync and permissionless articles, and propagate the member's permission. Finally, discard all articles without any set permission.`, The new approach reverses the logic to avoid the need for discarding at the end and iterating through all articles: `for the articles the member belongs to, propagate the member's permission to its child articles, provided the child is in-sync, has no explicit permission, and the partner is not already a member of that article.` Although the last condition may seem counterintuitive, the initial set of articles considered encompasses those the member is linked to already. This also avoids cases where a parent article's member permission would overwrite differing permissions on its child articles.
- Additionally, `set` manipulations are used to handle IDs, thereby preventing the injection of large ID lists into multiple domain leaves. This improves query parsing and avoids poor query execution plans that could be caused by excessively large ID lists.
Benchmark
---------
On odoo.com, opening the Knowledge app from the Apps dashboard:
| Request | Before | After | Speed-up |
|----------------------|--------|-------|----------|
| web_read | 1.69s | 160ms | **10x** |
| get_sidebar_articles | 1.64s | 160ms | **10x** |
In a shell, searching articles with `[('user_has_access', '=', True)]`:
| User Type | Before | After | Speed-up |
|-----------------------|--------|-------|----------|
| `sudo` | 251ms | 35ms | **7x** |
| regular internal user | 577ms | 58ms | **10x** |
Reference
---------
task-4633813
Notice
------
⚠️ Note to clients/partners that might read this: For the full benefits of the patch, deploy the indexes that were added in this PR. This can be done by Upgrading the module `knowledge`, or creating the indexes manually in database. The patch should still be a net-benefit even for database without the indexes deployed.
Forward-Port-Of: odoo/enterprise#82773
Forward-Port-Of: odoo/enterprise#80971Issue ===== When displaying the Barcode move line form view on mobile, a traceback can happen. How to reproduce ================ - Open the Barcode app on a mobile device (or use devtools to simulate a mobile device;) - Create a new receipt; - Click on "Add Product" and select a product with an existing quant; - Confirm then re-open the move line's form view -> Traceback. Cause of the issue ================== In mobile view, the product's quants displayed in the move line form vie
Original PR description
Issue ===== When displaying the Barcode move line form view on mobile, a traceback can happen. How to reproduce ================ - Open the Barcode app on a mobile device (or use devtools to simulate a mobile device;) - Create a new receipt; - Click on "Add Product" and select a product with an existing quant; - Confirm then re-open the move line's form view -> Traceback. Cause of the issue ================== In mobile view, the product's quants displayed in the move line form view are displayed as kanban record. This kanban view template use the `many2one_uom` widget but doesn't include the `product_id` field which make this widget not usable. By the way, those records are not editable so it makes no sense to use this widget in this case. To fix the issue, remove the widget where it is not needed/not usable. Community PR: odoo/odoo#204252 Forward-Port-Of: odoo/enterprise#82640
We need to use the payment method linked to the biggest paid amount, not the payment method linked to the biggest order. Forward-Port-Of: odoo/enterprise#82693
Original PR description
We need to use the payment method linked to the biggest paid amount, not the payment method linked to the biggest order. Forward-Port-Of: odoo/enterprise#82693
Currently, an exception is generated when the system tries to find the 'Out of Contract' work_entry_type after it has been deleted. Steps to Reproduce: 1 - Install hr_payroll module without demo data 2 - Navigate to hr payroll -> configuration -> work entry types 3 - delete the 'Out of contract' work entry type 4 - Navigate to hr payroll -> Contracts -> Contract 5 - Create a contract with a start date next to the current. 6 - Navigate to hr payroll -> payslips -> To pay 7 - Try
Original PR description
Currently, an exception is generated when the system tries to find the 'Out of Contract' work_entry_type after it has been deleted. Steps to Reproduce: 1 - Install hr_payroll module without demo data…
Currently, an exception is generated when the system tries to find the 'Out of Contract' work_entry_type after it has been deleted. Steps to Reproduce: 1 - Install hr_payroll module without demo data 2 - Navigate to hr payroll -> configuration -> work entry types 3 - delete the 'Out of contract' work entry type 4 - Navigate to hr payroll -> Contracts -> Contract 5 - Create a contract with a start date next to the current. 6 - Navigate to hr payroll -> payslips -> To pay 7 - Try to create Payslips To Pay for created contract 8 - an error occurs Error: ```ValueError External ID not found in the system: hr_payroll.hr_work_entry_type_out_of_contract ``` This issue[1] occurs because when the system tries to reference the missing 'Out of Contract' work entry type it results in a ValueError due to a missing required record. The same issue [2] occurs in the `l10n_hk_hr_payroll` module. [1] - https://github.com/odoo/enterprise/blob/265177dfd281f3aa1d61db6587ddfa37790570fe/hr_payroll/models/hr_payslip.py#L597 [2] -https://github.com/odoo/enterprise/blob/31e56779f8e0011ddc5c1a2821f68c8f041efbe4/l10n_hk_hr_payroll/models/hr_payslip.py#L180 This fix resolves the issue by ensuring that if the `Out of Contract` work entry type is missing, it returns a false value. A similar fix has been applied in `l10n_hk_hr_payroll`. Additionally, code has been added to prevent the deletion of any work entry type using @api.ondelete. sentry-6277939517 Forward-Port-Of: odoo/enterprise#82659 Forward-Port-Of: odoo/enterprise#79053
`prevent_zero_price_sale` was not set according to the right prices for `website_sale_renting` and `website_sale_subscription` opw-4650460 See also: https://github.com/odoo/odoo/pull/202867 Forward-Port-Of: odoo/enterprise#82597 Forward-Port-Of: odoo/enterprise#82082
Original PR description
`prevent_zero_price_sale` was not set according to the right prices for `website_sale_renting` and `website_sale_subscription` opw-4650460 See also: https://github.com/odoo/odoo/pull/202867 Forward-Port-Of: odoo/enterprise#82597 Forward-Port-Of: odoo/enterprise#82082
Steps to reproduce ================== - Install knowledge,contacts,web_studio - Open a contact record - Open studio - Add a many2many pointing to a knowledge article - Save and exit studio - Link an article and open it => this.env.ensureArticleName is not a function Cause of the issue ================== The knowledge article view uses a js_class and contains widgets that except the custom subenv from the controller. As the js_class isn't used in x2many views, the view crashe
Original PR description
Steps to reproduce ================== - Install knowledge,contacts,web_studio - Open a contact record - Open studio - Add a many2many pointing to a knowledge article - Save and exit studio - Link an article and open it => this.env.ensureArticleName is not a function Cause of the issue ================== The knowledge article view uses a js_class and contains widgets that except the custom subenv from the controller. As the js_class isn't used in x2many views, the view crashes. Solution ======== We can simply blacklist that model when searching for relations to add opw-4513295 Forward-Port-Of: odoo/enterprise#81068
When the fulfilment channel changes from Amazon, the user currently must delete the offer to create a new one, as they can't change the amazon_feed_ref. (Please note that due to an API change, this field does in fact include a JSON containing the product type, fulfilment channel, and the feed reference.) Indeed, when the listing is changed, Amazon doesn't get the information. This means we will continue to update the inventory if that offer was in FBM. Or not updating the inventory of a no
Original PR description
When the fulfilment channel changes from Amazon, the user currently must delete the offer to create a new one, as they can't change the amazon_feed_ref. (Please note that due to an API change, this…
When the fulfilment channel changes from Amazon, the user currently must delete the offer to create a new one, as they can't change the amazon_feed_ref. (Please note that due to an API change, this field does in fact include a JSON containing the product type, fulfilment channel, and the feed reference.) Indeed, when the listing is changed, Amazon doesn't get the information. This means we will continue to update the inventory if that offer was in FBM. Or not updating the inventory of a now FBM offer. While that second case would only require the user to delete and recreate a new offer (which would be a bother but not that problematic), sending a quantity to a FBA offer would trigger a well known problem of ghost listing on Amazon, where Amazon will consider having both channels, and randomly set an order as either FBA or FBM, until that ghost listing quantity drop down to 0. When catching a discrepancy, we'll thus reset the value of the amazon_feed_ref, so that it'd be pulled again later if needed by the sync inventory with, this time, the correct value. This would also stop the inventory synchronization of a potentially FBA offer. As for any stock synchronization that might happen between the listing changes from Amazon side and the first order received in FBA, we decided against forcing the FBM quantity to 0 on all FBA offer every time, to avoid sending too many useless calls for a corner case. As the product was until now sold in FBM, in most cases, it can still be until the end of the ghost listing. If not, our support is aware of it and can force the quantity to 0 again. opw-4681035 Forward-Port-Of: odoo/enterprise#82754
Isuue: - When on a relatively slower network, if we double click the comments icon present on the social media post, the comments dialog box opens up twice. - Can be spotted easily on the runbot as well. Video of the issue https://drive.google.com/file/d/1abe7Cq3otsVNH4hGRHFV34jC3uIGHY6m/view?usp=drive_link Reason: - There is no existing mechanism present to prevent this kind of scenario. Fix: - We simply use a flag to prevent this. We set/reset the value as we desire. Task-418
Original PR description
Isuue: - When on a relatively slower network, if we double click the comments icon present on the social media post, the comments dialog box opens up twice. - Can be spotted easily on the runbot as well. Video of the issue https://drive.google.com/file/d/1abe7Cq3otsVNH4hGRHFV34jC3uIGHY6m/view?usp=drive_link Reason: - There is no existing mechanism present to prevent this kind of scenario. Fix: - We simply use a flag to prevent this. We set/reset the value as we desire. Task-4184968 Forward-Port-Of: odoo/enterprise#82717 Forward-Port-Of: odoo/enterprise#82411