Thursday, March 19, 2026
39 changes · 19.0
Enhancements to existing features
Website editors can now enter SEO keywords longer than the previous 30-character limit. This gives teams more flexibility when optimizing pages for search, especially for longer phrases or campaign-specific terms.
Original PR description
Before this commit: The SEO dialog enforced a maxlength of 30 characters on the Keywords input and applied validation checks, preventing users from entering longer keyword values. After this commit: The maxlength attribute is removed so user can now allowing keywords of any length to be entered in the SEO dialog. task-5423796
Test runs can now use an environment setting to choose a specific Chrome or Chromium browser version. This helps teams investigate browser-specific test failures more quickly without changing application behavior for users.
Original PR description
This is mainly used to more easily provide an arbitrary version of Chrome/Chromium to debug browser's version specific breaking changes. Forward-Port-Of: odoo/odoo#253630
Resolved issues and error corrections
The link options gear icon now appears only in the Website editor, where advanced link settings are relevant. This reduces confusion in other editors such as Mass Mailing and Project descriptions by hiding controls that do not apply there.
Original PR description
before this commit : The toolbar link popover displayed the gear icon in all editors, including Mass Mailing and Project Description, where advanced link options are not relevant. after this commit: The gear icon is shown only in the Website, ensuring that advanced link options are available exclusively in the website context.
The Polish e-invoicing integration now handles KSeF rate limit responses correctly instead of showing an unexpected system error. This helps scheduled vendor bill downloads fail gracefully when the external service is temporarily limiting requests.
Original PR description
Before this commit: Steps 1. Create a Polish company 2. Run scheduled action "Polish eInvoice: Download vendor bills from KSeF" 3. If the customer gets 429 Too Many Requests => A traceback error is raised as message isn't an attribute in KSeFRateLimitError object `AttributeError: 'KSeFRateLimitError' object has no attribute 'message'` This happens because `KSeFRateLimitError` does not define a `message` attribute. The message is only passed to the base Exception and stored in `args`. After this commit: Use `str(e)` to properly retrieve the exception message and avoid the AttributeError. opw-6009380 Forward-Port-Of: odoo/odoo#253549
Website editors can now change the copyright area background color even when the main footer has no background color set. This prevents a styling error and makes footer customization more reliable.
Original PR description
Before this commit, a css error would happen when the user tried to change the copyright background color if the footer had no background color.
This was due to $-footer-color not having a fallback value when neither o-color('footer-custom') nor o-color('footer') was defined.
This commit adds a fallback value to fix the issue.
task-5452457
Forward-Port-Of: odoo/odoo#248283This update corrects how file type information is set when creating image files in the web interface. It helps ensure images and similar files continue to work consistently across Chrome versions, including upcoming browser behavior changes.
Original PR description
The `type` option passed to the `File` constructor should be a string representing the MIME type of the content that will be put into the file. Chrome 146 actually follows the Fetch Standard and preserve the data URL MIME type parameter. This commit fixes the malformed MIME types passed to the `File` constructor to ensure proper compatibility with pre/post Chrome version 146 (and actually follow the spec). References: - https://chromestatus.com/feature/4874471565557760 - https://developer.mozilla.org/en-US/docs/Web/API/File/File#type runbot-241901 Forward-Port-Of: odoo/odoo#254154 Forward-Port-Of: odoo/odoo#253631
This fixes an internal automated test for Polish e-invoicing by using a consistent reference time when checking retry scheduling. It helps prevent false test failures and keeps validation of the feature stable without changing user-facing behavior.
Original PR description
The test `TestL10nPlEdi.test_l10n_pl_edi_download_bill_retry_after` was failing with a stack like following, because the `now()` time was taken after the cron was executed, making the time diff sometimes shorter than the required 120s.
```
FAIL: TestL10nPlEdi.test_l10n_pl_edi_download_bill_retry_after
Traceback (most recent call last):
File "/data/build/odoo/addons/l10n_pl_edi/tests/test_l10n_pl_edi.py", line 619, in test_l10n_pl_edi_download_bill_retry_after
self.assertGreaterEqual(capt.records[-1].call_at, fields.Datetime.now() + timedelta(seconds=120))
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: datetime.datetime(2026, 2, 21, 4, 20, 7) not greater than or equal to datetime.datetime(2026, 2, 21, 4, 20, 8)
```
runbot-241016
Forward-Port-Of: odoo/odoo#254234Fixes broken links in the warning dialog shown when deleting a website page that is still used elsewhere. Users can now click related record links, such as View, and be taken to the correct place, making cleanup decisions easier.
Original PR description
**Steps to reproduce:** 1. Go to the list view of website pages. 2. Select the page "ContactUs". 3. Click Delete. 4. A warning dialog appears. 5. Unfold one of the lists of records where the page is used. **Issue** Clicking on a record link (for example, "View") does not redirect anywhere. This is due to the use of the model display name in url. caused by https://github.com/odoo/odoo/commit/de302c2d36305c0d7562572a30587641eabfe914 **Fix** Use the model_name instead of the display name in the URL. task-5880458 Forward-Port-Of: odoo/odoo#245932
Creating user accounts from employee records no longer fails when selected employees share the same email address. Instead, Odoo shows a warning so HR users can resolve the duplicate email without encountering a system error.
Original PR description
Creating users for multiple employees sharing the same email address raises a traceback.
Stpes to reproduce the error:
- Install the ``hr`` module
- Create two employees with the same email
- Go to List view of employees > Select both employees > Actions > Create user
Traceback:
```py
ValueError: UniqueViolation('duplicate key value violates unique constraint "res_users_login_key"
```
https://github.com/odoo/odoo/blob/0bfd2a253781e43b0e0d16b3fd9d1df485f4fa6b/addons/hr/models/hr_employee.py#L389
The error occurs because the same email is used as the login for multiple users.
This commit ensures that when multiple employees share the same email address,
a warning notification is displayed instead of raising an error.
sentry-7324335174
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#253258Opening a picking batch now shows only one Validate button, avoiding duplicate actions on the same screen. This reduces confusion for warehouse users and preserves the intended validation flow when batches include pickings with different quality requirements.
Original PR description
Steps to reproduce: - Create two storable products: “P1” and “P2” - Create two pickings, one with P1 and another with P2 - Create a quality check for P1 - From the picking list view: - Select both pickings and create a batch - Open the batch Problem: Two “Validate” buttons are displayed instead of one. The inherited view was overriding the original `invisible` attributes of the two existing `action_done` buttons and also adding an extra `action_done` button. Because the original visibility logic was replaced (instead of extended), the conditions were no longer mutually exclusive, causing multiple Validate buttons to be visible at the same time. Solution: - Remove the extra `action_done` button added in the inherited view - Extend the existing `invisible` conditions using `separator=" or "` so the original logic is preserved and the buttons remain mutually exclusive opw-5508871 Forward-Port-Of: odoo/odoo#252630 Forward-Port-Of: odoo/odoo#249581
Onboarding guidance in Field Service now keeps its place when users are redirected to the portal to sign a worksheet report. This prevents the guided tour from stopping unexpectedly, helping users complete setup without losing context.
Original PR description
**Steps to reproduce:**
1. Go to Field Service app.
2. Check the worksheet template in settings and start the onboarding tour
of Field Service.
**Issue:**
The backend tour is not resuming on the frontend side.
**Fix:**
This commit ensures the tour is enabled and the current tour is added to the frontend session. When the tour resumes, it will fetch the tour enabled and current tour details from the session.
**Technical:**
In the tour service, the tour resumes only if the mode is set to "auto" or toursEnabled is present in the session. To handle this, we added the tour details to the session.
tour_service.js
``` js
if (tourState.getCurrentConfig().mode === "auto" || toursEnabled) {
resumeTour();
}
````
task-4489657
Forward-Port-Of: odoo/odoo#254600
Forward-Port-Of: odoo/odoo#202484Payslips will now only use active employee versions when dates or employees are changed. This prevents outdated archived employee records from being selected, reducing payroll data errors.
Original PR description
In this commit, the versions on payslips are restricted to only unarchived ones. This ensures that when changing dates/employee, the version selected is never archived. Task-6022151 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#253348
This update corrects how image URLs are handled when Odoo renders web content. It helps prevent broken or incorrectly processed image links in pages and reports that rely on the base rendering engine.
Original PR description
Forward-Port-Of: odoo/odoo#254633
Fixed an issue where entering multiple border width values for standard website headers could accidentally apply a full border instead of only the intended bottom border. This keeps header styling predictable while still allowing special header designs that need full border controls.
Original PR description
Previously, the border width input for headers allowed multiple values. This was required for specific header templates (e.g. rounded box) that use a full border. However, most headers only apply a border on the bottom. When the input had multiple values, the scss would break, resulting in full border. This change ensures that, for headers without the .o_full_border class, only the first value of the saved border width is used. As a result, the input behaves like a single-value field (similar to font size inputs) for standard headers, while still supporting multiple values for templates that require a full border. Steps to reproduce the issue: - Go to Edit mode - Click on the Header - In the Border option, enter "1 2" and leave the input to validate => The input display "3" and the header has a full border. task-5500516 Forward-Port-Of: odoo/odoo#254483 Forward-Port-Of: odoo/odoo#244415
Forum link title lookups now stop waiting after a set timeout instead of potentially blocking indefinitely. This helps keep forum pages responsive when an external website is slow or unavailable.
Original PR description
Add a timeout to the requests done by /forum/get_url_title to avoid blocking indefinitely Forward-Port-Of: odoo/odoo#254607
This fix ensures Czech VAT Return reports show VAT 23 and VAT 24 tax grid amounts with the correct positive sign when invoice lines contain credits. It helps businesses avoid misleading negative VAT figures in statutory reporting.
Original PR description
With l10n_cz company: 1. Create some invoices using the VAT 24 or VAT 23 tax grid on an invoice line containing an amount in credit. 2. Go to the VAT Return (CZ) report 3. The amount shown will be negative instead of positive, which goes against what the report should show. Missed by 17a6117ed88c29b5bc4db0c872bcdbc109a7d98b opw-5978183 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
A small typo in the website shop builder styling was corrected so the intended design option is selected properly. This helps ensure the product design panel behaves consistently when configuring online store pages.
Original PR description
task-6047633 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When an Italian Public Administration customer refuses an electronic invoice, Odoo now displays the refusal reason in the invoice header. This helps users understand why the invoice was rejected without having to inspect the underlying XML message.
Original PR description
When a Public Administrator business refuses an invoice, they also give a reason message (EsitoCommittente/Descrizione), which comes through the IAP to Odoo as an XML tag aside the Outcome code (EsitoCommittente/Esito). Before this PR, the message was ignored, now we show it in the invoice's header. ref: https://www.fatturapa.gov.it/export/documenti/messaggi/v1.1/MessaggiTypes_v1.1.xsd <img width="823" height="232" alt="image" src="https://github.com/user-attachments/assets/8f222f6b-1615-4dd2-a5dd-25e0991ea037" /> <img width="942" height="206" alt="image" src="https://github.com/user-attachments/assets/cdf109ff-40d0-4c50-bdc7-51fb4ea15c98" /> Ticket [link](https://www.odoo.com/odoo/project.task/6041276) opw-6041276 Forward-Port-Of: odoo/odoo#254481
This update fixes a potential issue where the Gemini AI feature would sometimes return empty responses to users, leading to a blank screen. The fix automatically retries the request with a slightly increased thinking budget and, after three failed attempts, informs the user of the problem. This ensures a smoother and more reliable user experience with the AI.
Original PR description
It often occurs that gemini responses come back empty without anything to show to the users. Specifically, the response object has content but the "parts" are empty - the place were you either get a function call or a message to the user by the LLM. Prior to this commit, when this occured, we didn't perform any explicit handling. We would always just return what the LLM responded with, which when empty would be nothing. UX wise, it would seem like something broke because the user would basically get no reply. In this commit, we add a retry mechanism in `_request_llm_google` of `llm_api_service.py`, where if we get no response, we increase the thinking budget of the next request to 512 and try again. 512 tokens were chosen completely arbitrarily - anecdotally, the model should use around 300 thinking tokens for its tasks so 512 should be enough. After 3 unsuccessful tries, we send a failure response to the user. Task-5959805
This update removes unnecessary default values from company and partner records in the Odoo Enterprise system. By streamlining data storage, this change optimizes database performance, particularly for businesses managing multiple companies with different localization settings. It resolves a previous issue with incorrect date fallbacks, ensuring stability and efficiency.
Original PR description
On multi-company databases, having the defaults value on res.partner fields can unnecessary bloat the database for other companies with different fiscal package (localization). This commit remove the `l10n_ke_branch_code` field default on `res.partner` - the related field on `res.company` has been converted to a stored-compute + inverse so that partner related to a company automatically get the default value `00` whithout needing to touch other partner records. The `l10n_ke_oscu_last_fetch_purchase_date` default on `res.company` has also been removed, cron already fallback to the same default value when none are provided and will update it anyway after it ran. opw-5220129
This update corrects a test failure within the Odoo Enterprise system. The issue occurred when the 'accountant' module was not present, leading to an incorrect expected account value. This fix ensures the test runs successfully, improving the stability of the batch payment functionality.
Original PR description
Currently test_bank_rec_widget_batch_foreign_currency_journal_without_entries fails when `accountant` module is not installed because the expected account differs opw-5887218 Forward-Port-Of: odoo/enterprise#110917
This update fixes an issue where the 'submit' button was hidden when creating a return type in the account reports module. The previous requirement for a 'type_external_id' is no longer needed due to a recent system update. This ensures users can consistently submit return requests.
Original PR description
When a user creates a return_type, the submit button is not visible as there is no type_external_id. Since now, we have the states_workflow this is not useful anymore. This commit is basically a back port of https://github.com/odoo/enterprise/commit/305b0078e584487036d907d6e18b7911bc7ff1de
This update ensures that shift notifications are automatically sent to employees in their preferred language, regardless of the user's language settings. Previously, emails were defaulted to the current user's language, causing confusion. This change improves communication and ensures employees receive important shift information in a clear and accessible way.
Original PR description
Steps to reproduce: ------------------------- 1. Install Planning and Contacts. 2. Install any language other than English (e.g., Arabic). 3. Change an employee's contact language to that language.…
Steps to reproduce: ------------------------- 1. Install Planning and Contacts. 2. Install any language other than English (e.g., Arabic). 3. Change an employee's contact language to that language. 4. Create a shift for that employee and click "Send". 5. Check the message in Settings > Technical > Discuss > Messages. Issue: --------- The email is sent in the language of the current user rather than the language of the employee receiving the shift. Cause: --------- The mail template rendering logic ([_render_lang](https://github.com/odoo/odoo/blob/0dbfa8b99d5c28a7d84e781a7f23b226fd964e95/addons/mail/models/mail_render_mixin.py#L549-L566)) fails to determine a valid language on the planning slot record because it is not directly linked to a `partner_id`. As a result, it falls back to the current user's language. Solution: ------------ Explicitly pass the employee partner's language in the mail context so that the email is sent in the correct language. opw-5928676 Forward-Port-Of: odoo/enterprise#110778 Forward-Port-Of: odoo/enterprise#109619
This update adjusts the demo certificate used in testing to ensure it remains valid for a longer period. The original certificate expired in 2027, but this change extends its lifespan to 2036, resolving a potential issue with test results. This ensures accurate demonstration of the Peru E-Invoicing functionality.
Original PR description
In runbot's faketime tests, the test 1 year in the future goes past the end date of the demo PE certificate which had a lifetime of 2017-02-25 to 2027-02-25. This commit replaces that with one that lasts another ten years (2026-03-13 to 2036-03-13). runbot-241058 Forward-Port-Of: odoo/enterprise#110719
This update resolves a technical issue that was causing test failures related to loading times in the Point of Sale restaurant preparation module. The trigger that was checking for a spinning icon (fa-spin) has been removed, ensuring smoother performance and reliable test results. This change improves the stability of the POS system.
Original PR description
In this commit: = - Removed the trigger that checks for `fa-spin` as it was causing test failures when minor delays occurred between steps. - Checks for `fa-spin(Sync)` is alredy handled by the `isSynced` or `waitRequest`. Runbot-error: [198580](https://runbot.odoo.com/odoo/error/198580), [234025](https://runbot.odoo.com/odoo/error/234025) Forward-Port-Of: odoo/enterprise#87281
This update resolves an issue where 'Other Expenses' account types couldn't be used within the Loan expense tracking system. Now, users can correctly select 'Other Expenses' when recording expenses related to loans, improving the flexibility and accuracy of financial reporting.
Original PR description
Allow accounts with the "Other Expenses" type to be selected in the Expense Account field of Loans. task-5946452 Forward-Port-Of: odoo/enterprise#110085
This update addresses a technical issue where Odoo could experience errors when communicating with Sendcloud for shipping price calculations. Previously, a lack of response from Sendcloud would cause an error, preventing accurate delivery cost display. This fix ensures Odoo gracefully handles situations where Sendcloud doesn't respond, maintaining reliable delivery pricing.
Original PR description
Sendcloud sometimes doesn't respod when asking for `shipping-price`. So when we try to retrieve the first element of the response, we raise an `IndexError`. ----- Ticket: opw-5951749 Forward-Port-Of: odoo/enterprise#109252
This update ensures that files created within the Odoo Enterprise system correctly identify their MIME types, particularly when used with older versions of Chrome. This fix aligns with web standards and improves compatibility across different browsers, preventing potential display issues.
Original PR description
The `type` option passed to the `File` constructor should be a string representing the MIME type of the content that will be put into the file. Chrome 146 actually follows the Fetch Standard and preserve the data URL MIME type parameter. This commit fixes the malformed MIME types passed to the `File` constructor to ensure proper compatibility with pre/post Chrome version 146 (and actually follow the spec). References: - https://chromestatus.com/feature/4874471565557760 - https://developer.mozilla.org/en-US/docs/Web/API/File/File#type runbot-241901 Forward-Port-Of: odoo/enterprise#110812 Forward-Port-Of: odoo/enterprise#110496
This update resolves an issue that occurred when reconciling multiple journal entries within the Accounting module. Specifically, a calculation within the system was incorrectly handling scenarios with multiple reconciled lines, leading to errors. This fix ensures the system functions correctly regardless of how many journal entries are reconciled on a single account.
Original PR description
**Steps to reproduce:** - Install Accounting - From a Bank journal, create a transaction with an amount of -1000 - Set Account to "Liquidity Transfer" - From a Cash journal, create a transaction with…
**Steps to reproduce:** - Install Accounting - From a Bank journal, create a transaction with an amount of -1000 - Set Account to "Liquidity Transfer" - From a Cash journal, create a transaction with an amount of 999.99 - Set Account to "Liquidity Transfer" - Create a MISC entry: | Account | Debit | Credit | | -------------------- | ----- | ------ | | Liquidity Transfer | 0.00 | 0.01 | | Cash Difference Gain | 0.01 | 0.00 | - Post the entry - From Journal Items list, group by Account, select the 3 lines on "Liquidity Transfer" account and reconcile them - Go back to the Bank journal and try to edit the previous transaction **Issue:** A traceback is raised. **Cause:** In "_compute_full_amount_switch_html" method, the reconciled lines linked the current line are retrieved. A single line is expected and some operations that are only allowed on a singleton are performed. In our case, the reconciliation has been performed manually and there are several reconciled lines ; which violates the singleton condition. **Solution:** The value computed by "_compute_full_amount_switch_html" has no sense if there's more than one reconciled line. Therefore, the computation can be skipped in such a case. opw-6031879 Forward-Port-Of: odoo/enterprise#110857
This update resolves a technical issue that caused a traceback during horizontal autofilling of pivot table row headers. While the core functionality remains unchanged, the fix ensures a more stable and consistent experience for users. The result isn't fully corrected, but aligns with vertical autofilling.
Original PR description
When autofilling a positional pivot row header horizontally, we would get a traceback because we were calling `_autofillPivotColHeader` instead of `_autofillPivotRowHeader`. Note that this fix only fixes the traceback, the result is not correct, but is consistent with autofilling a positional col header vertically. Task: [5909266](https://www.odoo.com/odoo/2328/tasks/5909266) Forward-Port-Of: odoo/enterprise#110521 Forward-Port-Of: odoo/enterprise#109620
This update corrects a technical issue where archived partners were incorrectly identified during bank statement retrieval, leading to inaccurate partner assignments. The change now ensures that partner retrieval only considers active partners, improving data accuracy and reliability for financial reporting.
Original PR description
Description of the issue this commit addresses: Partner auto-detection on statement lines could match archived partners via SQL causing unexpected partner_id assignment. Desired behavior after this commit is merged: Partner retrieval from bank account, partner name, and previous statement lines only considers active partners, preventing archived matches. runbot-238918 Forward-Port-Of: odoo/enterprise#110446
This update resolves an issue where the batch view in the Odoo Enterprise system incorrectly displayed multiple 'Validate' buttons. The fix ensures that only one 'Validate' button is visible, streamlining the quality check process for users. This improves usability and prevents confusion.
Original PR description
Steps to reproduce: - Create two storable products: “P1” and “P2” - Create two pickings, one with P1 and another with P2 - Create a quality check for P1 - From the picking list view: - Select both pickings and create a batch - Open the batch Problem: Two “Validate” buttons are displayed instead of one. The inherited view was overriding the original `invisible` attributes of the two existing `action_done` buttons and also adding an extra `action_done` button. Because the original visibility logic was replaced (instead of extended), the conditions were no longer mutually exclusive, causing multiple Validate buttons to be visible at the same time. Solution: - Remove the extra `action_done` button added in the inherited view - Extend the existing `invisible` conditions using `separator=" or "` so the original logic is preserved and the buttons remain mutually exclusive opw-5508871 Forward-Port-Of: odoo/enterprise#109911 Forward-Port-Of: odoo/enterprise#107993
This update fixes a previous issue where the tax returns journal wasn't automatically translated into all supported languages. The team has now implemented a standard translation process, ensuring the journal is correctly translated for each user's language setting, improving accuracy and usability.
Original PR description
Currently, the tax returns journal is created in the code and not via the standard `@template` function that makes sure it is always translated in the installed languages. So for now it was only translated in language of the current user. We refactored the code so the journal gets created via the standard `@template` function and thus automatically gets translated into all the installed languages. task-5921458 Forward-Port-Of: odoo/enterprise#111062 Forward-Port-Of: odoo/enterprise#107465
This update corrects a technical issue within the Account Avatax module, ensuring it properly identifies the company it's associated with in system settings. Previously, a key piece of information was missing, which is now included. This ensures accurate tax calculations and reporting.
Original PR description
Since the beginning `account_avatax` has had all of it's data stored on the company, however, it missed the company_dependent key in settings to mark it as such. This commit fixes that. Followup of odoo/odoo#254242 task-none Forward-Port-Of: odoo/enterprise#110983
This update resolves a minor issue preventing the correct display of a tour within the industry_fsm_report module. The fix ensures that users can properly access and understand the available features within the FSM reporting functionality. This improves the user experience and guides users through key reporting processes.
Original PR description
task-4489657 Forward-Port-Of: odoo/enterprise#111099 Forward-Port-Of: odoo/enterprise#81823
This update corrects a minor issue where buttons within Helpdesk email templates were incorrectly identified as links, preventing them from functioning properly. The change ensures buttons are correctly recognized and handled by the editor, improving the user experience when interacting with tickets.
Original PR description
Without the `btn` class, buttons are identified as links by the editor. This commit adjusts the buttons inside the mail templates so that they are properly handled by the editor. Steps to reproduce: - Have demo data - Turn on developer mode - Go to Helpdesk > Customer Care - Open ticket "Where can I download a catalog?" - In the debug menu, go to Messages - Open the first template - Click on the "View Ticket" button - Edit the link => The link popover recognized it as a link instead of a button. As of saas-18.2, the style is replaced by a plain link style when changing the URL. task-5948539 Forward-Port-Of: odoo/enterprise#110797 Forward-Port-Of: odoo/enterprise#107888
This update resolves an issue that was preventing users from copying spreadsheets within the Enterprise edition. The fix corrects a technical error that disabled the copy button, ensuring users can now seamlessly duplicate spreadsheets as needed. This improves workflow efficiency.
Original PR description
Fix error which disabled the copy button. Forward-Port-Of: odoo/enterprise#110700 Forward-Port-Of: odoo/enterprise#110086
This update resolves an issue where incorrect decimal values were appearing in Intrastat XML reports for French companies. The fix corrects a processing error that occurred when handling numerical data, ensuring accurate reporting of intrastat values. This improves the reliability of our French Intrastat reporting functionality.
Original PR description
Steps to reproduce: - Select a French company and activate intrastat - Create an invoice with a 100% discount to a european partner and provide intrastat values such as intrastat code, product commodity code, ... and most importantly a weight with a decimal amount. - Create at least one other invoice to a european partner that has a date earlier than the first one (but on the same month) - Go to intrastat report and export the XML (DEBWEB2) and select EMEBI and then Departures. -> Issue: The line that got processed after the one with a 0 value is not properly post-process regarding the integer conversion because we used to iterate on a list that was modified at the same time. opw-5973832 Forward-Port-Of: odoo/enterprise#110971
This update resolves a potential issue where the system couldn't correctly evaluate certain data types within the industry_fsm module, specifically impacting project task management. The fix ensures that all values passed to the `literal_eval` function are strings, preventing errors and improving data processing reliability.
Original PR description
literal_eval needs string values to evaluate,
action.get('domain', []) returns non-string value.