Monday, October 6, 2025
38 changes · 19.0
Enhancements to existing features
The bank matching edit line wizard now shows only the line name instead of combining it with the reference. This keeps long references from disrupting the layout while still leaving the reference visible in the kanban view.
Original PR description
Problem: - The reference field was displayed together with the bill name, causing misalignment when the reference is quite long in the edit line wizard. Solution: - Updated the edit line wizard to display only the line's name. - The reference remains visible in the kanban view, it is only removed in the edit line wizard. task-5113489 Forward-Port-Of: odoo/enterprise#95575
This update adds documentation for an internal testing utility used by the HTML editor team. It helps developers understand and use the tool more consistently, supporting more reliable future updates without changing the user experience.
The spreadsheet selector grid now receives focus automatically when opened, so users can start interacting with it right away. This reduces extra clicks and makes spreadsheet editing feel smoother and faster.
Original PR description
Task: 5106371
This change keeps the main company first while sorting the other selected companies in the user's session context. This reduces duplicate cache entries for equivalent requests, helping improve consistency and avoid unnecessary repeated processing.
Original PR description
The `allowed_company_ids` key encodes the ids of the companies the user is currently logged in. There's always a "main" company, the first one, which acts as default company. The order for the others is not relevant. Before this commit, those ids weren't sorted. This was a (small) problem for the rpc caches, because that list of ids is present in the context, which is stringified in the cache keys. So the same request but with `allowed_company_ids`, e.g., `[3,1,2]` and `[3,2,1]` would result in 2 different keys in the cache, and could thus lead to cache misses even though we already did the same request. This commit thus sorts the ids (except for the one). Task~5104126 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
Resolved issues and error corrections
This fix updates the live chat test mock so it includes the same user availability status information as the real server. It helps prevent incorrect test results and improves confidence that live chat behavior is validated accurately.
Original PR description
**Description of the issue this PR addresses:** Add missing im_status field in mock server **Current behavior before PR:** Previously, the `im_status` field was available on the server side, but it was missing in the mock server implementation used in tests. **Desired behavior after PR is merged:** This PR updates the mock `DiscussChannelMember` model to include `im_status` in the list of stored partner fields, ensuring that test scenarios accurately reflect server behavior. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229865
Code cleanup and technical improvements
This update renames an internal color picker setting so its purpose is clearer to developers. It does not change how users interact with the editor, but it helps reduce confusion and future maintenance risk in website editing tools.
Original PR description
*: html_builder, web. When this prop was added in this [commit], it was named themeColorPrefix, which does not reflect its purpose properly. It could mistakenly be taken as a prop for the theme tab of the color picker, when actually it's a prefix CSS variable names used to display colors correctly. [commit]: https://github.com/odoo/odoo/commit/62bdb31587f2586d6d45f53d264e193028b3c860
Documentation and clarification updates
A new individual contributor agreement signature was added to the project records. This supports legal clarity around contributions and helps keep the project’s licensing documentation complete.
Original PR description
closes 230023
This fix prevents Odoo from opening a chat window when a message has already been received and seen through another part of the app. It reduces unnecessary interruptions for users in Discuss while keeping message notifications consistent.
Original PR description
Before this commit, if a message was already received in the store by another medium than the bus, it was still handled not-silently when receiving the bus notification `discuss.channel/new_message`. This could lead to opening a chat window when a message was already seen by the user in the discuss app. This commit changes the handling of new messages in the frontend and overrides the silent flag when the record already exists. fixes-runbot-230700 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227445
The employee offer form now automatically uses the correct employee when creating a new offer from the Offers button. This prevents confusion for HR users and helps ensure offers are linked to the intended employee.
Original PR description
#### Steps to reproduce Employees -> Create employee (or select employee) with offer -> Offers smart button -> New: wrong employee name in "Offer for ..." #### Reason Wrong key passed to context of the offers view via action_show_offers method #### Solution Replace key 'default_employee_version_id' with 'default_employee_id' task-5003544 Forward-Port-Of: odoo/enterprise#92073
This fixes an issue where emails or tickets containing an image formatted with a caption area but no actual caption could fail to open. Odoo now handles these images safely, preventing tracebacks for users reviewing related helpdesk tickets or messages.
Original PR description
When a image that has a figure tag without fig caption tag is rendered in a caption area it create a traceback. ### Steps to reproduce: * Write an email with an image that has a "figure" tag but no "fig caption" * Send it to an helpdesk alias to create a ticket * Open the ticket -> traceback ### Issue: When a "figure" tag was processed, it wasn't taking into account the possibility of not having "figcaption" which created the traceback. https://github.com/odoo/odoo/blob/2769717bb0632ee7b813e131a94e77885b54493f/addons/html_editor/static/src/others/embedded_components/plugins/caption_plugin/caption_plugin.js#L56-L59 opw-5080370 Forward-Port-Of: odoo/odoo#228858
This fixes a crash when users remove certain calendar view settings in Studio, such as the color field. Empty values are now handled correctly instead of being treated as invalid field names, making Studio edits more reliable.
Original PR description
On a calendar with studio, try to remove the "color" attribute, or any other that should contain the name of a field. Before this commit there was a crash because the value sent to the server in this case is `undefined` (`null` in JSON or `None` in python), which was stringified and yielding an actual string that was not a field name After this commit, NULL values are not stringified, instead they should represent the emptiness of the attribute. opw-4938351 Forward-Port-Of: odoo/enterprise#95439
The HTML editor’s automated tests now better reflect how the editor behaves in real use after inserting HTML. This helps prevent inaccurate test results and reduces the chance of unnoticed issues reaching users.
Original PR description
The insert HTML tests were using `dom.insert` directly without consistently triggering a step afterwards, leading to results that weren't always representative of the editor's reality. This ensures consistency in that regard. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now open the AI assistant from the Physical Inventory list and ask questions without triggering an error. The fix handles pages that do not have a linked action, improving reliability for Inventory users.
Original PR description
Currently an error is generated when a user tries to send a message to AI while the current page is in `Physical Inventory`list view. Steps: - Install `Inventory` - Go to Inventory > Operations >…
Currently an error is generated when a user tries to send a message to AI while the current page is in `Physical Inventory`list view. Steps: - Install `Inventory` - Go to Inventory > Operations > Physical Inventory - Click the AI icon from the systray menu. - Ask anything in AI >>> error generated Error: ```UnboundLocalError:cannot access local variable 'current_action' where it is not associated with a value``` This issue arises because in line [1] of the code, the variable `current_action` is assigned a value inside an `if-elif` block based on `action.type`. However, since the `Physical Inventory` page does not have any associated action, the variable `current_action is` never set. Consequently, attempting to access this variable results in an error. This commit fixes the above issue by initializing the `current_action` variable as `None` outside the `if-elif` block and adding handling for cases when `current_action` is `None`. [1] - https://github.com/odoo/enterprise/blob/2ea15cc9c7c5f114b3786b256c64e269b3e3a313/ai/models/ai_agent.py#L750-L755 sentry-6913801088
Product pages now keep the selected image crop shape when shoppers open the zoom-on-click image carousel. This prevents thumbnails from unexpectedly appearing square, giving stores a more consistent and polished product display.
Original PR description
Steps ----- 1. Open a product page in eCommerce; 2. open the editor; 3. change the auto-crop setting to a non-default value; 4. enable zoom-on-click; 5. save & click to zoom. Issue ----- The thumbnails use a square aspect ratio. Cause ----- Their aspect ratio is hardcoded to be '1/1'. Solution -------- 1. When instantiating the `ProductImageViewer` dialog, get the aspect ratio used by `.oe_website_sale`, and propagate it into a class name. 2. Use the CSS rules introduced by 670b1daa2254d to apply the correct aspect ratio based on the class name. opw-4908881
This fix prevents an error when users edit a spreadsheet list and set the Medium field matching in the Sales dashboard. It improves reliability for dashboard editing by avoiding an invalid filter update that caused a traceback.
Original PR description
Steps to reproduce (in enterprise): 1. Open the Sales dashboard 2. Edit the first list 3. Try to set the "Medium" field matching => Traceback The test is in enterprise as the issue is triggered only by editing the spreadsheet. Task: 5101093 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 test was added to ensure editing a Sales dashboard list no longer triggers an error when selecting the Medium field matching. This helps protect dashboard editing from regressions and supports a smoother reporting experience.
Original PR description
Steps to reproduce: 1. Open the Sales dashboard 2. Edit the first list 3. Try to set the "Medium" field matching => Traceback This commit contains only the test as the fix is in the community PR. Task: 5101093
This fixes inconsistent line breaks on IoT printer status receipts. The change makes printed status information easier to read and more predictable for users checking printer output.
Original PR description
This PR makes the newlines the same after every line on the status receipt
Point of Sale receipts now show preset information, such as customer addresses or time slots, centered in the receipt header. This makes printed receipts look cleaner and more consistent for customers.
Original PR description
We now want to center preset infos on receipt header (customer address or time slot) in POS. task-id: 5048706 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226831
This update restores a missing setup link for Spanish reports that was accidentally left out during a previous code update. It helps ensure the Spanish reporting module loads all required components correctly, reducing the risk of reporting setup issues.
Original PR description
Little oopsie while fw-porting https://github.com/odoo/enterprise/pull/96106
This fixes an issue in the Resource module where work time rate searches could behave incorrectly after a recent refactor. The correction helps prevent related automated checks or scheduling calculations from failing, keeping resource planning more reliable.
Original PR description
The `_search_work_time_rate` implimination was missed up on refactor at odoo/odoo#219608 runbot error: 231181 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue in bank reconciliation where an exchange difference entry could be linked to the wrong selected line when multiple lines were reconciled together. The change helps ensure foreign currency reconciliation records are matched accurately, reducing accounting discrepancies.
Original PR description
When selecting multiple lines in the bank rec widget (reconcile button), it could happen that one of those lines have a exchange diff move linked to it. In this case, the exchange move id was placed on the first line all the time which could be wrong. This commit will change the use of indexes to use the reconciled line of the exchange diff move. no task id Forward-Port-Of: odoo/enterprise#94160
Field service project settings now show the correct label for the timesheet product when a customer is selected. This avoids confusion by preventing the sales order line label from appearing in the wrong place.
Original PR description
Steps to reproduce: - Install the `industry_fsm_sale` module. - Open the FSM app. - Go to Projects. - Open a project’s settings. - Select a customer. Issue: The label for the timesheet product is not displayed. Instead, the label for the sale order line appears on FSM projects. Cause: In the PR, https://github.com/odoo/odoo/pull/128967 changed the project settings form structure by wrapping `sale_line_id` in a `div` and separating its label, breaking the xpath for `timesheet_product_id`. Fix: - Update the XPath for `timesheet_product_id` to target the correct container. - Hide the `sale_line_id` label on FSM projects. task-4581748 Forward-Port-Of: odoo/enterprise#96022
The ESG module's demo data was adjusted so it no longer depends on accounting records tied to a specific country setup. This prevents installation errors when businesses use another fiscal localization, such as India, and helps new databases load demo data successfully.
Original PR description
**Note: issue not reproducible in runbot, but in fresh database** **Step to reproduce:** - in fresh database, install esg module - go to setting > invoicing > add india as Fiscal Localization -…
**Note: issue not reproducible in runbot, but in fresh database**
**Step to reproduce:**
- in fresh database, install esg module
- go to setting > invoicing > add india as Fiscal Localization
- change company name, ex "test"
- goto setting > load demo data
**Observation:**
- You will receive traceback
```
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /home/odoo/odoo/codebase/enterprise/saas-18.4/esg/demo/demo_data.xml:567, somewhere inside
<record id="esg_emission_factor_line_assignation_4" model="esg.assignation.line">
<field name="esg_emission_factor_id" ref="esg_zero_emission_factor"/>
<field name="account_id" model="account.account" search="[('code', '=', '630000')]"/>
</record>
2025-09-11 08:45:07,458 82617 INFO esg184 odoo.addons.base.models.ir_module: module esg: no translation for language en_IN
2025-09-11 08:45:07,479 82617 ERROR esg184 odoo.sql_db: bad query: b'INSERT INTO "esg_activity_type_esg_emission_factor_rel" ("esg_emission_factor_id", "esg_activity_type_id") VALUES (1, 2) ON CONFLICT DO NOTHING'
ERROR: insert or update on table "esg_activity_type_esg_emission_factor_rel" violates foreign key constraint "esg_activity_type_esg_emission_fact_esg_emission_factor_id_fkey"
DETAIL: Key (esg_emission_factor_id)=(1) is not present in table "esg_emission_factor".
```
**Cause:**
- The demo data relies on few account.account record which belong to [USA company](https://github.com/odoo/odoo/blob/9805d09dff64de835de0c764da8c6e213d6b88aa/addons/account/data/template/account.account-generic_coa.csv#L38)
https://github.com/odoo/enterprise/blob/b8a20b02e27322d0db5781f8d84946e54bbcbf03/esg/demo/demo_data.xml#L569
https://github.com/odoo/enterprise/blob/b8a20b02e27322d0db5781f8d84946e54bbcbf03/esg/demo/demo_data.xml#L620-L628
- when we installed `india` Localization and changed the company name, USA company could not be created when loading demo data and hence the account records were not created, causing traceback
**Fix:**
- make demo data independent of any localization
opw-5048417
Forward-Port-Of: odoo/enterprise#94540The sales planning test now avoids selecting the current day when that day is not a working day. This prevents false test failures and helps keep delivery checks stable without changing customer-facing behavior.
Original PR description
Before this commit, the tour was failing on non-working days as the focused day was the current date. This commit removes the focus on the current date so that only working dates are selected. Additionally, this commit also fixes the formatting issues of the modified file. runbot error 226741 Forward-Port-Of: odoo/enterprise#96239
Fixed an issue that could prevent some upgrades from completing when timesheet attendance reporting data was processed. The change ensures the report query uses the correct employee reference, avoiding a database comparison error.
Original PR description
In the affected query, the variable "employee_id" is undefined in the scope where it is used. This leads postgres to interpret it as a variable with default type VARCHAR and to the impossibility to compare it against an integer. We just qualify the variable name so it now works as expected. Failing upgrade requests: [3103245](https://upgrade.odoo.com/odoo/request/3103245) [3121291](https://upgrade.odoo.com/odoo/request/3121291) Fixes https://github.com/odoo/odoo/pull/192434/commits/c97ecfa7fc091f763329af589b69db2292931163 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228580 Forward-Port-Of: odoo/odoo#225401
This fixes small visual issues in Odoo Mail where some thread action buttons appeared too tall and mobile messaging menu text was misaligned. The mail interface now looks more consistent and polished for users, especially on mobile devices.
Original PR description
Current behavior before PR: 1. Since [1], in thread actions like `Mark all read` and `Unstar all`, buttons had extra height because aspect-ratio was applied even when there was no icon, making the UI…
Current behavior before PR: 1. Since [1], in thread actions like `Mark all read` and `Unstar all`, buttons had extra height because aspect-ratio was applied even when there was no icon, making the UI look uneven. 2. Since [2], text in the messaging menu tab in mobile was not centered, leading to misaligned UI. Desired behavior after PR is merged: - Aspect-ratio is applied only if an icon exists in the action button, fixing the height issue. - Added a class to center text in the messaging menu tab, improving visual alignment. [1]: https://github.com/odoo/odoo/pull/225216 [2]: https://github.com/odoo/odoo/pull/228657 Task-5145022 1. Before/ After <div style="display: flex;"> <img style="margin-right: 10%;" height="145" alt="image" src="https://github.com/user-attachments/assets/a9fcffdc-5e56-454f-882a-dc5296decd47" /> <img height="136"style="margin-right: 10%;" alt="image" src="https://github.com/user-attachments/assets/105ce999-4e15-4c67-9b62-01c666c6fc2d" /> </div> 2. Before/ After <img width="691" height="114" alt="image" src="https://github.com/user-attachments/assets/6aa4965c-a34f-4058-bdb9-4d91f4ac9146" /> <img width="688" height="94" alt="image" src="https://github.com/user-attachments/assets/ce110144-9314-4b2f-aa30-bf12b7ecf1ec" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an automated mail test by clicking the enabled button instead of relying on the Enter key, which could behave inconsistently depending on focus timing. The change helps keep validation runs stable and reduces false failures without changing customer-facing functionality.
Original PR description
Pressing Enter is prone to race conditions as it requires the proper element to have the focus at the right time. Clicking on the button directly when it is enabled should be preferred. https://runbot.odoo.com/odoo/runbot.build.error/233169 Forward-Port-Of: odoo/odoo#229872
Exporting a Belgian 325 PDF without any generated 281.50 forms now shows a clear user message instead of a server error. This helps users understand they need to record a transaction with a 281.50 tag before generating the PDF, while keeping normal PDF and ZIP exports unchanged when data exists.
Original PR description
### Problem When clicking **"Export PDF"** on a 325 form that has **no generated 281.50 forms**, Odoo raised a **server error**: This happened because the method assumed that at least one attachment…
### Problem When clicking **"Export PDF"** on a 325 form that has **no generated 281.50 forms**, Odoo raised a **server error**: This happened because the method assumed that at least one attachment would always be generated, even if no eligible transactions were present. --- ### Steps to Reproduce 1. Go to **Accounting → Reporting → 325 Form**. 2. Create a 325 form for a year without any transactions on accounts tagged with **281.50**. 3. Do not generate any 281.50 forms (`form_281_50_ids` is empty). 4. Click **Export PDF**. **Result before fix:** - Crash with `IndexError: list index out of range`. --- ### Solution - Added a safeguard check before accessing attachments. - If no attachments exist, raise a **UserError** instead of crashing. **New behavior:** > *“No 281.50 lines found to generate a PDF. Please record a transaction with a 281.50 tag first.”* This gives users a instruction on how to resolve the issue. --- ### Result After Fix - **User error message** replaces traceback. - **Normal behavior preserved** when attachments exist: - One file → direct download. - Multiple files → zipped download. --- task-5090120 Forward-Port-Of: odoo/enterprise#94877
This fix ensures the cohort view's tests reflect updated behavior when users change languages. It helps confirm that actions and breadcrumbs reload correctly, keeping navigation labels consistent with the selected language.
Original PR description
This commit adapts a cohort test w.r.t. the changes done in odoo/odoo#230046.
This fix prevents rare crashes when users quickly interact with website builder options that reload the editor, such as product page image layout settings. It improves the reliability of editing product pages and strengthens automated tests so the issue is caught consistently.
Original PR description
*: website_sale __Current behavior before commit:__ Some builder actions (e.g `ProductPageImageLayoutAction`) reload the editor after being applied. If another button in the builder is pressed…
*: website_sale __Current behavior before commit:__ Some builder actions (e.g `ProductPageImageLayoutAction`) reload the editor after being applied. If another button in the builder is pressed rapidly, `refreshCurrentItem` might be called after the editor is destroyed leading to the following error in [`isApplied`]: `TypeError: Cannot read properties of undefined (reading 'getAction')`. The "Product page options" test fails in rare occasion due to this issue. __Description of the fix:__ - Add a safety guard to make sure the editor is not destroyed before calling `refreshCurrentItem`. - Add some checks at the end of the test in order for the crash to appear consistently (if the fix is not applied). - Make the test more robust (some code is backported from [this commit]). [this commit]: https://github.com/odoo/odoo/commit/670b1daa2254d76 [`isApplied`]: https://github.com/odoo/odoo/blob/f258b263136f606f7896/addons/html_builder/static/src/core/utils.js#L939 Runbot error: https://runbot.odoo.com/odoo/runbot.build.error/232649 Forward-Port-Of: odoo/odoo#227739
This fixes a display issue where the ChatGPT plugin chat window could appear behind a modal window, making it unusable. The chat dialog now appears in front as expected, so users can continue interacting with it without interruption.
Original PR description
This PR fixes an issue with the chatgpt plugin where the chat window was rendered beneath the modal, making it unusable. The fix modifies the z-index of modal windows when the `openDialog` function of the chatgpt plugin is called. Forward-Port-Of: odoo/enterprise#94909
This fix ensures highlighted text effects appear correctly when users preview and create new website pages from templates. It prevents preview-only highlight markup from being copied into the final page, helping published pages keep the intended visual design.
Original PR description
Starting from [1], the code from the "Snippets Preview" and the "New Page Templates Preview" was adapted to be able to build a highlight using its simplified format when provided in XML. The goal of this PR is to fix the new page DOM when a template with highlights is selected. The DOM will be simply cloned and used for the created page, so we need to reset the inner highlights to their minimal format. [1]: https://github.com/odoo/odoo/commit/4a29fa66003ce1f42a7011bc56fc019f34a887f5 task-4215788 Forward-Port-Of: odoo/odoo#185820
This change ensures the web tour testing tools are loaded automatically when unit tests run. It reduces test setup complexity and helps prevent avoidable test failures, with no expected impact on regular users.
Original PR description
In this commit, we add the appropriate bundles in assets_unit_test. These bundles will only be loaded if we run unit tests (i.e. in debug mode). As a result, we no longer need to run preloadbundle in unit tests. 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
Changing the interface language now refreshes saved navigation state so breadcrumbs and restored pages appear in the new language. This prevents users from seeing outdated translated labels after reloading, creating a more consistent multilingual experience.
Original PR description
Before this commit, when changing lang, the breacrumbs was still displayed in the former language after the reload (and it persisted even if the user reloaded again). This was due to the fact that we store in the session storage the current action and state, so we can restore it and avoid some rpcs at reload. This commit fixes the issue by detecting the lang change and clearing the session storage in that case. closes #230032 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
The base module test for translation export was simplified so it no longer starts a full Odoo instance. This makes automated checks faster and more dependable, reducing false failures in the development pipeline.
Original PR description
Spawning an Odoo instance goes beyond testing the i18n command. We just need to see if given the right command, something gets actually exported. So, we got rid of all complexity, and just avoided subprocessing, wiring directly to the command itself, in the current process. This removes timeout problems and a lot of undeterminism. [link](https://runbot.odoo.com/odoo/error/227540) runbot-227540 Forward-Port-Of: odoo/odoo#229755
When an invoice sent by post is deleted, its related Snailmail letter is now removed too. This prevents the scheduled letter-processing task from crashing on missing invoice records, keeping postal invoice handling reliable.
Original PR description
When an account move linked to a snailmail letter is deleted, the cron ``Snailmail: process letters queue`` crashes with a traceback. Steps to reproduce the error: - Create a new invoice > Confirm > Send > Select ``By post`` > Send - Reset to Draft > Delete the invoice - Run the cron ``Snailmail: process letters queue`` Traceback: ``` MissingError Record does not exist or has been deleted. (Record: account.move(1,), User: 1) ``` Solution: Ensure that when a move is deleted, its related Snailmail letters are also deleted. sentry-6883768061 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227823
Safari users editing WebP images will no longer see a quality slider that cannot actually change the image. The editor now disables that option when the browser does not support WebP compression and shows a clear message, reducing confusion during website content editing.
Original PR description
Scenario: - select a WebP image in the editor with safari - change the quality with the slider Result: - the size and the image quality don't change Cause: Safari doesn't support HTMLCanvasElement.toDataURL() with WebP, so the image is exported in PNG instead which is lossless and doesn't support compression. Fix: Disable the quality for WebP images if this is not supported (in safari + iOS webview) and display a message. opw-4979378 closes odoo/odoo#224342 X-original-commit: ecc89796f7344d49359b6c378676628d0de2bb80
A Chilean electronic invoicing test now safely skips a demo-only certificate check when demo data is not installed. This prevents avoidable test failures and helps keep validation runs consistent across different setups.
Original PR description
The test `test_demo_certificate_serial_number` failed when running without demo data, since the XMLID `l10n_cl_edi.l10n_cl_demo_certificate` is only present in demo mode. This commit updates the test to use `raise_if_not_found=False` and skip gracefully when the demo certificate is not available. The assertion now only runs if the certificate exists, ensuring the test passes consistently both with and without demo data. [RB-231573](https://runbot.odoo.com/odoo/error/231573) Forward-Port-Of: odoo/enterprise#95917