Tuesday, April 15, 2025
24 changes · saas-18.2
Resolved issues and error corrections
Fixed an issue that could cause errors when selling event tickets through the point of sale. The change ensures sale date checks use the event information correctly, helping staff complete event sales without interruption.
Original PR description
Before this commit, the event's `end_sale_datetime` and `start_sale_datetime` fields were being deserialized to check whether the event could be sold. However, these fields were already in `datetime` format. opw-4719436 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The web client now removes a startup event listener automatically after it runs once. This is a small internal fix that helps avoid unnecessary repeated listener activity and keeps session startup handling tidy.
Original PR description
Since the web_client is started only once, we can safely add the `once`[1] parameter to the `WEB_CLIENT_READY` event listener. [1]: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#once --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where spreadsheet cell threads could fail when no related record existed. The change helps avoid errors in affected spreadsheet views and keeps the user experience stable in edge cases.
Original PR description
After https://github.com/odoo/odoo/pull/195203/commits/b9adcae95d406f8960a24fadb586d5e362e8a2f9, we were getting error in _compute_display_name, as self._get_spreadsheet_record() sometimes returns False. This commit fixes such cases. [runbot_error 115365](https://runbot.odoo.com/odoo/error/115365)
Miscellaneous changes
Before this commit, when typing a `@mention` in a discuss or chatter composer, pressing ENTER was selecting the item hovered on cursor rather than the 1st item. This happens because by default the active suggestion is the 1st one in list, and keyboard navigation changes the active item. However mouse-enter was also selecting the active item. When the suggestion opens initially, if the cursor happens to be on the list, it is being considered as a `mouseenter` this it sets the active suggestion
Original PR description
Before this commit, when typing a `@mention` in a discuss or chatter composer, pressing ENTER was selecting the item hovered on cursor rather than the 1st item. This happens because by default the…
Before this commit, when typing a `@mention` in a discuss or chatter composer, pressing ENTER was selecting the item hovered on cursor rather than the 1st item. This happens because by default the active suggestion is the 1st one in list, and keyboard navigation changes the active item. However mouse-enter was also selecting the active item. When the suggestion opens initially, if the cursor happens to be on the list, it is being considered as a `mouseenter` this it sets the active suggestion. This is a problem because this is very prone to mistakes. The feature to set the active item for following keyboard navigation is very niche and not necessarily much intuitive than just typing more specific search and rely solely on keyboard navigation or mouse-click. One solution could be to only take mouse hover into account if it moves after the suggestion list is rendered, but this is still prone to mistakes like people typing on a laptop keyboard while accidentally touching the trackpad. This commit fixes the issue by making mouse-hover on suggestion list only trigger the visual style but it doesn't change the internal state of the active suggestion. Task-4724275 Cursor in middle of suggestion list, quickly `@` + `ENTER` Before (selects suggestion in middle of list, at cursor position)  After (selects 1st suggestion in list, independently of cursor position in list)  Forward-Port-Of: odoo/odoo#205914
Before this commit, when posting a message in chat window, the new message being posted had its size flicker momentarily. This happens because when posting a new message, the message list contains a temporary message with the content momentarily and soon replaced by the genuine message from server data. The genuine message shows quick actions like "Add a reaction", which the temporary message has not. Since these quick actions take some horizontal place, the temporary message was bigger on
Original PR description
Before this commit, when posting a message in chat window, the new message being posted had its size flicker momentarily. This happens because when posting a new message, the message list contains a…
Before this commit, when posting a message in chat window, the new message being posted had its size flicker momentarily. This happens because when posting a new message, the message list contains a temporary message with the content momentarily and soon replaced by the genuine message from server data. The genuine message shows quick actions like "Add a reaction", which the temporary message has not. Since these quick actions take some horizontal place, the temporary message was bigger on width than an actual message, which results to this flickering when the message takes more than 1 line. This commit fixes the issue by allocating some space when a message has less (or no) available quick actions, so that their size matches with genuine message that have quick actions. Before / After   Forward-Port-Of: odoo/odoo#204958
Before this commit orders were synchronized between devices even when no table were used. This commit add a check to ensure that orders are only synchronized when a table is set. The behavior will be test after the backport of 205293 Forward-Port-Of: odoo/odoo#205571
Original PR description
Before this commit orders were synchronized between devices even when no table were used. This commit add a check to ensure that orders are only synchronized when a table is set. The behavior will be test after the backport of 205293 Forward-Port-Of: odoo/odoo#205571
Before this commit: When scrolling, the Kanban record drop-down menu overlap Kanban header. After this commit: The Kanban record drop-down menu should not overlap with the Kanban header while scrolling. Task-4686607 Forward-Port-Of: odoo/odoo#205897 Forward-Port-Of: odoo/odoo#204666
Original PR description
Before this commit: When scrolling, the Kanban record drop-down menu overlap Kanban header. After this commit: The Kanban record drop-down menu should not overlap with the Kanban header while scrolling. Task-4686607 Forward-Port-Of: odoo/odoo#205897 Forward-Port-Of: odoo/odoo#204666
Currently, a 404 error is occurring when the user clicks on the Check the sample button. <b>Steps to reproduce this issue:</b> 1) Install sales without demo data 2) Click on the `Check a sample. Its clean!` button <b>Issue:- </b> A 404 error occurs with a blank page <b>Cause:-</b> This issue is occurring because the link to open the sample quotation was changed in the Odoo documentation. <b>Solution:-</b> Give a valid link to open the sample quotation pdf opw-4708039
Original PR description
Currently, a 404 error is occurring when the user clicks on the Check the sample button. <b>Steps to reproduce this issue:</b> 1) Install sales without demo data 2) Click on the `Check a sample. Its clean!` button <b>Issue:- </b> A 404 error occurs with a blank page <b>Cause:-</b> This issue is occurring because the link to open the sample quotation was changed in the Odoo documentation. <b>Solution:-</b> Give a valid link to open the sample quotation pdf opw-4708039 Forward-Port-Of: odoo/odoo#205520
Steps to reproduce : 1) Install Ecommerce 2) Open a product that has an extra price (take the customizable desk) 3) Change the pricelist to Euro (€) <b>Issue</b>:- The extra price keeps being displayed in $ even if the price is in €. <b>Cause</b>:- We displayed the monetary symbol of the extra price based on the pricelist or company currency. https://github.com/odoo/odoo/blob/99d00987aa0fba0e52a8c416e1a6a3b514b9e99a/addons/website_sale/views/variant_templates.xml#L154-L156
Original PR description
Steps to reproduce : 1) Install Ecommerce 2) Open a product that has an extra price (take the customizable desk) 3) Change the pricelist to Euro (€) <b>Issue</b>:- The extra price keeps being…
Steps to reproduce : 1) Install Ecommerce 2) Open a product that has an extra price (take the customizable desk) 3) Change the pricelist to Euro (€) <b>Issue</b>:- The extra price keeps being displayed in $ even if the price is in €. <b>Cause</b>:- We displayed the monetary symbol of the extra price based on the pricelist or company currency. https://github.com/odoo/odoo/blob/99d00987aa0fba0e52a8c416e1a6a3b514b9e99a/addons/website_sale/views/variant_templates.xml#L154-L156 We don't get any pricelist value because in the below-mentioned commit, we removed the pricelist from the values that are used in the template. So it keeps displaying the company currency. https://github.com/odoo/odoo/pull/159746/files#diff-83686977d1607bdb0a3e755e9d22ec4496c1dc4caebfff4bee3902ddd1b3e866L641 <b>Solution</b>:- Since the value of the pricelist is provided from the website previously, So take the value of the pricelist from the website directly in the template. opw-4712968 Forward-Port-Of: odoo/odoo#205483
Improve coverage of address sync fields. Purpose is to make cases clearer and cover a bit more current code branches * first contact: updates void parent, not parent with address; * child sync / siblings sync: limited to one level; * invoice / delivery / other adresses are never synchronized; * no upstream update of addresses; Task-4708358 Part of Task-4377720 Forward-Port-Of: odoo/odoo#205903
Original PR description
Improve coverage of address sync fields. Purpose is to make cases clearer and cover a bit more current code branches * first contact: updates void parent, not parent with address; * child sync / siblings sync: limited to one level; * invoice / delivery / other adresses are never synchronized; * no upstream update of addresses; Task-4708358 Part of Task-4377720 Forward-Port-Of: odoo/odoo#205903
But also: - not 400/500 should keep the chain index (each sequential number should have a corresponding invoice) - confirmation datetime should stay the same when the invoice was rejected - Before, the response could get complicated where the json was stringified in the json, while here it is all in the json itself. And so the 400 should be treated the same as other errors. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is
Original PR description
But also: - not 400/500 should keep the chain index (each sequential number should have a corresponding invoice) - confirmation datetime should stay the same when the invoice was rejected - Before, the response could get complicated where the json was stringified in the json, while here it is all in the json itself. And so the 400 should be treated the same as other errors. 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#205058
Current behavior before PR: - When pressing Enter, the styles applied to the text were not carried over to the newly created line. - When a nested inline element was removed during the editor's cleaning process, its parent inline element (if also empty) was not removed. This caused the that inline element to become inaccessible. - When pressing `shift+enter` within an inline element with a subsequent sibling `<br>`, a new line break `<br>` is inserted within the inline element. Howe
Original PR description
Current behavior before PR: - When pressing Enter, the styles applied to the text were not carried over to the newly created line. - When a nested inline element was removed during the editor's…
Current behavior before PR: - When pressing Enter, the styles applied to the text were not carried over to the newly created line. - When a nested inline element was removed during the editor's cleaning process, its parent inline element (if also empty) was not removed. This caused the that inline element to become inaccessible. - When pressing `shift+enter` within an inline element with a subsequent sibling `<br>`, a new line break `<br>` is inserted within the inline element. However, the cursor appears outside the inline element. Desired behavior after PR is merged: - Now, when Enter is pressed, if styles are applied to the text, those styles will be carried over to the newly created line. - Now, during the editor cleaning process, if an empty inline element is removed, all of its empty ancestor inline elements are also removed. - Now, when pressing `shift+enter` inside the inline element with a next sibling `<br>`, a new line break `<br>` is inserted inside the inline element. Additionally, a feff character is inserted after the `<br>` tag to ensure that the cursor remains inside the inline element. task-2822187 Forward-Port-Of: odoo/odoo#179255
There is an issue in the line template, where the 'vals' of the line are reassigned to the 'price_vals' when building the 'cac:Price'. This means that any extension done to add values after the price no longer have access to the line vals but only the price ones. This is unwanted, and the template is adapted to avoid reassigning 'vals'. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205827
Original PR description
There is an issue in the line template, where the 'vals' of the line are reassigned to the 'price_vals' when building the 'cac:Price'. This means that any extension done to add values after the price no longer have access to the line vals but only the price ones. This is unwanted, and the template is adapted to avoid reassigning 'vals'. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205827
### Steps to reproduce: - Install "l10n_hu" and switch to Hungarian company - In Settings set NAV credentials to "demo" - Make sure accounts are set on the company & customer - Create an invoice, confirm, Sent & Print - Create a Credit Note for this invoice, Send & Print - On the Credit Note PDF the account of the customer is displayed under the "Supplier" ### Cause: The account always shows under the supplier `if 'out' in o.move_type` so also for credit notes ('out_refund'). ### So
Original PR description
### Steps to reproduce:
- Install "l10n_hu" and switch to Hungarian company
- In Settings set NAV credentials to "demo"
- Make sure accounts are set on the company & customer
- Create an invoice, confirm, Sent & Print
- Create a Credit Note for this invoice, Send & Print
- On the Credit Note PDF the account of the customer is displayed under the "Supplier"
### Cause:
The account always shows under the supplier `if 'out' in o.move_type` so also for credit notes ('out_refund').
### Solution:
Change the condition of the display and add the bank account in a xpath.
opw-4710449
Forward-Port-Of: odoo/odoo#205724Reproduce: Give user Inventory User rights > MO > Miscellaneous > Project Solution: Removed the group for Inventory Admin from the field project_id in mrp_production view Description of the issue/feature this PR addresses: The project field in an MO is only visible if you are administrator of Inventory. If you have admin rights to MRP and/or projects you can't see the field. Current behavior before PR: In MO under Miscellaneous page we can not see project field without Inventory ad
Original PR description
Reproduce: Give user Inventory User rights > MO > Miscellaneous > Project Solution: Removed the group for Inventory Admin from the field project_id in mrp_production view Description of the issue/feature this PR addresses: The project field in an MO is only visible if you are administrator of Inventory. If you have admin rights to MRP and/or projects you can't see the field. Current behavior before PR: In MO under Miscellaneous page we can not see project field without Inventory admin group Desired behavior after PR is merged: In MO under Miscellaneous page user can see project field with group project admin only. opw-4708084 Forward-Port-Of: odoo/odoo#205516
**Current behavior:** Using auto valuation and anglo saxon accounting, when a project has some profitability report items for auto valued product, the COGS invoice lines will appear under the revenue section rather than the cost section of the project's profitability report. **Expected behavior:** COGS lines are shown as costs. **Steps to reproduce:** 1. Create a service product that generates a project on sale, on the project template set a specific analytic account 2. Create anothe
Original PR description
**Current behavior:** Using auto valuation and anglo saxon accounting, when a project has some profitability report items for auto valued product, the COGS invoice lines will appear under the revenue…
**Current behavior:** Using auto valuation and anglo saxon accounting, when a project has some profitability report items for auto valued product, the COGS invoice lines will appear under the revenue section rather than the cost section of the project's profitability report. **Expected behavior:** COGS lines are shown as costs. **Steps to reproduce:** 1. Create a service product that generates a project on sale, on the project template set a specific analytic account 2. Create another product with real time valuation and assign the COGS account on the product category's expense account 3. Sell some of the service product and the auto val product in the same order, deliver it -> generate invoice & post it 4. In the project's settings, open the profitability report observe that the invoice line for the cost of goods sold account entry is displayed as a negative revenue, rather than a cost **Cause of the issue:** In `sale_project` there is no logic to separate the COGS AMLs from the rest of an invoice's line ids. **Fix:** Transform the loop in `_get_revenues_items_from_invoices` https://github.com/odoo/odoo/blob/bb6a4fbb92b1a1a1e13e32b27c4c9f2813570fda/addons/sale_project/models/project.py#L656 into two loops such that the existing one iterates twice. First iteration collects the `revenues` items data (exactly as it currently does) Second iteration collects the `costs` items (cogs lines) And the method will now return a dict of data for both `revenues` report items and `costs` report items (and should be renamed/refactored in master) opw-4652472 Forward-Port-Of: odoo/odoo#205777 Forward-Port-Of: odoo/odoo#203936
Steps to reproduce: 1) Install sales, l10n_din5008_sale and enable pricelist from settings 2) Change the document layout to `DIN 5008` from settings 3) Open the pricelist from sales and print the pricelist report with a product Issue:- Pricelist report gets printed with "Invoice" title Cause:- This is because in the `DIN 5008` report, we print the invoice title by default if there are no `docs` or `object` values. https://github.com/odoo/odoo/blob/c80db0e6ff96ed4d8a00f018176
Original PR description
Steps to reproduce: 1) Install sales, l10n_din5008_sale and enable pricelist from settings 2) Change the document layout to `DIN 5008` from settings 3) Open the pricelist from sales and print the pricelist report with a product Issue:- Pricelist report gets printed with "Invoice" title Cause:- This is because in the `DIN 5008` report, we print the invoice title by default if there are no `docs` or `object` values. https://github.com/odoo/odoo/blob/c80db0e6ff96ed4d8a00f01817694a4edcca6c64/addons/l10n_din5008/report/din5008_report.xml#L93 Solution: Provide the docs value to the pricelist report values. opw-4680444 Forward-Port-Of: odoo/odoo#205147
**Steps to reproduce:** - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Go to "Settings / Technical / Database Structure / Decimal Accuracy" - Set 4 digits for "Product Price" - Create a product with a lower price than 0.01 (e.g. 0.0045) - Create an invoice: * Customer: [a Peruvian customer] (e.g. Comercial Constructora los Patitos S.A.) * Product: [the created product] * Quantity: 100 - Confirm the invoice - Process the invoice by the E-i
Original PR description
**Steps to reproduce:** - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Go to "Settings / Technical / Database Structure / Decimal Accuracy" - Set 4 digits for…
**Steps to reproduce:** - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Go to "Settings / Technical / Database Structure / Decimal Accuracy" - Set 4 digits for "Product Price" - Create a product with a lower price than 0.01 (e.g. 0.0045) - Create an invoice: * Customer: [a Peruvian customer] (e.g. Comercial Constructora los Patitos S.A.) * Product: [the created product] * Quantity: 100 - Confirm the invoice - Process the invoice by the E-invoicing service **Issue:** An error is triggered because "PriceTypeCode" is set to "02", which is the code used to declare that it is free. But in this case, it is not free. **Cause:** "PriceTypeCode" is computed by using "is_zero" method of the currency on the unit price. As the decimal accuracy of the currency is set to 2 and the unit price is 0.0045, "is_zero" is returning True. **Solution:** Compute "PriceTypeCode" from the line subtotal instead of the unit price. This is not perfect as it can also be lower than 0.01, but it's less probable. opw-4608671 Forward-Port-Of: odoo/enterprise#83401 Forward-Port-Of: odoo/enterprise#82019
Commits fc49984a and 2644a63b introduced changes to: - Prevent rejections for invoices older than 72 hours (error 301). - Use the correct partner/branch timezone when generating the CFDI. However, these changes also cause each re-stamping attempt to use the current timestamp, resulting in duplicates on the SAT if the first attempt times out or is lost (e.g., due to a disconnection). The PAC sees each request as a distinct CFDI if there is even a slight difference in the timestamp. This f
Original PR description
Commits fc49984a and 2644a63b introduced changes to: - Prevent rejections for invoices older than 72 hours (error 301). - Use the correct partner/branch timezone when generating the CFDI. However,…
Commits fc49984a and 2644a63b introduced changes to:
- Prevent rejections for invoices older than 72 hours (error 301).
- Use the correct partner/branch timezone when generating the CFDI.
However, these changes also cause each re-stamping attempt to use the current timestamp, resulting in duplicates on the SAT if the first attempt times out or is lost (e.g., due to a disconnection). The PAC sees each request as a distinct CFDI if there is even a slight difference in the timestamp.
This fix ensures that the same emission timestamp (stored in `l10n_mx_edi_post_time`) is reused for subsequent stamping attempts, producing an identical XML and preventing duplicates on the SAT.
Steps to reproduce the original issue:
1. Create and confirm an invoice.
2. Stamp the invoice.
3. Manually set the EDI status to “to_send”: ```python record.edi_document_ids.write({"state": "to_send"}) ```
4. Stamp again without persisting the emission timestamp => a new CFDI is generated.
Expected result after the fix:
- The system reuses the same emission timestamp (l10n_mx_edi_post_time) for each attempt, preventing duplicate CFDIs on the SAT.
According to the [SAT
documentation](http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/Anexo_20_Guia_de_llenado_CFDI.pdf)
the attribute `Fecha` must be the expedition date.
Forward-Port-Of: odoo/enterprise#83319
Forward-Port-Of: odoo/enterprise#81882When a company partner is selected for an order, the commit https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 automatically sets the order to invoice. This causes the order to miss required localization fields, leading to an error during payment. opw-4670131 Forward-Port-Of: odoo/enterprise#82211 Forward-Port-Of: odoo/enterprise#82061
Original PR description
When a company partner is selected for an order, the commit https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 automatically sets the order to invoice. This causes the order to miss required localization fields, leading to an error during payment. opw-4670131 Forward-Port-Of: odoo/enterprise#82211 Forward-Port-Of: odoo/enterprise#82061
Currently, when settling customer's account using the mexican localization, the session crashes after selecting the payment method. Steps to reproduce: ------------------- * Install the mexican localization and switch to one of the company * Create a new contact of type "Company" * Create an invoice for that contact so that he has a due amount set * Open session * Select the customer and settle due amount * Select any payment method > Observation: Blank screen Why the fix: -------
Original PR description
Currently, when settling customer's account using the mexican localization, the session crashes after selecting the payment method. Steps to reproduce: ------------------- * Install the mexican…
Currently, when settling customer's account using the mexican localization, the session crashes after selecting the payment method. Steps to reproduce: ------------------- * Install the mexican localization and switch to one of the company * Create a new contact of type "Company" * Create an invoice for that contact so that he has a due amount set * Open session * Select the customer and settle due amount * Select any payment method > Observation: Blank screen Why the fix: ------------ Same issue addressed here but at a different place: https://github.com/odoo/enterprise/commit/e1e1abdd23cead2bcd7b8170da28161c3f5b2e15 Cause by the fact that when a customer of type "company" is selected we automatically invoice orders. https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 Instead of going in the same direction of the first fix, we never set `to_invoice` to true when we are settling customer accounts. It's pointless to set invoice to true when settling accounts as it's impossible to create an invoice without any product. This should also benefit localizations that invoice by default every order by bypassing the invoice in that case. opw-4685842 Forward-Port-Of: odoo/enterprise#83067 Forward-Port-Of: odoo/enterprise#82785
**Steps to reproduce** On runbot: 1. Activate the website form for the "IT Support (Auto Assignment by Tags)" team. 2. Add the "Tags" field to the form, allowing visitors to select tags for a ticket. 3. Submit a ticket with the "Repair" tag selected. Actual: the ticket is not auto-assigned. Expected: Mitchell Admin is auto-assigned, the same way as if the ticket was created from the backend. **Cause** When using the website form, a `SET` command is used to set the tags, while we ar
Original PR description
**Steps to reproduce** On runbot: 1. Activate the website form for the "IT Support (Auto Assignment by Tags)" team. 2. Add the "Tags" field to the form, allowing visitors to select tags for a ticket. 3. Submit a ticket with the "Repair" tag selected. Actual: the ticket is not auto-assigned. Expected: Mitchell Admin is auto-assigned, the same way as if the ticket was created from the backend. **Cause** When using the website form, a `SET` command is used to set the tags, while we are currently only expecting a `LINK` command. opw-4646654 Forward-Port-Of: odoo/enterprise#82345
At the moment, if a cancellation has been requested, the 'Update SAT' button isn't always visible on the invoice. Analysis: The condition for the 'Update SAT' button being visible is that at least one of the EDI documents falls under one of the domains in `_get_update_sat_status_domains`. In particular, the 'Update SAT' status is visible if there is an EDI document with the 'invoice_sent' status and whose SAT status is not 'cancelled' or 'skip'. If the user requests the cancellation of th
Original PR description
At the moment, if a cancellation has been requested, the 'Update SAT' button isn't always visible on the invoice. Analysis: The condition for the 'Update SAT' button being visible is that at least…
At the moment, if a cancellation has been requested, the 'Update SAT' button isn't always visible on the invoice. Analysis: The condition for the 'Update SAT' button being visible is that at least one of the EDI documents falls under one of the domains in `_get_update_sat_status_domains`. In particular, the 'Update SAT' status is visible if there is an EDI document with the 'invoice_sent' status and whose SAT status is not 'cancelled' or 'skip'. If the user requests the cancellation of the CFDI before the SAT status is fetched for the first EDI document (which represents the sending of the invoice), its SAT status will be set to 'skip'. As a result, the 'Update SAT' button will no longer be visible, meaning that the user can not update the invoice's state from fetching the SAT status.  Fix: The Update SAT button should also be visible if there is a document in 'invoice_cancel_requested' whose SAT state is valid. opw-4375788 Forward-Port-Of: odoo/enterprise#83289
If you have multiple taxes on a sale order or invoice, then the total tax amount is displayed with the name of the first tax group. Rename it to show a generic "Taxes" group. This was done before for sale orders but was lost in d5da2b62263f85fbce0f2548085c066cbbf10371. opw-4673667 Forward-Port-Of: odoo/enterprise#83078
Original PR description
If you have multiple taxes on a sale order or invoice, then the total tax amount is displayed with the name of the first tax group. Rename it to show a generic "Taxes" group. This was done before for sale orders but was lost in d5da2b62263f85fbce0f2548085c066cbbf10371. opw-4673667 Forward-Port-Of: odoo/enterprise#83078