Daily updates from Odoo
Wednesday, July 23, 2025
73 changes
41 changes
Resolved issues and error corrections
This fix makes an automated Discuss test wait for the app and messages to fully load before checking whether a chat bubble appears. It reduces random test failures in Odoo's build system, helping keep releases and maintenance work more reliable without changing user-facing behavior.
Original PR description
Before this commit, discuss test "Show conversations with new message in chat hub (outside of discuss app)" failed non-deterministically on runbot with the following error: ``` Failed to find 0 of…
Before this commit, discuss test "Show conversations with new message in chat hub (outside of discuss app)" failed non-deterministically on runbot with the following error: ``` Failed to find 0 of ".o-mail-ChatBubble[name='Dumbledore']" (Timeout of 3 seconds). Found 1 instead. ``` The test checks that new conversations spawn in chat hub on new message when outside of discuss app. At some point, it opens discuss app and then simulate a user posting a new message. When leaving the discuss app we should not expect a chat bubble. The error above says that there's actually a chat bubble when there shouldn't be. The `await openDiscuss()` gives the impression that this waits enough time for discuss being open, but this only awaits the action service doAction() method, which doesn't necessarily mean the client action UI is fully loaded and store has exact flag `discuss.isActive`, which is essential for a new message posted being considered inside the discuss app. This commit fixes the issue by ensuring discuss app is loaded after `openDiscuss()` with `[data-active]`: this data attribute matches the flag `discuss.isActive` which is set reactively from rendering of `discuss_client_action`. Also the handling of chat window / bubble to open is handled with bus notification "discuss.channel/new_message". This is no the same bus notification that changes the counter (`mail.record/insert`), so asserting presence of counter in discuss sidebar doesn't mean the handling of chat window / bubble to open has been performed. Test had race condition to open chat bubble just after openFormView. This commit fixes it by opening the conversation in discuss app and awaiting message is loaded. This should give enough confidence that logic to auto-open chat window / bubble has been performed and decided to not open the chat window / bubble as expected. Fixes runbot-error-230138 Forward-Port-Of: odoo/odoo#220145
This fixes an issue where some template items could be skipped when a conditional section appeared alongside a comment. It helps ensure pages and documents render consistently as intended.
Original PR description
Forward-Port-Of: odoo/odoo#212159
Quote PDFs now correctly exclude documents that were removed from the quotation template after being selected in the quote builder. This prevents outdated or unintended header documents from being shown to customers, keeping generated quotations consistent with the current template setup.
Original PR description
## Version 18.0+ ## Issue On a quotation setup with a template, when a document is selected in the quote builder and then deleted from the template, it still appears when rendering the quote PDF. ## Steps to reproduce - Create a new quotation template with a header document - Create a new quote using the quotation template: - Under the 'Quote Builder' tab, select the header document - On the quotation template, delete the header document - Come back to the quote - *(Optional: check the 'Quote Builder' tab - it should be empty)* - Print the PDF: - The header appears on the document opw-4712958 Forward-Port-Of: odoo/odoo#219089 Forward-Port-Of: odoo/odoo#213206
The website editor's gradient color picker now correctly reads gradients that use hexadecimal color values, preventing blank previews and errors when customizing button fill colors. This helps users reliably adjust website styling without interruptions.
Original PR description
Gradient picker's parsing can only cope with rgb(a) format for its colors. In some cases the gradient value is expressed with `#rrggbbaa` which is not recognized and leads to errors. This commit standardizes the gradient value before trying to parse it. Steps to reproduce: - Edit a website page - Select a button - Edit button - Change "Fill Color" - Go to "Gradient" tab - Click on "Custom" => Preview range rectangle is empty, and errors are thrown when trying to pick a color. task-4367641
This fix adds missing report name translations for local document types in Argentina, Chile, Ecuador, and Peru. It helps users in these countries see the correct localized names on reports and documents, reducing confusion in day-to-day accounting workflows.
Original PR description
opw-4659964 opw-4947238 opw-4953184 Forward-Port-Of: odoo/odoo#219889
The main task list in Project is no longer directly editable, restoring the behavior users had in version 18. This helps prevent accidental task changes or quick task creation from a view that is mainly used for reviewing work.
Original PR description
Before this commit, the list view of tasks were editable as it is the case for the list view of subtasks displayed in the task form view. However, in most of the case, the main list view of tasks are just used to see the tasks and not really quickly create tasks. This commit makes the main list view of tasks readonly to keep the behavior we had in version 18.
The website builder’s font family selector has been corrected so users can more clearly manage selected or inherited fonts. Reset and remove actions now use distinct, responsive buttons, reducing confusion when customizing website typography.
An automated website editor test was updated to match recent changes in the website builder's page structure. This helps keep quality checks reliable and reduces false test failures during development.
Original PR description
This commit adapts the test_admin_tour_rte_translator test, which was broken due to DOM structure changes in the new website builder. Enterprise PR: https://github.com/odoo/enterprise/pull/90764
This update limits a behind-the-scenes cursor handling adjustment to icons placed in paragraph-like content areas. It prevents unwanted changes in other content blocks, such as alert snippets, helping the editor behave more predictably for users.
Original PR description
Description of the issue this PR addresses: Commit [1] added "\uFEFF" around icons to improve cursor movement. But it caused unintended side-effects in non-paragraph contexts (e.g., alert snippets). This commit confines the "\uFEFF" insertion to icons that are within a paragraph related element or a base container. [1]: https://github.com/odoo/odoo/commit/4c2e5925824b9bcb7bb4bcddf4aceb464c6551ff task-4942953 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Closing the link editing panel with the Escape key now properly saves link changes to the editor history. This prevents users from losing or unexpectedly reverting link edits when using undo or redo after closing the panel.
Original PR description
Closing the link tools with escape did not add a step in th history, and did not clean the change in the document. To be consistent with the click outside of th popover, pressing escape commit the changes to history. Steps to reproduce: - Select text - Click on "Add a link" - Type `#` (it create a link in the document) - Press escape to close the suggested links - Press escape to close the link tools - Bug: The link is still there, but no steps were added in the history: - undo or redo immediately: the modifications to the link are lost - edit then undo: the modifications to the link are undone as well task-4954131
Creating a user from an employee with an invalid work email no longer triggers a system error. This improves reliability for HR staff by handling invalid email data more safely during user creation.
Original PR description
A traceback occurs when the employee's work email is invalid and a user is created via the Create User action. Steps to reproduce the error: - Install ``hr`` module - Create a new employee > Add a name > Work Email: test > Save - Actions > Create User > Confirm Traceback: ``` NotNullViolation null value in column 'login' of relation 'res_users' violates not-null constraint ``` https://github.com/odoo/odoo/blob/af701b3e5bd9106c6ccea5b4a59b9e79424b3a26/addons/hr/models/hr_employee.py#L360-L370 When an employee's work email is invalid, ``tools.email_normalize(employee.work_email)`` returns ``False``. As a result, the ``login`` field becomes ``False``. So, Attempting to create a user with a ``False login`` value leads to the above traceback. sentry-6685198779 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214761
Users can now remove text from a selected table cell in the HTML editor by pressing Backspace. This fixes an editing issue that made table content harder to correct and improves reliability when working with tables.
Original PR description
**Current behavior before PR:** Steps to reproduce: - Add a 3x3 table - Type something any cell. - Select that cell using triple mouse click. - Press backspace, the text is not removed. This issue occurs because, in the `onMousedown` method, the cursor is positioned at the beginning of the cell content. To delete the cell’s text, the text must be selected. Since the cursor remains at the start of the text, pressing Backspace does not remove any content. **Desired behavior after PR:** Now, cell text is getting removed when pressing backspace. task-4941622 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes an automated website builder test more stable by waiting for the right process to finish instead of relying on timing assumptions. It helps reduce false test failures, supporting smoother validation and more reliable releases without changing user-facing behavior.
Original PR description
Commit [1] fixed the test "BuilderColorPicker with action “customizeWebsiteColor” is correctly displayed". This commit is a further effort to make it even more robust by waiting for a deferred promise instead of the exact number of ticks needed. [1]: https://github.com/odoo/odoo/commit/0b9b1a041a2a3bb218a5b518d7d397df7690b398 runbot-229604 runbot-229686
The time off warning label no longer appears when users message themselves or interact in AI chats. This avoids confusing users with their own absence notice in conversations where it is not useful.
Original PR description
This commit removes the holiday warning label from chats, when the correspondent is the user themselves. Basically when the user is sending a message to themselves, or with an AI chat, the holiday label (for their own holiday) will not be present in the chat. Task-4895064 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Changing the background color of a website shape no longer removes its background image. This keeps edited website sections visually intact and prevents users from unexpectedly losing their chosen shape styling.
Original PR description
To reproduce the issue: - Open Website and start editing; - Drop any block snippet and set a background's shape; - Change shape's background color (2nd colorpicker in the "Colors" option); => The shape is removed. It happens because the color plugin sets background-image property to "none", which shouldn't be the case. This commit follows the [html_builder refactoring]. Related to task-4367641 [html_builder refactoring]: https://github.com/odoo/odoo/commit/9fe45e2b7ddb
Report layouts now handle long units of measure more gracefully by keeping quantities on one line while allowing long unit names to wrap. This prevents long unit labels from squeezing or cropping other report columns, improving readability on invoices, sales, delivery, and stock reports.
Original PR description
*: l10n_gcc_invoice,l10n_it_stock_ddt,sale,stock,web [1]: https://github.com/odoo/odoo/commit/344bdb1ed4cecdaef007200c011f87e58e36c87d Issue: [Commit](https://github.com/odoo/odoo/commit/344bdb1ed4cecdaef007200c011f87e58e36c87d) introduced a `text-nowrap` on the quantity column, this unnecessarily crops the other columns if we use a long UoM. This commit adds a max-width to the UoM column and applies the text-nowrap to the quantity only, letting the long UoM wrap if too long. task-4478718 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219129 Forward-Port-Of: odoo/odoo#194389
The partner invoicing tab now keeps the General section, including bank details, visible for basic invoicing users. Advanced accounting fields are hidden unless the full accountant app is installed, reducing confusion and showing users only the options relevant to their access.
Original PR description
In this PR: - Keep General section with bank field visible for basic invoicing users and hide account fields (receivable/payable/autopost) when only account or account_accountant is installed. - Show account fields only when full accountant module is installed . Task-4953707 Forward-Port-Of: odoo/odoo#219655
The HR Skills test data now uses a distinct name for the music certification skill type. This prevents automated tours from selecting the wrong skill type when demo data contains duplicate names, improving test reliability without changing normal user workflows.
Original PR description
Steps to reproduce: ------------------- - Install a database with demo data - launch the test test_ui in hr_skills - This test will failed because two hr_skill_type have the same name and the wrong one is chosen. Solution: --------- The skill type "Certification" is renamed to "Music certification" to avoid mis-selection. task-4908637 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 fixes an issue in the website builder where clicking a blog date kept it in display format instead of an editable format. Editors can now update and save blog dates correctly, avoiding failed saves or incorrect date handling.
Original PR description
The behaviour to format the date when clicking on a date field has been lost during initial website refactor. The code added in this commit is a translation of lines 564 to 580 from `addons/web_editor/static/src/js/wysiwyg/wysiwyg.js` Steps to reproduce: - On `/blog`, open website builder - Click on a date below a blog summary - Bug: the date stays in the presentation format, saving a date in this format does not work Website refactor: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
This update removes invisible leftover formatting when edited text is deleted, preventing unexpected spacing changes in website and HTML editor content. It also tidies an internal naming convention for formatting rules to make future maintenance clearer.
Employees in Indian companies can now open their approved time off requests without encountering an access error. The fix prevents the system from trying to update sandwich leave details after a request has already been approved, preserving the expected approval restrictions.
Original PR description
**Steps to reproduce:** 1. Install l10n_in_hr_holidays and l10n_in 2. Switch to IN company 3. Create an employee related to Marc Demo in IN Company 4. Log in with Marc Demo and create a timeoff 5. Approve the timeoff by Mitchel admin 6. Open the form view of approved timeoff by Marc Demo **Issue:** - The _get_durations method in l10n_in_hr_holidays attempts to update the l10n_in_contains_sandwich_leaves field whenever it runs, including when opening the form view of an approved time off. This causes an access error, as updates are not allowed for Marc demo in the approved state. **Solution:** - Added a state check in the _get_durations method to prevent updating the field for approved records. opw-4741162 Forward-Port-Of: odoo/odoo#219816 Forward-Port-Of: odoo/odoo#209233
Website editors can once again choose sizes for standard primary and secondary buttons without switching them to a custom style. This restores a previously available editing option and makes button formatting quicker and more convenient.
Original PR description
With the new builder, the option to choose the size of a button was removed for the buttons "primary" and "secondary", while it was an option available previously for them. The user had to set the button type to "custom" to change its size, which is not convenient. The commit reintroduces the size option for the regular buttons. task-4367641
This fixes a display issue where the picture-in-picture button icon was missing on public call pages. Users can now see the correct call control icon, making the public calling interface clearer and easier to use.
Original PR description
Before this commit, the picture in picture icon was not displayed on the public page. Call actions always add the `fa fa-fw` class. However, this action uses odoo icons. In the public page, the `fa` class is loaded after odoo icons, thus shadowing most of the `oi` class declarations. This commit ensures the correct lib prefix is used according to the action's icon. 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#219859
This fixes an unstable automated test in the website editor related to opening offcanvas panels. It helps keep the release validation process reliable without changing customer-facing behavior.
Original PR description
By attempting to fix another indeterministic error, commit [c6d38a2d] introduced an indeterministic error in the test "Opening an offcancas should not add mutations to the history". Most of the times, the offcanvas element will have the class `.show`, but it can happen that it still has the class `.showing`. In the context of the test, we do not care which class it is, we only care that there is a class. Bootstrap manages its transitions with a `setTimeout` with a minimum delay of 5ms before removing the transitioning class (`showing`) and applying the final class (`show`). We need to wait for those in the test. [c6d38a2d]: https://github.com/odoo/odoo/commit/c6d38a2da7964baa016c05bd9e8adc0211261603 runbot-229958
The website editor no longer crashes when changing a Punchy Image snippet from grid to column layout. This keeps page editing smoother and prevents users from being blocked by a missing grid element error.
Original PR description
Steps to reproduce: - Drop a "Punchy Image" snippet - Click on the image - Select Layout > Column => The grid element cannot be found. The option component's state is updated later than the call to `isApplied`. We need to guarantee that the `"grid_mode"` option is active before displaying the option.
Button links edited in the HTML editor can now use gradient backgrounds as intended. This fixes a display issue where selected gradients were saved in the wrong place and therefore did not appear correctly in the browser.
Original PR description
The link popover of `html_editor` makes it possible to select a gradient color as button background color. Unfortunately, it stores it in the `background-color` property where it is not interpreted by the browser. This commit makes the gradient colors stored in the expected `background-image` property instead. task-4367641
The automated check for field service stock has been updated to match the current task list behavior. This helps keep quality checks reliable after the task list returned to a read-only view with form opening handled separately.
Original PR description
This commit adapts the `industry_fsm_stock_test_tour` tour according to the changes made in community. That is, now the main list view of tasks will now be readonly as before instead of editable with a open form view button.
The subscription product setup now shows the correct description when a goods product is invoiced based on delivered quantity. This helps users understand the option correctly and reduces confusion during product configuration.
Original PR description
To reproduce: ============== 1- go to subscription 2- go to product 3- select product type : goods and invoicing_policy : Delivered Quantity Problem: ========= wrong description. Solution: ========== update description. opw-4929735 Forward-Port-Of: odoo/enterprise#90143
The web editor setup was adjusted so automated website-building tests can consistently access the editor where needed. This helps prevent test failures and supports more reliable validation of Studio-related report editing flows.
Original PR description
This commit moves the patch of editor into html_editor to expose the editor instance globally for all the tours. Community PR: https://github.com/odoo/odoo/pull/212032
This update adjusts an automated check for SEPA direct debit so it remains reliable when payment reconciliation involves draft records. It helps ensure the direct debit workflow continues to be validated correctly without changing day-to-day user behavior.
Original PR description
See community commit for details. Forward-Port-Of: odoo/enterprise#87772
When creating a credit note from a Peruvian vendor bill, Odoo now shows the appropriate purchase journals instead of incorrectly limiting the list to sales journals. This helps accounting users select the right journal and avoids mistakes during vendor bill reversals.
Original PR description
**Issue** When creating a credit note for a vendor bill, the journal selection dropdown incorrectly shows only sales-type journals instead of purchase-type journals. **Steps to Reproduce** 1. Install the modules: Accounting, l10n_pe, and l10n_pe_edi. 2. Navigate to Accounting > Vendors > Vendor Bills. 3. Open a posted vendor bill and click Credit Note. 4. Open the journal dropdown. 5. Notice that only sales journals are shown. **Root Cause** The journal field's domain was hardcoded to type = 'sale' in the inherited view. This forces the dropdown to show only sales journals, even when reversing a vendor bill. **Fix** Removed the hardcoded domain from the XML view. This allows Odoo to apply its standard logic for journal filtering, which correctly selects purchase journals when reversing vendor bills. Opw-4913997 Forward-Port-Of: odoo/enterprise#90445
This update adds missing internal test labels so automated checks run with the right settings. It helps keep helpdesk and subscription payment testing reliable without changing customer-facing features.
Original PR description
With the new test-tags features that allows to add additional test tags at runtime, the tests that starts a tour or that are using a query_count and that are not detected as such must be tagged respectively `is_tour` or `is_query_count`. Forward-Port-Of: odoo/enterprise#90463 Forward-Port-Of: odoo/enterprise#89934
The AI assistant now avoids sending the latest user question twice when preparing its response. This helps prevent confusion in AI replies and keeps conversations more accurate and efficient.
Original PR description
Prior to this commit, we send messages to the llm like the following:
```
[
{'content': Markup('<p>first question</p>'), 'role': 'user'},
{'content': Markup("<p>Sure, I'm here to help. What's your first question?</p>"), 'role': 'assistant'},
{'content': Markup('<p>second question</p>'), 'role': 'user'},
{'role': 'system', 'content': "You are a RAG assistant.\n\nToday's date to be used: 2025-07-18"},
{'role': 'user', 'content': 'second question'}
]
```
We're actually duplicating the user's prompt and this is because of the retrieval of the chat history. Before calling generate_response, we post the user's message. Therefore, he's message is already recorded in the db. We should then skip the most recent message to assemble the chat history since its just the same to the prompt.
Forward-Port-Of: odoo/enterprise#90502The Dutch reporting settings page now correctly shows the SBR certificate option. This prevents users from missing an important configuration needed for Dutch digital reporting.
Original PR description
Due to concurrent settings views, one of them wasn't displayed. Changed to be in one file, with different ids Forward-Port-Of: odoo/enterprise#90411
Fixed an issue in Point of Sale restaurant bookings where the appointment date filter could remain active after switching away from the kanban view. This prevents outdated filters from affecting other views and avoids duplicate date filters being created.
Original PR description
Steps to reproduce: - Open booking in a pos restaurant - Switch from kanban view to any other view - The filter on the date is not removed Issue: The onRemove method in the kanban_controller is never called. Fix: It is not possible to call the code an onWillUmount since onWillUmount is called after the onMount of the desired view. The deletion of the filter needs to be handled in the control_panel. Also each time createStartFilter was called, a new filter was added and never removed. In this commit if a filter already exists it is simply updated. Task-4916512 Forward-Port-Of: odoo/enterprise#89994
Users with Invoicing & Banks access can now see the relevant bank information fields on partner records. This fixes a visibility issue where the whole General section could be hidden unless the user had full accounting access, while keeping advanced accounting settings restricted.
Original PR description
In this PR: Changed General section groups from `account.group_account_user` to `account.group_account_basic `to ensure users with **Invoicing & Banks** access can see bank fields in partner form. This resolves the issue where the General section was completely hidden when only account_accountant was installed, while maintaining restriction of account configuration fields to full accounting users only. Task-4953707 Forward-Port-Of: odoo/enterprise#90593
This fix prevents an error when saving a Helpdesk ticket after all tags have been removed. It ensures teams using tag-based automatic assignment can update tickets normally, avoiding a disruptive save failure for support staff.
Original PR description
Currently, an error occurs when the user tries to save the ticket after removing the tag. Steps to produce: --- - Install `Helpdesk` module. - Create the `Helpdesk team` with `Automatic Assignment` as `Dispatch tickets based on tags` - `All Ticket` > Create a new ticket and set the Helpdesk Team as the newly created team and set any tag, and click save - Remove the tag and save Traceback: --- `IndexError: list index out of range` At [1], the error occurs because `added_tags` is empty, which causes `vals_list` to be empty. As a result, attempting to unpack it using `zip(*vals_list)` leads to an IndexError. [1]: https://github.com/odoo/enterprise/blob/6763c997bce8c5a42fd7c2b99d36ae8af5d8d238/helpdesk/models/helpdesk_ticket.py#L689 sentry-6754498068 Forward-Port-Of: odoo/enterprise#90526
A subscription payment test was adjusted to use a simpler invoice creation path, avoiding assumptions about how recurring invoices are generated. This reduces false test failures for custom subscription setups while keeping the business behavior being checked unchanged.
Original PR description
The commit 0d1b3dd03629c8e0499f537056c5ccd45cf094cd introduces a new test `test_subscription_invoice_after_second_period_payment` that uses `_create_recurring_invoice` to create a first invoice. However, overriding modules might consider that recurring invoices should only create invoices for subscriptions that have a payment token (as we do in our internal codebase). Since this test wants to check that the second invoice won't include the non-recurring lines, and not how the `_create_recurring_invoice` method behaves, it can use more basic calls to create this invoice. Forward-Port-Of: odoo/enterprise#90635
Fixed an issue where opening the On Hand stock information from a product linked to an approval could show an error instead of inventory details. This ensures users can reliably review available quantities while working through approval requests.
Original PR description
<b>Steps to reproduce:</b> 1. Install the `approval`,`stock` module. 2. settings Inventory> Warehouse > check storage Loaction 3. Go to approval > Manager> All Approvals 4. Select an Approval > add…
<b>Steps to reproduce:</b> 1. Install the `approval`,`stock` module. 2. settings Inventory> Warehouse > check storage Loaction 3. Go to approval > Manager> All Approvals 4. Select an Approval > add storable product with on hand quantity > 0. 5. Go through the product > stat button On Hand <b>Issue:</b> - A traceback for unknown name field occurs when opening the On hand (stock.quant list view) <b>Cause:</b> - The context `search_view_ref` is passed from the `approval_product_line_view_tree` via the `product_id` field, which interferes with the Quant list view rendering. As a result, the On Hand button fails to display the expected stock information. <b>Solution:</b> - Removed `search_view_ref` from the `product_id` field context in the approval product line tree view. This prevents the context from unintentionally affecting unrelated views i.e. stock.quant list, ensuring On Hand smart button works as expected. <b>opw-4916178</b> Forward-Port-Of: odoo/enterprise#89973
This fix prevents access errors when users update activities linked to mail and VoIP workflows. It helps ensure activity management works reliably for authorized users without unnecessary interruptions.
Original PR description
this is the test for this fix : https://github.com/odoo/odoo/pull/212769 opw-4778418 Forward-Port-Of: odoo/enterprise#88999
The asset setup now updates only accounts that already exist when adding asset models. This prevents accidental creation of blank account records, keeping accounting data cleaner and avoiding setup issues.
Original PR description
In the post init hook for account_asset we are updating the chart accounts to add the asset models, and then we load those assets. The update should only be performed on accounts that already exist, otherwise the load will create empty account records with all values null except the assets, which is not the intention here. This fix filters the update to existing accounts only, and filters the asset that use those accounts. [ci error](https://runbot.odoo.com/odoo/runbot.build.error/229788) Forward-Port-Of: odoo/enterprise#89862
11 changes
Resolved issues and error corrections
Fixed an issue where activities configured on reconciliation models were not being added to the related bank statement lines. This ensures follow-up tasks are created as expected when a matching reconciliation rule is triggered, helping accounting teams avoid missed actions.
Original PR description
On a reco model, you can set an activity that should be applied on the statement line where the reco model is triggered. Before this commit the activity was not set. task-4954201
This fix updates the description shown for subscription products that are goods invoiced based on delivered quantity. It helps users see accurate guidance when configuring subscription products, reducing confusion during setup.
Original PR description
To reproduce: ============== 1- go to subscription 2- go to product 3- select product type : goods and invoicing_policy : Delivered Quantity Problem: ========= wrong description. Solution: ========== update description. opw-4929735 Forward-Port-Of: odoo/enterprise#90143
The point of sale deposit flow now prevents users from validating a customer deposit with a zero amount. Instead of causing an error screen, the system shows a warning so cashiers can correct the amount and continue smoothly.
Original PR description
Steps to reproduce: =================== - From the POS UI, select a customer - Select Deposit Money - Try to deposit `0` amount by clicking Validate button Issue: ====== A traceback is raised when attempting to validate a deposit with zero amount. Cause: ====== The system does not check for zero-amount orders when creating a deposit payment line. Fix: ==== Add a dialog warning when the deposit amount is zero to prevent further processing. Task: 4862811 Forward-Port-Of: odoo/enterprise#87709
This change updates an automated test for SEPA direct debit payment reconciliation to match the intended behavior when entries are still in draft. It helps keep quality checks reliable so future updates do not accidentally disrupt payment processing workflows.
Original PR description
See community commit for details. Forward-Port-Of: odoo/enterprise#87772
This fix prevents an error when saving a Helpdesk ticket after all tags are removed. Teams using tag-based automatic assignment can now update tickets without interruptions, improving reliability for support agents.
Original PR description
Currently, an error occurs when the user tries to save the ticket after removing the tag. Steps to produce: --- - Install `Helpdesk` module. - Create the `Helpdesk team` with `Automatic Assignment` as `Dispatch tickets based on tags` - `All Ticket` > Create a new ticket and set the Helpdesk Team as the newly created team and set any tag, and click save - Remove the tag and save Traceback: --- `IndexError: list index out of range` At [1], the error occurs because `added_tags` is empty, which causes `vals_list` to be empty. As a result, attempting to unpack it using `zip(*vals_list)` leads to an IndexError. [1]: https://github.com/odoo/enterprise/blob/6763c997bce8c5a42fd7c2b99d36ae8af5d8d238/helpdesk/models/helpdesk_ticket.py#L689 sentry-6754498068 Forward-Port-Of: odoo/enterprise#90526
This fix prevents users from running into an access error when updating activities related to mail and VoIP workflows. It helps keep activity management reliable for teams using Odoo communications features.
Original PR description
this is the test for this fix : https://github.com/odoo/odoo/pull/212769 opw-4778418 Forward-Port-Of: odoo/enterprise#88999
The Dutch reports settings page now reliably shows the SBR certificate option. This prevents administrators from missing an important configuration setting needed for Dutch reporting.
Original PR description
Due to concurrent settings views, one of them wasn't displayed. Changed to be in one file, with different ids Forward-Port-Of: odoo/enterprise#90411
Fixed an issue where users could encounter an error when opening the On Hand inventory view from a product added to an approval request. The approval screen no longer carries over a product search setting that disrupted the inventory view, so stock information displays as expected.
Original PR description
<b>Steps to reproduce:</b> 1. Install the `approval`,`stock` module. 2. settings Inventory> Warehouse > check storage Loaction 3. Go to approval > Manager> All Approvals 4. Select an Approval > add…
<b>Steps to reproduce:</b> 1. Install the `approval`,`stock` module. 2. settings Inventory> Warehouse > check storage Loaction 3. Go to approval > Manager> All Approvals 4. Select an Approval > add storable product with on hand quantity > 0. 5. Go through the product > stat button On Hand <b>Issue:</b> - A traceback for unknown name field occurs when opening the On hand (stock.quant list view) <b>Cause:</b> - The context `search_view_ref` is passed from the `approval_product_line_view_tree` via the `product_id` field, which interferes with the Quant list view rendering. As a result, the On Hand button fails to display the expected stock information. <b>Solution:</b> - Removed `search_view_ref` from the `product_id` field context in the approval product line tree view. This prevents the context from unintentionally affecting unrelated views i.e. stock.quant list, ensuring On Hand smart button works as expected. <b>opw-4916178</b> Forward-Port-Of: odoo/enterprise#89973
This update adjusts an internal subscription billing test so it no longer depends on a specific recurring invoice process. This helps ensure the test remains valid for deployments that customize how subscription invoices are generated, without changing customer-facing behavior.
Original PR description
The commit 0d1b3dd03629c8e0499f537056c5ccd45cf094cd introduces a new test `test_subscription_invoice_after_second_period_payment` that uses `_create_recurring_invoice` to create a first invoice. However, overriding modules might consider that recurring invoices should only create invoices for subscriptions that have a payment token (as we do in our internal codebase). Since this test wants to check that the second invoice won't include the non-recurring lines, and not how the `_create_recurring_invoice` method behaves, it can use more basic calls to create this invoice. Forward-Port-Of: odoo/enterprise#90635
This fix prevents an error when viewing technical data for product variants while the POS pricer feature is installed. It ensures the pricer display price always has a safe default value, avoiding unexpected crashes for users managing products.
Original PR description
**Step to reproduce:** 1. Install pos_pricer module: 2. Open the Point of Sale app and create a product. 3. Go to the Product Variants menu. 4. Open that product. 5. Activate developer mode. 6. Click…
**Step to reproduce:** 1. Install pos_pricer module: 2. Open the Point of Sale app and create a product. 3. Go to the Product Variants menu. 4. Open that product. 5. Activate developer mode. 6. Click on the Bug icon (top-right corner). 7. Click on Data. **Issue:** A traceback is raised with the error: `Compute method failed to assign product.product(191,).pricer_display_price` The method `_compute_pricer_display_price` was removed in this commit https://github.com/odoo/enterprise/commit/87b1672ac7c1d27cd9eab05138b78f6a9439fea7 , and was reintroduced in a later commit https://github.com/odoo/enterprise/commit/4575d3dfdbd0ccd9bf57bddbd35a89bd47c48798 to avoid the AttributeError. **Cause:** The computed field `pricer_display_price` is a type Char and and is non-stored was not being assigned a value inside the compute method. So ORM requires that records to be assigned a value in a compute method. **Solution:** To fix this, assign a default value to `pricer_display_price` inside the compute method to prevent the error. opw-4887318 Forward-Port-Of: odoo/enterprise#88517
Users with Invoicing & Banks access can now see the general banking section on partner forms. This fixes a visibility issue while keeping advanced accounting settings limited to full accounting users.
Original PR description
In this PR: Changed General section groups from `account.group_account_user` to `account.group_account_basic `to ensure users with **Invoicing & Banks** access can see bank fields in partner form. This resolves the issue where the General section was completely hidden when only account_accountant was installed, while maintaining restriction of account configuration fields to full accounting users only. Task-4953707 Forward-Port-Of: odoo/enterprise#90593
11 changes
Resolved issues and error corrections
The asset setup process now updates only accounts that already exist. This prevents accidental creation of blank accounting records during installation or updates, reducing data cleanup risk.
Original PR description
In the post init hook for account_asset we are updating the chart accounts to add the asset models, and then we load those assets. The update should only be performed on accounts that already exist, otherwise the load will create empty account records with all values null except the assets, which is not the intention here. This fix filters the update to existing accounts only, and filters the asset that use those accounts. [ci error](https://runbot.odoo.com/odoo/runbot.build.error/229788) Forward-Port-Of: odoo/enterprise#89862
The Brazil AvaTax integration now handles error responses from the tax API without causing an unexpected system failure. This makes tax-related workflows more reliable when the external service returns a problem, and removes leftover debugging output.
Original PR description
Oversight of odoo/enterprise#82623. There won't be a 'lines' key in the response if the API returned errors. This also removes a logger meant for debugging. Noticed by VBE during review of odoo/enterprise#90156. Forward-Port-Of: odoo/enterprise#90580
This fixes a Helpdesk issue where saving a ticket could fail after all tags were removed from a ticket assigned by tags. Users can now update and save tickets without interruption, improving reliability for teams using automatic assignment rules.
Original PR description
Currently, an error occurs when the user tries to save the ticket after removing the tag. Steps to produce: --- - Install `Helpdesk` module. - Create the `Helpdesk team` with `Automatic Assignment` as `Dispatch tickets based on tags` - `All Ticket` > Create a new ticket and set the Helpdesk Team as the newly created team and set any tag, and click save - Remove the tag and save Traceback: --- `IndexError: list index out of range` At [1], the error occurs because `added_tags` is empty, which causes `vals_list` to be empty. As a result, attempting to unpack it using `zip(*vals_list)` leads to an IndexError. [1]: https://github.com/odoo/enterprise/blob/6763c997bce8c5a42fd7c2b99d36ae8af5d8d238/helpdesk/models/helpdesk_ticket.py#L689 sentry-6754498068 Forward-Port-Of: odoo/enterprise#90526
This update adjusts a subscription billing test so it no longer depends on a specialized recurring invoice process. This makes the test more reliable for customized deployments while keeping the business behavior being checked the same: one-time lines should not appear on later subscription invoices.
Original PR description
The commit 0d1b3dd03629c8e0499f537056c5ccd45cf094cd introduces a new test `test_subscription_invoice_after_second_period_payment` that uses `_create_recurring_invoice` to create a first invoice. However, overriding modules might consider that recurring invoices should only create invoices for subscriptions that have a payment token (as we do in our internal codebase). Since this test wants to check that the second invoice won't include the non-recurring lines, and not how the `_create_recurring_invoice` method behaves, it can use more basic calls to create this invoice. Forward-Port-Of: odoo/enterprise#90635
Fixed an issue in POS restaurant appointment booking where the date filter could remain active after switching from the kanban view to another view. This prevents bookings from appearing unexpectedly filtered and avoids duplicate date filters being added over time.
Original PR description
Steps to reproduce: - Open booking in a pos restaurant - Switch from kanban view to any other view - The filter on the date is not removed Issue: The onRemove method in the kanban_controller is never called. Fix: It is not possible to call the code an onWillUmount since onWillUmount is called after the onMount of the desired view. The deletion of the filter needs to be handled in the control_panel. Also each time createStartFilter was called, a new filter was added and never removed. In this commit if a filter already exists it is simply updated. Task-4916512 Forward-Port-Of: odoo/enterprise#89994
This update ensures a Web Studio message is properly prepared for translation. It helps users working in different languages see consistent localized text in the interface.
Fixed an issue where opening a product's On Hand stock information from an approval could show an error instead of the inventory list. This ensures users can reliably review stock quantities while processing approval requests.
Original PR description
<b>Steps to reproduce:</b> 1. Install the `approval`,`stock` module. 2. settings Inventory> Warehouse > check storage Loaction 3. Go to approval > Manager> All Approvals 4. Select an Approval > add…
<b>Steps to reproduce:</b> 1. Install the `approval`,`stock` module. 2. settings Inventory> Warehouse > check storage Loaction 3. Go to approval > Manager> All Approvals 4. Select an Approval > add storable product with on hand quantity > 0. 5. Go through the product > stat button On Hand <b>Issue:</b> - A traceback for unknown name field occurs when opening the On hand (stock.quant list view) <b>Cause:</b> - The context `search_view_ref` is passed from the `approval_product_line_view_tree` via the `product_id` field, which interferes with the Quant list view rendering. As a result, the On Hand button fails to display the expected stock information. <b>Solution:</b> - Removed `search_view_ref` from the `product_id` field context in the approval product line tree view. This prevents the context from unintentionally affecting unrelated views i.e. stock.quant list, ensuring On Hand smart button works as expected. <b>opw-4916178</b> Forward-Port-Of: odoo/enterprise#89973
Users with Invoicing & Banks access can now see the General section with bank fields on partner forms. The change fixes an access issue while keeping more sensitive accounting configuration fields limited to full accounting users.
Original PR description
In this PR: Changed General section groups from `account.group_account_user` to `account.group_account_basic `to ensure users with **Invoicing & Banks** access can see bank fields in partner form. This resolves the issue where the General section was completely hidden when only account_accountant was installed, while maintaining restriction of account configuration fields to full accounting users only. Task-4953707 Forward-Port-Of: odoo/enterprise#90728 Forward-Port-Of: odoo/enterprise#90593
The Dutch reports settings page now correctly shows the SBR certificate option. This fixes a configuration visibility issue caused by overlapping settings views, helping users manage Dutch reporting certificates without workaround.
Original PR description
Due to concurrent settings views, one of them wasn't displayed. Changed to be in one file, with different ids Forward-Port-Of: odoo/enterprise#90411
The subscription product setup now shows the correct description when a goods product is invoiced based on delivered quantity. This helps users choose the right product configuration and reduces confusion during subscription setup.
Original PR description
To reproduce: ============== 1- go to subscription 2- go to product 3- select product type : goods and invoicing_policy : Delivered Quantity Problem: ========= wrong description. Solution: ========== update description. opw-4929735 Forward-Port-Of: odoo/enterprise#90143
This update adjusts a test for SEPA direct debit behavior so it correctly reflects expected handling of draft items. It helps keep automated checks reliable and reduces the risk of false failures during future updates.
Original PR description
See community commit for details. Forward-Port-Of: odoo/enterprise#87772
10 changes
Resolved issues and error corrections
This update makes an automated test for mail discussion sub-channel search more dependable by avoiding timing issues with elements that load later. It helps reduce false test failures in slower environments, supporting smoother validation and release processes.
Original PR description
The `test_discuss_sub_channel_search` tour was flaky due to unreliable trigger selectors depending on lazy-loaded elements. This commit updates the tour to use a stable trigger (`.o-mail-SubChannelList`) and moves the detailed presence checks inside the `run()` steps with proper awaits. This makes the test more robust against timing issues and lazy loading delays, especially on slower CI environments. [runbot-181951](https://runbot.odoo.com/odoo/error/181951) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change removes an unnecessary test dependency in the live chat discussion test suite. It helps keep automated checks simpler and more reliable without changing customer-facing behavior.
Original PR description
remove the dependency on `TestPortal` from `test_discuss_full`, as it is not needed. [runbot-226366](https://runbot.odoo.com/odoo/error/226366) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an error that occurred when users tried to show invisible fields on candidate records in Studio. This lets HR and recruitment teams inspect and customize candidate forms without interruption.
Original PR description
To reproduce: ============== 1/ Go to the Candidate form view 2/ Pick any candidate 3/ Open Studio 4/ Click on "Show Invisible Elements" Problem: ========= A traceback occurs because the `hr.candidate` model was not included in the supported models list for showing invisible elements. Solution: ========== Add `hr.candidate` to the supported models to avoid the traceback and properly show invisible elements in Studio. opw-4886130 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change fixes an internal point-of-sale loyalty test so it can be retried reliably after failures. It helps keep automated validation stable and reduces misleading test errors during development, with no expected impact on end users.
Original PR description
Tests in this file are all sorts of fucked up in ways which break retrying, but this one is problematic because it *also* fails on the reg, with a misleading error as on retrying the `setUp` fails because it tries to update `product_b`, which this test overrode (so the record is rolled back, and trying to update it fails with a `MissingError`). The error is completely unforced as the test just wants to have two products in the DB with different taxes, we don't even need local variables. runbot-226343
This fixes a template rendering issue where some content could be skipped when a conditional section appeared alongside a comment. It helps ensure pages and documents generated from templates display the expected information consistently.
Original PR description
Forward-Port-Of: odoo/odoo#212159
Fixed a display issue on eCommerce product pages where the review section button could show the wrong expanded or collapsed state after saving changes in the website editor. This keeps the page controls consistent and avoids confusion for website managers editing product pages.
Original PR description
Problem:
When the product review section is uncollapsed in the web editor and the page is saved, the content becomes collapsed again, but the toggle button incorrectly shows the uncollapsed ("-") state.
Cause:
The `collapsed` class is removed from `.o_product_page_reviews_title` when it is editable. On saving, it renders without the `collapsed` class, so the content appears collapsed while the toggle button remains in the incorrect state.
Solution:
Ensure the `collapsed` class is applied to
`.o_product_page_reviews_title` when the widget starts, keeping the button and content in sync.
Steps to reproduce:
- Enable product ratings
- Open the web editor
- Click "+" to uncollapse the review section
- Save -> The content is collapsed but the toggle button still shows "-"
opw-4843145
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update adjusts an internal automated test for Point of Sale sales flows so it uses the correct test startup process. It helps keep validation runs reliable, reducing false failures during release checks without changing customer-facing behavior.
Original PR description
Replace `start_tour` by `start_pos_tour`. Trying to fix runbot error 230078. opw-4819708
Vietnam localization now allows VietQR generation when the city field is empty but a valid state such as Ha Noi or Hai Phong is provided. This prevents unnecessary payment QR errors and better matches VietQR requirements where merchant city is not always mandatory.
Original PR description
* Problem: Using Vietnam localisation, leave city empty and just input state_id as Hà Nội or Hải Phòng, try to use vietqr code -> Raise error missing city * Solution: Just like https://github.com/odoo/odoo/pull/218984 we should check for state too although according to VietQR document, merchant city is not required see (https://vietqr.net/portal-service/download/documents/QR_Format_T&C_v1.0_VN_092021.pdf and search for term 'Merchant City') 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#219566
This fixes an error that could appear when users or integrations opened signature request records that were not marked as shared. Non-shared requests now safely show no share link instead of causing a system traceback, improving reliability for staff and connected systems.
Original PR description
### Issue Commit [58425a0](https://github.com/odoo/enterprise/commit/58425a0022c79f2c45f23fdd5a5476d8c20a887e) introduced a new field `share_link` in `sign.request` that gets computed for requests…
### Issue Commit [58425a0](https://github.com/odoo/enterprise/commit/58425a0022c79f2c45f23fdd5a5476d8c20a887e) introduced a new field `share_link` in `sign.request` that gets computed for requests that are in the 'shared' state. However this compute method fails for requests not in the 'shared' state leading to a traceback error. This commit fixes it by setting the default as False for the sign.request records that do not have state='shared' so the traceback error is handled. This can be reproduced in v17 and above by: 1. Open any sign.request record that isn't in the shared state 2. Enable Developer Mode 3. Using the debug icon, click on view record data The traceback will be visible here which mentions that the compute method failed to assign It can also be re-produced by using an xml-rpc / json-rpc ORM call to search_read the sign.request records that does not have state = 'shared' ### Before https://github.com/user-attachments/assets/24c07f2a-2398-44b4-8969-30abb576876a ### After https://github.com/user-attachments/assets/e92b1212-5405-4b98-ba41-c81b2ac547d7 [opw-4864159](https://www.odoo.com/odoo/project/49/tasks/4864159) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#90576
An empty, unused file in the Documents app was removed after it had been accidentally left behind during earlier cleanup work. This has no expected impact on users, but helps keep the product codebase tidy and reduces maintenance confusion.
Original PR description
During sharepocalypse, the file was emptied but not deleted, it's not used anymore. Introduced in https://github.com/odoo/enterprise/commit/a32825ee00f2b330d99113f4d8c1488903fe744e (18.0). Already removed in https://github.com/odoo/enterprise/commit/bb196623f348795536368287eb1a6e1ac5f5bc44 (saas-18.3).