Daily updates from Odoo
Monday, September 8, 2025
43 changes
18 changes
Resolved issues and error corrections
This update prevents an error when Saudi e-invoicing processes bank address information. It ensures the system uses the right address data source for each record type, improving reliability for affected invoicing workflows.
Original PR description
Issue: Prior to this commit, when the model was res.bank, some fields were not defined on that model, which resulted in a traceback. Fix: Define the way to retrieve the data based on the model. opw-5013477
Website builder previews for header and footer visibility now behave correctly without opening the Invisible Elements panel or triggering unnecessary saves. This makes page editing smoother and reduces confusing interface changes while users test visibility settings.
Original PR description
With the [re-introduction of preview on checkboxes], the visibility option on the footer was made previewable, and this causes issues with the "Invisible Elements" panel and excessive saving. The issues were fixed by skipping updates of "Invisible Elements" panel during previews, and also not setting the dirty flag. These changes are sufficient to make the preview for the visibility option of the header work, so it is enabled as well. Steps to reproduce: - Open website builder - Click on the footer - Hover the checkbox of "Page Visibility" - Bug: the "Invisible Elements" panel appears (and stays) [re-introduction of preview on checkboxes]: 6cc63c31378b8acfdb419727a71f38fd00ea37dd task-4367641
A website editor test was adjusted to wait longer when loading image-based options. This reduces random test failures caused by slower network image loading, helping keep the release process more stable.
Original PR description
`test parallax zoom` failed non-deterministically, because it fetches images from the network to render the values in the options. The later tests were not affected because they had the image in cache. The non-determinism is "fixed" by allowing a longer timeout when waiting on the element that should appear. task-4367641
This fixes a website menu display issue where submenus could become invisible when using a dark sidebar header. Menu colors now adapt correctly to the selected theme, helping visitors and editors clearly see navigation items.
Original PR description
Steps to reproduce: - Install the "Website" app. - Go to the homepage. - Click on "Site > Menu Editor" in the backend navbar. - Create a submenu. - Save the dialog. - Enter edit mode. - Click on the header. - Choose a dark background in the header options. - Choose the "Sidebar" template in the header options. - Open the submenu. - Bug: The submenu is not visible because the background and text have the same light color, so nothing can be seen. The bug was introduced by commit [1], which made visual improvements to the menu. This commit fixes it by making sure the colors of the problematic elements adapt to the theme colors. [1]: https://github.com/odoo/odoo/commit/dc1a15539227c4c21837a7bce3fc4d81858d60b9 opw-5043010 Forward-Port-Of: odoo/odoo#224610
Fixed an issue in the website editor where pressing Enter inside a tabs image slide description created a new tab/list item instead of a normal line break. This keeps content editing predictable and prevents accidental layout changes for website editors.
Original PR description
Following the [refactoring] of the `html_builder` we had a problem when instead of a new line in the slide description we had a new list item. Steps to reproduce the issue: - Open website and start editing - Drop the .s_tabs_images snippet - Click on any slide description - Press 'Enter' -> It adds a new list item because it treats it as a regular list. Related to task-4367641 [refactoring]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2
Fixed an issue where event pages with non-Latin titles, such as Chinese, could identify the wrong event when editing or registering. This ensures website event links work reliably for international event names.
Original PR description
Issue: The Website Event page uses a matching regex to get the event id from the url. URLs are formatted like: '/event/[event-title]-[event-id]/register' The event-id is recovered from the url by matching on the first number that is not followed by a word character. However, for non-latin event titles (e.g. Chinese), the characters are converted using '%' characters and numbers (e.g. '%E6%88%91%E'). The regex consistently fails to get the event id in this case, and returns incorrect IDs. Steps to reproduce: 1. Install `website_event` and go to the website view of any event. 2. Edit the event, to add a Chinese title 3. Save, and try to edit again the same title. Solution: The regex is modified to look for the first number that is followed by either a "/" or the end of a String. opw-5038334 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224164
The ecommerce product page now hides the Buy Now button when zero-priced products are not allowed for sale. This avoids showing customers an action that cannot be completed, creating a clearer shopping experience.
Original PR description
**Steps to reproduce:** 1. Install the `Ecommerce` module. 2. Enable the following settings: * `Settings → Website → Shop - Checkout Process → Buy Now` * `Settings → Website → Shop - Products → Prevent Sale of Zero-Priced Product` 3. Create a product with a selling price of `0`. 4. Open the product page on the website. **Observed behavior:** - Even with `Prevent Sale of Zero-Priced Product` enabled, the `Buy Now` button remains visible on the product page, but clicking it does nothing. **Root cause:** - In `saas-18.4`, there was no condition controlling the visibility of the `Buy Now` button based on the `Prevent Sale of Zero-Priced Product` setting. **Solution:** - Added the `Buy Now` button inside `add_to_cart_wrap` so that it behaves consistently with the `Add to Cart` button which is hidden when the `Prevent Sale of Zero-Priced Products` setting is enabled. opw-4984680
Website editors can now drag and rearrange links inside mega-menus even when the eCommerce app is not installed. This fixes an editing issue that made menu management inconsistent across websites and removes an unnecessary dependency on website_sale.
Original PR description
Before this commit, mega-menus links were draggable only if `website_sale` was installed. This happened because the `dropzone_selector` resource was defined in the `WebsiteSaleMegaMenuOptionPlugin` instead of`MegaMenuOptionPlugin`. This commit moves the `dropzone_selector` resource to `MegaMenuOptionPlugin`, making mega-menus links always draggable, regardless of `website_sale`. How to reproduce the problem: 1. Start Odoo on a database without `website_sale` installed 2. Create a mega-menu (click on navbar element -> Edit Menu -> Create a Mega Menu Item) 3. Open the mega-menu 4. Click on a link in the mega-menu 5. PROBLEM: The link is not draggable (only the column is) 6. Install the `website_sale` app 7. The links are now draggable Task-4367641
Argentina-localized checkout forms now keep a required tax responsibility value available even when it cannot be edited. This prevents an error when customers update their billing address during ecommerce checkout, helping purchases continue smoothly.
Original PR description
Scenario: - setup company with Argentina L10N - do a sale order from partner to Argentinian company and confirm it (to make the vat not editable) - do a checkout from ecommerce from same partner to same company, and at the checkout "address" step, click to edit the billing address - click to confirm the billing address change Result: a "Cannot read properties of undefined (reading 'classList')" error happen in customerAddress._onSaveAddress because the field l10n_ar_afip_responsibility_type_id is missing from the view. Solution: similarly to c10e77ac636243025004d9ebca61af0076691f2b, add the field as hidden if it is readonly. opw-5019253 Forward-Port-Of: odoo/odoo#225579
This change re-enables an automated check for website hover animations after making it more reliable. It helps ensure animation behavior in the website builder is consistently tested, reducing the chance of regressions reaching users.
Original PR description
The test was disabled in f540b0f342d46592099b0d515df1da91fa716a9f because of non-deterministic failures This commit fixes by waiting for the dom state updated signal *after* the operation is over. task-4367641
Users can now enter an ampersand character in filter values without causing the search or domain selector to crash. This prevents errors when applying custom filters and keeps filtering behavior reliable.
Original PR description
Example of steps: - Open any domain selector with an archive checkbox (via custom filter for example) - Try to add char `&` in value input - focus out or try to apply the filter - Traceback ``` UncaughtPromiseError > OwlError Uncaught Promise > The following error occurred in onWillUpdateProps: "Cannot read properties of undefined (reading 'filter')" ``` The problem comes from the fact that we expect to have multiple nodes in our domain if we have an `&` as a value. However, there is a difference between using `&` in a text search for example (type `condition`), and using `&` as an AND between two nodes (type `connector`). The solution is to restrict the condition so that it not only checks that the value is equal to `&`, but also checks that the tree type is indeed a connector and not a condition. opw-5015281 Forward-Port-Of: odoo/odoo#224664 Forward-Port-Of: odoo/odoo#224567
Installing the online course sales feature no longer fails if the default Services product category was previously deleted. This prevents setup interruptions and lets users continue installing the module in customized Sales configurations.
Original PR description
Currently a `ParseError` arises when the user installs the modules after deleting the `Service` Category in Sales. **Steps to produce:-** - Install `Sales` module (without demo data). - Go to `Sales…
Currently a `ParseError` arises when the user installs the modules after deleting the `Service` Category in Sales.
**Steps to produce:-**
- Install `Sales` module (without demo data).
- Go to `Sales > Configuration > Products > Categories`.
- Delete `Services` category.
- Try to install `website_sale_slides` module.
**Error:-**
```py
ValueError: External ID not found in the system: product.product_category_services
ParseError: while parsing /home/odoo/src/odoo/saas-18.4/addons/website_sale_slides/data/product_data.xml:2, somewhere inside <record id='default_product_course' model='product.product'>
<field name='name'>Course Access</field>
<field name='standard_price'>99.99</field>
<field name='list_price'>99.99</field>
<field name='type'>service</field>
<field name='service_tracking'>course</field>
<field name='invoice_policy'>order</field>
<field name='is_published' eval='True'/>
<field name='image_1920' type='base64' file='website_sale_slides/static/img/default_course_product.jpg'/>
<field name='categ_id' ref='product.product_category_services'/>
</record>
```
- The error occurs because the user deleted the category, and then installed the modules, that reference the missing product category.
- This commit resolves the error by providing a False value for the field if the product category is missing.
**sentry-6823596992**
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#225745
Forward-Port-Of: odoo/odoo#223669Users can no longer create an activity assigned to someone else without linking it to a record. This prevents an access error and makes the activity creation flow clearer and more reliable.
Original PR description
An `AccessError` occurs when a user tries to schedule an activity assigned to another internal user without linking it to a record. **Steps to reproduce**: 1) Install a module 2) Click on the `View…
An `AccessError` occurs when a user tries to schedule an activity assigned to another internal user without linking it to a record. **Steps to reproduce**: 1) Install a module 2) Click on the `View all activities` from activities (Top right corner) 3) Create a new activity without setting a "Link to" record, and assign it to another user. **Issue**: An AccessError will be raised. **Cause**: When the activity has no res_model, the `_action_schedule_activities_personal` method is triggered: https://github.com/odoo/odoo/blob/8e1e4f68763af141c97647fd3e3a2d3a64654a13/addons/mail/wizard/mail_activity_schedule.py#L400-L402 https://github.com/odoo/odoo/blob/8e1e4f68763af141c97647fd3e3a2d3a64654a13/addons/mail/wizard/mail_activity_schedule.py#L415-L424 In this method, both `res_id` and `res_model_id` are passing False, and since `activity_user_id` is not the current user, this leads to an `AccessError` when trying to create the activity. **Solution**: Make res_model required when the assigned user (activity_user_id) is not the current user. opw-5032100 Forward-Port-Of: odoo/odoo#224565
This fix ensures that blank links created in the website builder are removed when a page is saved. It prevents invisible or empty button links from remaining on published pages, keeping website content cleaner for visitors and editors.
Original PR description
The commit f65ac79631180e77aca5a53fc557b3e1acfcbd65 added the class `o_translate-inline` on links created in the website. The link plugin only removes empty links if it has no significant classes or attributes, but that class was not in the list of non-significant classes. Thus, empty links created in website were not removed by the link plugin. This commits patch the link plugin to add that class to its list of non-significant classes.o Steps to reproduce: - Open website builder - Create a new link - Make the link appear as a button to easily see it - Delete its label (but not the link itself) - Save - Bug: the empty link has not been removed task-4975547
Analytic line amounts now use the company's currency precision instead of incorrectly following a foreign currency's rounding settings. This prevents displayed analytic amounts from being rounded too broadly, improving financial accuracy for accounting users.
Original PR description
Steps to reproduce: - set the rounding of a foreign currency to 1.0 - have you company currency's rounding to 0.01 - create a move with a line with an analytic distribution - post it - go to analytic line Issue: The amount will be displayed with a rounding of 1.0 and not 0.01 opw-4997047 Forward-Port-Of: odoo/odoo#225503
Point of Sale now loads updated extra prices for product attribute values configured without creating separate variants. This prevents outdated option pricing from appearing during sales, helping ensure customers are charged the correct amount.
Original PR description
Before this commit, when changing the extra price of a ptav with the no variant creation mode, the updated price was not loaded. After this commit, the updated extra price is correctly loaded. opw-5015868 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224772 Forward-Port-Of: odoo/odoo#224091
Event registrations created from Point of Sale now correctly keep the company name entered during ticket purchase. This prevents missing company details in the backend and helps staff maintain accurate attendee records.
Original PR description
Steps to reproduce: 1. Add a question to an event with type 'Company'. 2. Sell a ticket for that event in a POS, making sure to fill in the company question. 3. Validate the sale 4. In the backend, check the new event registration that was created. EXPECTED: The company name you filled in is saved to the registration. ACTUAL: The company name is blank. There were three things that needed to be fixed in order for the company name to work: 1. Use `company_name` instead of `company` on the JS side 2. Add `company_name` to the list of loaded POS fields 3. Tell the POS that `company_name` is not computed (this was already being done for name, email, phone) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225699 Forward-Port-Of: odoo/odoo#225534
This fix adds a log warning when automatic bank statement reconciliation is started with a time limit but no batch size, a setup that previously caused the time limit to be ignored. This helps administrators detect misconfiguration that could make large bank statement imports run longer than expected.
Original PR description
When calling `_cron_try_auto_reconcile_statement_lines` with a limit_time argument but without a `batch_size`, the time limit was silently ignored. With this commit, we display a warning in the logs, because this is probably not the desired behavior. Besides that, when the amount of statement lines become large, it might hang the import of bank statements longer than the expected 3 minutes. Task-id: None Forward-Port-Of: odoo/enterprise#93565
14 changes
Resolved issues and error corrections
This update restores proper handling of order summary data in the Point of Sale by using the current supported method. It helps prevent errors caused by a removed internal method, improving reliability for POS users.
Original PR description
Replace usage of `serialize` (method that was previously removed) by `serializeForORM` in `OrderSummary`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes flaky automated tests around sending chat messages after entering commands in Mail, CRM Live Chat, and IM Live Chat. The change makes tests click the send button instead of relying on timing-sensitive keyboard behavior, improving confidence in release validation without changing normal user workflows.
Original PR description
\* = crm_livechat, im_livechat Back-port of 3fc3e4fbbd846dc8f65938a0bfbddbebf2abc403 Enter after typing a command will either send the message when the suggestion list is not opened yet, or select the suggestion. This can either be fixed by waiting for the suggestion list to be opened, closing it, and then pressing enter, or by simply clicking on the send button which is what is done here as the way the message is sent is irrelevant for these tests. https://runbot.odoo.com/odoo/runbot.build.error/230977 Forward-Port-Of: odoo/odoo#225874
This fixes an issue where website submenus could become invisible when using a sidebar header with a dark background. The submenu colors now adapt to the selected theme, helping site editors keep navigation readable for visitors.
Original PR description
Steps to reproduce: - Install the "Website" app. - Go to the homepage. - Click on "Site > Menu Editor" in the backend navbar. - Create a submenu. - Save the dialog. - Enter edit mode. - Click on the header. - Choose a dark background in the header options. - Choose the "Sidebar" template in the header options. - Open the submenu. - Bug: The submenu is not visible because the background and text have the same light color, so nothing can be seen. The bug was introduced by commit [1], which made visual improvements to the menu. This commit fixes it by making sure the colors of the problematic elements adapt to the theme colors. [1]: https://github.com/odoo/odoo/commit/dc1a15539227c4c21837a7bce3fc4d81858d60b9 opw-5043010 Forward-Port-Of: odoo/odoo#224610
Calendar meeting views now update correctly when developer mode is enabled, without requiring users to refresh the page twice. This prevents stale cached screens from hiding debug-only options such as the Invitations tab.
Original PR description
**Steps to reproduce:** - Go to Calendar app - Go to any meeting - Invitations tab should be hidden (no debug mode) - Trigger developer mode (`?debug=1`) - Invitations tab should be displayed - The…
**Steps to reproduce:** - Go to Calendar app - Go to any meeting - Invitations tab should be hidden (no debug mode) - Trigger developer mode (`?debug=1`) - Invitations tab should be displayed - The tab only appears after a second refresh **Issue:** The new caching process uses a key based on the RPC parameters. In the case of the 'get_views' function, it produces a different result with the same parameters depending on whether debug mode is enabled. This means that two browser refreshes are needed to have the correct view. The first refresh renders the cached view (without the invitation tab) and updates the cache with the view returned by the RPC (with the invitation tab). The new cached view with the invitation tab will be rendered on the second browser refresh. **Fix:** Add the debug option to the RPC parameters to cache the different views separately (with and without the invitation tab). opw-4986038 related: https://github.com/odoo/odoo/commit/f3d955b3235cb256bda79e834df38da0f6a4ac1a
This fixes an issue where event pages with non-Latin titles, such as Chinese, could be matched to the wrong event when editing. The update improves reliability for multilingual event websites by reading the event ID from the URL more accurately.
Original PR description
Issue: The Website Event page uses a matching regex to get the event id from the url. URLs are formatted like: '/event/[event-title]-[event-id]/register' The event-id is recovered from the url by matching on the first number that is not followed by a word character. However, for non-latin event titles (e.g. Chinese), the characters are converted using '%' characters and numbers (e.g. '%E6%88%91%E'). The regex consistently fails to get the event id in this case, and returns incorrect IDs. Steps to reproduce: 1. Install `website_event` and go to the website view of any event. 2. Edit the event, to add a Chinese title 3. Save, and try to edit again the same title. Solution: The regex is modified to look for the first number that is followed by either a "/" or the end of a String. opw-5038334 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224164
The wishlist checkout test now allows more time to finish, preventing false failures when the process runs slower than expected. This helps keep automated quality checks reliable without changing the customer-facing wishlist experience.
Original PR description
Increase timeout for wishlist tour. As it was taking too long to complete. runbot-229616 Forward-Port-Of: odoo/odoo#224277 Forward-Port-Of: odoo/odoo#219653
Customers using Argentina localization can now save billing address changes during ecommerce checkout without encountering an error. The fix keeps a required tax responsibility field available in the form behind the scenes when it cannot be edited, preventing checkout interruptions.
Original PR description
Scenario: - setup company with Argentina L10N - do a sale order from partner to Argentinian company and confirm it (to make the vat not editable) - do a checkout from ecommerce from same partner to same company, and at the checkout "address" step, click to edit the billing address - click to confirm the billing address change Result: a "Cannot read properties of undefined (reading 'classList')" error happen in customerAddress._onSaveAddress because the field l10n_ar_afip_responsibility_type_id is missing from the view. Solution: similarly to c10e77ac636243025004d9ebca61af0076691f2b, add the field as hidden if it is readonly. opw-5019253 Forward-Port-Of: odoo/odoo#225579
Website livechat agents now see recent visitor page visit times in their own timezone instead of UTC. This makes the visitor activity banner easier to understand and helps agents interpret customer browsing history accurately during chats.
Original PR description
Before this PR, when browsing a website livechat in the discuss app, the banner containing the 3 last pages browsed by the user showed the utc time instead of the time in the timezone of the agent. Now, the livechat agent is seeing the visit timings in his timezone. To achieve this, we now construct the visit string in the frontend and receive the page and datetime (utc) info from the backend task-4937769 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225602 Forward-Port-Of: odoo/odoo#219113
This fixes an issue in the Mail app where messages could fail when the system tried to process an empty or invalid value. The change helps keep email-related operations running reliably and avoids unnecessary interruptions for users.
Original PR description
Browse breaks when given a bool, so the solution is to filter the list from false values before browsing --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes analytic accounting amounts so they are rounded according to the company currency, not a foreign currency used on the journal entry. Businesses will see more accurate analytic line amounts when foreign currencies have different rounding rules.
Original PR description
Steps to reproduce: - set the rounding of a foreign currency to 1.0 - have you company currency's rounding to 0.01 - create a move with a line with an analytic distribution - post it - go to analytic line Issue: The amount will be displayed with a rounding of 1.0 and not 0.01 opw-4997047 Forward-Port-Of: odoo/odoo#225503
Installing the online course sales module no longer fails if the default Services product category was previously deleted. This prevents setup interruptions and lets businesses enable course sales without manually restoring that category first.
Original PR description
Currently a `ParseError` arises when the user installs the modules after deleting the `Service` Category in Sales. **Steps to produce:-** - Install `Sales` module (without demo data). - Go to `Sales…
Currently a `ParseError` arises when the user installs the modules after deleting the `Service` Category in Sales.
**Steps to produce:-**
- Install `Sales` module (without demo data).
- Go to `Sales > Configuration > Products > Categories`.
- Delete `Services` category.
- Try to install `website_sale_slides` module.
**Error:-**
```py
ValueError: External ID not found in the system: product.product_category_services
ParseError: while parsing /home/odoo/src/odoo/saas-18.4/addons/website_sale_slides/data/product_data.xml:2, somewhere inside <record id='default_product_course' model='product.product'>
<field name='name'>Course Access</field>
<field name='standard_price'>99.99</field>
<field name='list_price'>99.99</field>
<field name='type'>service</field>
<field name='service_tracking'>course</field>
<field name='invoice_policy'>order</field>
<field name='is_published' eval='True'/>
<field name='image_1920' type='base64' file='website_sale_slides/static/img/default_course_product.jpg'/>
<field name='categ_id' ref='product.product_category_services'/>
</record>
```
- The error occurs because the user deleted the category, and then installed the modules, that reference the missing product category.
- This commit resolves the error by providing a False value for the field if the product category is missing.
**sentry-6823596992**
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#223669This fixes a timing issue that could affect sending messages with Command + Enter in enterprise discussion and live chat areas. The change helps prevent inconsistent behavior during automated checks and improves reliability for users relying on keyboard shortcuts.
Original PR description
\* = test_discuss_full_enterprise, website_helpdesk_livechat Back-port of 14b31a3631a97dd61ebd662fb768485e5a509c2c Enterprise counter-part. https://runbot.odoo.com/odoo/runbot.build.error/230977 Forward-Port-Of: odoo/enterprise#94078
The update adds a log warning when automated bank statement reconciliation is started in a way that ignores its intended time limit. This helps administrators spot configuration or integration issues that could otherwise make bank statement imports run longer than expected.
Original PR description
When calling `_cron_try_auto_reconcile_statement_lines` with a `limit_time` argument but without a `batch_size`, the time limit was silently ignored. With this commit, we display a warning in the logs, because this is probably not the desired behavior. Besides that, when the amount of statement lines become large, it might hang the import of bank statements longer than the expected 3 minutes. Task-id: None
This update cleans up how automated test helpers are referenced in Odoo Studio tests. It keeps the testing tools easier to maintain while limiting the change to internal unit tests, reducing risk for customers.
Original PR description
## Pull Request HOOT (PRHOOT) 36 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/221367 Forward-Port-Of: odoo/enterprise#93950 Forward-Port-Of: odoo/enterprise#93167
1 change
Resolved issues and error corrections
When users create a new contact directly from a VoIP call, the contact photo now appears immediately instead of showing placeholder text until the call is saved. This makes the call screen clearer and avoids confusion while adding contact details.
Original PR description
Purpose: When creating an inline partner from voip.call, the partner image was not updating properly, forcing alt text to be displayed until voip.call record was saved. Specification: - Created a custom image field widget `voip_contact_image` that overrides the `getUrl` method to handle caching properly by checking if the record is dirty. - Updated the VoIP call views to use the new custom image field. Task-5023035
10 changes
Resolved issues and error corrections
This fix prevents an error popup that appeared in debug mode when editors clicked selection field text while translating website pages. It improves the reliability of the website translation workflow without changing visible functionality for regular visitors.
Original PR description
**PROBLEM** In debug mode, props type errors pop up when clicking on a selection field to translate it. **STEP TO REPRODUCE** 1. Create a form with a selection field in a page. 2. Ensure you're in debug mode assets. 3. Go in translate mode, and click on a string of the selection field to translate it. 4. Props type error should pop up. **CAUSE** `node` is actually of type `Object` (its the target of a jquery event), the props validations expect it to be of type `String`. opw-4896491
The point of sale payment screen now correctly disables the Validate button on mobile when no payment method is selected. This helps prevent cashiers from accidentally trying to complete incomplete payments and keeps mobile checkout behavior consistent.
Original PR description
- Fix issue where the `Validate` button (in the payment screen) was not correctly disabled on mobile devices when no payment methods was selected. task-id: 5072759 enterprise PR: https://github.com/odoo/enterprise/pull/94100 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an intermittent automated test failure around marking portal messages as to-do/starred. The change adds a stable marker for whether a message is starred, helping Odoo's testing systems verify the result without relying on hover-only visual cues.
Original PR description
Backport of https://github.com/odoo/odoo/pull/216106 Before this commit, test "test_star_message" was failing frequently on runbot at step to check message was starred have click on "Mark as Todo". This happens because when click on mark as todo, the message is asynchronously starred. However, there's no visual indication other than the message action have yellow filled star icon. This requires hovering the message to see it, but we don't know when we should exactly hover the message to see it. This commit fixes the issue by adding a `data-starred` on the `o-mail-Message` root node of message template that tells whether the message is starred or not. This removes necessity to hover to check whether message is starred. Fixes runbot-227568
This update fixes a failing automated test by ensuring required accounting details are set before the test uses them. It helps keep the manufacturing subcontracting dropshipping workflow validation reliable and prevents false failures in the development pipeline.
Original PR description
this PR fixes the runbot error 230451 introduced by the test of PR https://github.com/odoo/odoo/pull/221009 (a first corrective PR was made here https://github.com/odoo/odoo/pull/224431) fix : populate the accounts of the category before using them
Spanish TicketBAI invoice submissions now shorten overly long sequence names to meet the required 20-character limit. This prevents confusing upload failures when a point of sale has a long name, helping users submit records successfully.
Original PR description
Before this commit, records with sequences over 20 characters will present a cryptic error when uploaded to TicketBAI. Steps to reproduce ----- 1. Create a point of sale with a name >20 characters 2. Validate an order on the POS 3. Go to Point of Sale > Orders > Your order, click "Send to TicketBAI" 4. Invalid Operation ``` 002: Fichero no cumple el esquema XSD. Detalle del error: cvc-maxLength-valid: Value 'ThisisaveryveryveryveryverylongPOSnameTEST' with length = '42' is not facet-valid with respect to maxLength '20' for type 'TextMax20Type'. ``` Issue ----- The schema for SerieFactura specifies a TextMax20Type, but the generated sequence can be over 20 characters. Solution ----- Truncate the sequence to 20 characters. opw-4750372 Forward-Port-Of: odoo/odoo#225436
Date-related fields now correctly apply values provided by the system, even when that value matches the field's original value. This prevents users from seeing an outdated typed value when business logic, such as an onchange rule, re-applies the intended date.
Original PR description
This commit allows date (i.e. date, datetime & daterange) fields to apply a value from the props (e.g. coming from an `onchange`), even if that value is the same as the initial one. Before this commit, it was not possible due to the fact that the date service responsible for the reactivity of the field was updating the input in an incorrect order, causing the field to display the 'input' value, and not the one enforced by the props. Task 4978896 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
Product images in the Point of Sale grid now display without being stretched. This keeps the checkout interface cleaner and makes products easier for staff to recognize visually.
Original PR description
This fix modifies the CSS to use object-fit: contain;. This property scales the image to fit entirely within the container while preserving its aspect ratio. This ensures all product images display correctly, without stretching maintaining a consistent and clean look for the user interface. Steps to reproduce: 1. Install Point of Sale. 2. Open POS session. 3. Notice product images are stretched in the grid. Description of the issue/feature this PR addresses: Current behavior before PR: <img width="1902" height="907" alt="image" src="https://github.com/user-attachments/assets/a2dc2855-c984-4dec-9922-45ff5f1c2ca3" /> Desired behavior after PR is merged: <img width="1910" height="913" alt="image" src="https://github.com/user-attachments/assets/1f13a1bb-ea8e-4de1-8287-06566037a63a" /> opw-5028767 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures that when a vehicle is assigned to a shared contact, Odoo selects the employee from the same company as the vehicle. This prevents the wrong employee from being linked in multi-company setups, improving accuracy in fleet records and assignment logs.
Original PR description
There is a bug when multiple employees from different companies are linked to the same contact. Steps to reproduce: - Create two employees, in two different companies that relate to the same contact (partner) - In one of the two companies, create a vehicle and assign it to the partner created - The field driver_employee_id in the vehicle and assignation log will be assigned to one of the two employees, without taking care of the company of the car To fix this, the domain should also contain the company of the car, and must match the company of the employee. task-4978443 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#221154
This fix ensures the Validate button on the point of sale payment screen is disabled on mobile when no payment method is selected. It helps prevent cashiers from accidentally trying to complete incomplete payments, improving checkout reliability.
Original PR description
- Fix issue where the `Validate` button (in the payment screen) was not correctly disabled on mobile devices when no payment methods was selected. community PR: https://github.com/odoo/odoo/pull/225917 task-id: 5072759
The Pricer point-of-sale integration now prevents users from choosing a sales pricelist on a product variant before that variant has been saved. This avoids an error screen and guides users to save the product first, keeping product setup more reliable.
Original PR description
An error occurs when a user attempts to set the **Pricer Sales Pricelist** on a product variant that has not yet been saved. **Steps to reproduce:** - Install the `pos_pricer` module. - Open the form view of **Product Variants**. - Without saving the record, try to add a **Pricer Sales Pricelist**. - Observe the error. **Error:** `KeyError: False` **Cause:** When the product variant is unsaved, `product._origin` is `False`, leading to a `KeyError` at [1], because `False` is not a valid key in the evaluation of method `_get_product_price()`. [1] - https://github.com/odoo/enterprise/blob/6f96632f23c3955b874a9019ba6a92561dec3172/pos_pricer/models/product_product.py#L139 This commit ensures the `pricer_sale_pricelist_id` field is invisible for unsaved product variant records to avoid inconsistent behavior. It allows users to only set a pricelist after the record has been saved, preventing any invalid computations or errors. Sentry - 6598605111,6696068013