Friday, April 11, 2025
37 changes · saas-18.1
Miscellaneous changes
Problem: Images used via `background-image` in Email Marketing disappear upon email delivery. This is due to the CSS sanitization filter removing the `background-image` property. Solution: Add `background-image` related properties to`_style_whitelist`: - background-image - background-position - background-size - background-repeat - background-origin Steps to reproduce: 1. Add a "Header" > "Cover" block in an Email Marketing template. 2. Set a background image on the block. 3. Sen
Original PR description
Problem: Images used via `background-image` in Email Marketing disappear upon email delivery. This is due to the CSS sanitization filter removing the `background-image` property. Solution: Add `background-image` related properties to`_style_whitelist`: - background-image - background-position - background-size - background-repeat - background-origin Steps to reproduce: 1. Add a "Header" > "Cover" block in an Email Marketing template. 2. Set a background image on the block. 3. Send the email. 4. Observe that the background image does not appear in the received email. opw-4558819 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205554
**Steps to reproduce:** - Install Accounting - Go to Settings and configure document layout - Select Folder as layout - Create an invoice with lot of products (~20) that would be printed on 2 pages - Duplicate the created invoice - From the list view, select both invoices - Click on "Send" button - Go to "Settings / Technical / Automation / Scheduled Actions" - Open "Send invoices automatically" action - Click on "Run Manually" **Issue:** A KeyError is raised in "_prepare_invoice_p
Original PR description
**Steps to reproduce:** - Install Accounting - Go to Settings and configure document layout - Select Folder as layout - Create an invoice with lot of products (~20) that would be printed on 2 pages -…
**Steps to reproduce:** - Install Accounting - Go to Settings and configure document layout - Select Folder as layout - Create an invoice with lot of products (~20) that would be printed on 2 pages - Duplicate the created invoice - From the list view, select both invoices - Click on "Send" button - Go to "Settings / Technical / Automation / Scheduled Actions" - Open "Send invoices automatically" action - Click on "Run Manually" **Issue:** A KeyError is raised in "_prepare_invoice_pdf_report" method from the following line: `'raw': content_by_id[invoice.id]` If the invoices have already been sent before clicking on "Run Manually", the traceback can be checked in the logs. **Cause:** Since this commit https://github.com/odoo/odoo/commit/0e73d3f1751495786eb2b18384ea39f4da18e3fb a unique call to "wkhtmltopdf" is made to generate one PDF for all the invoices. This PDF is then split in a dict having an entry for each invoice. When there is more pages than the number of invoices, we check the "outlines" generated by "wkhtmltopdf" to determine which pages are associated to which invoice. "wkhtmltopdf" generates an "outline" for each heading tag (i.e. h1, h2,...). As each layout is only using a heading tag (i.e. h2) for the document title, we can assume that each page between 2 heading tags and therefore outlines belongs to the same invoice. The issue with the Folder layout is that the document title is defined in the header of the layout and not in the body as it is done for the other layouts. But "wkhtmltopdf" only generates "outines" for heading tags in the body, ignoring those defined in the header. In that case, the PDF cannot be split due to the lack of outlines and the dict only contains one element (the whole PDF) with False as key, which raises the error when executing this code `content_by_id[invoice.id]`. **Solution:** 1) Instead of the KeyError, a UserError with a more useful message is raised instead. 2) A heading tag (h3) is added in the body of the Folder layout to allow "wkhtmltopdf" to generate the "outlines" from it. This heading also contains the document title. But in order to prevent having the document title displayed twice, these styles are applied to it: - "opacity: 0" to hide the tag. "display: none" and "visibility: hidden" don't work. No "outline" is generated if there are used. - "height: 0" to remove the space allocated to the hidden tag. This is a very hacky solution but without it, it is not possible to send multiple documents that have more than one page. opw-4592851 opw-4562932 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204158
### Steps to reproduce: *Happening in all LATAM localizations* - Install 'l10n_pe' and switch to a Peruvian company - In Accounting > Configuration > Journals duplicate "Customer Invoices" - In the new journal tick the option "Secure Posted Entries with Hash" - Create a new invoice with this journal, confirm - Duplicate this invoice and try to confirm - Cannot confirm ### Cause: When confirming an invoice with LATAM localization, the fields "sequence_number" and "sequence_prefix" are
Original PR description
### Steps to reproduce: *Happening in all LATAM localizations* - Install 'l10n_pe' and switch to a Peruvian company - In Accounting > Configuration > Journals duplicate "Customer Invoices" - In the…
### Steps to reproduce: *Happening in all LATAM localizations* - Install 'l10n_pe' and switch to a Peruvian company - In Accounting > Configuration > Journals duplicate "Customer Invoices" - In the new journal tick the option "Secure Posted Entries with Hash" - Create a new invoice with this journal, confirm - Duplicate this invoice and try to confirm - Cannot confirm ### Cause: When confirming an invoice with LATAM localization, the fields "sequence_number" and "sequence_prefix" are no longer populated. These fields are necessary with the hash option. During a previous series of commits, a call to `_compute_split_sequence` was removed: - [1st commit](https://github.com/odoo/odoo/commit/10565c6968a5d0f285f93c4bdc610350999a88e3) - [2nd commit](https://github.com/odoo/odoo/commit/658542e17dfe421b83bf610564042c8b643b3b78) - [3rd commit](https://github.com/odoo/odoo/commit/7f08a7ebbcc8fc856f961d7ca6f001ce69e8771c) This for some reason does not compute the fields for invoices in LATAM. ### Solution: Add the call to `_compute_split_sequence`. opw-4685796 Forward-Port-Of: odoo/odoo#205505
Analytic lines partner is not computed when changing the partner of the related move line. To solve this, we add the `move_line_id.partner_id` in the `depends` of the compute. To reproduce: - Create a journal entry - Set an analytic account on one of a line - Confirm journal entry - From the account move line list view, select the lines from the previous entry - Change the partner - Go to analytic reporting -> The partner on the analytic line has not been changed Ticket [link](
Original PR description
Analytic lines partner is not computed when changing the partner of the related move line. To solve this, we add the `move_line_id.partner_id` in the `depends` of the compute. To reproduce: - Create a journal entry - Set an analytic account on one of a line - Confirm journal entry - From the account move line list view, select the lines from the previous entry - Change the partner - Go to analytic reporting -> The partner on the analytic line has not been changed Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4626366) opw-4626366 Forward-Port-Of: odoo/odoo#205546 Forward-Port-Of: odoo/odoo#201512
Steps to reproduce: (This are for this specific case) 1. Get website_appointment_sale and a 2nd language for our website. 2. Make sure that for the appointment we select Allow Guests. 3. Now, we go to the website and go to the appointment, until we reach the "Add more details about you" page. 4. Here is when we have to try to modify the translation with editor. Issue: We're receiving an error as "Cannot read properties of null (reading '2')" which arises from the `trans` not being a
Original PR description
Steps to reproduce: (This are for this specific case) 1. Get website_appointment_sale and a 2nd language for our website. 2. Make sure that for the appointment we select Allow Guests. 3. Now, we go to the website and go to the appointment, until we reach the "Add more details about you" page. 4. Here is when we have to try to modify the translation with editor. Issue: We're receiving an error as "Cannot read properties of null (reading '2')" which arises from the `trans` not being appropiate due to the translation regex, which will cause the match to be null when calling it on this "defective" `trans`. Solution: The current solution will make the regex to better match anything in the translation, by modifying `(.*)` to ([\s\S]*?) we make sure that we're matching any character, including new lines. opw-4442038 Forward-Port-Of: odoo/odoo#204131 Forward-Port-Of: odoo/odoo#194416
The missing break was duplicating the file_data. For example, the PDF was there in PDF but also in binary. opw-4510745 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205328
Original PR description
The missing break was duplicating the file_data. For example, the PDF was there in PDF but also in binary. opw-4510745 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205328
Description of the issue/feature this PR addresses: IOT crashes parsing a response from https://www.odoo.com/odoo-enterprise/iot/x509 not containing 'data' Current behavior before PR: Crash Desired behavior after PR is merged: - Related internal PR: https://github.com/odoo/internal/pull/3480 opw-4711613 Forward-Port-Of: odoo/odoo#205444 Forward-Port-Of: odoo/odoo#205168
Original PR description
Description of the issue/feature this PR addresses: IOT crashes parsing a response from https://www.odoo.com/odoo-enterprise/iot/x509 not containing 'data' Current behavior before PR: Crash Desired behavior after PR is merged: - Related internal PR: https://github.com/odoo/internal/pull/3480 opw-4711613 Forward-Port-Of: odoo/odoo#205444 Forward-Port-Of: odoo/odoo#205168
Issue ----- When in a branch company, products from the parent company are not visible in the catalog. Steps to reproduce ----- - Install "Sales" app - Go to Settings > Users & Companies > Companies - Create the "Main Company" Company - Add Branches to "Main Company" - Switch companies to "Main Company" - Create a product "A" and set the company to "Main Company" - Switch to one of the branch companies - Create a new Quotation -> The product is displayed from the dropdown li
Original PR description
Issue
-----
When in a branch company, products from the parent company are not visible in the catalog.
Steps to reproduce
-----
- Install "Sales" app
- Go to Settings > Users & Companies > Companies
- Create the "Main Company" Company
- Add Branches to "Main Company"
- Switch companies to "Main Company"
- Create a product "A" and set the company to "Main Company"
- Switch to one of the branch companies
- Create a new Quotation
-> The product is displayed from the dropdown list but not in the Catalog
Cause
-----
Branches have a different id from their parent company. The search domain only includes the current companies but not its' parents.
We can simply include the parent company in _get_product_catalog_domain (of the product_catalog_mixin class).
-----
Ticket:
opw-4472464
Forward-Port-Of: odoo/odoo#203902
Forward-Port-Of: odoo/odoo#197620### Description: The commit b15bdb6 introduces a bug causing the `account.move.line` to be broken. This is caused by the fact that rather than looping over the move_line_ids of one move, it does it on all of them, causing the moves to all have the same direction, even if the move lines have different directions. ### Fix: Changing the `self` to `record` should fix the issue. ### Reference: b15bdb65b11b3772c1d288b8b65e48f0cb221d24 Forward-Port-Of: odoo/odoo#205558
Original PR description
### Description: The commit b15bdb6 introduces a bug causing the `account.move.line` to be broken. This is caused by the fact that rather than looping over the move_line_ids of one move, it does it on all of them, causing the moves to all have the same direction, even if the move lines have different directions. ### Fix: Changing the `self` to `record` should fix the issue. ### Reference: b15bdb65b11b3772c1d288b8b65e48f0cb221d24 Forward-Port-Of: odoo/odoo#205558
Turnstile was missing on website_mass_mailing. This lack of implementation caused the newsletter forms to not submit anymore. Task-4592066 Forward-Port-Of: odoo/odoo#204690 Forward-Port-Of: odoo/odoo#200158
Original PR description
Turnstile was missing on website_mass_mailing. This lack of implementation caused the newsletter forms to not submit anymore. Task-4592066 Forward-Port-Of: odoo/odoo#204690 Forward-Port-Of: odoo/odoo#200158
Versions -------- - 16.0+ Steps ----- 1. Install `website_sale_loyalty` with default configuration; 2. add a payment provider; 3. as a public user, buy a gift card via eCommerce. Issue ----- No email is sent with the gift card's code to the provided email address. Cause ----- The email template doesn't have an `email_from` field added. Without this value, it falls back on the current user, but because we're Public User, this also doesn't have an `email` value. Additionally,
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Install `website_sale_loyalty` with default configuration; 2. add a payment provider; 3. as a public user, buy a gift card via eCommerce. Issue ----- No email is sent with the gift card's code to the provided email address. Cause ----- The email template doesn't have an `email_from` field added. Without this value, it falls back on the current user, but because we're Public User, this also doesn't have an `email` value. Additionally, if the order gets confirmed as a portal user, the email will be sent from the client's email address. Solution -------- Add a `_get_mail_author` hook to `loyalty.card`, which can be used when an email template lacks an `email_from` value. Mail author precedence for cards without an order: - current internal user > card's company > current company Mail author precedence for cards with an order: - salesperson > order's company opw-4687107 Forward-Port-Of: odoo/odoo#204644
Currently, an error occurs when opening a website cart if its `Payment method` record has been deleted. This results in preventing the user from accessing the cart. **Steps to produce:** - Install the `website_sale` module. - Navigate to `Website / Configuration / eCommerce / Payment Methods`. - Delete method `name: Payment method`. - Add the product to the cart and then open it. - Observe the error. **Error:** `ValueError: External ID not found in the system: payment.payment_method_
Original PR description
Currently, an error occurs when opening a website cart if its `Payment method` record has been deleted. This results in preventing the user from accessing the cart. **Steps to produce:** - Install…
Currently, an error occurs when opening a website cart if its `Payment method` record has been deleted. This results in preventing the user from accessing the cart. **Steps to produce:** - Install the `website_sale` module. - Navigate to `Website / Configuration / eCommerce / Payment Methods`. - Delete method `name: Payment method`. - Add the product to the cart and then open it. - Observe the error. **Error:** `ValueError: External ID not found in the system: payment.payment_method_unknown` The error occurs because the system attempts to access id of the payment method `payment.payment_method_unknown` at [1], but it is unavailable as the user has already deleted it. This commit adds validation to prevent deletion of the `payment_method_unknown`. [1] - https://github.com/odoo/odoo/blob/1c896c5da71b58b382269fe6cca556f4a61e4d5d/addons/website_sale/controllers/main.py#L1714 Sentry - 6177955401 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198728
Versions -------- - 18.0+ Steps ----- 1. Open a quotation template; 2. open the Quote Builder tab; 3. click "Download examples". Issue ----- 404 not found Cause ----- For product: - When commit 3e58523 updated the versions of documentation links from 17.0 to 18.0, it overlooked changing the hash part of the url for `pdfquotebuilderexamples.zip`. For sale_pdf_quote_builder: - The version in the url gets added by the `documentation_link` widget, but it doesn't update the ha
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Open a quotation template; 2. open the Quote Builder tab; 3. click "Download examples". Issue ----- 404 not found Cause ----- For product: - When commit 3e58523 updated the versions of documentation links from 17.0 to 18.0, it overlooked changing the hash part of the url for `pdfquotebuilderexamples.zip`. For sale_pdf_quote_builder: - The version in the url gets added by the `documentation_link` widget, but it doesn't update the hash part of the download link. Solution -------- Change it so it links to https://www.odoo.com/documentation/18.0/_downloads/c2c6ce32294dfddffcfefcf2775f7a09/pdfquotebuilderexamples.zip opw-4680248 Forward-Port-Of: odoo/odoo#205433
Before this PR, the operator was not notified after being forwarded by a bot. This happened because the notification was posted as the operator. Messages are automatically marked as read when a user posts them. As a result, nothing in the UI indicated that the chat was new or required the operator's attention. This PR resolves the issue by posting the message as the chatbot. It both makes sense from a UX perspective (displaying something like "Bot invited the operator to the user") and ensure
Original PR description
Before this PR, the operator was not notified after being forwarded by a bot. This happened because the notification was posted as the operator. Messages are automatically marked as read when a user posts them. As a result, nothing in the UI indicated that the chat was new or required the operator's attention. This PR resolves the issue by posting the message as the chatbot. It both makes sense from a UX perspective (displaying something like "Bot invited the operator to the user") and ensures the chat is properly flagged for the operator. task-4689496 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#205375
Purpose: allow customizing how options are filtered. In documents, we chose to limit the amount of information present in the `label` of `choice`s, but we should still be able to display all our fetched options, even those that do not match what is in the `label`, and is fixed in the related PR. Task-4656596 Forward-Port-Of: odoo/odoo#205414
Original PR description
Purpose: allow customizing how options are filtered. In documents, we chose to limit the amount of information present in the `label` of `choice`s, but we should still be able to display all our fetched options, even those that do not match what is in the `label`, and is fixed in the related PR. Task-4656596 Forward-Port-Of: odoo/odoo#205414
This commit fixes a miss-alignment between the first select and the following many2one field in a reference field. When choosing a longer value in the first select, it overlaps with the many2one field. Steps to reproduce: - Open Marketing Card app - Click to open a record - Choose a longer value in the first select in the Recipients field => overlap between the select's value and the following many2one field task-4387904 Description of the issue/feature this PR addresses: Current
Original PR description
This commit fixes a miss-alignment between the first select and the following many2one field in a reference field. When choosing a longer value in the first select, it overlaps with the many2one field. Steps to reproduce: - Open Marketing Card app - Click to open a record - Choose a longer value in the first select in the Recipients field => overlap between the select's value and the following many2one field task-4387904 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#205514
Imperial UoM can sometime create a discrepancy in between the demand and the actual quantity move, this is mostly expected. However, when the user force set the quantity manually, a ValidationError could be raised because Odoo tried to create a new stock.move.line with the difference. This test ensure that a move line with a product uom quantity of 0 does not impact the Quants reserved quantity. https://github.com/user-attachments/assets/661c23e2-2de1-4328-aad8-b4e6d80e0500 # HOW TO R
Original PR description
Imperial UoM can sometime create a discrepancy in between the demand and the actual quantity move, this is mostly expected. However, when the user force set the quantity manually, a ValidationError…
Imperial UoM can sometime create a discrepancy in between the demand and the actual quantity move, this is mostly expected. However, when the user force set the quantity manually, a ValidationError could be raised because Odoo tried to create a new stock.move.line with the difference. This test ensure that a move line with a product uom quantity of 0 does not impact the Quants reserved quantity. https://github.com/user-attachments/assets/661c23e2-2de1-4328-aad8-b4e6d80e0500 # HOW TO REPRODUCE - Create Product P, with oz uom - Set available quantity to 10 oz - Create delivery transfer for 150g of P > Confirm > Assign - -> Reserved quantity is 149.97 g (expected) which is 5.29 oz - Set Quantity to 150 g - => ValidationError: "Quantity or Reserved Quantity should be set." - Unreserve > Set Quantity to 150g == No problem ... OPW-4659565 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205389 Forward-Port-Of: odoo/odoo#203765
Previously, the round-off amount was not being included in the E-Way Bill request when sending invoices from Odoo. This caused inconsistencies between the generated invoice and the data sent to the E-Way Bill portal. This commit ensures that the round-off amount is properly accounted for in the request, maintaining consistency between the invoice and the E-Way Bill data. opw-4708955 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port
Original PR description
Previously, the round-off amount was not being included in the E-Way Bill request when sending invoices from Odoo. This caused inconsistencies between the generated invoice and the data sent to the E-Way Bill portal. This commit ensures that the round-off amount is properly accounted for in the request, maintaining consistency between the invoice and the E-Way Bill data. opw-4708955 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205522
In https://github.com/odoo/odoo/pull/188792 we mistakenly removed the check that ensured the spreadsheet_data attachment was a valid JSON file. Task-4657990 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#202471
Original PR description
In https://github.com/odoo/odoo/pull/188792 we mistakenly removed the check that ensured the spreadsheet_data attachment was a valid JSON file. Task-4657990 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#202471
Before this commit, and since the addition of the SFU fallback feature, it was possible that a peer was removed while being created or connected, this could lead to a race condition where we no longer need the peer but some negotiations are still being made. This commit fixes this issue by stopping the negotiation if the peer no longer exist when the promises are resolved. Another race condition could lead to receiving a track from the failed peer-to-peer connection (as tracks are gen
Original PR description
Before this commit, and since the addition of the SFU fallback feature, it was possible that a peer was removed while being created or connected, this could lead to a race condition where we no longer need the peer but some negotiations are still being made. This commit fixes this issue by stopping the negotiation if the peer no longer exist when the promises are resolved. Another race condition could lead to receiving a track from the failed peer-to-peer connection (as tracks are generated when transceiver are created, before we know if the connection is stable), while we already have a track from the SFU. This commit fixes this issue by: 1) Awaiting that the p2p connection is ready before emitting the tracks, which ensures that the API only provides valid tracks (when usable). 2) Adding a concept of sequence to prevent race conditions between connections and tracks. Forward-Port-Of: odoo/odoo#205198
Description of the issue/feature this PR addresses: **Description:** > - When we open the 'Customers' menu on the website, the 'tags' are displayed in a single line **Steps:** > - Install the "website_customer" module. > - Create a "Website Tag" from the Contacts app-> Configurations. > - Add the tag to any partner's "Website Tags" field (inside the "Sales & Purchase" page). > - Go to the website and open the "Customers" menu(from url). Current behavior before PR: Before F
Original PR description
Description of the issue/feature this PR addresses: **Description:** > - When we open the 'Customers' menu on the website, the 'tags' are displayed in a single line **Steps:** > - Install the…
Description of the issue/feature this PR addresses:
**Description:**
> - When we open the 'Customers' menu on the website, the 'tags' are displayed in a single line
**Steps:**
> - Install the "website_customer" module.
> - Create a "Website Tag" from the Contacts app-> Configurations.
> - Add the tag to any partner's "Website Tags" field (inside the "Sales & Purchase" page).
> - Go to the website and open the "Customers" menu(from url).
Current behavior before PR:
Before Fix:

After Fix:

Desired behavior after PR is merged:
- All Tags are appropriately shown after my fix
- The issue comes in version 17.0, 18.0, saas~18.1, and saas~18.2
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#204983
Forward-Port-Of: odoo/odoo#203772Steps to reproduce: ------------------------ - Install pos_restaurant. - Open a restaurant session without any table on the floor. - Create an order from floating order & pay it. - Go to orders apply paid filter and try to refund the order. Issue: -------- - We will have a tb on clicking on refund. Cause: ---------- - We were trying to access the orders of the selected table (order's table or the first table of the restaurant). Fix: ----- - We will check if table exists or n
Original PR description
Steps to reproduce: ------------------------ - Install pos_restaurant. - Open a restaurant session without any table on the floor. - Create an order from floating order & pay it. - Go to orders apply paid filter and try to refund the order. Issue: -------- - We will have a tb on clicking on refund. Cause: ---------- - We were trying to access the orders of the selected table (order's table or the first table of the restaurant). Fix: ----- - We will check if table exists or not if not than it will create a floating refund order without any tb. Task - 4658258 Forward-Port-Of: odoo/odoo#202907
Description of the issue/feature this PR addresses: Added my new email on the CLA 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#205479
Original PR description
Description of the issue/feature this PR addresses: Added my new email on the CLA 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#205479
When posting the closing entry of an Italian tax return, with the l10n_it_xml_export module installed, a traceback is raised. Steps to reproduce: 1. Install l10n_it_xml_export. 2. Using an IT company, create a closing entry for the tax return. 3. Post the closing entry, a wizard opens. 4. Validate the values. 5. A traceback is raised. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4715039) opw-4715039 Forward-Port-Of: odoo/enterprise#83284
Original PR description
When posting the closing entry of an Italian tax return, with the l10n_it_xml_export module installed, a traceback is raised. Steps to reproduce: 1. Install l10n_it_xml_export. 2. Using an IT company, create a closing entry for the tax return. 3. Post the closing entry, a wizard opens. 4. Validate the values. 5. A traceback is raised. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4715039) opw-4715039 Forward-Port-Of: odoo/enterprise#83284
Description of the issue this commits addresses: The Customer Statement button is shown too often and leads to empty customer statements in some scenarios. The banner warning the user that some entries are draft is also shown too often and should only appear if the selected partner(s) have draft entries. --- Desired behavior after this commit is merged: The button only shows when the customer statement it will lead to has values to show. This means both making sure the partner has
Original PR description
Description of the issue this commits addresses: The Customer Statement button is shown too often and leads to empty customer statements in some scenarios. The banner warning the user that some entries are draft is also shown too often and should only appear if the selected partner(s) have draft entries. --- Desired behavior after this commit is merged: The button only shows when the customer statement it will lead to has values to show. This means both making sure the partner has moves to show on the customer statement but also that the customer statement actually shows them. Same for the draft entries warning banner. It will only be shown when the selected parter(s) has(have) draft entries. --- task-4680249 Forward-Port-Of: odoo/enterprise#82531
Bug === 1. Create a folder, and change 'access_internal = view' (so Demo can view it, but not edit it) 2. Login as Demo 3. Create a shortcut to that folder 4. Click on the shortcut in the sidebar 5. You can upload in the shortcut even if you have no access on the target Now, the "Upload", "Request", etc buttons will be disabled if the user has no edit access on the target. Task-4626766 Forward-Port-Of: odoo/enterprise#80782
Original PR description
Bug === 1. Create a folder, and change 'access_internal = view' (so Demo can view it, but not edit it) 2. Login as Demo 3. Create a shortcut to that folder 4. Click on the shortcut in the sidebar 5. You can upload in the shortcut even if you have no access on the target Now, the "Upload", "Request", etc buttons will be disabled if the user has no edit access on the target. Task-4626766 Forward-Port-Of: odoo/enterprise#80782
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have 2 accounts like 702.XXX. One should have the credit tag and the other one the debit one. 8. Go to reports and select Trial Balance. 9. Click on the download drop list and select COA SAT ## Issue: Up to now we have just intentionally marked this accounts as no valid, we can see that
Original PR description
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have…
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have 2 accounts like 702.XXX. One should have the credit tag and the other one the debit one. 8. Go to reports and select Trial Balance. 9. Click on the download drop list and select COA SAT ## Issue: Up to now we have just intentionally marked this accounts as no valid, we can see that inside trial_balance.py for l10n_mx_reports at L201 this was a known limitation. ## Solution: As we can see from the technical anex in the mexican goverment site https://www.gob.mx/sat/documentos/contabilidad-en-medios-electronicos-anexo-tecnico we can see that there are asset, liability and equity accounts which, by their nature, can be presented as debit or credit. ### Example Scenario: Let's say we have two hypothetical accounts, 701.01.01 and 701.01.02: Account 701.01.01 (perhaps an asset account) would be a Deudora (D). Account 701.01.02 (perhaps a liability account) would be Acreedora (A). The nature (D or A) depends on the type of account according to the categorization provided in the document. So, - Accounts related to Assets, Costs, and Expenses should generally be Deudora (D). - Accounts related to Liabilities, Equity, and Income should generally be Acreedora (A). - Some special accounts may vary and can be both Deudora (D) and Acreedora (A). opw-4185713 Forward-Port-Of: odoo/enterprise#83058 Forward-Port-Of: odoo/enterprise#70113
when access planning by user in field service we will see that inactive user are also get fetched even though they dont have planning set this will happend if user have open assigned tasks with no `planned_date_begin` and `date_deadline` here we have made some refactor [ref](https://github.com/odoo/enterprise/pull/53499) and implemented the hook to prepare the domain to fetch the records of `project.task`, instead of overriding `_group_expand_user_ids` steps to reproduce: - navigate t
Original PR description
when access planning by user in field service we will see that inactive user are also get fetched even though they dont have planning set this will happend if user have open assigned tasks with no `planned_date_begin` and `date_deadline` here we have made some refactor [ref](https://github.com/odoo/enterprise/pull/53499) and implemented the hook to prepare the domain to fetch the records of `project.task`, instead of overriding `_group_expand_user_ids` steps to reproduce: - navigate to `Field Service > Planning > By User`. - open unassigned task - assigned it to user(create new or use existing user) - unschedule the task - archieve the user ref the video: https://drive.google.com/file/d/1hME_bPXXNJgO9wgWT_CPP3-gz1RaLhPe/view?usp=sharing Fix: - fetch the active user if not added filter manually - if manual filter then fetch based on filter **OPW: 4588785** Forward-Port-Of: odoo/enterprise#82862
Steps to reproduce: - install helpdesk_timesheet - Go to `Timesheets` - Select ticket-linked timesheets only. - print report. Issue: - Tickets names are not rendered on the report, causing misalignment. Fix: - Updated condition to display table cell based on task, project, or ticket visibility task-4476391 Forward-Port-Of: odoo/enterprise#79546
Original PR description
Steps to reproduce: - install helpdesk_timesheet - Go to `Timesheets` - Select ticket-linked timesheets only. - print report. Issue: - Tickets names are not rendered on the report, causing misalignment. Fix: - Updated condition to display table cell based on task, project, or ticket visibility task-4476391 Forward-Port-Of: odoo/enterprise#79546
Steps to reproduce: 1) Open the Appointment module without loading demo data. 2) Create a resource-based appointment type using the helper (e.g., 'Book a Resource' or 'Table Booking'). 3) Open the calendar and check the 'Share Availabilities' dropdown menu—resource-based appointments appear there. Issue: Resource-based appointments should not be visible in the dropdown menu. Technical: We have set default value of `staff_user_ids` as self user. Inside the `appointment_get_user_appoint
Original PR description
Steps to reproduce: 1) Open the Appointment module without loading demo data. 2) Create a resource-based appointment type using the helper (e.g., 'Book a Resource' or 'Table Booking'). 3) Open the…
Steps to reproduce: 1) Open the Appointment module without loading demo data. 2) Create a resource-based appointment type using the helper (e.g., 'Book a Resource' or 'Table Booking'). 3) Open the calendar and check the 'Share Availabilities' dropdown menu—resource-based appointments appear there. Issue: Resource-based appointments should not be visible in the dropdown menu. Technical: We have set default value of `staff_user_ids` as self user. Inside the `appointment_get_user_appointment_types`'s domain we only specified, `staff_user_ids` but while creating a resource based appointment from the Helper, we directly select, `schedule_based_on` as `resources`, thus will not see `staff_user_ids` in view, there for its compute will never called, and we will get its default value, as the result that appointment will be valid as per `appointment_get_user_appointment_types`'s domain. After this PR: Only User based appointments will be displayed. Task-4680418 Forward-Port-Of: odoo/enterprise#82736
Currently, when a credit card journal gets disconnected, and has some transactions, the reconnect button won't appear. This is caused by the condition for `display_connect_bank_in_dashboard` added in ae3ec22b6ec64f4600b5a11db2ffda5256bb75fd to omit the 'credit' type journal. Changing this condition to account for 'credit' type journals allows the reconnect button to appear on credit journals that have transactions. opw-4654051 Forward-Port-Of: odoo/enterprise#83142
Original PR description
Currently, when a credit card journal gets disconnected, and has some transactions, the reconnect button won't appear. This is caused by the condition for `display_connect_bank_in_dashboard` added in ae3ec22b6ec64f4600b5a11db2ffda5256bb75fd to omit the 'credit' type journal. Changing this condition to account for 'credit' type journals allows the reconnect button to appear on credit journals that have transactions. opw-4654051 Forward-Port-Of: odoo/enterprise#83142
After https://github.com/odoo/enterprise/pull/8209 we stopped tokenize when the amount match. It is an error. Forward-Port-Of: odoo/enterprise#83227
Original PR description
After https://github.com/odoo/enterprise/pull/8209 we stopped tokenize when the amount match. It is an error. Forward-Port-Of: odoo/enterprise#83227
Before this commit, calling `_mail_get_partners` on a `pos.order` record would raise an error due to the missing `introspect_fields` argument in the overridden method. Additionally, overriding this method was unnecessary, as the parent implementation already provides the correct behavior. opw-4713552 Forward-Port-Of: odoo/enterprise#83150
Original PR description
Before this commit, calling `_mail_get_partners` on a `pos.order` record would raise an error due to the missing `introspect_fields` argument in the overridden method. Additionally, overriding this method was unnecessary, as the parent implementation already provides the correct behavior. opw-4713552 Forward-Port-Of: odoo/enterprise#83150
… by making lambda selection Forward-Port-Of: odoo/enterprise#83146
Original PR description
… by making lambda selection Forward-Port-Of: odoo/enterprise#83146
Reproduce: 1. Create a partner with name "TEST" and email "bob@there.com". 2. Try to share a document using "bob" to find the partner. 3. It doesn't show up, you can't select them. Partners should be findable by their email when trying to share documents with them. Task-4656596 Forward-Port-Of: odoo/enterprise#81713
Original PR description
Reproduce: 1. Create a partner with name "TEST" and email "bob@there.com". 2. Try to share a document using "bob" to find the partner. 3. It doesn't show up, you can't select them. Partners should be findable by their email when trying to share documents with them. Task-4656596 Forward-Port-Of: odoo/enterprise#81713
Currently, public users cannot preview shared documents; instead, the documents are always downloaded. ### Steps to reproduce 1. Install `documents_account`. 2. Share a previewable document (e.g., an image or a PDF) with a link that allows public viewing. 3. Open the share link in an incognito window. 4. Click "Preview file." The file is downloaded instead of being previewed. ### Cause In an override of the route handling document content retrieval, the argument that determines
Original PR description
Currently, public users cannot preview shared documents; instead, the documents are always downloaded. ### Steps to reproduce 1. Install `documents_account`. 2. Share a previewable document (e.g., an…
Currently, public users cannot preview shared documents; instead, the documents are always downloaded. ### Steps to reproduce 1. Install `documents_account`. 2. Share a previewable document (e.g., an image or a PDF) with a link that allows public viewing. 3. Open the share link in an incognito window. 4. Click "Preview file." The file is downloaded instead of being previewed. ### Cause In an override of the route handling document content retrieval, the argument that determines whether the document should be displayed or downloaded is lost in a `super()` call. ### Tests While the base `documents` module includes tests for this behavior, they are tagged with `at_install`, meaning they only validate the functionality at the time of the module's initial installation. This does not account for potential overrides in extension modules like `documents_account`. To address this, the test class is now tagged `post_install`. opw-4490958 Forward-Port-Of: odoo/enterprise#81456
**Step to reproduce** 1. createdb with installing l10n_co_reports in 18.0 2. and install web_studio 3. open studio in customer invoice menu and tap on Daily Journal report **Below mentioned traceback is rasing**: for fixing it adding in blacklist report so it won't show in studio as I have checked in this [commit](https://github.com/odoo/enterprise/commit/e7efdb09742c434f1f72ec9c8f619038c470b464) the purpose this report to show the report using accounting report ``` Traceback (mos
Original PR description
**Step to reproduce** 1. createdb with installing l10n_co_reports in 18.0 2. and install web_studio 3. open studio in customer invoice menu and tap on Daily Journal report **Below mentioned traceback…
**Step to reproduce**
1. createdb with installing l10n_co_reports in 18.0
2. and install web_studio
3. open studio in customer invoice menu and tap on Daily Journal report
**Below mentioned traceback is rasing**:
for fixing it adding in blacklist report so it won't show in studio as I have checked in this [commit](https://github.com/odoo/enterprise/commit/e7efdb09742c434f1f72ec9c8f619038c470b464) the purpose this report to show the report using accounting report
```
Traceback (most recent call last):
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 1963, in _transactioning
return service_model.retrying(func, env=self.env)
File "/home/odoo/odoo/odoo/18.0/odoo/service/model.py", line 156, in retrying
result = func()
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 1930, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 2178, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/odoo/odoo/18.0/odoo/addons/base/models/ir_http.py", line 333, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/odoo/enterprise/18.0/web_studio/controllers/report.py", line 499, in load_report_editor
report_qweb = self._get_report_qweb(report)
File "/home/odoo/odoo/enterprise/18.0/web_studio/controllers/report.py", line 636, in _get_report_qweb
render_context = report_safe_cr._get_rendering_context(report_safe_cr, [0], {"studio": True})
File "/home/odoo/odoo/enterprise/18.0/web_studio/models/ir_actions_report.py", line 44, in _get_rendering_context
ctx = super()._get_rendering_context(report, docids, data)
File "/home/odoo/odoo/odoo/18.0/addons/account/models/ir_actions_report.py", line 94, in _get_rendering_context
data = super()._get_rendering_context(report, docids, data)
File "/home/odoo/odoo/odoo/18.0/odoo/addons/base/models/ir_actions_report.py", line 1105, in _get_rendering_context
data.update(report_model._get_report_values(docids, data=data))
File "/home/odoo/odoo/enterprise/18.0/l10n_co_reports/report/libro_diario_report.py", line 17, in _get_report_values
report = self.env['account.report'].browse(options['report_id'])
TypeError: 'NoneType' object is not subscriptable
```
opw-4608924
upg-2733166
Forward-Port-Of: odoo/enterprise#83157