Wednesday, February 19, 2025
53 changes · saas-18.1
Resolved issues and error corrections
Live chat operators can now still see and use the message composer in the Discuss app after a live chat has ended. This helps operators follow up with visitors, create leads, or send a final message when needed.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/195734 PR above reintroduced composer when livechat is inactive for operators, so that they can still make leads or post a message to visitor as a last resort. However the showing of composer was only made in chat window: the discuss app was still hiding the composer for operator on livechat end. This commit fixes the issue in discuss app, by showing the composer to livechat operators when the livechat has ended. Part of Task-4528331 Before  After 
The Discuss call sidebar now makes the collapse and expand control for participants easier to notice. Hover styling clarifies that the control is clickable without distracting from the participant list.
Original PR description
Before this commit, the button to collapse/expand participants in the discuss sidebar was not easy to spot. The button has low impact on UI, which makes sense because the most important elements are the call participants. However, the lack of style change on mouse hovering doesn't help noticing its presence. This commit improves by changing its visibility slightly on mouse-hovering the call participants. A background effect is also added when mouse-hovering precisely this button, so that it's very obvious that this is a clickable button.  
This fix adjusts the delay used when the live chat chatbot appears to be typing. It makes automated chat responses feel more natural and avoids timing issues that could affect the customer support experience.
Original PR description
Task-4577776
This fix ensures newly created partners are saved automatically when adding bank account details from an invoice. It prevents the account holder field from being left empty, reducing errors during invoice setup.
Original PR description
In this pr https://github.com/odoo/odoo/commit/0b8bd891fad1c84607fe147a32d705917341fed7 we improved the partner form but by doing that we removed the use of the auto_save_partner widget which was wrong since we need it in the following case: - Create an invoice - Create and edit a new partner - Trying to add a bank account - The account holder was empty since the partner was not saved task-4507042 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Installing the Point of Sale discount and sales modules no longer fails if the default Services product category was previously deleted. This avoids a setup-blocking error and lets businesses install these POS features even after customizing invoicing categories.
Original PR description
Currently a `ParseError` arises when the user installs the `pos_discount` and `pos_sale` modules after deleting the `Service` category in `Invoicing`. Steps to reproduce: --- - Install `Invoicing`…
Currently a `ParseError` arises when the user installs the `pos_discount` and `pos_sale` modules after deleting the `Service` category in `Invoicing`.
Steps to reproduce:
---
- Install `Invoicing` application (without demo data)
- Invoicing > Configuration > Categories > Delete `Services`
- Now install `pos_discount` and `pos_sale` modules
Traceback:
---
```
ValueError: External ID not found in the system: product.product_category_services
ParseError: while parsing /home/odoo/src/odoo/saas-18.1/addons/pos_discount/data/pos_discount_data.xml:4, somewhere inside <record id="product_product_consumable" model="product.product">
<field name="name">Discount</field>
<field name="available_in_pos">False</field>
<field name="standard_price">0.00</field>
<field name="list_price">0.00</field>
<field name="weight">0.00</field>
<field name="type">consu</field>
<field name="categ_id" ref="product.product_category_services"/>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="default_code">DISC</field>
<field name="purchase_ok">False</field>
</record>
```
The error occurs because the user deleted the category and then installed `pos_discount` and `pos_sale` modules, which reference the missing product category.
This commit resolves the error by providing a False value for the field if the product category is missing.
sentry-6291223593
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prPayroll declaration documents now list the related employee as the contact when they are generated. This ensures employees can see their own declarations in the My Profile document area, rather than only having background read access.
Original PR description
Since the employees see in their 'My Profile' tab the documents on which they are 'Contact'. We need to set them as contact when generating declaration and not only 'read' access.
Miscellaneous changes
Related to https://github.com/odoo/enterprise/pull/78533 Forward-Port-Of: odoo/odoo#196475 Forward-Port-Of: odoo/odoo#196447
Original PR description
Related to https://github.com/odoo/enterprise/pull/78533 Forward-Port-Of: odoo/odoo#196475 Forward-Port-Of: odoo/odoo#196447
Issue: When changing the company logo, if the image contains a white background it will mix with the header's shape color. This is because the shape is displayed on top of the image. Adding a negative z-index ensures the image is over the shape and doesn't mix with it. task-4471578 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194347
Original PR description
Issue: When changing the company logo, if the image contains a white background it will mix with the header's shape color. This is because the shape is displayed on top of the image. Adding a negative z-index ensures the image is over the shape and doesn't mix with it. task-4471578 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194347
Since 1 January 2025, the VAT rates in Slovakia have increased from 20% to 23% and from 10% to 19%. This commit adds the new taxes and updates the fiscal position accordingly. task-4502344 Forward-Port-Of: odoo/odoo#197035 Forward-Port-Of: odoo/odoo#194686
Original PR description
Since 1 January 2025, the VAT rates in Slovakia have increased from 20% to 23% and from 10% to 19%. This commit adds the new taxes and updates the fiscal position accordingly. task-4502344 Forward-Port-Of: odoo/odoo#197035 Forward-Port-Of: odoo/odoo#194686
[1] introduced a new URL mechanism where the menu_id isn't in the URL anymore. To find the corresponding menu on reload, the web client searches for a menu corresponding to the first application in the URL. The advantage of this, is that a clean URL without superflow is used. One of the limitations is that if the first action in the URL is not linked to a menu, the menu may disappear on reload. This PR fixes this issue by creating a fallback to the last used menu. This is done to improve the
Original PR description
[1] introduced a new URL mechanism where the menu_id isn't in the URL anymore. To find the corresponding menu on reload, the web client searches for a menu corresponding to the first application in the URL. The advantage of this, is that a clean URL without superflow is used. One of the limitations is that if the first action in the URL is not linked to a menu, the menu may disappear on reload. This PR fixes this issue by creating a fallback to the last used menu. This is done to improve the user experience on reload. Note that this only fixes the problem on reload. If the URL is opened in a new tab, or shared, the menu will not be display. [1] https://github.com/odoo/odoo/commit/c63d14a0485a553b74a8457aee158384e9ae6d3f opw-198103 Forward-Port-Of: odoo/odoo#198122
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#194001
Since odoo/odoo#196778, a portal test template has been added. Missing the `primary`attribute in this template affects all the portal templates. This commit adds this attribute to the test template. Steps to reproduce: - Install a module that inherits `portal.mixin` such as sale and `test_mail_full` - Go to a sale order page in the portal - Chatter is at the top of the page Forward-Port-Of: odoo/odoo#198259
Original PR description
Since odoo/odoo#196778, a portal test template has been added. Missing the `primary`attribute in this template affects all the portal templates. This commit adds this attribute to the test template. Steps to reproduce: - Install a module that inherits `portal.mixin` such as sale and `test_mail_full` - Go to a sale order page in the portal - Chatter is at the top of the page Forward-Port-Of: odoo/odoo#198259
Issue: The grid elements on the import Lots dialog are placed in one column instead of two, which misses up the layout. Reproduction steps: 1. install "purchase_stock" 2. create a product tracked by lots 3. make an RFQ for that product and confirm it 4. click on the generated receipt smart button 5. in "Operations" tab, click fa-list icon to open the dialog 6. in the dialog, click "Import Serials/Lots Reason: The bug was introduced in [239e75b1385fa023e97396baa0c8d46c50997dda](http
Original PR description
Issue: The grid elements on the import Lots dialog are placed in one column instead of two, which misses up the layout. Reproduction steps: 1. install "purchase_stock" 2. create a product tracked by…
Issue:
The grid elements on the import Lots dialog are placed in one column instead of two, which misses up the layout.
Reproduction steps:
1. install "purchase_stock"
2. create a product tracked by lots
3. make an RFQ for that product and confirm it
4. click on the generated receipt smart button
5. in "Operations" tab, click fa-list icon to open the dialog
6. in the dialog, click "Import Serials/Lots
Reason:
The bug was introduced in [239e75b1385fa023e97396baa0c8d46c50997dda](https://github.com/odoo/odoo/commit/239e75b1385fa023e97396baa0c8d46c50997dda#diff-1377579fdb76de80cd31ca67d798b752a90600ab4c82a3c8799786a130b7a46fR431-R433), where the following style was added
```css
.o_cell:first-child:last-child {
grid-column: span 2;
}
```
which applies for the children of the first and the third grid elements; However, since the first and the third grid elements have `display: contents`, the `grid-column: span 2` of their children messes up the grid layout, and makes it 4x1 instead of 2x2.
The fix:
Remove `display: contents` on the first and third grid elements, as it seems to not be useful. Have tested on web and mobile layouts.
opw-4505725
Forward-Port-Of: odoo/odoo#195396Versions -------- - 16.0+ Steps ----- 1. Go to Settings / Website; 2. enable the following options: - Comparison Price; - Pricelists: Advanced price rules; - Prevent Sale of Zero Priced Product; 3. create a pricelist setting all prices to 0; 4. make pricelist selectable; 5. set pricelist's Discount Policy to Show public price & discount to customer; 6. go to `/shop`; 7. query the search bar. Issue ----- A strikethrough price is added, despite the item not being a
Original PR description
Versions
--------
- 16.0+
Steps
-----
1. Go to Settings / Website;
2. enable the following options:
- Comparison Price;
- Pricelists: Advanced price rules;
- Prevent Sale of Zero Priced Product;
3. create a pricelist setting all prices to 0;
4. make pricelist selectable;
5. set pricelist's Discount Policy to Show public price & discount to customer;
6. go to `/shop`;
7. query the search bar.
Issue
-----
A strikethrough price is added, despite the item not being available for sale.
Cause
-----
The `_search_render_results_prices` method still checks for `has_discounted_price` and `compare_list_price` after it already knows the product isn't available for sale.
Solution
--------
If `prevent_zero_price_sale` is given for the product, do an early return, disregarding the `has_discounted_price` and `compare_list_price` options.
opw-4263554
Forward-Port-Of: odoo/odoo#197336
Forward-Port-Of: odoo/odoo#195721Versions: --------- 18.0+ Issue: ------ When uploading a document using the `Upload` button, the document is always assigned to the user's main company, regardless of the selected company. Steps to Reproduce: ------------------- 1. Create a secondary company that the current user can access. 2. Navigate to Sales / Configuration / Sales Orders / Headers/Footers. 3. Switch the user's current company to the secondary company. 4. Click the `Upload` button and select any document.
Original PR description
Versions: --------- 18.0+ Issue: ------ When uploading a document using the `Upload` button, the document is always assigned to the user's main company, regardless of the selected company. Steps to…
Versions:
---------
18.0+
Issue:
------
When uploading a document using the `Upload` button, the document is always assigned to the user's main company, regardless of the selected company.
Steps to Reproduce:
-------------------
1. Create a secondary company that the current user can access.
2. Navigate to Sales / Configuration / Sales Orders / Headers/Footers.
3. Switch the user's current company to the secondary company.
4. Click the `Upload` button and select any document.
- Notice that no document is added to the secondary company's scope.
5. Switch back to the primary company.
- The uploaded document is available under the primary company instead of the secondary one.
Cause:
------
During the upload process, no company-specific information is provided to associate the document with the selected company.
Due to the inheritance of the `ir.attachment` model, it uses `self.env.company` as the default company value for the document[^1]. Because the upload happens via the `HttpDispatcher`, no `allowed_company_ids` context value is provided to the request. Without this context value present, `request.env.company` defaults to the main company of the current user[^2].
Fix:
----
Use the `company_id` associated with the relevant `sale.order.template` (`False` when uploading documents not linked to a template).
opw-4472602
[^1]: https://github.com/odoo/odoo/blob/d99e44f22634ac589a940d85fab84ca2b2e85332/odoo/addons/base/models/ir_attachment.py#L408-L409
[^2]: https://github.com/odoo/odoo/blob/d99e44f22634ac589a940d85fab84ca2b2e85332/odoo/api.py#L680-L681
Forward-Port-Of: odoo/odoo#196842Add tour for the fix b395f98. Forward-Port-Of: odoo/odoo#198096
Original PR description
Add tour for the fix b395f98. Forward-Port-Of: odoo/odoo#198096
To reproduce: Testing `test_ensure_correct_website_asset` with multiple website will consistently fail as the bundle from the biggest `website_id` is used whereas it compare the bundle to default website loaded, which looks to be the one with the smallest ID. Installing `test_themes` reproduce the issue consistently as the website with biggest and smallest ID will use different theme website with distinct bundle After this fix: As the website with smaller ID load by default, we use the
Original PR description
To reproduce: Testing `test_ensure_correct_website_asset` with multiple website will consistently fail as the bundle from the biggest `website_id` is used whereas it compare the bundle to default website loaded, which looks to be the one with the smallest ID. Installing `test_themes` reproduce the issue consistently as the website with biggest and smallest ID will use different theme website with distinct bundle After this fix: As the website with smaller ID load by default, we use the smallest existing website_id rather than the biggest one rb-65788 Forward-Port-Of: odoo/odoo#198006
Currently, if you have a product named "clémentines" and input "clémentine" in the search bar it will not be found. Steps to reproduce: ------------------- * Create a product sold in POS named clémentine * Open a shop which does not restrict categories * Input in the search bar "clémentine" > Observation: No product for "clémentine" Why the fix: ------------ The product `searchString` is `unaccent` and `toLowerCase` while the searchWord is only `toLowerCase`. https://github.com/o
Original PR description
Currently, if you have a product named "clémentines" and input "clémentine" in the search bar it will not be found. Steps to reproduce: ------------------- * Create a product sold in POS named clémentine * Open a shop which does not restrict categories * Input in the search bar "clémentine" > Observation: No product for "clémentine" Why the fix: ------------ The product `searchString` is `unaccent` and `toLowerCase` while the searchWord is only `toLowerCase`. https://github.com/odoo/odoo/blob/f82f768729d897fa54b04789f4e0637ed1bb27f4/addons/point_of_sale/static/src/app/screens/product_screen/product_screen.js#L397-L397 opw-4558898 Forward-Port-Of: odoo/odoo#197925
Steps to reproduce: - In website, open the HTML/CSS Editor (Site > HTML/CSS Editor). - In the dropdown, select JS. - Uncomment the given example (about the "Hello World" dialog) and save. - Try to go in edit mode. => Traceback This happens since commit [1], which replaced the dialogs by OWL Dialog ones. Indeed, the call to `super` in the `init` function was forgotten, making the widget not being initialized correctly, and therefore not destroyed correctly either when going in edit mode.
Original PR description
Steps to reproduce: - In website, open the HTML/CSS Editor (Site > HTML/CSS Editor). - In the dropdown, select JS. - Uncomment the given example (about the "Hello World" dialog) and save. - Try to go in edit mode. => Traceback This happens since commit [1], which replaced the dialogs by OWL Dialog ones. Indeed, the call to `super` in the `init` function was forgotten, making the widget not being initialized correctly, and therefore not destroyed correctly either when going in edit mode. This commit adds this missing call. [1]: https://github.com/odoo/odoo/commit/57ed8bc0bf9d1ae2b7542d677a4d7e8fd1899ea2 opw-4243615 Forward-Port-Of: odoo/odoo#183401
Before this commit, the PoS notes were not displayed in the correct order in the PoS interface, despite the existence of a `sequence` field that allowed users to define their desired order. opw-4473463 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193789
Original PR description
Before this commit, the PoS notes were not displayed in the correct order in the PoS interface, despite the existence of a `sequence` field that allowed users to define their desired order. opw-4473463 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193789
Purpose of this commit: The command descriptions (canned responses, channel command) currently use an italic font style due to being wrapped in the emphasis tag, causing the text to appear cropped at the end of the sentence. This commit resolves the issue by replacing the emphasis tag with a span tag. task-4485553 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198229 Forward-Port-Of: odoo/odoo#193915
Original PR description
Purpose of this commit: The command descriptions (canned responses, channel command) currently use an italic font style due to being wrapped in the emphasis tag, causing the text to appear cropped at the end of the sentence. This commit resolves the issue by replacing the emphasis tag with a span tag. task-4485553 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198229 Forward-Port-Of: odoo/odoo#193915
Steps to reproduce: - Install pos_restaurant - In restaurant's configs, set 'Customer Display' to 'Another device' - Open the customer display in another tab, and start adding products from the main display -> The list of products on the customer display doesn't auto scroll when the products overlow the view. Explanation: The last `OrderLine` is supposed to be pass a `selected` prop, so it can be targeted from JavaScript and scrolled into the view [1]. However, this prop was removed in 1b
Original PR description
Steps to reproduce: - Install pos_restaurant - In restaurant's configs, set 'Customer Display' to 'Another device' - Open the customer display in another tab, and start adding products from the main display -> The list of products on the customer display doesn't auto scroll when the products overlow the view. Explanation: The last `OrderLine` is supposed to be pass a `selected` prop, so it can be targeted from JavaScript and scrolled into the view [1]. However, this prop was removed in 1bc90a18807c43206c4620d7faad2579a3a61fc9. Now we add it back. [1]: https://github.com/odoo/odoo/blob/18.0/addons/point_of_sale/static/src/app/generic_components/order_widget/order_widget.js#L28-L30 opw-4458215 Forward-Port-Of: odoo/odoo#195712
Here is description of modifications for each tour: modified: addons/barcodes/static/src/barcode_handlers.js Use hoot event instead of custom event defined in macro.js to uniform code and behaviors. modified: addons/l10n_br_website_sale/static/tests/tours/brazilian_address.js Add a delay to wait the form is loaded to avoid problem with _selectState(id) function. modified: addons/point_of_sale/static/tests/tours/utils/chrome_util.js U
Original PR description
Here is description of modifications for each tour: modified: addons/barcodes/static/src/barcode_handlers.js Use hoot event instead of custom event defined in macro.js to uniform code and behaviors.…
Here is description of modifications for each tour:
modified: addons/barcodes/static/src/barcode_handlers.js
Use hoot event instead of custom event defined in macro.js to
uniform code and behaviors.
modified: addons/l10n_br_website_sale/static/tests/tours/brazilian_address.js
Add a delay to wait the form is loaded to avoid problem with
_selectState(id) function.
modified: addons/point_of_sale/static/tests/tours/utils/chrome_util.js
Use waitFor in run of step because .fa-circle-o-notch should not
appears ... then of course body:not(:has(.fa-circle-o-notch)) also
not and then tour crashes.
modified: addons/pos_self_order/static/tests/tours/self_order_kiosk_tour.js
Because of the background animation, clicking on order now
may not do anything... so we'll click until we get to take out.
modified: addons/pos_self_order/tests/test_self_order_kiosk.py
Let's see comment of previous file ... We could need more time
for the tours.
modified: addons/test_website/static/tests/tours/restricted_editor.js
:contains(text) => Check that textContent.test(regex)
:has(class) => Check the element classList contains the class
modified: addons/website/static/tests/tours/html_editor.js
Additionnal steps to ensure tour take the good way.
modified: addons/website_slides/static/tests/tours/slides_tour_tools.js
Uniformize the behavior for two tours with clickOnAddTagDropdown
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#197871**Current behaviour before PR:** When single cell is selected in a table, trying to apply color closes color palette and color is not getting applied on it. This happens because applying color on single cell changes selection and cell gets deselected in _onSelectionChange. **Desired behaviour after PR:** Now, it is possible to apply color on a single cell. task-3433784 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-
Original PR description
**Current behaviour before PR:** When single cell is selected in a table, trying to apply color closes color palette and color is not getting applied on it. This happens because applying color on single cell changes selection and cell gets deselected in _onSelectionChange. **Desired behaviour after PR:** Now, it is possible to apply color on a single cell. task-3433784 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196690 Forward-Port-Of: odoo/odoo#173845
Nilvera requires the country name in the XML to be in Turkish. To achieve this, the Turkish language is now activated during installation, ensuring translated values are stored in the database and can be enforced in the XML output. task-4504454 Forward-Port-Of: odoo/odoo#197933
Original PR description
Nilvera requires the country name in the XML to be in Turkish. To achieve this, the Turkish language is now activated during installation, ensuring translated values are stored in the database and can be enforced in the XML output. task-4504454 Forward-Port-Of: odoo/odoo#197933
Forward-Port-Of: odoo/odoo#198125
Original PR description
Forward-Port-Of: odoo/odoo#198125
In the following HTML: ```html <h1>[test</h1><p>content]</p>\n ``` The "\n" text node is invisible whitespace. When deleting the selection, failing to account for that, the content of the heading was "joined" with the invisible text node so that the heading's first child was that text node. This enventually snowballed when inserting new content as the start container was now a text node at offset 0, signalling to `insert` to do its insertion before its parent, and we ended up with an emp
Original PR description
In the following HTML: ```html <h1>[test</h1><p>content]</p>\n ``` The "\n" text node is invisible whitespace. When deleting the selection, failing to account for that, the content of the heading was…
In the following HTML: ```html <h1>[test</h1><p>content]</p>\n ``` The "\n" text node is invisible whitespace. When deleting the selection, failing to account for that, the content of the heading was "joined" with the invisible text node so that the heading's first child was that text node. This enventually snowballed when inserting new content as the start container was now a text node at offset 0, signalling to `insert` to do its insertion before its parent, and we ended up with an empty block after our insertion. This fixes it by correcting `getJoinableFragment` so it doesn't join with an invisible text node. ----- This prevents the default behavior of a mousedown event on the ChatGPT alternatives dialog so it doesn't cancel the user's text selection in the editor. This way, like with every other dialog, whenever it's open nothing can happen in the background. task-4258167 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186122
In 50c62eab72678d51fb88c88fbeb81da2decca6f2, an override was done to attachments to disable deleting them, detaching them instead. As this is only required for German companies, a check can be added in the override to allow non-German companies to be able to delete their attachments. Also, another restriction was added for changing the fiscal country to make sure the flow for deleting German attachments cannot be bypassed. task-4500319 Forward-Port-Of: odoo/odoo#198062 Forward-Port-Of: odoo/
Original PR description
In 50c62eab72678d51fb88c88fbeb81da2decca6f2, an override was done to attachments to disable deleting them, detaching them instead. As this is only required for German companies, a check can be added in the override to allow non-German companies to be able to delete their attachments. Also, another restriction was added for changing the fiscal country to make sure the flow for deleting German attachments cannot be bypassed. task-4500319 Forward-Port-Of: odoo/odoo#198062 Forward-Port-Of: odoo/odoo#197006
Description of the issue/feature this PR addresses: In the 'CONTRIBUTING.md' file , there is a list item with the text: > Use this **template** when reporting issues. Please search for duplicates first! The link named 'template' should point to a pull request template. Current behavior before PR: The link named 'template' is broken and give a 404 error. Desired behavior after PR is merged: The link named 'template' now target the 'Contributing' wiki page, section 'making-p
Original PR description
Description of the issue/feature this PR addresses: In the 'CONTRIBUTING.md' file , there is a list item with the text: > Use this **template** when reporting issues. Please search for duplicates first! The link named 'template' should point to a pull request template. Current behavior before PR: The link named 'template' is broken and give a 404 error. Desired behavior after PR is merged: The link named 'template' now target the 'Contributing' wiki page, section 'making-pull-request' that contains the desired template. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197547
**Current behavior before PR:** When dragging and dropping selected content excluding images in the editor, the content was duplicated at the new location, leaving the original content intact. **Desired behavior after PR is merged:** Dragging and dropping selected content now removes it from its original location and places it in the new location, effectively functioning as a cut and paste operation. task:4369910 Forward-Port-Of: odoo/odoo#189672
Original PR description
**Current behavior before PR:** When dragging and dropping selected content excluding images in the editor, the content was duplicated at the new location, leaving the original content intact. **Desired behavior after PR is merged:** Dragging and dropping selected content now removes it from its original location and places it in the new location, effectively functioning as a cut and paste operation. task:4369910 Forward-Port-Of: odoo/odoo#189672
**Current behavior before PR:** When there is a `heading`, `pre` or `blockquote` tag in `rtl` direction, pressing enter at the end of element creates a new `p` tag in `ltr` direction rather than `rtl`. **Desired behavior after PR:** Now, pressing enter at the end of `heading`, `pre` or `blockquote` tag in `rtl` direction creates a new empty paragraph tag with `rtl` direction. task-4484619 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
**Current behavior before PR:** When there is a `heading`, `pre` or `blockquote` tag in `rtl` direction, pressing enter at the end of element creates a new `p` tag in `ltr` direction rather than `rtl`. **Desired behavior after PR:** Now, pressing enter at the end of `heading`, `pre` or `blockquote` tag in `rtl` direction creates a new empty paragraph tag with `rtl` direction. task-4484619 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194463
[FIX] l10n{latam_invoice_document,hu_edi}: layout header & footer issues Bubble and wave layout footer content of l10n_ar edi invoice qr code was a little bit cut off in preview. In addition when you had both, `l10n_hu_edi` and `l10n_latam_invoice_document` installed, you would have a double header/footer. And the header of bubble/wave layout does not have the bubble/wave. Last, there is some space between the document and the "shadow" of the document in portal preview which looks wei
Original PR description
[FIX] l10n{latam_invoice_document,hu_edi}: layout header & footer issues Bubble and wave layout footer content of l10n_ar edi invoice qr code was a little bit cut off in preview. In addition when you…
[FIX] l10n{latam_invoice_document,hu_edi}: layout header & footer issues
Bubble and wave layout footer content of l10n_ar edi invoice qr code
was a little bit cut off in preview. In addition when you had both,
`l10n_hu_edi` and `l10n_latam_invoice_document` installed, you would
have a double header/footer. And the header of bubble/wave layout
does not have the bubble/wave. Last, there is some space between the
document and the "shadow" of the document in portal preview which
looks weird when the selected layout is bubble or wave which normally
goes all the way until the margins.
How to reproduce:
- install l10n_latam_invoice_document
- move to (AR) Responsable Inscripto" company
- Switch Document Layout to "Bubble" format
- Create an invoice with B2B customer
- make sure the Document Type is set to "(1) INVOICES A".
- Make sure the Journal is "Electronic Invoice"
- Validate the invoice
- Click on Preview button
What's wrong here:
1. At the bottom of the invoice, the CAE and CAE Due Date fields are
cropped
2. Also if you installed l10n_hu_edi, you will have a double
header/footer
3. The header does not have the bubble
4. The bubble doesn't go all way until the margins in portal preview
Regarding the first issue, this commit fixes it by moving
the custom footer to `o_content_footer` instead of it replacing the
whole footer. This was done for all `l10n_hu_edi` layouts as well as
`l10n_latam_invoice_document` layouts for consistency
For the second double header/footer issue, added a check before
overriding:
- company._name == 'res.company' to avoid breaking Configure Document
Layout wizard (there the `comptany` is of model `base.document.layout`
- only override if fiscal country corresponds to that of the localisation
And for the last issue with header not rendering as expected, this
commit uses another xpath for header overriding as in
[#192650](https://github.com/odoo/odoo/pull/192650)
opw-4411237
Forward-Port-Of: odoo/odoo#192485Before this commit, when archiving an inheriting view from a main one (via the list and the form), the main record was not savable. This is due to 6f06420e4a9443c52dc0cb427f8f55eb4aecabce which automatically adds missing but useful fields in a view in readonly mode. This commit adds that field manually to be able to save the active field. opw-4534225 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: ---
Original PR description
Before this commit, when archiving an inheriting view from a main one (via the list and the form), the main record was not savable. This is due to 6f06420e4a9443c52dc0cb427f8f55eb4aecabce which automatically adds missing but useful fields in a view in readonly mode. This commit adds that field manually to be able to save the active field. opw-4534225 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#197992 Forward-Port-Of: odoo/odoo#197137
Since Odoo 18.0, the recipient is always included when sending a simplified invoice. While this is allowed by TicketBAI, it is only valid if the partner has a VAT number (NIF). Steps to reproduce: Install the l10n_es_edi_tbai module and setup an ES company Create a simplified invoice with the partner "Simplified Invoice Partner (ES)" Send the invoice to TicketBAI The following error will be returned: "B4_1000002: Todos los registros incluidos en la petición son incorrectos." The Fix:
Original PR description
Since Odoo 18.0, the recipient is always included when sending a simplified invoice. While this is allowed by TicketBAI, it is only valid if the partner has a VAT number (NIF). Steps to reproduce: Install the l10n_es_edi_tbai module and setup an ES company Create a simplified invoice with the partner "Simplified Invoice Partner (ES)" Send the invoice to TicketBAI The following error will be returned: "B4_1000002: Todos los registros incluidos en la petición son incorrectos." The Fix: For simplified invoices, this fix ensures that the recipient is only included in the XML if the partner has a VAT/NIF. If not, the recipient is omitted to avoid TicketBAI validation errors. Ticket [link 1](https://www.odoo.com/odoo/project/967/tasks/4525875), [link 2](https://www.odoo.com/odoo/project/967/tasks/4522938), [link 3](https://www.odoo.com/odoo/project/967/tasks/4553030) opw-4525875 opw-4522938 opw-4553030 Forward-Port-Of: odoo/odoo#197472
Accrual plans are not readable for regular users, so once a user has an accrual plan set on one of their allocations, they cannot open their time off dashboard. Access rights error gets thrown. The bug was supposedly fixed in commit: https://github.com/odoo/odoo/commit/30f7fe62ef2579ed0a0c3ad9dbec5edf2ca60b18 but it did not consider adding the sudo() for the condition based on the carryover_policy. Steps to Reproduce on Runbot: As Mitchell Admin: 1. Install Time Off app 2. Create a time
Original PR description
Accrual plans are not readable for regular users, so once a user has an accrual plan set on one of their allocations, they cannot open their time off dashboard. Access rights error gets thrown. The…
Accrual plans are not readable for regular users, so once a user has an accrual plan set on one of their allocations, they cannot open their time off dashboard. Access rights error gets thrown. The bug was supposedly fixed in commit: https://github.com/odoo/odoo/commit/30f7fe62ef2579ed0a0c3ad9dbec5edf2ca60b18 but it did not consider adding the sudo() for the condition based on the carryover_policy. Steps to Reproduce on Runbot: As Mitchell Admin: 1. Install Time Off app 2. Create a time off type (show in dashboard,requires allocation) 3. Create an accrual plan (accrued_gain_time: end, carryover_date: year_start) 4. Create a rule for the accrual plan (Accumulate 0.5 days, month at the 1st of the month, carryover policy is either none or maximum) 5. Create an allocation for Marc Demo,who has no time off rights, for the time off type. Set to accrual allocation and link to the accrual plan.Then, set the start date to the 1st of the month and run until some future date. As Marc Demo: 1. Attempt to click into the Time Off app 2. Observe Access Right error opw-4551392 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197069
Problem: When a non-admin user tries to send an invoice by email or print an invoice report, an access error is thrown because the fields l10n_id_qris_api_key and l10n_id_qris_mid are locked behind the Admin/Settings group. Purpose: Non-admin users should be able to send and print invoices regardless of their admin rights. Apply sudo when accessing those specific fields. Steps to reproduce on Runbot: ADMIN 1. Install Contacts, Accounting, l10n_id 2. Enable QR Codes in Settings > Account
Original PR description
Problem: When a non-admin user tries to send an invoice by email or print an invoice report, an access error is thrown because the fields l10n_id_qris_api_key and l10n_id_qris_mid are locked behind the Admin/Settings group. Purpose: Non-admin users should be able to send and print invoices regardless of their admin rights. Apply sudo when accessing those specific fields. Steps to reproduce on Runbot: ADMIN 1. Install Contacts, Accounting, l10n_id 2. Enable QR Codes in Settings > Accounting 3. Give Marc Demo basic accounting and bank rights, but no admin rights MARC DEMO 1. Switch to ID Company 2. Create and confirm invoice 3. Attempt to send and/or print invoice 4. Access Error is thrown opw-4529074 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197706
The following PR: https://github.com/odoo/odoo/pull/190321 introduced a new website tour. However, one of the step make the tour consistently fail with a single app website install. The reason for the fail is that the "edit link" sub-window is opened by default if the link is not open through the "extra menu". Clicking the button (what currently do the test) do close the sub-window making the input not clickable in the following step.  do close the sub-window making the input not clickable in the following step.  *single-app website build screenshot* the URL input is open by default *multi-app build screenshot* the URL input is not shown by default as the mega-menu menu-item is shown in the "extra menu" due to the amount of menu added by other website related app After this PR: The "edit link" button is pressed only if the input is not visible rb-111286 Forward-Port-Of: odoo/odoo#197757
Before this commit, since https://github.com/odoo/odoo/pull/189657, the mobile push-to-talk button was also affected by the aspect ratio affecting all buttons of the call action list. This was making the button too big and covering the whole call view. This commit fixes this issue by introducing a dedicated selector for the bar part of the call action list. before:  after:  after:  Forward-Port-Of: odoo/odoo#197884
Before this commit, when using spreadsheet with some chat bubbles, the chat bubbles were cut with horizontal scrollbar of spreadsheet. Steps to reproduce: - make a spreadsheet - put a chat in chat bubble (e.g. from click on messaging menu) - remove the "filters" panel of the spreadsheet This happens because the horizontal scrollbar of spreadsheet uses a `z-index: 15` while chat bubble uses `z-index: 10`. The `z-index` of chat bubble is relative to navigable list, and since the value
Original PR description
Before this commit, when using spreadsheet with some chat bubbles, the chat bubbles were cut with horizontal scrollbar of spreadsheet. Steps to reproduce: - make a spreadsheet - put a chat in chat…
Before this commit, when using spreadsheet with some chat bubbles, the chat bubbles were cut with horizontal scrollbar of spreadsheet. Steps to reproduce: - make a spreadsheet - put a chat in chat bubble (e.g. from click on messaging menu) - remove the "filters" panel of the spreadsheet This happens because the horizontal scrollbar of spreadsheet uses a `z-index: 15` while chat bubble uses `z-index: 10`. The `z-index` of chat bubble is relative to navigable list, and since the value was exactly slightly offset from navigable list, this commit fixes by shifting the `$o-mail-NavigableList-zIndex`. It was `11`, now it's `21`. As a result, the chat bubble `z-index` is being changed from `10` to `20`, which is greater to `15` from spreadsheet horizontal scrollbar. Task-4547672 Before / After <img width="106" alt="Screenshot 2025-02-17 at 17 10 28" src="https://github.com/user-attachments/assets/caf3d9f8-59d4-4b2b-9981-d2e5ed68a510" /> <img width="97" alt="Screenshot 2025-02-17 at 17 11 14" src="https://github.com/user-attachments/assets/1c9376bc-ca24-42dd-8864-eee0878fc1c7" /> Forward-Port-Of: odoo/odoo#198021
Before this commit: The version set on an IoT box server side would never update as it was set only on creation. Also took the opportunity to refactor a bit this old part of the code to make it clearer and add some relevant logs to more easily investigate cases where it could be relevant After this commit: IoT version will now appear with the real value on the IoT app & beautiful relevant logs  *before this PR, the IoT would be stuck with the wrong version (here 18.0)*  *after this PR*  *logs example* opw-4502002 Forward-Port-Of: odoo/enterprise#79603
Related to https://github.com/odoo/odoo/pull/196447 Forward-Port-Of: odoo/enterprise#78542 Forward-Port-Of: odoo/enterprise#78533
Original PR description
Related to https://github.com/odoo/odoo/pull/196447 Forward-Port-Of: odoo/enterprise#78542 Forward-Port-Of: odoo/enterprise#78533
Forward-Port-Of: odoo/enterprise#79561
Original PR description
Forward-Port-Of: odoo/enterprise#79561
During the execution of the validation cron of the OCR, the IAP account selected could sometimes be incorrect. In the context of the validation cron, we need to know to which company the document belong in order to get the correct IAP account (i.e. the one from the company, if it exists). If we use the generic IAP account (i.e. the one that isn't linked to any company), the mismatch of accounts will cause the validation to be ignored by the OCR server. Related ticket [#4522628](https://
Original PR description
During the execution of the validation cron of the OCR, the IAP account selected could sometimes be incorrect. In the context of the validation cron, we need to know to which company the document belong in order to get the correct IAP account (i.e. the one from the company, if it exists). If we use the generic IAP account (i.e. the one that isn't linked to any company), the mismatch of accounts will cause the validation to be ignored by the OCR server. Related ticket [#4522628](https://www.odoo.com/odoo/project.task/4522628) Forward-Port-Of: odoo/enterprise#79550 Forward-Port-Of: odoo/enterprise#79525
Details in various commits Forward-Port-Of: odoo/enterprise#79533
Original PR description
Details in various commits Forward-Port-Of: odoo/enterprise#79533
clipboard_macros.js : use hoot action instead of action implemented in web/core/macro.js (The goal is to definitly remove this actions from macro.js) tour_shopfloor.js : Ensure body has not visible modal (and not just modal) preparation_display_tour.js : WaitRequest after clickOrderButton. tour_shopfloor.js : additional step to ensure state of DOM. tour_test_mrp_barcode_flows.js : additional step to ensure state of DOM. No need to click on the input when use edit() action.
Original PR description
clipboard_macros.js : use hoot action instead of action implemented in
web/core/macro.js (The goal is to definitly remove this actions
from macro.js)
tour_shopfloor.js : Ensure body has not visible modal (and not just
modal)
preparation_display_tour.js : WaitRequest after clickOrderButton. tour_shopfloor.js : additional step to ensure state of DOM. tour_test_mrp_barcode_flows.js : additional step to ensure state of DOM.
No need to click on the input when use edit() action. edit() already
click in input to focus it.
export_tours.js : additional step to ensure state of DOM. helpdesk_knowledge_template_bloc_tour.js : No need to click when the
step is just a DOM check.
website_sale_change_rental_duration.js : additional step to ensure
state of DOM.
Forward-Port-Of: odoo/enterprise#79358This commit fix 2 columns in the Libro de IVA xlsx export file: 1. **expense_series_number**: before it was the move name, now it's the move ref 2. **reception_number**: before it was blank, now it's the move name task-4508992 Forward-Port-Of: odoo/enterprise#79459
Original PR description
This commit fix 2 columns in the Libro de IVA xlsx export file: 1. **expense_series_number**: before it was the move name, now it's the move ref 2. **reception_number**: before it was blank, now it's the move name task-4508992 Forward-Port-Of: odoo/enterprise#79459
Mod349 tax report in Spanish localization should report the total number of intra-community operators [1] However currently we count the number of operations Steps to reproduce: - With an ES company setup - Create 2 invoice to the same an EU partner - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operators is 2, but should be 1 [1] https://sede.agenciatributaria.gob.es/static_files/Sede/Proced
Original PR description
Mod349 tax report in Spanish localization should report the total number of intra-community operators [1] However currently we count the number of operations Steps to reproduce: - With an ES company setup - Create 2 invoice to the same an EU partner - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Total number of intra-community operators is 2, but should be 1 [1] https://sede.agenciatributaria.gob.es/static_files/Sede/Procedimiento_ayuda/GI28/instr_mod_349.pdf opw-4403287 Forward-Port-Of: odoo/enterprise#79522 Forward-Port-Of: odoo/enterprise#78588
Customer statement can be accessed from the partner record and eventually sent to the customer. However currently the mail wizard will add 2 signatures at the end of the mail Steps to reproduce: - Open a partner - Access Customer Statement - Click Print, send email - Check sent email Issue: The signature is duplicated opw-4456798 Forward-Port-Of: odoo/enterprise#79389
Original PR description
Customer statement can be accessed from the partner record and eventually sent to the customer. However currently the mail wizard will add 2 signatures at the end of the mail Steps to reproduce: - Open a partner - Access Customer Statement - Click Print, send email - Check sent email Issue: The signature is duplicated opw-4456798 Forward-Port-Of: odoo/enterprise#79389
### 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#79194 Forward-Port-Of: odoo/enterprise#78297
- update the `co2_fee_min, health_indice` paramters values Task: 4563950 Forward-Port-Of: odoo/enterprise#79523 Forward-Port-Of: odoo/enterprise#78999
Original PR description
- update the `co2_fee_min, health_indice` paramters values Task: 4563950 Forward-Port-Of: odoo/enterprise#79523 Forward-Port-Of: odoo/enterprise#78999
This commit adds some QoL improvements on l10n_uy_edi when creating an Uruware testing account, as listed: - if in test mode, skip the uuid validation - if in test mode, use the current user email address for the contact for Uruware to send the credentials - in the successful event notification, display the email address where the credentials will be sent from Uruware - add cooldown period of 24 hours everytime a successful request for creating uruware account is sent related IAP PR: ht
Original PR description
This commit adds some QoL improvements on l10n_uy_edi when creating an Uruware testing account, as listed: - if in test mode, skip the uuid validation - if in test mode, use the current user email address for the contact for Uruware to send the credentials - in the successful event notification, display the email address where the credentials will be sent from Uruware - add cooldown period of 24 hours everytime a successful request for creating uruware account is sent related IAP PR: https://github.com/odoo/iap-apps/pull/974 task-id: 4411564 Forward-Port-Of: odoo/enterprise#79387 Forward-Port-Of: odoo/enterprise#78008
Clicking 'Name this version' in the version history panel causes a traceback because the `el` of TextInput is not found. We have two possible solutions: 1. Forward the refs of TextInput and VersionHistoryItem explicitly using `useChildRef` and `useForwardRefToParent`, or use a callback to retrieve the ref for focusing the input. 2. Remove the menu item, as the cursor already changes to a text pointer on hover, indicating the name is editable. I think the second approach is better since
Original PR description
Clicking 'Name this version' in the version history panel causes a traceback because the `el` of TextInput is not found. We have two possible solutions: 1. Forward the refs of TextInput and VersionHistoryItem explicitly using `useChildRef` and `useForwardRefToParent`, or use a callback to retrieve the ref for focusing the input. 2. Remove the menu item, as the cursor already changes to a text pointer on hover, indicating the name is editable. I think the second approach is better since it is simpler and more intuitive. Task: 4563422 Forward-Port-Of: odoo/enterprise#79474
Steps to reproduce ================== - Got to appointment type; - Apply some filter. - Now create a share link. - Filter is lost. Technical =========== https://github.com/odoo/enterprise/pull/63046/commits/492296e91e9c0b1106a7bc6852010be426d2abe8 Here we are loading the action while creating or updating the share link to reflect the changes without refreshing. It is not required when we create a share link from other places instead of a Share link menu. After this commit ========
Original PR description
Steps to reproduce ================== - Got to appointment type; - Apply some filter. - Now create a share link. - Filter is lost. Technical =========== https://github.com/odoo/enterprise/pull/63046/commits/492296e91e9c0b1106a7bc6852010be426d2abe8 Here we are loading the action while creating or updating the share link to reflect the changes without refreshing. It is not required when we create a share link from other places instead of a Share link menu. After this commit ================== This commit addresses the issue and now the filter will not lost when we create a share link from appointment_type. Task-4138356 Forward-Port-Of: odoo/enterprise#71165