Daily updates from Odoo
Tuesday, October 28, 2025
76 changes
11 changes
Resolved issues and error corrections
This update removes duplicate validation rules for mail link previews that could interfere with database restores between PostgreSQL versions. It helps prevent restore issues for future databases while keeping the existing mail behavior unchanged.
Original PR description
Same as #229274 these constraints are redundant with `required=True` and cause issues when restoring a dump from pg17 to pg18. And much like #229274 this only fixes databases going forward, on existing databases the constraints have to be dropped on the source. Forward-Port-Of: odoo/odoo#233186
This update prevents an accounting process from failing when it encounters an empty value where a number is expected. It improves reliability by avoiding an unnecessary error for users working with accounting entries.
Original PR description
Description of the issue/feature this PR addresses: ValueError: invalid literal for int() with base 10: '' Current behavior before PR: ValueError: invalid literal for int() with base 10: '' Desired behavior after PR is merged: not giving valueerror --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232965
Draft sales orders now keep product lines editable when users return to an order. This prevents clicks on a product line from unexpectedly opening the product record, making it easier to change products or add descriptions.
Original PR description
Versions -------- - saas-18.3+ Steps ----- 1. Create a sales order; 2. add a product that doesn't have an extra description; 3. save & exit view; 4. go back to view; 5. add a description or change the product on the line. Issue ----- Clicking on the product field opens the product record instead of edit mode. Cause ----- It opens the product record because the `canOpen` property is set to `true`. As this is the default value, and isn't getting changed anywhere, the line will always open the product record outside of edit mode. Solution -------- Instead of using OR, check `props.canOpen` AND additional checks. opw-5172115 Forward-Port-Of: odoo/odoo#232861
Quality checks could fail in setups where manufacturing quality is installed without work orders. This change avoids checking a work-order-specific field unless the related module is available, preventing errors when creating or validating quality points.
Original PR description
**Issue:** The attribute operation_id for quality.point is defined in the mrp_workorder module. However, quality_mrp module does not list mrp_workorder in its dependencies. As a result in a system where quality_mrp is installed but mrp_workorder is not, the following error is raised when evaluating the constrain for quality points mesured on Operations. `"'quality.point' object has no attribute 'operation_id'"` **Proposed solution:** Override the constraint in quality_mrp_workorder to include conditions related to operation_id, ensuring that it is only evaluated when the field is available. Forward-Port-Of: odoo/enterprise#97801 Forward-Port-Of: odoo/enterprise#97338
This update fixes an intermittent automated test failure in the barcode module by ensuring the screen has finished updating before checks run. It improves confidence in release validation without changing any customer-facing barcode behavior.
Original PR description
This commit fixes a test that sometimes failed, because we didn't wait for an animationFrame after the macro was complete. As a consequence, there was no guarantee that the form view had been updated before the check. runbot error~226829 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#233153
This update adds a safeguard to ensure changes to a company's phone number do not unintentionally alter employee information. It helps keep employee contact details stable and prevents confusion when company-level contact data is updated.
Original PR description
Added a test to complement the fix made in this PR: https://github.com/odoo/odoo/pull/229010 opw-5072108
This update ensures the website preview and builder-related files are included in automated quality checks. It helps reduce future issues in the website editing experience by catching code problems earlier before release.
Original PR description
[FIX] web: correctly lint website_preview The goal of this commit is to correct the `_eslintignore` file in order for the linting to correctly lint the `website_preview` files. task-5110180 --------------------------------------------------------------------------------------------------------------------------------------------------------- [LINT] html_builder, website: lint builder related files The goal of this commit is to lint the builder related js files. task-5110180
Fixes an issue where certain website editor placeholders could remain visible after content changes were undone. This keeps the page editing experience accurate and prevents confusing stale elements from staying on screen.
Original PR description
invalid Before this commit, the `selectorHas` and `selectorNotHas` conditions of interactions were ignored when calling `stopInteractions` on a sub-element of the interaction target. For example, in…
invalid
Before this commit, the `selectorHas` and `selectorNotHas` conditions of interactions were ignored when calling `stopInteractions` on a sub-element of the interaction target.
For example, in edit mode, adding or removing a node could invalidate `selectorHas`/`selectorNotHas`, but the interaction would not be stopped as expected.
With this commit, when calling `shouldStop` on an interaction, we now check that `selectorHas` and `selectorNotHas` are still valid. If they are not, `shouldStop` returns true so the interaction is properly stopped.
How to reproduce:
- Edit a website page
- Add an Image Gallery snippet
- Remove all images → The `ImageGalleryEdit` interaction activates to display a placeholder allowing the user to add an image
- Perform an undo
Before this commit:
The `ImageGalleryEdit` placeholder remained visible.
After this commit:
The `ImageGalleryEdit` placeholder correctly disappears.
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-prThis change fixes unreliable automated checks in appointment CRM and helpdesk areas when pages reload or redirect. It helps keep validation runs stable, reducing false failures during releases without changing customer-facing behavior.
Original PR description
\* = helpdesk, website_helpdesk ### Issue: - `appointment_crm_forced_staff_user_tour` fails on steps triggering page unload without `expectUnloadPage: true`. - In `helpdesk_search_ticket_on_portal_tour`, a specific step is failing for `helpdesk` but works when `website_helpdesk` is installed, as the step does not trigger the `beforeunload` event in that case. ### Fix: - Added `expectUnloadPage: true` to steps that trigger a page unload. - Introduced `HelpdeskSearchTicketSteps` class with `_searchTickets` so that the step can be overridden in `website_helpdesk`, removing the `expectUnloadPage` property when installed, since no `beforeunload` event is triggered in that case. runbot-[232987](https://runbot.odoo.com/odoo/runbot.build.error/232987)
This update documents an old, unused speaker biography section in the event website builder so its presence is understood and does not cause confusion during maintenance. There is no expected change for users or websites, as the section was already inactive and had no related styling or behavior.
Original PR description
Problem introduced at [1] (see [2]). In stable, this comments the code to explain the dead code presence. In master, that snippet will be removed, as nobody seemed to have missed him for 4+ major versions and its structure is not perfect (overflow hidden...). Thankfully it should not come with any compatibility issue as it was not associated with any JS/CSS). Maybe a new equivalent will be introduced in master later on. [1]: https://github.com/odoo/odoo/commit/b5c87d86cad1aa2b44f805da0b2d6635aeb85b96 [2]: https://github.com/odoo/odoo/pull/68644#discussion_r903721785 task-4084801 Forward-Port-Of: odoo/odoo#233203
The Field Service map task list now shows appointment times as a single readable value instead of splitting them across lines. This makes task schedules easier to scan for field service users without changing the underlying workflow.
Original PR description
### Steps to Reproduce 1. Open Field Service app 2. Navigate to My Tasks -> Map 3. Observe task pins in the left sidebar list 4. Notice time displays like "10:00" break across multiple lines ### Issue The formatted time display in FSM task map pin list items wraps to multiple lines. ### Current Behaviour Time displays like "10:00" break into separate lines. ### Expected Behaviour Time should display on a single line as one readable unit ### Fix Add text-nowrap class to the time display span in FsmTaskMapRenderer template. This prevents line breaks while preserving the existing layout structure. Task - 5079360 Forward-Port-Of: odoo/enterprise#94778
12 changes
Resolved issues and error corrections
This update prevents an accounting screen from showing an error when an expected number field is left empty. It helps users continue their workflow without being blocked by a technical message.
Original PR description
Description of the issue/feature this PR addresses: ValueError: invalid literal for int() with base 10: '' Current behavior before PR: ValueError: invalid literal for int() with base 10: '' Desired behavior after PR is merged: not giving valueerror --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232965
Task times in the Field Service map sidebar now stay on one line and use the proper short time format. This makes scheduled task times easier to read at a glance without changing the existing map layout.
Original PR description
### Steps to Reproduce 1. Open Field Service app 2. Navigate to My Tasks -> Map 3. Observe task pins in the left sidebar list 4. Notice time displays like "10:00" break across multiple lines ### Issue The formatted time display in FSM task map pin list items wraps to multiple lines. ### Current Behaviour Time displays like "10:00" break into separate lines. ### Expected Behaviour Time should display on a single line as one readable unit ### Fix Add text-nowrap class to the time display span in FsmTaskMapRenderer template. This prevents line breaks while preserving the existing layout structure. Task - 5079360
Companies marked with a non-applicable VAT value can now connect to CodaBox using their company registry number instead. This prevents connection issues for Belgian companies that are not subject to VAT and aligns the behavior with companies that leave the VAT field empty.
Original PR description
If a company is not subject to taxes, they may not have a VAT number. In that case, the field can be left empty, such that the Company Registry is used instead for the CodaBox connection. However, the case where "/" (Non Applicable) was used as the VAT number was handled. This commit now handles VAT="/" in the same way it handles no VAT at all by using the company registry as a fallback. The commit also cleans up how the company ID is used to avoid duplicated code by creating a computed field. opw-5164155 Forward-Port-Of: odoo/enterprise#98025
This fix prevents an error when Quality for Manufacturing is used without the Work Orders feature installed. Quality checks can now be configured without the system looking for a field that is only available in another module, improving reliability for affected setups.
Original PR description
**Issue:** The attribute operation_id for quality.point is defined in the mrp_workorder module. However, quality_mrp module does not list mrp_workorder in its dependencies. As a result in a system where quality_mrp is installed but mrp_workorder is not, the following error is raised when evaluating the constrain for quality points mesured on Operations. `"'quality.point' object has no attribute 'operation_id'"` **Proposed solution:** Override the constraint in quality_mrp_workorder to include conditions related to operation_id, ensuring that it is only evaluated when the field is available. Forward-Port-Of: odoo/enterprise#97801 Forward-Port-Of: odoo/enterprise#97338
This update fixes an intermittent automated test failure in the Barcodes app by ensuring the screen has finished updating before the test verifies results. It helps keep quality checks stable and reduces false failures during development and release validation.
Original PR description
This commit fixes a test that sometimes failed, because we didn't wait for an animationFrame after the macro was complete. As a consequence, there was no guarantee that the form view had been updated before the check. runbot error~226829 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#233153
Fixed an issue where website form fields could disappear when their visibility depended on another field whose name included the "|" character. This makes conditional form behavior more reliable and allows businesses to use any characters in form field labels without breaking the form.
Original PR description
Before this commit, after selecting a field containing the char "|" for conditional display, the field on which the condition is set will never appear again. This commit enable the use of any characters in form fields Steps to reproduce the bug: - Add a form - Add two fields (A and B) - Rename the field A with a string that contains "|" - Set the field B visibility to "Visible only if" - Set the field A as the visibility condition for field B (field B visible only if field A contains 'hello', for example) - Save the changes - Complete the field A according to the visibility condition (The second field does not appear) task-3893749 Forward-Port-Of: odoo/odoo#181275
Rating images in Live Chat, Discuss, and Ratings screens now use a transparent background instead of showing an unwanted white box in dark mode. This makes session history and rating views look cleaner and more consistent for users who work with the dark theme.
Original PR description
**Current behavior before PR:** The rating images have an unintended white background in dark mode. **Steps to Reproduce:** - Turn on Dark Mode - Go to livechat - Go to Report > Sessions History **Desired behavior after PR is merged:** This PR fixes the issue by applying a transparent background to rating images through the `img_class` option in image widget. The change is applied to: - discuss.channel (kanban, list, form views) - rating.rating (form, kanban views) --- **Before:** <img width="372" height="202" alt="image" src="https://github.com/user-attachments/assets/d573ab3e-62be-4ab2-9c7f-e39bf97cb542" /> **After:** <img width="394" height="141" alt="image" src="https://github.com/user-attachments/assets/6133c231-c634-4afd-a99f-5440ecfe72be" /> task-[4689867](https://www.odoo.com/odoo/project/1519/tasks/4689867) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215207
This update adjusts internal test expectations after a fix changed how employee calendars are checked when generating work entries. It helps ensure payroll and appointment scheduling tests continue to reflect the correct behavior for employees using different calendar setups.
Original PR description
- adjusted some query counters to account for the extra search in `_attendance_intervals_batch` done by the method `_get_calendar_at` task-id: 5065160 Forward-Port-Of: odoo/enterprise#97948 Forward-Port-Of: odoo/enterprise#96848
This commit https://github.com/odoo/odoo/commit/74109a1b1a5d31fa55b08257f6a9365b0c1758f0 broke the po by not putting the module the term comes from. This resulting in a traceback when installing the language. It also breaks existing database with Arabic and l10n_jo already set. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
This commit https://github.com/odoo/odoo/commit/74109a1b1a5d31fa55b08257f6a9365b0c1758f0 broke the po by not putting the module the term comes from. This resulting in a traceback when installing the language. It also breaks existing database with Arabic and l10n_jo already set. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents an error when users edit the "Terms and conditions" link on a product page in the website shop editor. It improves reliability by correctly handling links whose color comes from standard styling classes.
Original PR description
Problem: On website > shop > product page, when trying to edit the link of "Terms and conditions", a traceback occurs. Cause: When applying changes on "Terms and conditions" in `shop/product`, `ColorPlugin.removeAllColor()` is called on the `a` element. Its color was applied by the `text-muted` class. This case in color removal was not properly handled. Solution: In `getFonts`, consider elements that have those special classes (e.g., `text-muted`) when processing color removal. Steps to reproduce: 1. Open website/shop. 2. Open any product page. 3. Open the editor. 4. Select the "Terms and conditions" text. 5. Click edit in the link popover. 6. Click apply. 7. Traceback occurs. opw-5130016 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229725
This fix keeps placeholder guidance text visible and correctly styled in the report editor after an underlying editor change. It helps users continue editing reports without confusing missing or misplaced hint text.
Original PR description
Since odoo/odoo@b4d96ac60b212224e7e9a4de13e76209f42c7eda the html_editor's hint text attribute has changed This commit just adapts the report's iframe css to take that into account.
This update documents an unused event speaker biography website snippet so future maintenance teams understand why it remains in the stable version. It avoids accidental changes while confirming there is no expected impact for customers because the snippet has not been active or tied to styling or scripts.
Original PR description
Problem introduced at [1] (see [2]). In stable, this comments the code to explain the dead code presence. In master, that snippet will be removed, as nobody seemed to have missed him for 4+ major versions and its structure is not perfect (overflow hidden...). Thankfully it should not come with any compatibility issue as it was not associated with any JS/CSS). Maybe a new equivalent will be introduced in master later on. [1]: https://github.com/odoo/odoo/commit/b5c87d86cad1aa2b44f805da0b2d6635aeb85b96 [2]: https://github.com/odoo/odoo/pull/68644#discussion_r903721785 task-4084801 Forward-Port-Of: odoo/odoo#233203
10 changes
Resolved issues and error corrections
The checkout address test now waits until the relevant page interaction is ready before moving to the billing step. This prevents false failures in automated checks and helps keep the online sales workflow validation stable.
Original PR description
This commit add wait for intreaction to be ready before moving to billing step which render billing container conditionally depending on toggle from interaction. runbot-231718 Forward-Port-Of: odoo/enterprise#98142
Bank reconciliation models now correctly match statement lines when a label rule is set to “Not Contains,” even if some transaction text fields are empty. This helps accounting teams rely on exclusion-based matching rules and reduces manual reconciliation work.
Original PR description
Currently bank reconciliation model match only the label type “Contains” The “not contain” type is not working Steps to reproduce: - Open Accounting Dashboard - Access Bank journal reconciliation models (3dots > Models) - Open a [Model] and set: - Label "Not Contains" "Test" - Add a Bank Statement with any label Issue: [Model] won't match Analysis: This occurs because in case the payment_ref or transaction_details contains a NULL value the ILIKE operations will evaluate to NULL, not TRUE or FALSE. Any other comparison involving NULL value will result in NULL and the whole condition will fail opw-5065006 [Task link](https://www.odoo.com/odoo/project/49/tasks/5065006) Forward-Port-Of: odoo/enterprise#97745
This fixes an error that could occur when setting up quality checks for manufacturing operations in systems without the work order feature installed. The change keeps quality management usable in those configurations by only applying operation-specific checks when the related feature is available.
Original PR description
**Issue:** The attribute operation_id for quality.point is defined in the mrp_workorder module. However, quality_mrp module does not list mrp_workorder in its dependencies. As a result in a system where quality_mrp is installed but mrp_workorder is not, the following error is raised when evaluating the constrain for quality points mesured on Operations. `"'quality.point' object has no attribute 'operation_id'"` **Proposed solution:** Override the constraint in quality_mrp_workorder to include conditions related to operation_id, ensuring that it is only evaluated when the field is available. Forward-Port-Of: odoo/enterprise#97801 Forward-Port-Of: odoo/enterprise#97338
Belgian point of sale configurations no longer show the tip product setting. This prevents businesses in Belgium from seeing or configuring an option that is not applicable to their local compliance flow.
Original PR description
- Hide `tip_product` field in `pos_config` form view when country is Belgium. task-id: 5011427 community PR: https://github.com/odoo/odoo/pull/233162
The AI document sorting wizard now uses option formatting that is consistent with the rest of the system. This helps prevent invalid option handling and reduces the chance of errors when users configure AI document sorting.
Original PR description
Purpose ======= PyJs can parse dictionaries, even if each element does not end with `,`. We didn't use them in ai documents, but for consistency, we now added them. Forward-Port-Of: odoo/enterprise#98166
Fixes an error that occurred when HR signed an offer for an employee who requested extra time off while automatic allocation was enabled. This helps HR teams complete salary package offers reliably without manual workarounds.
Original PR description
- When the employee requested extra time off, and the automatic allocation setting was turned on, signing the offer as the responsible HR caused an error. Task-5022631 Forward-Port-Of: odoo/enterprise#98209 Forward-Port-Of: odoo/enterprise#92663
This update prevents users from directly modifying the database users list in a way that should not be allowed. It helps keep database project records consistent and avoids unintended changes through the user interface.
Original PR description
This commit is the counter part of odoo/odoo#231902 which allows to disable the write action on x2many fields. See [1] for details. [1] https://github.com/odoo/enterprise/pull/94207#discussion_r2378129896 Task~5160367 Forward-Port-Of: odoo/enterprise#97371
This fixes a settings issue where users could be blocked from saving inventory shipping settings after turning off text confirmation. The WhatsApp template is now only required when WhatsApp text confirmation is actually enabled, preventing unnecessary validation errors.
Original PR description
Due to this [commit](https://github.com/odoo/enterprise/commit/fd1799dd8e3e190e894914d0c28d77d709e29eb6), The field ```stock_confirmation_wa_template_id``` is visible only when…
Due to this [commit](https://github.com/odoo/enterprise/commit/fd1799dd8e3e190e894914d0c28d77d709e29eb6), The field ```stock_confirmation_wa_template_id``` is visible only when ```stock_confirmation_type``` is set to whatsapp and ```tock_text_confirmation``` is set to True. However, the field ```stock_confirmation_wa_template_id``` is marked as required whenever ```stock_confirmation_type``` is set to whatsapp, regardless of whether ```stock_text_confirmation``` is enabled. As a result, when saving the record with ```stock_text_confirmation``` unchecked, the required field ```stock_confirmation_wa_template_id``` remains invisible and unset — which causes a missing required field error during record save. Steps to reproduce: [Video](https://drive.google.com/file/d/1XVV4mJjSX_8acDDbv83VtWrbZtYz6Kqg/view) 1. go to settings - inventory - shipping 2. check Text Confirmation , set stock_confirmation_type = whatsapp 3. uncheck Text confirmation 4. save the changes To fix this issue, need to just add condition of ```stock_text_confirmation``` Forward-Port-Of: odoo/enterprise#97200
The Field Service map task list now keeps appointment times such as 10:00 on a single line. This makes the sidebar easier to read and avoids confusing broken time displays for users planning field work.
Original PR description
### Steps to Reproduce 1. Open Field Service app 2. Navigate to My Tasks -> Map 3. Observe task pins in the left sidebar list 4. Notice time displays like "10:00" break across multiple lines ### Issue The formatted time display in FSM task map pin list items wraps to multiple lines. ### Current Behaviour Time displays like "10:00" break into separate lines. ### Expected Behaviour Time should display on a single line as one readable unit ### Fix Add text-nowrap class to the time display span in FsmTaskMapRenderer template. This prevents line breaks while preserving the existing layout structure. Task - 5079360 Forward-Port-Of: odoo/enterprise#94778
The Approvals test setup was adjusted so it no longer creates duplicate approvers when demo data is installed. This keeps automated quality checks stable across environments and helps prevent avoidable test failures during releases.
Original PR description
When running with demo data, the tests `test_compute_request_status` and `test_compute_request_status_with_required` fail with the error: `UniqueViolation: duplicate key value violates unique constraint "approval_approver_unique_request_user"` This happens because the category "Business Trip" (`approvals.approval_category_data_business_trip`) already injects approvers into the approval request. The two failing tests were creating additional approvers for the same users, leading to a UNIQUE constraint violation on (request_id, user_id). This commit resets the request approvers (`record.approver_ids = []`) before adding the test-specific approvers, ensuring the test passes both with and without demo data. [RB-230935](https://runbot.odoo.com/odoo/error/230935) Forward-Port-Of: odoo/enterprise#95897
26 changes
Resolved issues and error corrections
This change removes redundant validation rules in the mail module that could block database restores between PostgreSQL versions. It helps reduce upgrade and recovery issues for future databases, while existing databases may still need a manual cleanup before restoring.
Original PR description
Same as #229274 these constraints are redundant with `required=True` and cause issues when restoring a dump from pg17 to pg18. And much like #229274 this only fixes databases going forward, on existing databases the constraints have to be dropped on the source. Forward-Port-Of: odoo/odoo#233186
This fix prevents an accounting screen or process from failing when it encounters an empty value where a number is expected. It helps users continue their accounting work without seeing an unexpected error message.
Original PR description
Description of the issue/feature this PR addresses: ValueError: invalid literal for int() with base 10: '' Current behavior before PR: ValueError: invalid literal for int() with base 10: '' Desired behavior after PR is merged: not giving valueerror --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232965
Generating the pricelist report no longer crashes when no pricelist exists. Instead, users are told to configure at least one pricelist first, making the issue clear and easier to resolve.
Original PR description
Current behavior before PR: Generating the Pricelist Report raises a JavaScript error — Cannot read properties of undefined (reading 'id') — when there is no pricelist in the database. Desired behavior after PR is merged: Instead of crashing, the system now validates the presence of at least one pricelist. If none is found, it raises a clear UserError message: “Please configure at least one Pricelist before generating the report.” This prevents the crash and guides the user to properly configure pricelists before running the report. Issue : https://github.com/odoo/odoo/issues/233393 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Generating the pricelist report now checks whether at least one pricelist exists before continuing. If none is configured, users see a clear message explaining what needs to be set up instead of encountering a confusing crash.
Original PR description
Current behavior before PR: Generating the Pricelist Report raises a JavaScript error — Cannot read properties of undefined (reading 'id') — when there is no pricelist in the database. Desired behavior after PR is merged: Instead of crashing, the system now validates the presence of at least one pricelist. If none is found, it raises a clear UserError message: “Please configure at least one Pricelist before generating the report.” This prevents the crash and guides the user to properly configure pricelists before running the report. Issue : https://github.com/odoo/odoo/issues/233393 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures certain maintenance commands run without starting or configuring the web server. It prevents unnecessary warning messages, making command-line operations quieter and clearer for administrators.
Original PR description
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
This fix ensures certain service transactions involving customers in the Canary Islands are assigned the correct Spanish tax reporting key. It helps businesses produce more accurate TicketBAI electronic tax records and reduces the risk of reporting errors.
Original PR description
We check that if the partner is from Canary Islands and we put a no sujeto por reglas de localizacion tax (so for services) we put the 08 key. opw-5099749 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 AI document sorting wizard was updated so its options are formatted consistently and can be parsed correctly. This helps prevent errors when users configure AI-based document sorting, with no expected change to normal workflows.
Original PR description
Purpose ======= PyJs can parse dictionaries, even if each element does not end with `,`. We didn't use them in ai documents, but for consistency, we now added them.
This fixes a settings issue where users could not save inventory shipping settings after turning off text confirmation for WhatsApp. The WhatsApp template is now only required when text confirmation is enabled, preventing an unnecessary validation error.
Original PR description
Due to this [commit](https://github.com/odoo/enterprise/commit/fd1799dd8e3e190e894914d0c28d77d709e29eb6), The field ```stock_confirmation_wa_template_id``` is visible only when…
Due to this [commit](https://github.com/odoo/enterprise/commit/fd1799dd8e3e190e894914d0c28d77d709e29eb6), The field ```stock_confirmation_wa_template_id``` is visible only when ```stock_confirmation_type``` is set to whatsapp and ```tock_text_confirmation``` is set to True. However, the field ```stock_confirmation_wa_template_id``` is marked as required whenever ```stock_confirmation_type``` is set to whatsapp, regardless of whether ```stock_text_confirmation``` is enabled. As a result, when saving the record with ```stock_text_confirmation``` unchecked, the required field ```stock_confirmation_wa_template_id``` remains invisible and unset — which causes a missing required field error during record save. Steps to reproduce: [Video](https://drive.google.com/file/d/1XVV4mJjSX_8acDDbv83VtWrbZtYz6Kqg/view) 1. go to settings - inventory - shipping 2. check Text Confirmation , set stock_confirmation_type = whatsapp 3. uncheck Text confirmation 4. save the changes To fix this issue, need to just add condition of ```stock_text_confirmation```
This fix prevents users from directly editing linked database users in the database project view. It helps keep database user information controlled through the intended workflow and reduces the risk of accidental changes.
Original PR description
This commit is the counter part of odoo/odoo#231902 which allows to disable the write action on x2many fields. See [1] for details. [1] https://github.com/odoo/enterprise/pull/94207#discussion_r2378129896 Task~5160367
Sales teams can now click product lines on draft sales orders to edit the product or description instead of being taken to the product record. This removes an unnecessary interruption and makes order adjustments faster before confirmation.
Original PR description
Versions -------- - saas-18.3+ Steps ----- 1. Create a sales order; 2. add a product that doesn't have an extra description; 3. save & exit view; 4. go back to view; 5. add a description or change the product on the line. Issue ----- Clicking on the product field opens the product record instead of edit mode. Cause ----- It opens the product record because the `canOpen` property is set to `true`. As this is the default value, and isn't getting changed anywhere, the line will always open the product record outside of edit mode. Solution -------- Instead of using OR, check `props.canOpen` AND additional checks. opw-5172115 Forward-Port-Of: odoo/odoo#232861
This fix prevents a manufacturing planning test from creating a duplicate purchase order line when demo data is used in different time zones. It makes the automated check more reliable, helping avoid false test failures without changing normal business behavior.
Original PR description
The `test_replenish` test was failing with demo data because replenishment created an extra Purchase Order line. The `_run_buy` search domain included `date_planned_mps` with an equality check on a datetime stored in UTC. With demo data loaded in a non-UTC timezone (e.g. Europe/Brussels), the forecast date was converted to 2025-07-31 22:00:00 UTC, which did not match the existing PO at 2025-08-01 00:00:00 UTC. As a result, no PO was found and a duplicate was created. Changes: Set the test user timezone to UTC so that `date_planned_mps` comparisons are stable when using demo data. This ensures replenishment reuses the existing PO instead of creating a duplicate. runbot-230425
This fixes a timezone-related issue that could cause a manufacturing planning test to create a duplicate purchase order line when demo data was loaded. The change makes the test environment consistent, helping ensure reliable validation without affecting day-to-day business workflows.
Original PR description
The `test_replenish` test was failing with demo data because replenishment created an extra Purchase Order line. The `_run_buy` search domain included `date_planned_mps` with an equality check on a datetime stored in `UTC`. With demo data loaded in a non-UTC timezone (e.g. Europe/Brussels), the forecast date was converted to `2025-07-31 22:00:00 UTC`, which did not match the existing PO at `2025-08-01 00:00:00 UTC`. As a result, no PO was found and a duplicate was created. Changes: Set the test user timezone to UTC so that `date_planned_mps` comparisons are stable when using demo data. This ensures replenishment reuses the existing PO instead of creating a duplicate. [runbot-230425](https://runbot.odoo.com/odoo/error/230425)
This update fixes an intermittent automated test failure in the Barcodes area by ensuring the screen has finished updating before the test checks the result. It helps keep quality checks stable and reduces false alarms during development.
Original PR description
This commit fixes a test that sometimes failed, because we didn't wait for an animationFrame after the macro was complete. As a consequence, there was no guarantee that the form view had been updated before the check. runbot error~226829 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#233153
This fix prevents an error when manufacturing quality checks are used without the work order feature installed. It keeps quality point validation working reliably by only checking work-order-specific details where that information exists.
Original PR description
**Issue:** The attribute operation_id for quality.point is defined in the mrp_workorder module. However, quality_mrp module does not list mrp_workorder in its dependencies. As a result in a system where quality_mrp is installed but mrp_workorder is not, the following error is raised when evaluating the constrain for quality points mesured on Operations. `"'quality.point' object has no attribute 'operation_id'"` **Proposed solution:** Override the constraint in quality_mrp_workorder to include conditions related to operation_id, ensuring that it is only evaluated when the field is available. Forward-Port-Of: odoo/enterprise#97801 Forward-Port-Of: odoo/enterprise#97338
This fixes an issue where saving departure notes for an archived employee could fail because the system tried to track a type of rich-text field that is not supported for change tracking. HR users can now update this information without encountering an error.
Original PR description
Html fields are not part of the supported fields for tracking, see https://github.com/odoo/odoo/blob/11289fd128827587f6ed3fc5beed28f461c0e039/addons/mail/models/mail_tracking_value.py#L49 This causes a traceback when saving the `departure_description` on an archived employee. Added in https://github.com/odoo/odoo/commit/aa4d13b89b4497d2e5b33faa49ad86e0788782a2 Previous related fix: 9b723e2591224f2b563924d3b3dfe27ab909b7d0 opw-5140525 Forward-Port-Of: odoo/odoo#230332
This fixes an error that could prevent respondents from completing mandatory matrix questions when the question description included a table. Surveys with richer descriptions now work reliably without interrupting the response process.
Original PR description
A conflict occurs if a matrix question is set to "Mandatory answer" (questionRequired = True) and a table is also added to its description. The issue is that when the system evaluates a required matrix, it gets the subQuestionsIds by looking for the first table within the question's wrapper. If a table exists in the description, the system incorrectly tries to retrieve the IDs from that table. This action throws a traceback because the descriptive table does not contain any sub-question data. This commit fixes the issue by being more specific when looking for the table containing the subQuestionsIds. It adds a specific class to this table and uses it in the selector. An attribute selector, like 'table[data-sub-questions]', could also have been used as an alternative. opw-4931881 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229909
German e-invoices now use the parent company or contact name when an invoice address has no separate contact name. This prevents labels like “Invoice Address” from appearing in XML invoice files, keeping electronic documents consistent with the PDF invoice.
Original PR description
**Steps to reproduce:** - Install Contacts, Accounting and l10n_de - Switch to a German company (e.g. DE Company) - Go to Contacts - Create a German contact with "XRechnung CIUS" as electronic format…
**Steps to reproduce:** - Install Contacts, Accounting and l10n_de - Switch to a German company (e.g. DE Company) - Go to Contacts - Create a German contact with "XRechnung CIUS" as electronic format - For this contact, create an "Invoice Address" without "Contact Name" - Create an invoice with the invoice address as customer - Confirm the invoice - Generate "XRechnung" via "Send & Print" button **Issue:** In the generated ULB XML and in factur-x.xml file embedded in the PDF, the customer name contains the mention "Invoice Address", which doesn't appear on the PDF of the invoice. **Cause:** The used invoice address has no name, so its "display_name" is build from the name of the parent contact and the type of the child contact (i.e. Invoice Address). **Solution:** Only use "display_name" of a contact if "name" is set. Otherwise fall back on "display_name" of the commercial partner. opw-5159291 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233128 Forward-Port-Of: odoo/odoo#232819
This change fixes a failing automated test around hiding already paid ecommerce orders from Point of Sale. It removes an unnecessary payment provider dependency from the test setup, helping keep validation reliable without changing customer-facing behavior.
Original PR description
The code of the payment provider is not relevant to the test_ecommerce_paid_order_is_hidden_in_pos test, and pos_sale doesn't have payment_custom in the dependencies. It caused tests to fail so I removed it. Runbot Build Error-233461 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue that stopped users from generating a QR code in the expense Stripe top-up wizard. The wizard now uses the correct contact information, allowing the top-up process to continue as expected.
Original PR description
Fix a bug preventing from creating a qr code in the topup wizard due to a res.partner.bank being used instead of a res.partner
This fixes the thousand separator used for Slovenian in Odoo's base language settings. Slovenian users will now see large numbers formatted correctly and consistently across the system.
Original PR description
TASK-ID: 5183221 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where approval-related automated tests could fail when demo data was installed. The change keeps test setup clean so quality checks run reliably across different environments.
Original PR description
When running with demo data, the tests `test_compute_request_status` and `test_compute_request_status_with_required` fail with the error: `UniqueViolation: duplicate key value violates unique constraint "approval_approver_unique_request_user"` This happens because the category "Business Trip" (`approvals.approval_category_data_business_trip`) already injects approvers into the approval request. The two failing tests were creating additional approvers for the same users, leading to a UNIQUE constraint violation on (request_id, user_id). This commit resets the request approvers (`record.approver_ids = []`) before adding the test-specific approvers, ensuring the test passes both with and without demo data. [RB-230935](https://runbot.odoo.com/odoo/error/230935)
A payroll accounting test for UAE localization was updated so its test user always has the needed payroll permissions. This prevents environment-specific test failures and helps keep validation reliable whether demo data is installed or not.
Original PR description
The test `TestPayslipValidation` in `l10n_ae_hr_payroll_account` was failing on runbot without demo data:
AccessError: You are not allowed to access 'HR Work Entry Type'
This happens because the test user does not belong to a group with access to `hr.work.entry.type`. With demo data, the user inherits the necessary rights, but without demo data it fails.
This commit explicitly grants the test user the `hr_payroll.group_hr_payroll_user` group to ensure consistent access across environments.
[RB-232462](https://runbot.odoo.com/odoo/error/232462)This change strengthens an automated web client test that could fail randomly due to timing in URL state updates. It reduces false test failures without changing normal user behavior, helping keep the release validation process reliable.
Original PR description
Before this commit, the test sometimes failed because the resulting url was `/odoo/action-100/1/action-200/1` whereas it should have been `/odoo/action-100/1/action-200`. The issue occurs because the…
Before this commit, the test sometimes failed because the resulting url was `/odoo/action-100/1/action-200/1` whereas it should have been `/odoo/action-100/1/action-200`. The issue occurs because the `pushState` method of the router by default batches its calls to the next tick (setTimeout(0)). As a consequence, in the test, the actions were sometimes executed too quickly s.t. the state of the different actions were mixed. First, this is an obvious issue of the way the state of the router is updated by the action service, which is highlighted by the test. Second, this issue is very unlikely (not to say impossible) to be reproduced in practice, as it would require the user to click to quickly that more than one action could be executed in the same tick. For those reasons, in 19, we decided to simply strenghten the test such that it no longer fails. In master, we will use the `sync` option of pushState to push the state directly when the controller is mounted. That change being a bit tricky and prone to unexpected effets, we prefered not to do it in stable. runbot error~233361 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 Field Service map task list now keeps appointment times such as "10:00" on one line. This makes task pins easier to scan and prevents confusing line breaks in the sidebar.
Original PR description
### Steps to Reproduce 1. Open Field Service app 2. Navigate to My Tasks -> Map 3. Observe task pins in the left sidebar list 4. Notice time displays like "10:00" break across multiple lines ### Issue The formatted time display in FSM task map pin list items wraps to multiple lines. ### Current Behaviour Time displays like "10:00" break into separate lines. ### Expected Behaviour Time should display on a single line as one readable unit ### Fix Add text-nowrap class to the time display span in FsmTaskMapRenderer template. This prevents line breaks while preserving the existing layout structure. Task - 5079360 Forward-Port-Of: odoo/enterprise#94778
This update documents why an unused event speaker biography website snippet remains present in this stable version. It helps avoid confusion for maintainers while keeping existing websites unaffected, since the inactive snippet has no related styling or behavior.
Original PR description
Problem introduced at [1] (see [2]). In stable, this comments the code to explain the dead code presence. In master, that snippet will be removed, as nobody seemed to have missed him for 4+ major versions and its structure is not perfect (overflow hidden...). Thankfully it should not come with any compatibility issue as it was not associated with any JS/CSS). Maybe a new equivalent will be introduced in master later on. [1]: https://github.com/odoo/odoo/commit/b5c87d86cad1aa2b44f805da0b2d6635aeb85b96 [2]: https://github.com/odoo/odoo/pull/68644#discussion_r903721785 task-4084801 Forward-Port-Of: odoo/odoo#233203
Rating images in Live Chat and related rating views now use a transparent background instead of showing an unintended white box in dark mode. This improves visual consistency and readability for users working with session history and rating screens.
Original PR description
**Current behavior before PR:** The rating images have an unintended white background in dark mode. **Steps to Reproduce:** - Turn on Dark Mode - Go to livechat - Go to Report > Sessions History…
**Current behavior before PR:** The rating images have an unintended white background in dark mode. **Steps to Reproduce:** - Turn on Dark Mode - Go to livechat - Go to Report > Sessions History **Desired behavior after PR is merged:** This PR fixes the issue by applying a transparent background to rating images through the `img_class` option in image widget. The change is applied to: - discuss.channel (kanban, list, form views) - rating.rating (form, kanban views) --- **Before:** <img width="372" height="202" alt="image" src="https://github.com/user-attachments/assets/d573ab3e-62be-4ab2-9c7f-e39bf97cb542" /> **After:** <img width="394" height="141" alt="image" src="https://github.com/user-attachments/assets/6133c231-c634-4afd-a99f-5440ecfe72be" /> task-[4689867](https://www.odoo.com/odoo/project/1519/tasks/4689867) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231919 Forward-Port-Of: odoo/odoo#215207
13 changes
Resolved issues and error corrections
This fix improves the mobile website preview by keeping the temporary loading view visually consistent during page navigation. It prevents mismatched or overlapping scrollbars, making the preview experience cleaner for website editors.
Original PR description
### [FIX] website: copy the whole document to fallback iframe Since da85d7f8f39f43bd21603b40f357dfc572036d27, the style in head and the body of the website preview are copied to the fallback iframe's…
### [FIX] website: copy the whole document to fallback iframe Since da85d7f8f39f43bd21603b40f357dfc572036d27, the style in head and the body of the website preview are copied to the fallback iframe's document. This did not copied the attributes on the `html` node, which somtimes impacted the appearance. With this commit, the whole document is copied to the fallback iframe. Steps to reproduce: - Activate "Mobile preview" when viewing the website - Go to a page that is long enough for a scrollbar to appear - Navigate to another page - Bug: During the transition, the fallback is shown, and its scrollbar is wider than the one of the page that was shown just before task-5212287 ### [FIX] website: remove content of fallback iframe after load Since commit 7b19831e1c624b483008feb526ba773ec8b23009, an fallback iframe is shown behind the website preview to avoid flicker on navigation. Since commit 3036c7dc4720a88f2717b96a29d45d923eb6ec75, the preview for mobile has some transparency on its scrollbar. Thus the part of the fallback iframe behind the scrollbar when previewing mobile was slightly visible. This commit fixes it by removing the fallback iframe's content after the website has loaded (and the fallback is not needed anymore). Steps to reproduce: - On website, activate "Mobile preview" - Navigate to a page long enough to have a scrollbar - Navigate to another page long enough to have a scrollbar - Scroll a bit - Bug: The scrollbar of the fallback is slightly visible task-5212287
This fix restores the correct account used for rounding differences in the French accounting localization. It corrects accounts that had been changed by mistake and ensures rounding entries are classified consistently with the intended accounting setup.
Original PR description
These accounts were changed by mistake. Even more, they're of the wrong type. Re-add account to be consistent with 758 opw-5180702 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix updates how website appointment and rental snippets load their supporting assets, aligning them with the newer platform mechanism. It helps keep these website components compatible and reliable after platform changes, without changing their visible behavior for users.
Original PR description
See https://github.com/odoo/odoo/pull/104836 task-2963840 Forward-Port-Of: odoo/enterprise#35153
This change adjusts rental-related automated tests to investigate and address a failure seen in the shared runbot environment but not locally. It helps improve confidence that rental workflows can be validated consistently before releases.
This fixes an issue where the Point of Sale navigation bar no longer showed the connection status for hardware devices using a proxy. Store staff can again see whether connected devices such as printers or other PoS hardware are available, helping them spot setup or connectivity problems sooner.
Original PR description
Description of the issue/feature this PR addresses: The presence of proxy status of hardware devices depends conditionally on pos.config.use_proxy in template of NavBar. However, use_proxy was removed in [PR 51000](https://github.com/odoo/enterprise/pull/51000) and [PR 142566](https://github.com/odoo/odoo/pull/142566). As a consequence, the proxy status is never shown in the NavBar of odoo 18.0. It's already fixed in odoo 19.0 Current behavior before PR: ProxyStatus is not displayed in PoS NavBar even if proxy is used for hardware devices. Desired behavior after PR is merged: ProxyStatus is displayed in PoS NavBar depending on proxy configuration (useProxy() of pos_store.js). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes the website wishlist test start from an empty wishlist before continuing. It helps prevent random test failures, improving confidence in the stability of the online shop experience without changing customer-facing behavior.
Original PR description
Add a step to make sure the wishlist is empty before continuing the tour runbot-229616
This commit is a follow-up of this commit [[1]]. The aim of this commit is improving the Finnish translations for the localization. no task id Co-authored-by: [sahak-fin](https://github.com/sahak-fin) <sahak@odoo.com> [1]: https://github.com/odoo/odoo/commit/d0017410646500928bf8fe08077f21569c1fa47e --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
This commit is a follow-up of this commit [[1]]. The aim of this commit is improving the Finnish translations for the localization. no task id Co-authored-by: [sahak-fin](https://github.com/sahak-fin) <sahak@odoo.com> [1]: https://github.com/odoo/odoo/commit/d0017410646500928bf8fe08077f21569c1fa47e --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents SAF-T general ledger reporting from failing when an accounting entry has no partner assigned. It improves report reliability for businesses that need compliant accounting exports.
Original PR description
### Issue: After #95804 , some of the code was improved but the consideration for partner_id being None was not expected. To fix this issue, we add partner_id on the domain. OPW-5177365
This fixes how Swedish payment files distinguish local BBAN-style accounts from IBAN accounts. It prevents IBAN payment batches from being incorrectly treated as Swedish local account payments when account type details are not provided.
Original PR description
The method `_is_se_bban` is supposed to flag if payments are bban or iban. But since 8d77c0442d7912880c5da5976c92b24d3f9885ca,
the method returns True for batch of iban payments when you don't provide the `partner_acc_type` params, because
`len({'bban_se', 'plusgiro', 'bankgiro', *(partner_acc_type or {})}) == 3`
is always True if `partner_acc_type` is None.
This commit fix that behaviour, by replacing the empty set by `{'iban'}`, meaning the second condition will always be
False when `partner_acc_type` is None.
This bug has been found by failing runbot tests (error: 233465)
no-taskThe Tasks button on sales orders now preserves the user's language and other navigation settings when opening related tasks. This prevents menu labels from unexpectedly switching back to English for users working in another language.
Original PR description
Repro:
- Activate any language different than english
- Create a service product with create Project & Task
- Create a sales order with the product
- Navigate with smart buttons Project > Tasks > Activate Top Menu
- All good
- Now navigate directly to Tasks from the sales order
- Top Menu is in English
Issue:
- The issue here is the context language being lost due to context overriding in the code.
Fix:
- In this commit, I have updated the method from `with_context({'active_id': self.id})` to
`with_context(active_id=self.id)`. This fix ensures that the previous context is retained.
opw-5160373
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prUsers can now update customer statement email templates even after removing all recipients. This prevents an error that previously interrupted the sending workflow and helps keep accounting communications reliable.
Original PR description
Currently, an error occurs if the recipients of the statement report are removed and the user tries to update the email template. **Steps to Reproduce:** 1. Install Accounting. 2. Customers (list view) > select any record > Actions > Customer Statement > Send. 3. Remove recipients and try to update the email template. **Error:** `KeyError - False` **Cause:** The system tries to fetch mail field values from an empty recipient list, leading to a KeyError. **Fix:** This commit recomputes the recipient partners before updating the email subject and body from the template. sentry-6918345730
This update documents an unused website event speaker biography snippet so its presence is understood and does not cause confusion during maintenance. It has no expected impact on website behavior or compatibility because the snippet was not actively supported by related styling or scripts.
Original PR description
Problem introduced at [1] (see [2]). In stable, this comments the code to explain the dead code presence. In master, that snippet will be removed, as nobody seemed to have missed him for 4+ major versions and its structure is not perfect (overflow hidden...). Thankfully it should not come with any compatibility issue as it was not associated with any JS/CSS). Maybe a new equivalent will be introduced in master later on. [1]: https://github.com/odoo/odoo/commit/b5c87d86cad1aa2b44f805da0b2d6635aeb85b96 [2]: https://github.com/odoo/odoo/pull/68644#discussion_r903721785 task-4084801 Forward-Port-Of: odoo/odoo#233203
This change corrects how the Peppol partner list view is connected so it uses the version that already includes the required electronic invoicing information. This helps prevent view loading issues for companies using Peppol-related accounting features.
Original PR description
Currently the following view inherits from `base.view_partner_tree`: `res_partner_form_account_peppol`. This view contains xpath expressions based on the `peppol_endpoint` field. But the view in `base` does not include the field yet. It is added in module `account_edi_ubl_cii`. This commit changes the inheritance to be from the equivalent view in `account_edi_ubl_cii` instead. task-4925169 Forward-Port-Of: odoo/odoo#231637
4 changes
Resolved issues and error corrections
The Generate Pricelist Report action no longer crashes when no pricelist has been created. Instead, users see a clear error message explaining that a pricelist is needed, helping them resolve the setup issue without technical support.
Original PR description
Description of the issue/feature this PR addresses: When triggering the “Generate Pricelist Report” server action, an OwlError occurred if no pricelist record was defined in the database. This happened because the code attempted to access ctx.selectedPricelist.id while the pricelist context was undefined. Current behavior before PR: The system raises an OwlError when clicking “Generate Pricelist Report” if no pricelist exists. The user cannot open the report without manually creating a pricelist first. Desired behavior after PR is merged: A check ensures that a valid pricelist exists before generating the report. If no pricelist is found, a user-friendly error message is shown instead of a crash. Prevents the undefined context error on the client side. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Sales pricelist report now checks whether a pricelist exists before opening. If none is available, users see a clear message instead of a system error, helping them understand what setup is needed.
Original PR description
Description of the issue/feature this PR addresses: When triggering the “Generate Pricelist Report” server action, an OwlError occurred if no pricelist record was defined in the database. This happened because the code attempted to access ctx.selectedPricelist.id while the pricelist context was undefined. Current behavior before PR: The system raises an OwlError when clicking “Generate Pricelist Report” if no pricelist exists. The user cannot open the report without manually creating a pricelist first. Desired behavior after PR is merged: A check ensures that a valid pricelist exists before generating the report. If no pricelist is found, a user-friendly error message is shown instead of a crash. Prevents the undefined context error on the client side. https://github.com/odoo/odoo/issues/180247 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A minor test setup issue was fixed in the Project Timesheets Holidays module. This helps ensure time off and public holiday calculations are validated using the right user context, reducing the risk of future regressions.
Original PR description
In the 'test_timesheet_time_off_including_public_holiday' test case, 'employee' was mistakenly passed to 'with_user'. This commit replaces 'employee' with 'user' for consistency. task-4809916
This change corrects how Peppol-related partner screens build on existing accounting views. It prevents upgrade-related errors when moving from Odoo 16.0 to 17.0 with the Peppol module backported, improving reliability without changing user-facing behavior.
Original PR description
Currently the following views inherit from `base.view_partner_tree`: - `res_partner_form_account_peppol` - `res_partner_view_tree` The views mentioned about contain xpath expressions based on the `ubl_cii_format` field. But the view in `base` does not include the field yet. It is added in module `account_edi_ubl_cii`. This commit changes the inheritance to be from the equivalent views in `account_edi_ubl_cii` instead. Otherwise there is an error in a test when upgrading from 16.0 to 17.0 with the backported `account_peppol` to 16.0. task-4925169