Thursday, March 6, 2025
44 changes · saas-18.2
Resolved issues and error corrections
A regression test was added to ensure saved popup snippets appear immediately when reused on another website page. This helps prevent a past issue where users had to manually toggle visibility before the popup would show.
Original PR description
**Steps to Reproduce:** 1. Drop a popup snippet on any page (e.g., Home page). 2. Save the popup snippet for reuse. 3. Drop the same custom snippet on another page (e.g., Contact Us page). 4. Try to…
**Steps to Reproduce:** 1. Drop a popup snippet on any page (e.g., Home page). 2. Save the popup snippet for reuse. 3. Drop the same custom snippet on another page (e.g., Contact Us page). 4. Try to make the snippet visible on this page. **Issue:** Previously, when creating a custom Popup Snippet for later use and attempting to drag and drop it, the popup was not visible on the first attempt. The visibility needed to be manually toggled from the snippet options (it only became visible on the second click). This issue was addressed in commit https://github.com/odoo/odoo/commit/d8daeed8bac9c5e48882a25031dace0b9355c7d7, and it persisted from version 16.0 to saas-17.4. To prevent this issue from recurring, we have introduced a test tour in this commit to verify that custom popups are now displayed immediately after a drag-and-drop action, eliminating the need to manually toggle visibility. Commit that resolved this issue in version 18.0 : https://github.com/odoo/odoo/commit/edf81c13d8f2f6d29a77d68cbfa0dc9216da3c2a task-4088420 Forward-Port-Of: odoo/odoo#200219 Forward-Port-Of: odoo/odoo#184659
This fix ensures the Course button appears in the right place in the restaurant point-of-sale interface. It removes the duplicate button on desktop and makes the button available on mobile, improving consistency for restaurant staff.
Original PR description
- Before this fix the `Course` button was displayed 2 times on desktop and not displayed on mobile. - To fix this I've updated the target `xpath` for the Course button on mobile. task-id: 4619395 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 fix adds a missing camera-related system package to the IoT Box image setup. It helps ensure IoT Boxes using camera functionality have the required dependency included after the previous update.
Original PR description
In odoo/odoo#192999, the fw port missed the `python3-libcamera` package add. This commit adds it.
Spreadsheet chart tooltips now show full label text instead of shortened versions. This makes chart details easier to read while keeping legends and chart scales concise where space is limited.
Original PR description
The labels given to chartJS were truncated to not bee too long. But that also means that they were truncated in the tooltip where it wasn't necessary. This commit removes the truncation in the tooltip, only truncating inside the legend/scale callbacks. Task: [4626006](https://www.odoo.com/web#id=4626006&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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 fixes an error that could interrupt Indian tax reporting when the system checks or displays the message for buying IAP credits. It also corrects a scheduled task reference so the report process points to the right module, improving reliability for affected users.
Original PR description
In this commit: - Moved `_l10n_in_edi_get_iap_buy_credits_message` from `account.edi.format` to `account.move`. - Resolved traceback caused by changes introduced in commit (https://github.com/odoo/enterprise/commit/cf9b8726ecd54bc5ae8d3cc5048cd7c6cfb351b0).
This update removes outdated references to a contact mobile phone field that no longer exists. It helps keep VoIP calling screens and related tests aligned with current contact data, reducing the chance of errors or confusing information.
Original PR description
Field `mobile` has been removed from `res.partner`. Clean the code related to it in voip. Task-4624455
Miscellaneous changes
When Lot valuation is enabled on a product, it is not longer possible to create a move without lot. Hence, if you had a valued quantity without lot before enabling lot valuation, it was impossible to update or empty this quantity in any way. Leaving you with an unusable StockQuant. Furthermore, when enabling the lot valuation, no layer was created for the quants without lot, creating a permanent discrepancy between the stock and valuation. This discrepancy was still present even after disabling
Original PR description
When Lot valuation is enabled on a product, it is not longer possible to create a move without lot. Hence, if you had a valued quantity without lot before enabling lot valuation, it was impossible to…
When Lot valuation is enabled on a product, it is not longer possible to create a move without lot. Hence, if you had a valued quantity without lot before enabling lot valuation, it was impossible to update or empty this quantity in any way. Leaving you with an unusable StockQuant. Furthermore, when enabling the lot valuation, no layer was created for the quants without lot, creating a permanent discrepancy between the stock and valuation. This discrepancy was still present even after disabling the lot valuation. To fix this issue, we do not allow the lot valuation if there is a quant without lot in a valued location.  + Fix negative lot error message PREV:  NOW:  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195970 Forward-Port-Of: odoo/odoo#194001
This commit improves the invite people popover for livechat conversations. Before this commit we would only display the user language for Odoo next to his name in the search results, we now also display the user-selected livechat languages and expertises. This commit also expands the search to be not only on the name but also the languages and expertises task-4523464 Forward-Port-Of: odoo/odoo#198093
Original PR description
This commit improves the invite people popover for livechat conversations. Before this commit we would only display the user language for Odoo next to his name in the search results, we now also display the user-selected livechat languages and expertises. This commit also expands the search to be not only on the name but also the languages and expertises task-4523464 Forward-Port-Of: odoo/odoo#198093
Versions -------- - 18.0+ Steps ----- 1. Have an unpaid invoice; 2. create a payment using the "Pay" button; 3. go the the payment; 4. duplicate payment. Issue ----- Duplicate payment is linked to the same invoice, with no way to change this. Cause ----- The `invoice_ids` field was added to `account.payment` in commit 01b87f1230bea. Before it, it relied on the reconciliation mechanism to link payments to invoices. Solution -------- Add `copy=false` to the field declarati
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Have an unpaid invoice; 2. create a payment using the "Pay" button; 3. go the the payment; 4. duplicate payment. Issue ----- Duplicate payment is linked to the same invoice, with no way to change this. Cause ----- The `invoice_ids` field was added to `account.payment` in commit 01b87f1230bea. Before it, it relied on the reconciliation mechanism to link payments to invoices. Solution -------- Add `copy=false` to the field declaration, to prevent it from getting duplicated, and let other flows handle linking it to the desired invoice. opw-4555499 Forward-Port-Of: odoo/odoo#197988
Before this commit, some local settings were not properly synced in crosstab: - discuss sidebar compact mode was only visible on reloading the page. - chat hub compact mode was only affected the tab that triggered the compact mode. The problem of discuss sidebar compact comes from lack of responsiveness from change in local storage value, which this commit fixes with `onStorage` in DiscussApp model. Note that settings model had already this implementation, but it made a typo: the `this` i
Original PR description
Before this commit, some local settings were not properly synced in crosstab: - discuss sidebar compact mode was only visible on reloading the page. - chat hub compact mode was only affected the tab…
Before this commit, some local settings were not properly synced in crosstab: - discuss sidebar compact mode was only visible on reloading the page. - chat hub compact mode was only affected the tab that triggered the compact mode. The problem of discuss sidebar compact comes from lack of responsiveness from change in local storage value, which this commit fixes with `onStorage` in DiscussApp model. Note that settings model had already this implementation, but it made a typo: the `this` in `onStorage` could be the raw record instead of reactive record. This is fixed by registering the `onStorage` in the `static new`. For the ChatHub compact mode, usually triggering this mode is intended for reduced footprint of chat windows when navigating on the webclient, including opening new or existing tabs. This means the compact mode should be applied on all tabs at once. This commit fixes it by using a similar technique as discuss sidebar compact mode to sync its state immediately accros all tabs.  Forward-Port-Of: odoo/odoo#200011
…wizards - In the wizard of exporting data there are fields that may be not in our data base with attribute _table_query not set to none. -I have modified the export.py file to make the field of id in our fild dict only if the _table_query is set to None. task-4592514 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
Original PR description
…wizards - In the wizard of exporting data there are fields that may be not in our data base with attribute _table_query not set to none. -I have modified the export.py file to make the field of id in our fild dict only if the _table_query is set to None. task-4592514 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#199102
In [1], the composer was blocked when the chat bot is processing an answer and unlocked on the next step. However, we should not block it once the conversation is completed. It's especially problematic when an operator was forwarded as there is no more answer to process thus locking the composer forever. [1]: https://github.com/odoo/odoo/pull/199920 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I con
Original PR description
In [1], the composer was blocked when the chat bot is processing an answer and unlocked on the next step. However, we should not block it once the conversation is completed. It's especially problematic when an operator was forwarded as there is no more answer to process thus locking the composer forever. [1]: https://github.com/odoo/odoo/pull/199920 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#200321
This commit fixes an issue where the partner assigned to a booth could be incorrect based on the provided email. Indeed, we don't want to assign an existing partner when non-logged, as it could conflict when trying to checkout the order and providing another one. In addition, it just does not make much sense. Instead we now suggest to login before booking your booths. Task-4163951 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior a
Original PR description
This commit fixes an issue where the partner assigned to a booth could be incorrect based on the provided email. Indeed, we don't want to assign an existing partner when non-logged, as it could conflict when trying to checkout the order and providing another one. In addition, it just does not make much sense. Instead we now suggest to login before booking your booths. Task-4163951 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#199593 Forward-Port-Of: odoo/odoo#179083
Versions -------- - 18.0+ Issue ----- The `website_sale_contact_us_button` tour fails randomly on Runbot. Cause ----- 50 ms check delay is inadequate. Solution -------- Set check delay to 500 ms. runbot-145471 runbot-145473 Forward-Port-Of: odoo/odoo#199966
Original PR description
Versions -------- - 18.0+ Issue ----- The `website_sale_contact_us_button` tour fails randomly on Runbot. Cause ----- 50 ms check delay is inadequate. Solution -------- Set check delay to 500 ms. runbot-145471 runbot-145473 Forward-Port-Of: odoo/odoo#199966
Steps to reproduce: - Create a Vendor Bill with 10% ND tax - Post - In 'Edi Documents' tab download e-invoice Issue: `CuotaIVADeducible` element show the full tax amount, even if the tax has been set to non deductible opw-4582712 Forward-Port-Of: odoo/odoo#200251 Forward-Port-Of: odoo/odoo#200157
Original PR description
Steps to reproduce: - Create a Vendor Bill with 10% ND tax - Post - In 'Edi Documents' tab download e-invoice Issue: `CuotaIVADeducible` element show the full tax amount, even if the tax has been set to non deductible opw-4582712 Forward-Port-Of: odoo/odoo#200251 Forward-Port-Of: odoo/odoo#200157
This reverts commit 3d447856467e7ad72f0a89c71b643940b8ea5321. This was incompatible with the lxml version we have on our server. Revert for a quick fix until we have corrected the deployment (which will be slower) Task-id 4575936 is a new feature that should not have targeted a stable version Forward-Port-Of: odoo/odoo#200226
Original PR description
This reverts commit 3d447856467e7ad72f0a89c71b643940b8ea5321. This was incompatible with the lxml version we have on our server. Revert for a quick fix until we have corrected the deployment (which will be slower) Task-id 4575936 is a new feature that should not have targeted a stable version Forward-Port-Of: odoo/odoo#200226
Behaviour Before the Commit: When an invoice pdf has more than 1 page and legal notes(multiline notes) section is the first thing on next page, wkhtmltopdf fails to handle page-break for legal notes text. First line of legal notes overwrites on the total amount section resulting in overflow of contents. It works fine if legal notes are not the first thing on page. Behaviour After the Commit: Legal notes(multiline notes) text does not overwrite on total payment summary anymore. Fix:
Original PR description
Behaviour Before the Commit: When an invoice pdf has more than 1 page and legal notes(multiline notes) section is the first thing on next page, wkhtmltopdf fails to handle page-break for legal notes…
Behaviour Before the Commit: When an invoice pdf has more than 1 page and legal notes(multiline notes) section is the first thing on next page, wkhtmltopdf fails to handle page-break for legal notes text. First line of legal notes overwrites on the total amount section resulting in overflow of contents. It works fine if legal notes are not the first thing on page. Behaviour After the Commit: Legal notes(multiline notes) text does not overwrite on total payment summary anymore. Fix: Add 'overflow-auto' class to div with id='payment-term' and has clearfix class to ensure it handles overflow. Steps to reproduce: 1. Create a multiline legal notes for any tax. 2. Open Customer-Invoices, create an invoice by adding multiple products with the tax which has multiline legal notes. 3. Make sure to add specific number of products/sections so that invoice expands to 2 pages. 4. Legal notes section must be the first thing on second page, otherwise it will not overwrite text. Feel free to look at the ticket number 4416845 for detailed understanding of the bug. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193399
When trying to sign in (for a new user) after making a purchase (existing token), we can choose a password of less than the minimum length allowed in the configuration. The _check_password_policy method prevents the save of the password to the user but arrives too late in the flow as the initiation of the user creation is half done leading to an Invalid token issue at the next attempt (no partner found for the existing token with _signup_retrieve_partner). By adding the minlength attribute in
Original PR description
When trying to sign in (for a new user) after making a purchase (existing token), we can choose a password of less than the minimum length allowed in the configuration. The _check_password_policy method prevents the save of the password to the user but arrives too late in the flow as the initiation of the user creation is half done leading to an Invalid token issue at the next attempt (no partner found for the existing token with _signup_retrieve_partner). By adding the minlength attribute in the form of the sign up, we force the respect of the password policy minimum length in the front end and minimize the risk to encounter the issue. previous PR unmerged: https://github.com/odoo/odoo/pull/186622 opw-4514350 Forward-Port-Of: odoo/odoo#199549
Before this commit, when a product used in a paid order was archived, loading the paid order would cause the product to appear on the product screen. opw-4493666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196274 Forward-Port-Of: odoo/odoo#194900
Original PR description
Before this commit, when a product used in a paid order was archived, loading the paid order would cause the product to appear on the product screen. opw-4493666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196274 Forward-Port-Of: odoo/odoo#194900
Until 18.0 [1], test classes should not inherit from other test classes which themselves contain tests. When this happens, the tests of the parent class are run for every class that inherits from it. We fix occurrences of this for social marketing apps. A naive detection script is available on the pad of the related task. [1]: 6dc96811c24ec4c97b8fbd2489aef6d4f061ac03 task-3792478 Forward-Port-Of: odoo/odoo#200132 Forward-Port-Of: odoo/odoo#198993
Original PR description
Until 18.0 [1], test classes should not inherit from other test classes which themselves contain tests. When this happens, the tests of the parent class are run for every class that inherits from it. We fix occurrences of this for social marketing apps. A naive detection script is available on the pad of the related task. [1]: 6dc96811c24ec4c97b8fbd2489aef6d4f061ac03 task-3792478 Forward-Port-Of: odoo/odoo#200132 Forward-Port-Of: odoo/odoo#198993
Improve deletion performance for `project.task` with numerous `account.analytic.line` records by adding a missing index on the `parent_task_id` foreign key, which Postgres checks during the `DELETE` operation. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200354
Original PR description
Improve deletion performance for `project.task` with numerous `account.analytic.line` records by adding a missing index on the `parent_task_id` foreign key, which Postgres checks during the `DELETE` operation. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200354
Steps to reproduce the bug: - Install POS, then uninstall the sms gateway - Open a shop and then click on customers button - write anything in the input field then click on `Search More` Problem: Error is raised in the request because the `partner_list.js` screen is passing the field `phone_mobile_search` in the search_fields. The `phone_mobile_search` field is only introduced to the res.partner model in the a PhoneMixin and the inheritence is only applied in the `sms gateway module` s
Original PR description
Steps to reproduce the bug: - Install POS, then uninstall the sms gateway - Open a shop and then click on customers button - write anything in the input field then click on `Search More` Problem:…
Steps to reproduce the bug: - Install POS, then uninstall the sms gateway - Open a shop and then click on customers button - write anything in the input field then click on `Search More` Problem: Error is raised in the request because the `partner_list.js` screen is passing the field `phone_mobile_search` in the search_fields. The `phone_mobile_search` field is only introduced to the res.partner model in the a PhoneMixin and the inheritence is only applied in the `sms gateway module` so the field will only be available if the `sms gateway is installed`. Possible Approaches: - [Stable] added a function in the partner_list.js that tells if the PhoneMixin is applied and it returns false in the pos, and overriden the same function in the pos_sms bridge module that implies that both pos and sms are installed and it returns true there meaning the mixin is applied. - [Non Stable] add the inheritence of the mixin in the pos module, but that will require module upgrade - [Non Stable] add a whole direct dependency between the pos and the sms gateway opw-4455381 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#200232 Forward-Port-Of: odoo/odoo#199023
Before this fix, the list widget's extractProps function was never called due to an incorrect method reference in the web module. This caused issues when rendering dynamic props or customizing the list view behavior. After the fix: - The extractProps function is properly invoked. - The list widget can now retrieve props values as expected. Closes #200296 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged:
Original PR description
Before this fix, the list widget's extractProps function was never called due to an incorrect method reference in the web module. This caused issues when rendering dynamic props or customizing the list view behavior. After the fix: - The extractProps function is properly invoked. - The list widget can now retrieve props values as expected. Closes #200296 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#200350
Currently one can still edit section / note lines on posted moves (but not save the move). This commit makes the section / notes lines readonly when they should be. task: none Forward-Port-Of: odoo/odoo#200155
Original PR description
Currently one can still edit section / note lines on posted moves (but not save the move). This commit makes the section / notes lines readonly when they should be. task: none Forward-Port-Of: odoo/odoo#200155
**Problem**: When a portal user edits a task's description and adds a checklist, the checkboxes do not appear as they do in the Odoo backend (e.g., in the To-Do app). This occurs because the editor is rendered in an `iframe` with only `html_editor` loaded, while checklist styles are in `web_editor`. **Solution**: Add checklist styles to `html_editor`. **Steps to Reproduce**: 1. Share a project with **"Edit"** permission for a portal user. 2. Log in as the portal user. 3. Go to any
Original PR description
**Problem**: When a portal user edits a task's description and adds a checklist, the checkboxes do not appear as they do in the Odoo backend (e.g., in the To-Do app). This occurs because the editor is rendered in an `iframe` with only `html_editor` loaded, while checklist styles are in `web_editor`. **Solution**: Add checklist styles to `html_editor`. **Steps to Reproduce**: 1. Share a project with **"Edit"** permission for a portal user. 2. Log in as the portal user. 3. Go to any task inside the project. 4. In the description, add a checklist using `/checklist` command. - **Issue**: No checkboxes appear. opw-4481993 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200309
This commit will revert the change done in this commit: https://github.com/odoo/odoo/commit/49217dc494d01326bb8a4221bbfa99d9c02aeec5 Because a majority of companies in Saudi Arabia instead provide services locally to Non-Resident Individual Customers, thereby necessitating the issuance of a Simplified Tax Invoice. With our recent change, those non-resident individual contacts are now being issued a Standard Export Tax Invoice, which is incorrect. task-4611062 --- I confirm I have si
Original PR description
This commit will revert the change done in this commit: https://github.com/odoo/odoo/commit/49217dc494d01326bb8a4221bbfa99d9c02aeec5 Because a majority of companies in Saudi Arabia instead provide services locally to Non-Resident Individual Customers, thereby necessitating the issuance of a Simplified Tax Invoice. With our recent change, those non-resident individual contacts are now being issued a Standard Export Tax Invoice, which is incorrect. task-4611062 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200024 Forward-Port-Of: odoo/odoo#199734
This commit e35b3b088584b45b0278174da355d09e7e47633b was a fix for wrong calculation of base_url but the old calculation still there This was not detected because the test was not imported in __init__ file now it is removed and the test is imported in `__init__.py` opw-4235176 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199268
Original PR description
This commit e35b3b088584b45b0278174da355d09e7e47633b was a fix for wrong calculation of base_url but the old calculation still there This was not detected because the test was not imported in __init__ file now it is removed and the test is imported in `__init__.py` opw-4235176 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199268
**Steps to reproduce:** - Install Accounting - Create an included tax: * Amount: 20% * Included in Price: [enabled] * Affect Base of Subsequent Taxes: [disabled] - Create a retention tax: * Amount: -5% * Included in Price: [disabled] * Affect Base of Subsequent Taxes: [disabled] * Base Affected by Previous Taxes: [enabled] - Create an invoice: * Price: 120.0 * Taxes: [Both created taxes] **Issue:** The base amount used to compute the retention tax is including
Original PR description
**Steps to reproduce:** - Install Accounting - Create an included tax: * Amount: 20% * Included in Price: [enabled] * Affect Base of Subsequent Taxes: [disabled] - Create a retention tax: * Amount: -5% * Included in Price: [disabled] * Affect Base of Subsequent Taxes: [disabled] * Base Affected by Previous Taxes: [enabled] - Create an invoice: * Price: 120.0 * Taxes: [Both created taxes] **Issue:** The base amount used to compute the retention tax is including the amount of the included tax (i.e. 120.0), but it should not (i.e. 100.0) as the included tax doesn't affect the base of subsequent taxes. **Cause:** When "special_mode" is False, all excluded taxes following an included tax have their base affected by the included tax. opw-4451617 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200257 Forward-Port-Of: odoo/odoo#197512
**Current behavior before PR:** - In mass mailing, when the link popover opens, clicking on a link that is available near the edge of the mailing template beside the sidebar would sometimes cause the popover to appear behind the sidebar. **Desired behavior after PR is merged:** - Clicking on a link near the edge of the mailing template now ensures that the link popover does not appear behind the sidebar. task-4237091 Forward-Port-Of: odoo/odoo#198252
Original PR description
**Current behavior before PR:** - In mass mailing, when the link popover opens, clicking on a link that is available near the edge of the mailing template beside the sidebar would sometimes cause the popover to appear behind the sidebar. **Desired behavior after PR is merged:** - Clicking on a link near the edge of the mailing template now ensures that the link popover does not appear behind the sidebar. task-4237091 Forward-Port-Of: odoo/odoo#198252
Fix the traceback appearing when trying to create live session sample data. The live session survey is initialized with the 'session_speed_rating' field set to True meaning a 'session_speed_rating_time_limit' value is required but wasn't given. related PR: odoo/odoo#115141 Task-4569972 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197584
Original PR description
Fix the traceback appearing when trying to create live session sample data. The live session survey is initialized with the 'session_speed_rating' field set to True meaning a 'session_speed_rating_time_limit' value is required but wasn't given. related PR: odoo/odoo#115141 Task-4569972 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197584
**Problem**: When an `img` is inside a link, `removeCurrentLinkIfEmpty` removes the `<a>` node if no `href` is provided. This resets `linkElement` to `null`. This happens if the user clicks outside the link popover (when is is open) without entering a URL, it results in a traceback due to an invalid reference. **Solution**: Ensure `linkEl.isConnected` before defining popover properties to avoid referencing a removed element. **Steps to Reproduce**: 1. Add an image. 2. Click on the i
Original PR description
**Problem**: When an `img` is inside a link, `removeCurrentLinkIfEmpty` removes the `<a>` node if no `href` is provided. This resets `linkElement` to `null`. This happens if the user clicks outside the link popover (when is is open) without entering a URL, it results in a traceback due to an invalid reference. **Solution**: Ensure `linkEl.isConnected` before defining popover properties to avoid referencing a removed element. **Steps to Reproduce**: 1. Add an image. 2. Click on the image > toolbar > "Link". 3. When the link popover appears, click outside without typing a URL. 4. Observe a traceback. opw-4546324 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196434
Before this commit, some messages in portal chatter may have avatar squished vertically or horizontally when the source image of avatar is not a square. This happens because avatar are cropped to fit cover with `.o_object_fit_cover`, in order to give the right visual when the avatar doesn't fit in a square. The classname was present but the SCSS file defining this rule was missing from the ` "portal.assets_chatter_style"` bundle, which this commit fixes. Before  After  Forward-Port-Of: odoo/odoo#200241
Steps to reproduce: 1. Install l10n_ar_edi 2. Use an Argentinian company 3. Go to the "Argentinean Localization" section of the settings 4. Make sure "Private Key" and "Certificate" are empty. Save. 5. Click on "Generate Request". 6. A key has been created but looks like it's not set on the company. --- Description of the issue this commit addresses: When generating a certificate request without selecting a private key to generate the certificate request with, a private key is g
Original PR description
Steps to reproduce: 1. Install l10n_ar_edi 2. Use an Argentinian company 3. Go to the "Argentinean Localization" section of the settings 4. Make sure "Private Key" and "Certificate" are empty. Save.…
Steps to reproduce: 1. Install l10n_ar_edi 2. Use an Argentinian company 3. Go to the "Argentinean Localization" section of the settings 4. Make sure "Private Key" and "Certificate" are empty. Save. 5. Click on "Generate Request". 6. A key has been created but looks like it's not set on the company. --- Description of the issue this commit addresses: When generating a certificate request without selecting a private key to generate the certificate request with, a private key is generated by the system but in the settings windows, the field remains empty. Also, later, after retrieving the certificate from the official platform and trying to insert it in the database, it is required to link it with the private key that was used for its generation but since all automatically generated keys share the same name, this can be quite hard. --- Desired behavior after this commit is merged: When using the "Generate Request" button with no private key selected, the Private Key fields is populated with the key that was created for the generation of the request. Also, the names of the automatically generated keys use the current time for differenciation purposes. --- Note on the fix: The error happened because when using the Generate Request button, the key is created by a method called via another request so virtually, the assignment happens in another window. To fix that issue, the key has to be created and assigned before making any other request. --- task-4393259 Forward-Port-Of: odoo/enterprise#79253
Prior to this commit, we get an error when we try to make a copy of a certain revision of a quotation/quality template spreadsheet. This is due to the method `_creation_msg` which was not implemented after inheriting the `spreadsheet.mixin` class. Steps to reproduce: - Go to Sales > Configuration > Quotation Templates (or Quality Control Templates) - Create a quotation template - Select the quotation calculator field and create a new quotation spreadsheet - In the quotation spreadsheet, s
Original PR description
Prior to this commit, we get an error when we try to make a copy of a certain revision of a quotation/quality template spreadsheet. This is due to the method `_creation_msg` which was not implemented after inheriting the `spreadsheet.mixin` class. Steps to reproduce: - Go to Sales > Configuration > Quotation Templates (or Quality Control Templates) - Create a quotation template - Select the quotation calculator field and create a new quotation spreadsheet - In the quotation spreadsheet, select File > See version history - Select the three dots on any version and click "Make a copy" - Traceback occurs task-4568319 Forward-Port-Of: odoo/enterprise#80819 Forward-Port-Of: odoo/enterprise#79096
Steps to reproduce: - Go to website and set the lang to Spanish - Book an appointment from the website Bug: The confirmation email sent to the customer is not correctly translated to Spanish opw:4382606 Forward-Port-Of: odoo/enterprise#80257
Original PR description
Steps to reproduce: - Go to website and set the lang to Spanish - Book an appointment from the website Bug: The confirmation email sent to the customer is not correctly translated to Spanish opw:4382606 Forward-Port-Of: odoo/enterprise#80257
Currently, an error was occurring when a user tried to reverse a journal entry by following these steps: - Install ``Accounting`` and ``Payroll`` module - Enabled payroll entries in Payroll > Configuration > Settings. - Created a new employee and its corresponding contract in payroll > Create a bank account and enable ``Send Money`` in ``Private Information`` - In ``Contract`` change state from `New` to `Running` > Click on `Payslips` - Computed the payslip > generated draft journal entr
Original PR description
Currently, an error was occurring when a user tried to reverse a journal entry by following these steps: - Install ``Accounting`` and ``Payroll`` module - Enabled payroll entries in Payroll >…
Currently, an error was occurring when a user tried to reverse a journal entry by following these steps: - Install ``Accounting`` and ``Payroll`` module - Enabled payroll entries in Payroll > Configuration > Settings. - Created a new employee and its corresponding contract in payroll > Create a bank account and enable ``Send Money`` in ``Private Information`` - In ``Contract`` change state from `New` to `Running` > Click on `Payslips` - Computed the payslip > generated draft journal entries > add lines in journal items and click `Pay` in payslip. - Go to ``Journal Entry`` and make a ``Reverse Entry``. ValueError: Expected singleton: res.currency() The issue occurs at [1] because, when a user makes a payment from a payslip after posting journal entries, the ``currency_id`` is not available. [1] - https://github.com/odoo/odoo/blob/0583db332efdc884975da1a074c91981d2865c9d/addons/account/wizard/account_payment_register.py#L972 This commit will fix the above issue by providing default company currency when currency is not available. sentry-6207053954 Forward-Port-Of: odoo/enterprise#77334
When confirming a vendor bill imported from an uploaded document and pressing the "Update SAT" button, the SAT state is not updated. This commit adds the missing EDI document state, `invoice_received`, in a validation that triggers the update of the SAT state for the current invoice. Steps to reproduce: <img width="1301" alt="Screenshot 2025-02-13 at 11 23 47 PM copy" src="https://github.com/user-attachments/assets/bad64936-bae1-4846-8cde-12f6d1748d46" /> <img width="1301" alt="Screenshot 2
Original PR description
When confirming a vendor bill imported from an uploaded document and pressing the "Update SAT" button, the SAT state is not updated. This commit adds the missing EDI document state,…
When confirming a vendor bill imported from an uploaded document and pressing the "Update SAT" button, the SAT state is not updated. This commit adds the missing EDI document state, `invoice_received`, in a validation that triggers the update of the SAT state for the current invoice. Steps to reproduce: <img width="1301" alt="Screenshot 2025-02-13 at 11 23 47 PM copy" src="https://github.com/user-attachments/assets/bad64936-bae1-4846-8cde-12f6d1748d46" /> <img width="1301" alt="Screenshot 2025-02-13 at 11 24 12 PM copy" src="https://github.com/user-attachments/assets/b4a839c2-a5ab-4638-b46d-3eb9ccf1b59d" /> <img width="1307" alt="Screenshot 2025-02-13 at 11 26 30 PM copy" src="https://github.com/user-attachments/assets/14645d48-5e90-405c-8a36-3ec7b0af50ef" /> <img width="1306" alt="Screenshot 2025-02-13 at 11 26 47 PM copy" src="https://github.com/user-attachments/assets/839349bf-be83-408a-bbd4-676d84a34493" /> <img width="1305" alt="Screenshot 2025-02-13 at 11 26 57 PM copy" src="https://github.com/user-attachments/assets/1e3773de-f3ab-47b4-9548-b5633c078943" /> Actual result: <img width="1306" alt="Screenshot 2025-02-13 at 11 27 08 PM copy" src="https://github.com/user-attachments/assets/a385847e-20cc-4410-8802-6d6b2c363633" /> Expected result: <img width="1307" alt="Screenshot 2025-02-13 at 11 27 49 PM copy" src="https://github.com/user-attachments/assets/8974cd49-13b6-40c0-8fa2-fd1fce45faf3" /> Forward-Port-Of: odoo/enterprise#79443 Forward-Port-Of: odoo/enterprise#79314
### Issue: The barcode relies heavily on the data fetched in its LazyCache to work properly (in order to avoid rpc call's each time records data's are needed). However, some of these data's are loaded using search methods that ignore archived records by default. This leads to the creation of a cache that do not contains records that are expected to be there and hence will lead to tracebacks. ### Steps to reproduce: - In the settings enable "Multi-Step Routes" - Inventory > Configuratio
Original PR description
### Issue: The barcode relies heavily on the data fetched in its LazyCache to work properly (in order to avoid rpc call's each time records data's are needed). However, some of these data's are…
### Issue: The barcode relies heavily on the data fetched in its LazyCache to work properly (in order to avoid rpc call's each time records data's are needed). However, some of these data's are loaded using search methods that ignore archived records by default. This leads to the creation of a cache that do not contains records that are expected to be there and hence will lead to tracebacks. ### Steps to reproduce: - In the settings enable "Multi-Step Routes" - Inventory > Configuration > Warehouse Management > Locations - Create a new location WH/Stock/Love and a children location WH/Stock/Love/Layer - Create and confirm an internal transfer from WH/Stock to WH/Stock/Love for 1 unit of any storable product in stock - Change the location dest of the move line to WH/Stock/Love/Layer. - Archive the location WH/Stock/Love - Open your internal transfer in the barcode App. #### > Traceback: An error occured in the owl lifecycle... Record stock.location with id=... doesn't exist in the cache, it should return by the server at LazyBarcodeCache.getRecord. ### Cause of the issue: When entering the barcode man component, a call of the `get_barcode_data` is launched to fetch and populate the barcode data's and data are added to the barcode lazy cache in order to retreive record values without additional rpc calls: https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/static/src/components/main.js#L76-L93 https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/static/src/models/barcode_model.js#L32-L34 For instance, when redering the picking template, the location dest id will be retreived from the cache: https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/static/src/components/line.js#L7-L9 https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/static/src/models/barcode_picking_model.js#L1077-L1079 The traceback occurs because the record was actually never added to the data's and hence never added to the cache because part of the `get_barcode_data` call is performed with searchs that ignore completely the archived records (unless the 'active_test' key is in the context): https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/models/stock_picking.py#L102-L106 opw-4423110 Forward-Port-Of: odoo/enterprise#79566 Forward-Port-Of: odoo/enterprise#78297
A non-deterministic behavior resulted in fetching unexpected IDs from the `hr_recruitment_stage_report`. The SQL query is fixed and the non-deterministic behavior is gone now. The non-deterministic behavior was because the view query uses `ROW_NUMBER()` to generate the IDs dynamically in each query before union which results in records with duplicate ids, resulting in non-deterministic behavior. Three CTEs were used. Two CTEs were used to simplify the two queries before the union. A `global_cte
Original PR description
A non-deterministic behavior resulted in fetching unexpected IDs from the `hr_recruitment_stage_report`. The SQL query is fixed and the non-deterministic behavior is gone now. The non-deterministic behavior was because the view query uses `ROW_NUMBER()` to generate the IDs dynamically in each query before union which results in records with duplicate ids, resulting in non-deterministic behavior. Three CTEs were used. Two CTEs were used to simplify the two queries before the union. A `global_cte` is used to union both CTEs. A `ROW_NUMBER() OVER()` is used to assign sequential integers to rows, along with a necessary `ORDER BY` clause to ensure deterministic behavior. task-4440977 Forward-Port-Of: odoo/enterprise#80691 Forward-Port-Of: odoo/enterprise#80446
When toggling columns in any Accounting Report list view, it requires a manual refresh to see the changes. this is caused because this [commit](odoo/enterprise@adc4bb7) removed automatic reactivity, so we need to explicitly recompute the columns after updating optionalActiveFields To resolve this, we override the ListRenderer's `toggleOptionalField` function to explicitly recompute columns before rendering. Steps to reproduce: 0. Activate developer mode 1. Navigate to the 'Accounting Re
Original PR description
When toggling columns in any Accounting Report list view, it requires a manual refresh to see the changes. this is caused because this [commit](odoo/enterprise@adc4bb7) removed automatic reactivity, so we need to explicitly recompute the columns after updating optionalActiveFields To resolve this, we override the ListRenderer's `toggleOptionalField` function to explicitly recompute columns before rendering. Steps to reproduce: 0. Activate developer mode 1. Navigate to the 'Accounting Reports' menu in accounting. 2. Open a report (e.g. the balance sheet) 3. Use the column selector to add or remove additional columns OPW-4352833 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#79745 Forward-Port-Of: odoo/enterprise#79592
This commit fix the following issues: - When editing a record in list view, it wasn't possible to use the space key nor the enter key. The first one was (un)selecting the current line while the second one entered the folder or preview mode when validating the changes. - Folder was present twice in the list view. - Website and Folder are now editable. Task-4558286 Forward-Port-Of: odoo/enterprise#79864 Forward-Port-Of: odoo/enterprise#78841
Original PR description
This commit fix the following issues: - When editing a record in list view, it wasn't possible to use the space key nor the enter key. The first one was (un)selecting the current line while the second one entered the folder or preview mode when validating the changes. - Folder was present twice in the list view. - Website and Folder are now editable. Task-4558286 Forward-Port-Of: odoo/enterprise#79864 Forward-Port-Of: odoo/enterprise#78841
Before this commit: === - If `urbanpiper_fiscal_position_id` is not set, the system attempts to retrieve the default UrbanPiper fiscal position. After this commit: === - The check ensures that if no valid fiscal position is found (either missing or belonging to a different company), a new one is created. runbot-115934 Forward-Port-Of: odoo/enterprise#79652
Original PR description
Before this commit: === - If `urbanpiper_fiscal_position_id` is not set, the system attempts to retrieve the default UrbanPiper fiscal position. After this commit: === - The check ensures that if no valid fiscal position is found (either missing or belonging to a different company), a new one is created. runbot-115934 Forward-Port-Of: odoo/enterprise#79652
Issue: When the user tries to create a contact from the approval form, they get a "Missing Record" error. Steps to reproduce: - Install the Approvals app - Create a new Approval Type with Contact set as either 'Required' or 'Optional' - When creating a new Request from the created Type, try to create a new Contact Cause: Both Approvals and Partners have a 'category_id' field. In the approval form, the context has the approval's value for 'category_id', which is being used for the part
Original PR description
Issue: When the user tries to create a contact from the approval form, they get a "Missing Record" error. Steps to reproduce: - Install the Approvals app - Create a new Approval Type with Contact set as either 'Required' or 'Optional' - When creating a new Request from the created Type, try to create a new Contact Cause: Both Approvals and Partners have a 'category_id' field. In the approval form, the context has the approval's value for 'category_id', which is being used for the partner creation. Solution: In the approval form view, change the context used by the partner field to not have a default 'category_id'. Ticket: opw-4328371 Forward-Port-Of: odoo/enterprise#80177 Forward-Port-Of: odoo/enterprise#74579
- hr_payroll > Dashboard - After completing all the steps of onboarding when the user is refreshing all the menuitems get hidden or whenever user does a level up and refresh/ press F5 then also all the menuitme gets hidden. Before this commit, after completing all the onboarding steps or whenever user does a level up after that refreshing the page (F5). so, all menu items to disappear. This occurs because the `hr_referral_welcome` client action is missing the required path. Now, the stati
Original PR description
- hr_payroll > Dashboard - After completing all the steps of onboarding when the user is refreshing all the menuitems get hidden or whenever user does a level up and refresh/ press F5 then also all the menuitme gets hidden. Before this commit, after completing all the onboarding steps or whenever user does a level up after that refreshing the page (F5). so, all menu items to disappear. This occurs because the `hr_referral_welcome` client action is missing the required path. Now, the static path has been added to the `hr_referral_welcome` client action. in that way, when reloading ,after completing all the onboarding steps or level up, all menu items is not disappear Task-4391729 Forward-Port-Of: odoo/enterprise#77478