Thursday, March 26, 2026
44 changes · saas-19.2
New functionality added to Odoo
This update restores the display of a proxy token for users in Egypt (l10n_eg_iot) to ensure proper functionality. Previously, the token was hidden in a modal, which was inconvenient for this specific user group. This change simplifies the process and improves the user experience for Egyptian VAT users.
Original PR description
Proxy token generation was removed to avoid showing a modal with a token nobody cares about except Egypt. We reintroduce token generation, but display it to the database instead of showing a modal. see odoo/odoo#255121 Forward-Port-Of: odoo/enterprise#111608 Forward-Port-Of: odoo/enterprise#111496
Enhancements to existing features
This update allows administrators to efficiently manage database tags by enabling mass editing. Previously, tagging databases required individual updates for each one. This change streamlines the process, saving time and improving database organization.
Original PR description
The aim of this commit is to allow users to mass edit the list of database to add one or several tag on several dbs at once. task-id: 6046088 Forward-Port-Of: odoo/enterprise#112024
Resolved issues and error corrections
This update fixes an issue where fields weren't being populated correctly when new fields were created within Odoo. The change ensures that all fields are properly initialized during the creation process, improving data accuracy and reliability. This resolves a technical bug impacting data integrity.
Original PR description
See https://github.com/odoo/odoo/pull/199647. Forward-Port-Of: odoo/enterprise#111898 Forward-Port-Of: odoo/enterprise#109725
This update quietly generates and stores a proxy token for Odoo users in Egypt, eliminating a previous modal prompt that was rarely used. This change streamlines the user experience for Egyptian customers while maintaining security. It addresses a specific need identified in a related Odoo issue.
Original PR description
Proxy token generation was removed to avoid showing a modal with a token nobody cares about except Egypt. We reintroduce token generation, but send it to the database instead of showing a modal. see odoo/enterprise#111496 Forward-Port-Of: odoo/odoo#255280 Forward-Port-Of: odoo/odoo#255121
This update ensures that expense refusal messages displayed in the system's chatter are now shown in the user's preferred language, rather than the employee's. This improves communication clarity and a better user experience. The change addresses an issue where the system incorrectly defaulted to the employee's language.
Original PR description
Problem: For expense created from stripe payment, OCR overwrites the data fetched from stripe. Solution: Skip OCR for expense created from stripe payment and put a log note explaining the same. ***…
Problem: For expense created from stripe payment, OCR overwrites the data fetched from stripe. Solution: Skip OCR for expense created from stripe payment and put a log note explaining the same. *** Purpose: One language may have been set on employee, but that employee may be using any other language in his environment, in that case user should see chatter messages in language from his environment. Before this commit: expense refusal message in chatter used employee's language. After this commit: expense refusal message in chatter uses language of user related to employee. *** Problem: Expense Digitalization (OCR) setting is not properly applied. Steps to reproduce:- - Create a new database with demo data and install `hr_expense_extract`. - Switch to `My US Company` and create an employee for that company. - In expense settings set Expense Digitalization (OCR) to Digitize on demand only. - Create an expense for above created employee and attach receipt. - Expense is digitized automatically. Cause: Here https://github.com/odoo/enterprise/blob/d8acbf22fec266ff7d5dcc9499543e6bea3c1325/hr_expense_extract/models/hr_expense.py#L43 `self.env.company` gives that user's default company instead of currently active company in company selector. Solution: Use `company_id` set on expense to determine Expense Digitalization setting. *** task-5712223 Forward-Port-Of: odoo/enterprise#106261
This update resolves a visual issue in the Kanban view for work orders, ensuring consistent color representation based on the associated production. The change utilizes a new color field introduced in the system to accurately reflect work order status and improve usability.
This update fixes a minor issue within the Web Studio module where many search dialogs lacked clear titles. Now, most of these 'More Dialogs' have descriptive titles, improving usability and clarity for users creating and editing web applications. This change ensures a better user experience and simplifies the process of finding specific options.
Original PR description
Before this commit, a lot of search More dialogs did not have a meaningful title because one parameter was usually not set. After this, most or all the selectCreateDialog have a meaningful title task-5932652 Forward-Port-Of: odoo/enterprise#111948
This update fixes a display issue in the CFDI invoice reports for Mexican companies. Previously, payment method 99 was incorrectly showing as 'False' instead of the correct 'Por definir'. This change ensures accurate reporting of payment methods, improving data clarity for financial processes.
Original PR description
**PROBLEM** PR https://github.com/odoo/enterprise/commit/843d57b25f925a5d4f1848b85717adb4d1a9d388 Archives payment method 99, but because it's archived `_l10n_mx_edi_get_extra_invoice_report_values()` doesn't retrieve it. This leads the pdf report to display '99 - False' instead of '99 - Por definir'. **STEP TO REPRODUCE** 1. Create an invoice with the mx company. 2. Set the due date sometime in the month later. (To have the PPD payment policy on the invoice). 3. Send and generate the invoice using cfdi. opw-5927655 Forward-Port-Of: odoo/enterprise#111362 Forward-Port-Of: odoo/enterprise#107267
This update resolves an issue where users could mistakenly create 'Requested Documents' instead of folders when syncing Peppol documents through the accounting settings. To avoid a confusing location (My Drive), the ability to create or edit documents within the settings has been disabled, ensuring correct document synchronization.
Original PR description
Before this commit a user could create or edit a folder in the accounting settings to sync peppol documents to. The issue was that this created a 'Requested Document' instead of a folder. This commit removes the possibility to create or edit documents through the settings. An alternative would have been to add the contex to create a Folder instead of a Requested Document, however another problem then arises: the folder is created in My Drive, which does not make any functional sense. Therefore we are disabling creation and edit. This is the same logic applied in 8ada2a4f. Task-6063736 Forward-Port-Of: odoo/enterprise#111884 Forward-Port-Of: odoo/enterprise#111761
This update prevents the entire reports cron job from stopping if an individual report export fails. Previously, a single error would halt the entire process. Now, the cron will continue to attempt exporting other reports, improving reliability and ensuring all reports are eventually generated.
Original PR description
If an error is raised during the export of reports cron execution, the whole cron stops due to the fact that the error is never catched This commit will ensure that even if there is an error with one of the report export, the cron won't top and will try to send to other documents task-5469038 Forward-Port-Of: odoo/enterprise#111732 Forward-Port-Of: odoo/enterprise#105191
This update resolves a technical issue preventing users from printing VSME and CSRD ESG reports. The fix removes an unnecessary check in the report generation process that was causing errors. This ensures reports can be successfully generated and printed, improving the functionality of the ESG reporting module.
Original PR description
Steps to reproduce:
1. From Accounting, create a Vendor bill with today's date, and containing a line
2. Confirm (post) it
3. Make the Payment ('Pay' stat button)
4. Create a VSME or CSRD report from the ESG App, for the current year
5. Try to print it
=> A traceback occurs (in _get_payment_terms_data()) as we are trying to search on the 'active' field of account.move, which does not exist. => Solution: remove this uneeded check
version-19.0
Forward-Port-Of: odoo/enterprise#111816This update fixes a technical error that prevented the generation of the 281.10 report for Belgian payroll companies. The issue stemmed from a mismatch in data between the payslip and the report generation process. The fix ensures accurate report creation by adjusting how vehicle information is identified.
Original PR description
[FIX] l10n_be_payroll: fix traceback in 281.10 sheets
Bug reproduction: Go to any version>=17.0 -> select belgium company -> install only belgium payroll (don't install fleet one) -> fill in niss, certification level, address, Time in R&D -> generate payslip and confirm it -> try to generate 281.10 report -> traceback
Bug cause:
1 - In traceback it was saying payslip doesn't have vehicle_id, in 281.10 sheet preparation (in function _get_atn_nature), there is a term like that
2 - Payslip doesn't have it because fleet module is not there.
Bug solution:
1 - Instead of checking the payslip has vehicle like that, we calculated it by using paylsip line_ids
2 - If the code ATN.CAR is there and the total of it is not zero, which means this payslip has a vehicle indeed.
task - 6037206
Forward-Port-Of: odoo/enterprise#111680
Forward-Port-Of: odoo/enterprise#110860This update fixes a display issue in the SEPA payment file generation process. The system was incorrectly showing an empty field, but it was actually retrieving the correct SEPA PAIN 09 version from the database. This ensures accurate payment file generation and compliance.
Original PR description
https://github.com/odoo/enterprise/commit/80f9f966d7db793ae82e65c76514323cb10e34ab tried to fix the issue, but assumed the field would be returned empty by the ORM when the value was inconsistent with the db. It's not true: it returns the database value ; only the UI shows the field as empty. Forward-Port-Of: odoo/enterprise#112141
This update streamlines the testing process for our VoIP features by pre-generating the necessary demo bundle. Previously, this bundle was rebuilt repeatedly during tests, causing significant delays. This change improves test execution speed and efficiency.
Original PR description
This commit sets the `voip.assets_sip_demo` bundle to be pregenerated while running tests to avoid rebuilding it at runtime (i.e. +800 times with a db "all").
This update ensures that when a subscription's salesperson is changed, all associated contacts are automatically updated as well. This eliminates manual data entry and maintains consistent information across the customer portal, improving efficiency and data accuracy. An automated test has been added to verify this functionality.
Original PR description
Before this commit, changing the salesperson on a subscription only updated the company partner, leaving child contacts with outdated salesperson info. After this commit, updating the subscription's salesperson also updates all child contacts of the company, ensuring consistency across the portal and reducing manual work. An unit test was added to ensure this behavior. task-5917271 Forward-Port-Of: odoo/enterprise#111861 Forward-Port-Of: odoo/enterprise#108339
This update addresses a privacy concern by preventing minimal cashiers from seeing the total due amount in the partner list. This change protects sensitive financial information and aligns with best practices for cashier security. The fix was implemented to ensure a more secure and appropriate experience for all users.
Original PR description
Before this commit, the total due amount was visible for minimal cashier in the partner list. This could leak sensitive information to the cashier, which is not desirable. opw-6039529 Forward-Port-Of: odoo/enterprise#111103
This update ensures that all attendees of an appointment – including internal users and organizers – receive a booking confirmation notification, regardless of whether the booking syncs with Google or Outlook. Previously, notifications were limited, causing confusion for those not directly involved in the meeting. This change improves communication and ensures everyone is informed.
Original PR description
In [1] we prevented cancelation emails from being sent when the booking was synced via google or outlook calendar. However this means even followers who would not be notified by the mail provider (not assisting to the meeting) would not be notified. As well as the organizer who is doing to booking/cancelling from the perspective of the mail provider, as the meeting is created from their account. Instead we should keep sending the "appointment booked" template in all cases as it is only followed by internal users to whom it is always relevant. As for cancelation templates, it should stil be sent to internal users. Partners of the meeting however need not be notified and may be unsubscribed if syncing is enabled, as cancellation typically only happens once. task-5152917 [1]: https://github.com/odoo/enterprise/pull/60913 Forward-Port-Of: odoo/enterprise#111856 Forward-Port-Of: odoo/enterprise#96638
This update addresses an issue where the tax return check cards had excessive white space and misaligned elements, making them difficult to read. The changes create a cleaner, more professional-looking card design, improving the user experience.
Original PR description
Description of the issue this commit addresses: The UI of the tax return check cards has too many white spaces and misaligned items causing counterintuitive reading. --- Desired behavior after this commit is merged: The cards have a cleaner spacing within them so the UI looks cleaner. --- task-6003121
This update fixes a reporting issue where the KMD INF report incorrectly included partners with low turnover. Now, the report accurately filters partners based on a €1,000 turnover threshold, considering both invoices and credit notes. This ensures more reliable financial reporting.
Original PR description
The KMD INF report should only include partners whose total turnover for the period reaches 1,000 EUR. Before this PR: - The report did not check this threshold, so partners below €1,000 were still shown. After this PR: - The threshold is now calculated correctly based on specific rules: - The threshold is calculated separately for invoices and credit notes per partner. - If invoices total base amount >= €1,000 OR credit notes total base amount >= €1,000, both invoices and credit notes are included in the report - The same logic applies to bills and refunds in Part B. task-5373606 Forward-Port-Of: odoo/enterprise#111940 Forward-Port-Of: odoo/enterprise#101333
This update resolves a minor issue where the helpdesk tour occasionally failed due to the tour attempting to click a button before the helpdesk view was fully loaded. By ensuring the helpdesk view is fully rendered before the tour attempts to interact with it, this fix improves the overall stability and reliability of the tour experience.
Original PR description
This PR fixes a flickering failure in the `helpdesk_tour` ### Problem In the kanban view, the tour occasionally tried to click the "New" (quick create) button before the view's internal structure was fully painted. This caused the tour to click a wrong element. ### Solution Updated the step trigger to include a selector for the kanban group (`.o_kanban_group`). By requiring the presence of the group container, we ensure that: 1. The page content has actually loaded. 2. The specific "New" button within the kanban context is visible and ready. **Runbot ID: 223081** Forward-Port-Of: odoo/enterprise#110333
This update corrects a technical issue where the system was incorrectly limiting VAT numbers to 18 characters, causing problems when integrating with FedEx. The change ensures that VAT numbers, including those with longer formats like in Switzerland, are properly transmitted to FedEx, preventing delivery errors. This improves the reliability of shipments using FedEx.
Original PR description
Issue ----- Fedex limits VAT numbers to 18 char long strings. This is contradictory with how they are stored in db for some countries (eg Switzerland, where the format is CHE-123.456.788 VAT -> 19 char long). Steps to reproduce ----- - Setup Fedex - Create a customer - Company (for VAT number) - VAT number: CHE-123.456.788 TVA - Create a delivery and confirm it Cause ----- VAT number is retrieved as is in https://github.com/odoo/enterprise/blob/0220d413988708c662ffca3c7fb38641c3d9870a/delivery_fedex_rest/models/fedex_request.py#L332-L343 ----- Ticket: opw-5926452 Forward-Port-Of: odoo/enterprise#111864 Forward-Port-Of: odoo/enterprise#109999
This update resolves an issue where users couldn't add reactions to messages within the 'mail_group' module in Discuss. The fix ensures that the 'add reaction' button is only displayed for messages that properly inherit from the standard messaging model, improving stability and usability.
Original PR description
Steps to reproduce: - Install the mail_group module - Open Discuss - Go to the History tab - Add a reaction on a message that has model mail.group - Throws an error The error occurs because the mail.group model does not implement the `_get_allowed_access_params()` method, which is invoked during the process here. Actually, the "add reaction" button should not be shown on messages whose model does not inherit from mail.thread. This commit fixes the issue by hiding the "add reaction" button on messages with models that don’t inherit from mail.thread, such as `mail.group`. community: https://github.com/odoo/odoo/pull/218615 Task-5098050 Forward-Port-Of: odoo/enterprise#112069 Forward-Port-Of: odoo/enterprise#111271
This update corrects a minor error in the demo data for the l10n_ch_hr_payroll module. Specifically, an incorrect reference to insurance data was removed, ensuring the demo data accurately reflects the module's functionality. This ensures consistent and reliable demo data for testing and training.
Original PR description
This commit removes an unnecessary record and fix wrong reference to the insurance line of the insurance group in the demo data of the l10n_ch_hr_payroll module. task-6070942 Forward-Port-Of: odoo/enterprise#112121
This update resolves an issue where PDF merging errors didn't consistently display user-friendly error messages. The fix ensures that a clear error message is shown when PDF merging fails, regardless of the underlying cause (like a corrupted PDF). This improves the user experience and helps identify problems with report generation.
Original PR description
When merging pdfs, if there is an error when meging those pdfs (due to a malformed PDF for example), the UserError that should be shown to the user is not due to an error in the arguments given to…
When merging pdfs, if there is an error when meging those pdfs (due to a malformed PDF for example), the UserError that should be shown to the user is not due to an error in the arguments given to the handle_error function.
The aim here is to keep the same function signature and edit the signature of the local function used when a custom_handle_error was defined and edit the function itself.
The error message appeared when I was working on a task to change a
test and tested it on master and got the following stacktrace:
```
...
File "/home/odoo/Desktop/src/odoo/odoo/addons/base/models/ir_actions_report.py", line 788, in _merge_pdfs
handle_error(error=e, error_stream=stream)
TypeError: IrActionsReport._handle_merge_pdfs_error() missing 1 required positional argument: 'self'
```
Discovered during : task-3603619
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#255173
Forward-Port-Of: odoo/odoo#211611This update resolves an issue where the global search modal prevented users from adding snippets to products. The change ensures the modal closes automatically when entering edit mode, allowing seamless snippet functionality. This improves the user experience for adding product information.
Original PR description
Steps to reproduce: - Go to the Shop and enable the floating toolbar. - Click the search icon in the header. - When the search modal opens, click 'Edit' to enable website editing. - Try to add a snippet from the floating toolbar. => The same issue also occurs on individual product pages. Observed behavior: Snippets cannot be added while the global search modal remains open. Expected behavior: Snippets should be draggable and added normally in edit mode. This PR ensures that the global search modal is closed when entering edit mode, preventing it from blocking add snippet. task-5905963 Forward-Port-Of: odoo/odoo#255607 Forward-Port-Of: odoo/odoo#247781
This update resolves a technical issue that could cause errors when processing certain order lines in the Point of Sale (POS) system. Specifically, the system was encountering a problem when attempting to add lines with no product information. This change skips these lines, ensuring smoother order processing and preventing potential disruptions to sales.
Original PR description
`line_subsection` lines have no product, so calling `addLineToCurrentOrder` on them raised a TypeError trying to read `taxes_id` of undefined. Skip them early, the same way `line_section` is handled. opw-5949585 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255360
This update fixes a visual issue where floor plans in RTL languages (like Arabic) were incorrectly positioned. The change adjusts how floor plan elements are rendered to account for the different anchor point of `position: absolute` elements, ensuring accurate display in RTL layouts. This improves the user experience for customers using these languages.
Original PR description
In RTL languages (e.g. Arabic), `position: absolute` elements anchor to the top-right corner of their containing block instead of top-left. Since floor plan elements are positioned via `transform: translate(left, top)` using pixel coordinates stored from a top-left origin, all tables and decor elements were rendered at wrong positions when the UI direction was RTL. opw-6040855 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255813
A recent update to Odoo introduced a validation error when resetting the 'Lead Forward' email template. This PR resolves this issue by updating the template to align with newer Odoo versions, addressing a compatibility problem. Users can now reliably reset the template without encountering errors.
Original PR description
Steps to reproduce: - Create a lead > click on gear icon > Forward to partner - Send the forward and ensure there is at least one record of crm.forward.to.partner - Navigate to email templates technical settings menu and search for Lead Forward: Send to partner - Click on Reset Template in the template form Current behavior: - Validation Error thrown Expected behavior: - No validation error thrown and template is reset Note: MailTemplate._check_can_be_rendered was added in version 18.3 which checks for invalid object references when trying to alter + save templates. This template was out of date and fails the check Referenced PR: https://github.com/odoo/odoo/pull/176623 opw-6001560 Forward-Port-Of: odoo/odoo#254819 Forward-Port-Of: odoo/odoo#252599
Previously, a select dialog opened from a record selector or relational field would display an unclear 'Search: undefined' title. This fix ensures the dialog title is set to 'Search' if the expected information isn't available, providing a cleaner and more user-friendly experience. This resolves a minor visual issue.
Original PR description
…e title When opening a selectCreateDialog from a record selector or a relational field, when no (or empty) fieldString was passed to form the dialog's title , an ugly `Search: undefined` was set as the title After this commit, if we don't receive the right props, we simply set the title to `Search` part-of-task-5932652 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#255777
This update fixes an issue where the image quality slider disappeared when using images with shapes in Odoo. The change ensures the slider functions correctly regardless of whether the image format or shape options are modified, improving the user experience for image customization. This resolves a visual glitch impacting image display.
Original PR description
Before this commit, the quality option would not work properly for images with a shape applied by default. After changing an option, the DOM would be updated and the slider disappeared because the…
Before this commit, the quality option would not work properly for images with a shape applied by default. After changing an option, the DOM would be updated and the slider disappeared because the image format would not be considered valid anymore.
Steps to reproduce the issue :
- Drop a snippet with an image with a shape (.s_cta_mockup, ...)
- Do one of the following:
- Move the quality slider
- Change an shape option
=> The Quality slider disappeared.
If the user replaces an image with a png, sets the format to "webp" and adds a shape, the dataset would have the following :
- format-mimetype: the value of the format option ("image/webp")
- mimetype-before-conversion: the original format ("image/png")
- mimetype: the mimetype of an image with shape ("image/svg+xml")
We first evaluate "data-format-mimetype", as it indicates the current format of the image (if it was changed by the user). Otherwise, we check "data-mimetype-before-conversion" since the mimetype for an image with shape is always "image/svg+xml" and doesn't correspond to the real image format. Finally, default to getMimetype to avoid issue for images on which nothing no option was changed.
task-5358952
Forward-Port-Of: odoo/odoo#240360This update fixes a technical issue that prevented users from properly closing the online payment popup in the POS system. The previous system incorrectly relied on an outdated 'currentOrder,' leading to errors. This change ensures the system uses the correct 'order' data, improving the payment process and preventing disruptions for customers.
Original PR description
Before this commit, when the user closed the online payment popup, an error was raised because the currentOrder was not valid and instead order must be used. opw-6034405 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255292
This update resolves an issue where a partner's identification type was incorrectly set based on its country. The change ensures that a partner's ID type remains consistent regardless of the selected country, preventing data discrepancies and improving data accuracy for Latin American reporting. This fix was implemented to maintain the integrity of partner records.
Original PR description
**PROBLEM** PR: https://github.com/odoo/odoo/pull/179078 Removed _onchange_country_id() which was used to set the identification type according to the country of the partner. This PR reintroduce it, so id type and country remains consistent. **STEP TO REPRODUCE** 1. install l10n_ar and l10n_co. 2. create a new partner. 3. set its country to Argentina, and select an argentinian id type. 4. set the country to Colombia and save. You end up with a partner from Colombia, with a id type that is used for Argentinian partners which shouldn't be possible. opw-5801824 Forward-Port-Of: odoo/odoo#248585
This update ensures that Point of Sale orders are automatically assigned a default product preset when one isn't explicitly provided. Previously, orders created without a preset ID would not use the configured default. This change aligns with how other key settings like price lists are handled, ensuring consistent and reliable order processing.
Original PR description
When a pos.order was created without a preset_id (e.g. frontend order synced before the async preset dialog resolved, or any other path that omits the field), _complete_values_from_session did not fall back to the config's default_preset_id. Apply it the same way pricelist and fiscal position are defaulted, without overriding an explicitly passed value. opw-5997872 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251934
This update resolves a technical issue that caused instability in the HTML editor's automated tests. The fix ensures the editor is fully loaded before tests attempt to interact with it, preventing test failures due to timing differences. This improves the reliability of the HTML editor.
Original PR description
See commit messages. Forward-Port-Of: odoo/odoo#253432 Forward-Port-Of: odoo/odoo#253051
This update fixes a test failure related to email notifications in the Google Calendar and Mail modules. The previous test incorrectly checked for empty timeout emails, leading to false positives. Now, the test focuses on ensuring no emails are sent for any message, regardless of recipient, improving test reliability.
Original PR description
No need to always check the timeout email_to always contains formatted emails. task-5152917 Forward-Port-Of: odoo/odoo#255635 Forward-Port-Of: odoo/odoo#230766
This update ensures that attachment files are always linked to the corresponding financial transaction (move) within the Odoo system. Previously, updates to the transaction and attachments were handled separately, which could lead to inconsistencies. This change guarantees data integrity and avoids potential errors when managing financial records.
Original PR description
Was committing the move fields update, then updating the attachment. This might create an issue were the move update commits successfully, but setting the attachment fails and we end up with an inconsistency. Set attachment in the same transaction as the move update. task-6035727 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255745 Forward-Port-Of: odoo/odoo#255262
A test within the sale_timesheet module was failing due to a missing dependency on the invoicing module. The fix ensures the invoicing module is automatically installed during test execution, allowing the test to run correctly. This prevents disruptions to the testing process.
Original PR description
__ ## Error description When the test runs following a specific configuration, the field `invoicing_switch_threshold` isn't found. However, we have to keep this field in the test because we can't replicate the issue the test checks without it. ## Origin of the issue This field belongs to the `account_accountant` (Invoicing) module. However, `sale_timesheet` doesn't have a dependency on this module: there's only an auto install for `account_accountant` when installing the module from the front-end. Therefore, if we launch the test without the `account_accountant` auto install, it will fail. __ original commit: https://github.com/odoo/odoo/pull/250946/changes/52a9841c754466c2df65c75d13c9ed2ae86a51ce Forward-Port-Of: odoo/odoo#254506 Forward-Port-Of: odoo/odoo#252772
This update fixes a technical error that prevented users from sharing course content hosted externally via Google Drive. The issue stemmed from a browser security restriction (Same-Origin Policy) when accessing the content's internal structure. This change ensures seamless content sharing functionality for all course types.
Original PR description
Step to reproduce: 1. Install `website_slides` 2. Open any course and add content 3. Select the `Document` type and upload a Google Drive link 4. Save and publish the content 5. Click the "Share" button for this specific content in full screen Issue: - A traceback occurs: `Uncaught Javascript Error > Failed to read a named property 'document' from 'Window': Blocked a frame with origin "http://localhost:3000" from accessing a cross-origin frame.` Cause: - The `_onClickShareSlide` method attempts to calculate the `documentMaxPage` by accessing the internal DOM of the slide's iframe (`iframe.contentWindow.document`). When the content is hosted externally the iframe source is cross-origin. Browsers enforce the Same-Origin Policy. Solution: - Check the origin of the iframe's source URL before attempting to get max page. opw-5422655 Forward-Port-Of: odoo/odoo#251859 Forward-Port-Of: odoo/odoo#241090
This update resolves an issue where users couldn't download attachments linked within the website editor when browsing in incognito mode. The fix ensures the correct access token is included in the download link, allowing attachments to be accessed consistently across different browsing sessions. This improves the user experience and prevents data access limitations.
Original PR description
# How to reproduce
- Go to the website in edit mode
- Select some text
- Upload and link an attachment to that text
- Open a new incognito tab
- Try to download the attachment
# The problem
An error 404 is displayed
# Why
The access token of the attachment is not correctly added in the link URL. This is because link_popover.js does not correctly call the upload function from the uploadLocalFile services.
The signature of that function is :
```py
async function upload(
{ resId, resModel },
{ accept = "*/*", multiple = false, accessToken = false } = {}
) {
```
opw-5500362
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#251427This update fixes a previous restriction that prevented users from editing taxes on reward lines within confirmed sales orders. Previously, changes would trigger a recomputation of taxes, now edits are permitted on confirmed orders as the tax calculation is no longer affected. This improves order management flexibility.
Original PR description
Issue: --- Due to this issue, the tax on reward SOL cannot be edited. Cause: --- This is introduced in #172110 to prevent users from editing taxes on reward lines because confirming the order would recompute the tax. We can make it editable on confirmed SO as the tax wouldn't recomputed on reward lines later. opw-5918435 Forward-Port-Of: odoo/odoo#255644 Forward-Port-Of: odoo/odoo#255102
This update resolves an issue where users couldn't add reactions to messages using the 'mail.group' model. The fix ensures that the 'add reaction' button is only displayed for message types that properly support reactions, improving stability and preventing errors.
Original PR description
*= im_livechat, portal, test_discuss_full **Steps to reproduce:** • Install the mail_group module • Open Discuss • Go to the History tab • Add a reaction on a message that has model `mail.group` •…
*= im_livechat, portal, test_discuss_full **Steps to reproduce:** • Install the mail_group module • Open Discuss • Go to the History tab • Add a reaction on a message that has model `mail.group` • Throws an error The error occurs because the `mail.group` model does not implement the `_get_allowed_access_params()` method, which is invoked during the process here. Actually, the "add reaction" button should not be shown on messages whose model does not inherit from mail.thread. https://github.com/odoo/odoo/blob/d12c1e07727f9b04cd2be2e7dac1ec3af49cb637/addons/mail/models/mail_message.py#L579 Desired behavior after PR is merged: This PR fixes the issue by hiding the "add reaction" button on messages with models that don’t inherit from mail.thread, such as mail.group. enterprise: https://github.com/odoo/enterprise/pull/111271 Task-5098050 [Reference](https://github.com/user-attachments/assets/aa2c4251-fd1f-4734-a62c-9fc80dd5f587) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255950 Forward-Port-Of: odoo/odoo#218615
This update ensures that the 'mail.catchall.domain.allowed' system parameter is properly sanitized when created manually. Previously, a space character introduced an error, preventing valid domain entries from being used correctly. This fix resolves a potential issue where users couldn't configure catch-all domains as intended, improving mail functionality.
Original PR description
Since its introduction (https://github.com/odoo/odoo/pull/76734), the "mail.catchall.domain.allowed" system parameter is normally sanitized by `_sanitize_allowed_domains` when using `set_param`. But…
Since its introduction (https://github.com/odoo/odoo/pull/76734), the "mail.catchall.domain.allowed" system parameter is normally sanitized by `_sanitize_allowed_domains` when using `set_param`. But the method is not run when the system parameter is created manually, for example through the UI, because the current conditional logic is not triggered for write and create call. This can be an issue if for example the use submits this value: "domain1.com, domain2.com,domain3.com" The comma seperated list will only be split by ',', meaning that the second element is " domain2.com" (space character in front). As such, that domain will not be used as expected, since most flows using that data will end up comparing "domain2.com" vs " domain2.com", and not considering it a match. Before this fix: Create new record in System parameters with key = "mail.catchall.domain.allowed" value = "domain1.com, domain2.com,domain3.com" -> after save, value == "domain1.com, domain2.com,domain3.com" After this fix: -> after save, value == "domain1.com,domain2.com,domain3.com" OPW-5505414 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255969 Forward-Port-Of: odoo/odoo#244279
This update resolves an issue where Odoo could crash if a module didn't include a manifest file. The system now handles this gracefully, ensuring that lazy-loaded bundles are generated as reliably as possible. This improves overall system stability and prevents unexpected errors.
Original PR description
This commit avoids a crash when a module doesn't provide a manifest (cf. Industry). Pregenerating lazy loaded bundles is a "best effort" detection and should be resilient so, not a big deal if some aren't properly found. Forward-Port-Of: odoo/odoo#256056
This update resolves an issue where a key function was incorrectly imported, causing a minor disruption in the IoT drivers module. The fix ensures the function is correctly located within the intended module, improving overall system stability and performance. This change was necessary to maintain the proper functionality of the IoT drivers.
Original PR description
`get_conf` was moved to `system` instead of `helpers`, and a call in `main.py` hasn't been updated in a fw port. This commit fixes it. Forward-Port-Of: odoo/odoo#256049