Daily updates from Odoo
Monday, July 13, 2026
180 changes
15 changes
Resolved issues and error corrections
This update removes a confusing message ('Connect your software...') from sales quotations that was appearing in PDFs for customers with portal access. The change ensures all quotes, regardless of customer portal usage, present a clean and professional look. This improves the customer experience and aligns with the standard portal button design.
Original PR description
Steps to reproduce: 1. Install Contacts and Sales 2. Open any of the contacts, click on the gear icon at the top and click on "Grant portal access" 3. Grant access to all contacts 4. Create a Sale Quotation for that contact and print it Issue: The sentence 'Connect your software... ' appears in the pdf when sending the quote to a contact who was portal access, while it does not appear if the contact does not have portal access Expected behavior: Should not appear regardless of whether the customer has a portal account or not since they have it appear as a smart button in their portal. opw-6308357 Forward-Port-Of: odoo/odoo#275469 Forward-Port-Of: odoo/odoo#272893
This update corrects a technical issue where an empty distribution model was being flagged for merging. The fix removes unnecessary merging logic, streamlining the process and preventing errors. This ensures smoother operation within the analytic accounting module.
Original PR description
It is possible to have an empty distribution model, there is therefore ne need to merge it, especially since it raises when doing this ```python self.env['account.analytic.plan'].mapped(lambda p: p._column_name()) ``` Forward-Port-Of: odoo/odoo#275839
This update brings the latest version of the spreadsheet component to Odoo 19.4. It addresses several technical issues related to chart rendering, conditional formatting, and named ranges, ensuring a smoother and more reliable spreadsheet experience for users. Multiple developers collaborated on this update to improve stability and performance.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c83d4aa59 [REL] 19.4.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c83d4aa59 [REL] 19.4.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/9b3aee7f3 [FIX] named range selector: select hidden named range [Task: 6171849](https://www.odoo.com/odoo/2328/tasks/6171849) https://github.com/odoo/o-spreadsheet/commit/30ead68b5 [IMP] dashboard: fix dark mode background [Task: 6349211](https://www.odoo.com/odoo/2328/tasks/6349211) https://github.com/odoo/o-spreadsheet/commit/79c5f8589 [FIX] conditional_formatting: handle zero color scale midpoint [Task: 6312961](https://www.odoo.com/odoo/2328/tasks/6312961) https://github.com/odoo/o-spreadsheet/commit/c92559567 [FIX] charts: handle undefined values in treemap chart [Task: 6329404](https://www.odoo.com/odoo/2328/tasks/6329404) https://github.com/odoo/o-spreadsheet/commit/4a3e3c7fc [FIX] config: filter-out claude folder from prettier [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update fixes an issue where duplicated printers in the Point of Sale module would lose their configured IP address, defaulting to 0.0.0.0. The fix ensures that when a printer is duplicated, it retains the original IP address, simplifying setup and improving the user experience. This prevents potential connectivity problems with POS hardware.
Original PR description
Steps to reproduce: ==== - Configure a printer from printers menu. - Duplicate the printer. Issue: ==== - The duplicated printer's IP address is reset to `0.0.0.0`. Cause: ==== - copy_data()` unconditionally overrides `printer_ip` with `0.0.0.0`. Fix: ==== - Stop overriding `printer_ip` so the duplicated printer inherits the original IP address by default. task-6365809 Forward-Port-Of: odoo/odoo#274964
This update fixes several issues within the HTML editor's file box functionality. Specifically, it prevents the powerbox from appearing within file boxes, ensures plain text is pasted correctly, and resolves cursor behavior problems. These changes enhance usability and stability when working with files in the editor.
Original PR description
### Purpose of this PR: * Prevent the powerbox from opening inside a static file box. * Paste content as plain text inside a static file box, since formatting is not supported there. * Prevent the cursor from leaving an empty file name box when pressing `ArrowLeft` or `ArrowRight`. * o_we_preview_favicon had a fixed height larger than its content, causing the link popover to overflow and show an unwanted scrollbar when the file input was empty as there was nothing to preview. Reduced the height to match the actual content size. * Shorthands (such as `#` for headings or `*` for lists) should not trigger when editing inside a file box. task-6283420 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#275765 Forward-Port-Of: odoo/odoo#268827
This update resolves an issue where pressing the space key in the Contact app could cause a technical error. The fix ensures the system handles optional settings correctly, preventing the error and improving the user experience. This change enhances stability and reliability for Contact record management.
Original PR description
**Steps to reproduce:** - Go to Contact app - Open any record - Press "Space" key - Traceback: `Cannot read properties of undefined (reading 'groupId')` **Issue:** `quickCreateState` props is undefined (as it is optional). **Fix:** Add check to safely handle such cases. [introduced by] https://github.com/odoo/odoo/commit/22c07c7dcb2a93d9ebef5a83e48aa3d252128519 opw-6377425 Forward-Port-Of: odoo/odoo#275329
This update fixes a formatting issue in Odoo's logs that was displaying extremely long, precise numbers for request times (like milliseconds). By rounding these times before they're logged, the logs now show more readable and manageable values, making it easier to identify potential performance bottlenecks. This improves the clarity and usefulness of our operational logs.
Original PR description
The per-request access log formats query_time and remaining_time with %s, so unless they are rounded first they are rendered as the full float repr, e.g. "0.0016751289367675781" for a sub-millisecond request. Round query_time and remaining_time once, before `colored_extra` is copied from `extra`. 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 update resolves an issue where clearing the search in the Threads panel caused unexpected behavior and excessive data loading. By ensuring the search results are consistently rendered, the system now correctly displays the intended list size, improving the user experience. This fix prevents performance issues and ensures a smoother browsing experience.
Original PR description
The Threads panel resets its search results in a layout effect, so clearing the search empties `searchTerm` one render before the full sub-channel list is restored. During that transient render the load-more sentinel (`t-if="!searchTerm"`) re-mounts next to the still short filtered list; the IntersectionObserver can catch it visible and fetch an extra page, making the list overshoot its expected size. The `count(31)` tour step then never matches, jumping straight to 61. Read the displayed list straight from the record while browsing so the list and the sentinel flip together in the same render, leaving no window where the sentinel sits next to a short, filtered list. https://runbot.odoo.com/odoo/error/941492
This update fixes a visual glitch (flickering) in the call settings dialog when switching between tabs. The change improves the user experience by ensuring the dialog renders smoothly and consistently. Additionally, the underlying code was refactored for better efficiency and to automatically update device selections.
Original PR description
Purpose Prevent height flickering in the call settings dialog when changing tabs. Before this commit, the DeviceSelect component awaited asynchronous work in `onWillStart`, blocking the rendering of…
Purpose Prevent height flickering in the call settings dialog when changing tabs. Before this commit, the DeviceSelect component awaited asynchronous work in `onWillStart`, blocking the rendering of tab content and causing the settings dialog height to flicker when switching tabs. After this commit, the asynchronous work is still started in `onWillStart`, but its promise is no longer awaited before rendering. This allows the tab content to render immediately while the asynchronous initialization completes in the background, eliminating the flicker. This commit also refactors the DeviceSelect component by: - Replacing the proxy-based state with signals. - Computing `selectedDevice` from `userDevices` instead of updating it on every device change. This ensures the selected device label stays in sync automatically when `userDevices` changes (e.g. due to permission changes or newly detected devices), reducing duplicated state. | | | |-|-| | BEFORE | <img width="800" height="446" alt="ezgif-1545762edb9521cb" src="https://github.com/user-attachments/assets/d453dec7-007e-4bc3-a04b-125208d7a8e2" /> | | AFTER | <img width="800" height="446" alt="ezgif-1db5bef8c163cf2d" src="https://github.com/user-attachments/assets/bdf05366-3490-414b-ac83-2b1e35c6309c" /> |
This update resolves a bug preventing website settings changes to the robots.txt file from being saved correctly. The fix ensures the system accurately identifies the target website, allowing users to properly edit and apply robots.txt configurations. This improves website SEO and crawling functionality.
Original PR description
Steps to Reproduce: 1. Visit the '/robots.txt' URL and check its content. 2. Go to website settings through the configuration menu. 3. Switch to debug mode. 4. Click on the 'Edit robots.txt' option under the 'Tracking & SEO' block. 5. Make an edit in the wizard and save your changes. 6. Reopen the wizard to modify the content. Observed Issue: The changes made using the 'Edit robots.txt' option are not reflected at the '/robots.txt' URL and are also not visible when the content is re-edited. Explanation: The `env.context` no longer contains the `website_id`. The robots.txt editor wizard relied on `env.website` to read and write the current website's robots.txt content. Since the website is no longer available in this context, the wizard cannot determine which website to operate on. This commit passes the target `website_id` through the action context, allowing it to initialize and save the wizard content into particular field. task-6365217
A technical issue preventing the generation of the Return Slip report for return pickings has been fixed. This change ensures the report can be reliably printed, preventing errors and improving the usability of the Stock module. The fix addresses a 'KeyError' caused by accessing a variable before it was defined in the report template.
Original PR description
Issue before this commit: ========================= Printing the return slip report for a return picking raised a traceback. Steps to reproduce: =================== - Install the Stock module with demo data. - Create a return picking. - Click on the Action menu and print the Return Slip report. Result: A traceback is raised with: KeyError: 'picking' Cause: ====== The 'stock.return_label_header' template accesses the 'picking' variable before it is defined, resulting in a 'KeyError' during report rendering. This issue was introduced by PR: https://github.com/odoo/odoo/pull/234112 With this commit: ================= Define the 'picking' variable before calling the template that uses it, preventing the traceback.
This update adds email verification to the French PDP registration wizard. Previously, invalid email addresses could cause errors later in the process. This change ensures data integrity and a smoother user experience by preventing issues caused by incorrect contact information.
Original PR description
No verification was done on the contact email in the wizard but if the email is invalid the user would have an error later task-6344324 Forward-Port-Of: odoo/odoo#274065
This update corrects an issue where the spreadsheet function incorrectly identified account codes based on partial matches. The change improves the accuracy of account lookups within the spreadsheet, ensuring users can correctly associate transactions. This resolves a potential error in reporting and data analysis.
Original PR description
Adjusting spreadsheet account lookup by name to exclude partial matches. Adjusting a related test to verify. task-6354503 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where a new database index wasn't being used by Odoo's internal queries. The change ensures the index is correctly utilized by both specific queries and those generated by the Odoo ORM, improving query performance. This primarily impacts the project and to-do modules.
Original PR description
The index added by 778c09f4ffb4 works for the specific query it was meant to improve. Unfortunately, it cannot be used by ORM-generated queries, which is unfortunate. The reason is that the ORM generates queries with `IS TRUE` or `IS NOT TRUE` for boolean fields. Because `=` and `IS` do not have the same semantics, postgresql cannot use the index for ORM-generated queries. = -> eval(NULL = True) -> NULL IS -> eval(NULL IS TRUE) -> FALSE By changing both the index and the query to use `IS TRUE`, the index is now used by both the specific query and the ORM. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#275681
Features or functions removed from Odoo
This update removes the 'Pay on Invoice' payment provider option from invoices. This change simplifies the payment process and aligns with best practices, as offering 'Pay on Invoice' for standard invoices was deemed unnecessary. It’s a minor adjustment to improve clarity and usability.
Original PR description
Paying an invoice with the pay-later provider "Pay on Invoice" doesn't make sense. Removing it from the list of available providers in such documents.
12 changes
Resolved issues and error corrections
This update corrects a visual inconsistency in the website's accordion controls. A previous change caused the accordion to display two different colors depending on whether it was open or closed. This fix ensures a consistent color scheme across all accordion states, improving the overall user experience.
Original PR description
In commit[1] we restyled the accordion snippets, removing the background-image to use oi-icons instead. However due to selector specificty, the rule was taking priority. This :not is actually wrong since we want the color to apply as well when the accordion is collapsed (else you have 2 different colors between the collapsed uncollapsed state) task-6361379 [1]: f26a1535b96c728e4360d94c0c06de138a6b1b3f --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#274577 Forward-Port-Of: odoo/odoo#274016
This update corrects a bug that occurred when attempting to merge empty distribution models within Odoo. The fix removes unnecessary merging logic, preventing errors that arose when this operation was performed. This ensures smoother and more reliable distribution model management.
Original PR description
It is possible to have an empty distribution model, there is therefore ne need to merge it, especially since it raises when doing this ```python self.env['account.analytic.plan'].mapped(lambda p: p._column_name()) ``` Forward-Port-Of: odoo/odoo#275839
A technical bug in the restaurant order tour was prematurely closing the user session, preventing error reporting. This fix ensures that errors related to order cancellations are properly logged and displayed, improving the reliability of the restaurant order process. The change addresses a reported runbot error.
Original PR description
The tour was closing the session in frontend and in the backend, which was causing a missing error. runbot error: 242197
This update removes a confusing message ('Connect your software...') from sales quotations that was appearing in PDF documents for customers with portal access. The change ensures all quotes, regardless of customer portal usage, display the standard, streamlined portal button. This improves the customer experience and avoids unnecessary confusion.
Original PR description
Steps to reproduce: 1. Install Contacts and Sales 2. Open any of the contacts, click on the gear icon at the top and click on "Grant portal access" 3. Grant access to all contacts 4. Create a Sale Quotation for that contact and print it Issue: The sentence 'Connect your software... ' appears in the pdf when sending the quote to a contact who was portal access, while it does not appear if the contact does not have portal access Expected behavior: Should not appear regardless of whether the customer has a portal account or not since they have it appear as a smart button in their portal. opw-6308357 Forward-Port-Of: odoo/odoo#275469 Forward-Port-Of: odoo/odoo#272893
This update automatically sets accounts as non-reconcilable when reconciliation with banks or cash transactions isn't expected. This simplifies the accounting process for various Odoo localization modules (like CA, KE, US, etc.) by preventing unnecessary reconciliation steps. It ensures that accounts are configured correctly from the start, reducing potential errors and improving data accuracy.
Original PR description
Changing the "payment reconciliation" boolean to false where it should be, ie. when no reconciliation with the bank nor cash transaction is expected. task-4902124
This update fixes an issue where duplicated point-of-sale printers would lose their configured IP addresses. The fix ensures that when a printer is duplicated, it retains the original IP address, simplifying setup and preventing connection problems. This improves the reliability of the POS system.
Original PR description
Steps to reproduce: ==== - Configure a printer from printers menu. - Duplicate the printer. Issue: ==== - The duplicated printer's IP address is reset to `0.0.0.0`. Cause: ==== - copy_data()` unconditionally overrides `printer_ip` with `0.0.0.0`. Fix: ==== - Stop overriding `printer_ip` so the duplicated printer inherits the original IP address by default. task-6365809 Forward-Port-Of: odoo/odoo#274964
This update fixes several issues within the Odoo spreadsheet component, ensuring improved stability and functionality. It addresses problems with chart rendering, conditional formatting, and named range selection, enhancing the user experience. Multiple developers collaborated on this update to ensure a robust solution.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/35c06d3a8 [REL] 19.3.11 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/35c06d3a8 [REL] 19.3.11 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/ed527c0f5 [FIX] named range selector: select hidden named range [Task: 6171849](https://www.odoo.com/odoo/2328/tasks/6171849) https://github.com/odoo/o-spreadsheet/commit/2e56727ca [FIX] conditional_formatting: handle zero color scale midpoint [Task: 6312961](https://www.odoo.com/odoo/2328/tasks/6312961) https://github.com/odoo/o-spreadsheet/commit/da294bd6a [FIX] charts: handle undefined values in treemap chart [Task: 6329404](https://www.odoo.com/odoo/2328/tasks/6329404) https://github.com/odoo/o-spreadsheet/commit/a40202e4f [FIX] config: filter-out claude folder from prettier [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update resolves an issue where pressing the space key in the Contact app could cause a technical error. The fix ensures the system handles missing configuration data gracefully, preventing the error and maintaining a stable user experience. This improvement enhances reliability for users working with Contact records.
Original PR description
**Steps to reproduce:** - Go to Contact app - Open any record - Press "Space" key - Traceback: `Cannot read properties of undefined (reading 'groupId')` **Issue:** `quickCreateState` props is undefined (as it is optional). **Fix:** Add check to safely handle such cases. [introduced by] https://github.com/odoo/odoo/commit/22c07c7dcb2a93d9ebef5a83e48aa3d252128519 opw-6377425 Forward-Port-Of: odoo/odoo#275329
This update ensures that all user-defined descriptions for invoice lines are accurately exported in UBL format. Previously, the system only captured one description tag, but this change now correctly handles multiple descriptions, preventing data loss and improving the accuracy of invoices.
Original PR description
1) Previously, we were supposing that only one <cbc:Description> tag could be found on InvoiceLine item. After checking the UBL XSD, I found we could have multiple Description tags for one item. 2) The import order of <cbc:Name> and <cbc:Description> on the invoice line now has been changed to be more accurate and prevent loss of information. The export has been adapted to this change too. Now, we export the actual description written by the user. task-6153895 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#270308 Forward-Port-Of: odoo/odoo#261949
This update adds a check to ensure contact emails entered during the French PDP registration process are valid. Previously, invalid emails could lead to errors later, causing frustration for users. This change improves data quality and prevents potential issues during the registration workflow.
Original PR description
No verification was done on the contact email in the wizard but if the email is invalid the user would have an error later task-6344324 Forward-Port-Of: odoo/odoo#274065
This update resolves an error that occurred when multiple product images with the same content were used on the website's 'Optimize SEO' feature. The fix ensures that image IDs are uniquely identified, preventing the 'duplicate key' error and improving the stability of the SEO optimization process. This ensures the website's SEO tools function correctly for all users.
Original PR description
## Problem: when snippets with identical images are added in the e-commerce website product page, the "Optimize SEO" option in debug mode causes an error to occur with a traceback. The traceback…
## Problem:
when snippets with identical images are added in the e-commerce website product page, the "Optimize SEO" option in debug mode causes an error to occur with a traceback. The traceback calls out a duplicate key in the `t-foreach` of a loop over `state.altAttributes`. the `t-key` for this loop is `img.id` which is generated by the `/website/get_alt_images` controller endpoint.
## Steps to reproduce:
1. Go to a product page and click on "go to website" smart nav btn.
2. Add a snippet with an image in the `description_ecommerce` field
3. Add a snippet with the same image in the `website_description` field.
4. In debug mode, open `site > Optimize SEO`
5. An error `Got duplicate key in t-foreach` is thrown.
## Solution:
The solution was simple to add a qualifier in the compound key generated by the controller action for the `id` field. The chosen qualifier in this case was `model['field']`. `field` is the position in the template where the image came from.
So now the keys for the two identical images go
FROM
> `${model}-${id}-${index}`
>
> 1st image of `website_description`:
> `product.template-6-0`
>
> 1st image of `description_ecommerce`:
> `product.template-6-0`
TO
> `${model}-${id}-${field}-${index}`
>
> 1st image of `website_description`:
> `product.template-6-website_description-0`
>
> 1st image of `description_ecommerce`:
> `product.template-6-description_ecommerce-0`
task-6325786
Forward-Port-Of: odoo/odoo#275789
Forward-Port-Of: odoo/odoo#272846This update fixes an issue where a database index wasn't being utilized by Odoo's internal queries. The change ensures the index works correctly for all queries, including those generated by Odoo, improving data retrieval performance. This enhances the efficiency of project and to-do related operations.
Original PR description
The index added by 778c09f4ffb4 works for the specific query it was meant to improve. Unfortunately, it cannot be used by ORM-generated queries, which is unfortunate. The reason is that the ORM generates queries with `IS TRUE` or `IS NOT TRUE` for boolean fields. Because `=` and `IS` do not have the same semantics, postgresql cannot use the index for ORM-generated queries. = -> eval(NULL = True) -> NULL IS -> eval(NULL IS TRUE) -> FALSE By changing both the index and the query to use `IS TRUE`, the index is now used by both the specific query and the ORM. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#275681
12 changes
Resolved issues and error corrections
This update fixes an issue where a new database index wasn't being utilized by Odoo's internal queries. The change ensures the index works correctly with both custom queries and those generated by the Odoo ORM, leading to faster data retrieval. This improves overall system performance.
Original PR description
The index added by 778c09f4ffb4 works for the specific query it was meant to improve. Unfortunately, it cannot be used by ORM-generated queries, which is unfortunate. The reason is that the ORM generates queries with `IS TRUE` or `IS NOT TRUE` for boolean fields. Because `=` and `IS` do not have the same semantics, postgresql cannot use the index for ORM-generated queries. = -> eval(NULL = True) -> NULL IS -> eval(NULL IS TRUE) -> FALSE By changing both the index and the query to use `IS TRUE`, the index is now used by both the specific query and the ORM. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a visual inconsistency in the website's accordion controls. Previously, the accordion's color was applied inconsistently between its expanded and collapsed states. This fix ensures a consistent and professional appearance for all users.
Original PR description
In commit[1] we restyled the accordion snippets, removing the background-image to use oi-icons instead. However due to selector specificty, the rule was taking priority. This :not is actually wrong since we want the color to apply as well when the accordion is collapsed (else you have 2 different colors between the collapsed uncollapsed state) task-6361379 [1]: f26a1535b96c728e4360d94c0c06de138a6b1b3f --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#274577 Forward-Port-Of: odoo/odoo#274016
This update resolves an issue where website builder option titles were missing translations, causing errors in the website editor. The fix ensures that titles for color pickers and carousel options are correctly translated and available, improving the user experience for website customization.
Original PR description
Steps to reproduce: - Open the website editor. - Go to the Theme tab. - Inspect the Primary or Secondary color picker title. => The title prop is undefined. - Go to a product page with several product images. - Edit the carousel thumbnail position option. => The Left and Bottom button titles are undefined. Before this commit, some builder option titles were passed as OWL expressions instead of translated string props. After this commit, these titles use translated string props and are properly available to the builder components. task-6034856 Forward-Port-Of: odoo/odoo#275235
This update resolves an error that occurred when multiple product images with identical descriptions were used on the website's SEO optimization tool. The fix ensures that image IDs are uniquely identified, preventing the 'duplicate key' error and allowing the optimization tool to function correctly. This improves the website's SEO performance.
Original PR description
## Problem: when snippets with identical images are added in the e-commerce website product page, the "Optimize SEO" option in debug mode causes an error to occur with a traceback. The traceback…
## Problem:
when snippets with identical images are added in the e-commerce website product page, the "Optimize SEO" option in debug mode causes an error to occur with a traceback. The traceback calls out a duplicate key in the `t-foreach` of a loop over `state.altAttributes`. the `t-key` for this loop is `img.id` which is generated by the `/website/get_alt_images` controller endpoint.
## Steps to reproduce:
1. Go to a product page and click on "go to website" smart nav btn.
2. Add a snippet with an image in the `description_ecommerce` field
3. Add a snippet with the same image in the `website_description` field.
4. In debug mode, open `site > Optimize SEO`
5. An error `Got duplicate key in t-foreach` is thrown.
## Solution:
The solution was simple to add a qualifier in the compound key generated by the controller action for the `id` field. The chosen qualifier in this case was `model['field']`. `field` is the position in the template where the image came from.
So now the keys for the two identical images go
FROM
> `${model}-${id}-${index}`
>
> 1st image of `website_description`:
> `product.template-6-0`
>
> 1st image of `description_ecommerce`:
> `product.template-6-0`
TO
> `${model}-${id}-${field}-${index}`
>
> 1st image of `website_description`:
> `product.template-6-website_description-0`
>
> 1st image of `description_ecommerce`:
> `product.template-6-description_ecommerce-0`
task-6325786
Forward-Port-Of: odoo/odoo#275649
Forward-Port-Of: odoo/odoo#272846This update fixes an issue where a message ('Connect your software...') was appearing in sales quotations sent to customers with portal access. The change ensures that this message is no longer included, regardless of whether the customer uses the portal, improving the customer experience and the professional appearance of quotes. This resolves a minor visual inconsistency.
Original PR description
Steps to reproduce: 1. Install Contacts and Sales 2. Open any of the contacts, click on the gear icon at the top and click on "Grant portal access" 3. Grant access to all contacts 4. Create a Sale Quotation for that contact and print it Issue: The sentence 'Connect your software... ' appears in the pdf when sending the quote to a contact who was portal access, while it does not appear if the contact does not have portal access Expected behavior: Should not appear regardless of whether the customer has a portal account or not since they have it appear as a smart button in their portal. opw-6308357 Forward-Port-Of: odoo/odoo#275469 Forward-Port-Of: odoo/odoo#272893
This update fixes a potential error that occurred when attempting to merge empty distribution models within Odoo. The change removes unnecessary merging logic, preventing the error from being triggered. This ensures smoother operation and avoids potential disruptions to financial reporting.
Original PR description
It is possible to have an empty distribution model, there is therefore ne need to merge it, especially since it raises when doing this ```python self.env['account.analytic.plan'].mapped(lambda p: p._column_name()) ``` Forward-Port-Of: odoo/odoo#275839
This update fixes an issue where the HTML editor was incorrectly triggering font size checks even when other formatting options were applied. Now, list item font size checks are restricted to only font size formatters, ensuring a smoother and more reliable editing experience. This improves the overall stability and usability of the HTML editor.
Original PR description
#### Description of the issue this PR addresses: - Fully selected list items could go through font size checks even when applying unrelated formatters. #### Desired behavior after PR is merged: - Restrict list item font size checks to font size formatters only. task-6329161 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#275590 Forward-Port-Of: odoo/odoo#272104
This update resolves an issue where pressing the space key in the Contact app would sometimes cause an error. The fix ensures the system handles optional settings correctly, preventing the traceback and improving the user experience. This change focuses on stability and reliability within the Contact module.
Original PR description
**Steps to reproduce:** - Go to Contact app - Open any record - Press "Space" key - Traceback: `Cannot read properties of undefined (reading 'groupId')` **Issue:** `quickCreateState` props is undefined (as it is optional). **Fix:** Add check to safely handle such cases. [introduced by] https://github.com/odoo/odoo/commit/22c07c7dcb2a93d9ebef5a83e48aa3d252128519 opw-6377425 Forward-Port-Of: odoo/odoo#275329
This update resolves an issue where the recruiter dropdown on job positions (and applicants) doesn't display options when the company is set to 'Visible to all'. The fix ensures the dropdown correctly lists available recruiters based on the company setting, improving usability for recruiters.
Original PR description
**Problem:** On a job position whose company is left empty ("Visible to all"), the Recruiter dropdown does not propose any user anymore: only the "Create" option is offered. The same happens on…
**Problem:**
On a job position whose company is left empty ("Visible to all"), the Recruiter dropdown does not propose any user anymore: only the "Create" option is offered. The same happens on applicants without a company. Only saas-19.2 is affected: 19.0/19.1 still use the res.users-based recruiter field, and on saas-19.3 the company became mandatory on job positions.
**Steps to reproduce:**
1. Install Recruitment
2. Open a job position whose Company is "Visible to all" (e.g. any demo job position)
3. Edit the Recruiter field
**Current behavior:**
The dropdown shows no user, only the "Create" option.
**Expected behavior:**
The dropdown lists the recruiters of all companies, as it does (per company) when a company is set.
**Cause of the issue:**
Commit 05e22346050d replaced the res.users-based `user_id` recruiter field with the hr.employee-based `recruiter_id`, declared with `check_company=True`. For check_company fields, `_description_domain()` sends the client `company_id and [('company_id', 'in', [company_id, False])] or [('company_id', '=', False)]`. When the record has no company, the domain falls back to `[('company_id', '=', False)]`, and since `hr.employee.company_id` is required, no employee can ever match. This reintroduces the issue previously fixed by 5dfe494e62af for the old user_id field: the `allowed_user_ids` mechanism introduced there was dropped by the field replacement.
**Fix:**
`check_company=True` brings nothing to these models server-side (neither `hr.job` nor `hr.applicant` has `_check_company_auto`): its only effect is that client-side domain. Folding the company condition directly into the recruiter domain with `('company_id', '=?', company_id)` keeps the per-company filtering when a company is set and degrades to no filtering when it is not, mirroring what is already done for `interviewer_ids` on the job position. The domains become strings so the client keeps evaluating `company_id` per record.
opw-6290312This pull request updates the core spreadsheet component to version 19.2.20, addressing several technical issues and improving its functionality. Specifically, it fixes a problem with conditional formatting and removes a conflicting folder reference, ensuring consistent spreadsheet performance and appearance within Odoo.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/99a9aef31 [REL] 19.2.20 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/99a9aef31 [REL] 19.2.20 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/3912ef44a [FIX] conditional_formatting: handle zero color scale midpoint [Task: 6312961](https://www.odoo.com/odoo/2328/tasks/6312961) https://github.com/odoo/o-spreadsheet/commit/4eb05e8cb [FIX] config: filter-out claude folder from prettier [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update addresses a technical issue where opening the Gmail add-in when replying to an email sent to our own address would trigger an error. This fix ensures that users can reliably open and manage self-sent emails via the Gmail add-in without encountering this problem. It improves the usability of a core email functionality.
Original PR description
Bug === If we email ourselves, and open the Gmail addin on it, then an error is raised. Task-6375862
Features or functions removed from Odoo
This update refines the way payment lines are handled within the restaurant POS module. The change replaces older, snake_case naming conventions with modern camelCase, ensuring better compatibility and future development. This improves the underlying payment processing system.
Original PR description
In this commit: - Use the new method names in the payment adjustment flow. - Replace deprecated snake_case methods with their camelCase equivalents for payment lines, payment terminals, and order totals. Task:6049128 Forward-Port-Of: odoo/odoo#271792
13 changes
Resolved issues and error corrections
This update corrects a visual inconsistency in the website's accordion controls. A previous change caused the accordion to have different colors when expanded versus collapsed. This fix ensures a uniform and professional appearance for all users, regardless of the accordion's state.
Original PR description
In commit[1] we restyled the accordion snippets, removing the background-image to use oi-icons instead. However due to selector specificty, the rule was taking priority. This :not is actually wrong since we want the color to apply as well when the accordion is collapsed (else you have 2 different colors between the collapsed uncollapsed state) task-6361379 [1]: f26a1535b96c728e4360d94c0c06de138a6b1b3f --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#274577 Forward-Port-Of: odoo/odoo#274016
This update fixes an issue where template tasks were incorrectly counted in task lists and views. The change ensures that task counts and views accurately reflect only real subtasks, improving the clarity and accuracy of project task management, particularly for tasks created using templates.
Original PR description
Steps to Reproduce --- - Create a normal parent task with one normal sub-task and one template sub-task. - Open the parent task form view and observe the Sub-tasks stat button count and notebook tab,…
Steps to Reproduce --- - Create a normal parent task with one normal sub-task and one template sub-task. - Open the parent task form view and observe the Sub-tasks stat button count and notebook tab, check the subtask view as well. - Create a template parent task with one normal sub-task and one template sub-task, then repeat the same checks. Issue --- - Task templates are handled like regular subtasks in the subtask count, notebook, and subtask view, without taking the parent task type into account. Current Behaviour --- - For a normal parent task, both the normal sub-task and the template sub-task are counted and shown in the opened subtask view and notebook. - For a template parent task, the same filtering is applied, even though template subtasks should remain accessible in that context. Expected Behaviour --- - For a normal parent task, only real sub-tasks should be counted and shown in the subtask view and notebook, and on the project kanban card. - For a template parent task, template subtasks should remain available in the subtask view and notebook according to the parent template context. - In the project kanban card, tasks must not be counted when their parent task is a template, even if the child task itself is not a template. Fix --- - Apply template-aware filtering to subtask counting,project kanban task count and subtask view behavior, depending on whether the parent task is a normal task or a template task. task-5966684 Forward-Port-Of: odoo/odoo#274590 Forward-Port-Of: odoo/odoo#252403
This update corrects a bug where attempting to merge empty distribution models caused an error. The fix removes unnecessary merging logic, streamlining the process and preventing this error from occurring. This ensures smoother operation within the analytic accounting features.
Original PR description
It is possible to have an empty distribution model, there is therefore ne need to merge it, especially since it raises when doing this ```python self.env['account.analytic.plan'].mapped(lambda p: p._column_name()) ``` Forward-Port-Of: odoo/odoo#275839
This update corrects an issue where the 'Load More' button on the Odoo platform was consistently hidden. The fix ensures the button's visibility is correctly controlled based on the current state of the application, improving the user experience. This resolves a technical problem impacting how users interact with the platform.
Original PR description
Since #198829, a `t-att-class` has been added to the `loadOlder` template that relies on `mountedAndLoaded` of thread state to control the visibility of the `Load More` button. But it doesn't read the value from the state properly. As a result, the button is always transparent. This change fixes this by reading the value from the state. Forward-Port-Of: odoo/odoo#275253
This pull request updates the core spreadsheet component within Odoo. It addresses several minor bugs and improves the spreadsheet's functionality, specifically related to conditional formatting and file organization. These changes ensure the spreadsheet continues to operate smoothly and efficiently.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/6eb95de5f [REL] 19.1.27 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/6eb95de5f [REL] 19.1.27 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/67aef5252 [FIX] conditional_formatting: handle zero color scale midpoint [Task: 6312961](https://www.odoo.com/odoo/2328/tasks/6312961) https://github.com/odoo/o-spreadsheet/commit/f993d6e32 [FIX] config: filter-out claude folder from prettier [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update resolves an issue where the 'load order tour' would fail on slower browsers due to a race condition when jumping to a pinned message. The fix ensures the tour waits for the message to fully scroll into view before proceeding, preventing the tour from timing out and improving the user experience.
Original PR description
Jumping to the pinned message highlights it and asynchronously scrolls it into view. On a slow browser that scroll can land right after the tour scrolls to the bottom and pull the thread back up to the pinned message. The load-newer observer callback, which awaits the highlight scroll before re-checking visibility, then finds the bottom sentinel hidden and drops the fetch of the following messages, so the final :count(60) step never matches and times out. Wait for the pinned message to be scrolled into view and for its highlight to clear (its scroll is then finished) before scrolling to the bottom, so the jump scroll no longer competes. https://runbot.odoo.com/odoo/error/941509
This update resolves a technical problem within the mass mailing module that was causing loading errors even when components were already destroyed. The fix ensures smoother operation and prevents potential disruptions to the system. This change improves the overall stability of the Odoo platform.
Original PR description
Commit [1] introduced an erroneous `!` operator before status, that would throw loading errors even if the component was already destroyed (those errors should be masked). [1]: https://github.com/odoo/odoo/commit/51c7846f99eb061a1d71ca5d9967f5b01f5551a1
A recent update to the website builder was causing delays in updates due to a minor issue with how images were being loaded. This fix resolves a problem where the system would wait unnecessarily for image data, impacting builder responsiveness. The change ensures faster website updates and a smoother user experience.
Original PR description
Commit [1] introduced a cache for images' src in `_getValidSrc`. An undefined src will work but block the thread for a moment (up to seconds in some cases) until `fetch` returns a 404. The bug can be seen from the website builder: - Open the builder - Open your dev tools on the "network" tab - Click on the website logo => a failed fetch (404) appears and blocks the builder from being updated quickly. It happens because the element doesn't have any `dataset.originalSrc` (in this case, because it is an image field). [1]: https://github.com/odoo/odoo/commit/5164080cbadddaa7052dd4d2f997b944bd7a16e8 task-6247171 Forward-Port-Of: odoo/odoo#275078
This update resolves an issue where Chrome was incorrectly suggesting previously filled values in empty selection fields. The change prevents the browser from offering auto-completion, ensuring a cleaner and more predictable user experience when creating new records. This improves data entry consistency.
Original PR description
Chrome keeps suggesting autocompletion on empty selection field. https://github.com/odoo/odoo/commit/5e7bc4ab851dba3d2e0b965f69e06cfeacec5674 is the commit introducing `autocomplete="selectMenuAutocompleteOff"` and I don't know why this value has been chosen but Chrome seem to consider this token as invalid Steps to reproduce: - Put a selection field on a form view with Studio - Create a record, complete the selection field and save - Create a new record and click on the selection field Current Behaviour: Chrome keeps suggesting the previously filled values Desired Behaviour: No autocomplete from the browser. Forward-Port-Of: odoo/odoo#274086
This update fixes a problem where device login alerts weren't being displayed in the user's preferred language. The fix ensures that notifications, including email subjects and body content, are correctly translated based on the user's selected language setting. This improves the user experience and ensures consistent communication across all languages.
Original PR description
**Steps to reproduce:** - Enable 2FA - Change user language - Log in in another private window / device - Check the notification email of a login with another device - Email body/subject are not properly adapted to user language **Issue:** View manual rendering doesn't pass the user language. **Fix:** Add it to the context before `_render_template` and subject translation (reapply similar fix [1]). [1] https://github.com/odoo/odoo/commit/4d8d1736ca03a3d6b4e86cbc7463a79a284d1f3c opw-6042550 Forward-Port-Of: odoo/odoo#274333 Forward-Port-Of: odoo/odoo#261468
This update corrects a visual issue where header text was too dark on mobile, particularly when the menu was opened at the top of the page. The fix ensures consistent color contrast and readability across the website, improving the user experience. This was a result of a conversion update that inadvertently removed a key CSS setting.
Original PR description
Steps to reproduce: - Set the header position to "Over the Content" - Set the background color to the last preset (dark) - Go to mobile view => If you are at the top of the page when opening the menu, the text is too dark to be readable. When the conversion from publicWidget to interaction was done, a mistake was made when converting HeaderGeneral. `o_top_menu_collapse_shown` was not toggled on `header#top` anymore. Therefore some css was not applied, leading to issues with the color constrasts. This commit fixes this issue by fixing the selector in dynamicContent. task-6311038 Forward-Port-Of: odoo/odoo#271410 Forward-Port-Of: odoo/odoo#270560
This update adds email verification to the French PDP registration wizard. Previously, invalid email addresses were accepted, leading to potential errors later in the process. This change ensures data integrity and a smoother user experience for customers registering through the French PDP.
Original PR description
No verification was done on the contact email in the wizard but if the email is invalid the user would have an error later task-6344324 Forward-Port-Of: odoo/odoo#274065
Features or functions removed from Odoo
This update refines the way payment lines are handled within the restaurant POS module. The team has switched to a more modern, camelCase naming convention for payment methods, enhancing the system's internal structure and aligning with current development standards. This change ensures smoother and more efficient payment processing.
Original PR description
In this commit: - Use the new method names in the payment adjustment flow. - Replace deprecated snake_case methods with their camelCase equivalents for payment lines, payment terminals, and order totals. Task:6049128 Forward-Port-Of: odoo/odoo#271792
11 changes
Enhancements to existing features
This update ensures that when expenses are marked as duplicates, their associated bills are automatically recognized as duplicates as well. Previously, bill duplication was handled separately, leading to potential inconsistencies. This change streamlines expense management and improves data accuracy.
Original PR description
Bills linked to expenses now rely on the expense duplication logic instead of the standard bill duplication. This ensures that when two expenses are marked as duplicates, their corresponding bills are also recognized as duplicates. task-5262550
This update brings the Owl library, a key component of our website's image carousel functionality, to version 2.8.4. This includes a fix to prevent lost renders and enables compatibility with Node.js, improving the overall performance and stability of our website. These changes enhance the user experience and ensure consistent image display.
Original PR description
- [FIX] runtime: don't lose coalesced renders - [IMP] loadable with nodejs See https://github.com/odoo/owl/commits/owl-2.x/ for more details 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#275568
This update ensures that product prediction based on name works consistently for all users. Previously, the feature was running regardless of whether users had disabled it in their settings, which could lead to confusion. Now, product prediction will automatically run for community users and will respect the user's preference as defined by the 'predict_bill_product' setting.
Original PR description
Context: There was an enterprise field `predict_bill_product` allowing users to toggle product prediction based on line label. Before this commit, product prediction by name was running without taking into account the value of this field, which could confuse users who had disabled the feature in settings. This commit makes product prediction by name depend on this field. For community users, the prediction will run by default. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267138
Resolved issues and error corrections
This update corrects a visual inconsistency in the website's accordion controls. A recent change improved the design by using icons instead of background images, but a specific rule was overriding the intended color styling. This fix ensures the accordion has a consistent color appearance regardless of whether it's expanded or collapsed, improving the overall user experience.
Original PR description
In commit[1] we restyled the accordion snippets, removing the background-image to use oi-icons instead. However due to selector specificty, the rule was taking priority. This :not is actually wrong since we want the color to apply as well when the accordion is collapsed (else you have 2 different colors between the collapsed uncollapsed state) task-6361379 [1]: f26a1535b96c728e4360d94c0c06de138a6b1b3f --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#274016
This update resolves an issue that prevented importing large Peppol invoices due to a technical error in the underlying XML parsing library. The fix involves pre-processing the invoice data to remove problematic elements, ensuring smoother and more reliable invoice imports. This improves the system's ability to handle a wider range of Peppol invoice formats.
Original PR description
### Description: When importing a Peppol invoice containing a massive embedded attachment, the `lxml` library throws an `lxml.etree.XMLSyntaxError: huge text node` error. This is a built-in safety check in libxml2 designed to prevent DoS attacks via XML entity expansion or malicious bombs [^1]. Rather than disabling this security protection globally using the `huge_tree` parser flag, we pre-process and trim the raw XML to remove the heavy binary nodes before parsing. ### References: opw-6085893 [^1]: https://lxml.de/6.0/FAQ.html#is-lxml-vulnerable-to-xml-bombs Forward-Port-Of: odoo/odoo#275367
A recent test failure was caused by an incorrect calculation of holiday allocations in our Odoo system. This update adds a 'freeze_time' to the system for a specific date, ensuring that holiday calculations accurately reflect the intended accrual rules, particularly in future builds. This prevents over-allocation of holiday days.
Original PR description
Problem ------------------------ test_department_accrual_allocation was failing due to the allocation being calculated as 26 days instead of 21 in faketime builds set to 2027. This was because the accrual plan was set to accrue 21 days per year and carry over 5 days from the previous year. Since the allocation was created on Jan 1st 2026, all 2027 builds were calculating the allocation to have 5 extra days. Solution ---------------------- Added freeze_time for 2026-03-01 to ensure the date stays the same. runbot-939344 task-6344033 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#272728
This update corrects a technical issue where an empty distribution model was being incorrectly merged. The change removes unnecessary merging logic, preventing errors that occurred when attempting to merge empty models. This ensures smoother operation and avoids potential data inconsistencies.
Original PR description
It is possible to have an empty distribution model, there is therefore ne need to merge it, especially since it raises when doing this ```python self.env['account.analytic.plan'].mapped(lambda p: p._column_name()) ``` Forward-Port-Of: odoo/odoo#275839
This update addresses minor issues and improvements within the Odoo spreadsheet component. Specifically, it fixes a problem with conditional formatting and ensures the component is running the latest version (18.3.55). This ensures consistent spreadsheet functionality across Odoo.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/dc14a7ccf [REL] 18.3.55 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/dc14a7ccf [REL] 18.3.55 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/af3978059 [FIX] conditional_formatting: handle zero color scale midpoint [Task: 6312961](https://www.odoo.com/odoo/2328/tasks/6312961) https://github.com/odoo/o-spreadsheet/commit/d1364a37e [FIX] config: filter-out claude folder from prettier [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update fixes an issue where discount lines in the TBAI XML file generated for tax reporting were incorrectly showing negative import values. The fix ensures that all monetary values, including discounts, are consistently represented as positive numbers, aligning with the system's expected format. This prevents potential errors in tax reporting and data accuracy.
Original PR description
Step to reproduce: - install pos_discount and l10n_es_edi_tbai_pos with demo data - start pos, add a product and a discount of 10% - fulfill the order - go to backend and open that order - from…
Step to reproduce: - install pos_discount and l10n_es_edi_tbai_pos with demo data - start pos, add a product and a discount of 10% - fulfill the order - go to backend and open that order - from "TicketBai" page, open the "TicketBAI Post File" xml file Observation: - `ImporteUnitario` and `ImporteTotal` were exported as positive values for discount lines. cause: - Commit [1] assumed tax details are always positive. - This is not generally true, in case we have price_unit < 0 - The logic relied on `is_refund`, which depends on `qty * price`. - `_l10n_es_tbai_get_values` then multiplied values by `-1` again for refunds. https://github.com/odoo/odoo/blob/e751fa1e010dbda63903d598048ef415709b4af4/addons/l10n_es_edi_tbai_pos/models/pos_order.py#L177-L181 - For discount lines, `is_refund = True` and `price = -10`, resulting in `-10 * -1 = 10`. Fix: - Ensure tax detail values are always returned as positive values, matching the assumption introduced in commit [1] [1] https://github.com/odoo/odoo/commit/03d55104e49aa65aa4c6475e199747fe9132e754 opw-6226003 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265777
This update fixes a technical issue that prevented push notifications from renewing properly when the browser refreshed the subscription. The system now correctly handles subscription renewals, ensuring that users continue to receive notifications as expected. This improves the reliability of our messaging system.
Original PR description
When a push subscription is renewed by the browser (typically every few days), the pushsubscriptionchange event fires and the service worker attempts to re-register the new subscription endpoint via…
When a push subscription is renewed by the browser (typically every few days), the pushsubscriptionchange event fires and the service worker attempts to re-register the new subscription endpoint via register_devices(). However, the VAPID public key was missing from the request kwargs. The server-side register_devices() always validates the VAPID key first and raises InvalidVapidError when it is absent. This caused the renewed subscription to never be saved in the database, silently breaking push notifications after the first subscription renewal. Fix by extracting the applicationServerKey from the new subscription's options and encoding it as a base64url string (without padding) — matching the existing logic in webclient.js _arrayBufferToBase64(). Description of the issue/feature this PR addresses: Current behavior before PR: Subscriptions don't get renewed causing push notifications to stop eventually. Desired behavior after PR is merged: Subscriptions get renewed successfully. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#275217
This update fixes an issue where attachments linked to invoices through journals weren't being sent via Peppol. The fix ensures that all attachments associated with invoices are correctly transmitted, improving invoice delivery processes. This resolves a previous limitation impacting Peppol integration.
Original PR description
When an attachment is added to an email template and is linked to a journal, and then you try to send an invoice, the attachment is shown in the attachments box but is not sent via peppol, the reason is that we were filtering to send only manually added attachments, and the email attachment was not considered "manual". task-id-6241354 Forward-Port-Of: odoo/odoo#272472
12 changes
Enhancements to existing features
This update improves the performance and reliability of our website's image galleries by upgrading the Owl library to version 2.8.4. Specifically, it fixes a bug that prevented the loss of rendered images and adds support for running Owl with Node.js, enhancing flexibility.
Original PR description
- [FIX] runtime: don't lose coalesced renders - [IMP] loadable with nodejs See https://github.com/odoo/owl/commits/owl-2.x/ for more details 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#275568
Resolved issues and error corrections
This update corrects a crash that occurred when the system attempted to merge partners using UUID-formatted access tokens. The fix ensures the system correctly handles both the older numeric partner ID format and the newer UUID format, preventing errors and improving stability.
Original PR description
The SQL query in _update_foreign_keys was casting access_token to integer unconditionally, but website_visitor.access_token is a Char field that uses two formats: - Legacy: partner_id stored as a numeric string (e.g. '105249') - Current: 32-char UUID hex string (e.g. 'b0dd4bfd041f4b42957357ba7e067dda') The ::int cast raises InvalidTextRepresentation on UUID-format tokens. Fix: guard the cast with a regex so only rows with numeric access_tokens are processed; UUID-format rows are left untouched. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a technical issue where an empty distribution model could cause errors. The fix prevents unnecessary merging of these models, streamlining the system and avoiding potential problems. This improves the stability and efficiency of the analytic accounting features.
Original PR description
It is possible to have an empty distribution model, there is therefore ne need to merge it, especially since it raises when doing this ```python self.env['account.analytic.plan'].mapped(lambda p: p._column_name()) ```
This update corrects a technical issue where some users were unable to access certain elements within the partner view due to inconsistent access rights. The fix ensures all users, regardless of their group membership, can properly interact with the relevant features. This improves overall system usability and prevents potential data access problems.
Original PR description
This PR fixes the following warning (similar ones with different XMLID) which occurred during system update. ``` WARNING ? odoo.addons.base.models.ir_ui_view: <b>Access Rights…
This PR fixes the following warning (similar ones with different XMLID) which occurred during system update.
```
WARNING ? odoo.addons.base.models.ir_ui_view: <b>Access Rights Inconsistency</b><br/>This view may not work for all users: some users may have a combination of
groups where the elements <b><tt><button></tt></b> are displayed, but they depend on the field <b><tt>loyalty_card_count</tt></b> that is not accessible. You might fix this by mo
difying user groups to make sure that all users who have access to those elements also have access to the field, typically via group implications. Alternatively, you could adjust the “<
i>groups</i>” or “<i>invisible</i>” attributes for these fields, to make sure they are always available together.<br/>Debugging information:<br/>- field “loyalty_card_count” is accessib
le for groups: 'base.group_user'<br/>- element “<button name="action_view_loyalty_cards" type="object" class="oe_stat_button" icon="fa-money"
groups="base.group_system,sales_team.group_sale_salesman" invisible="loyalty_card_count == 0"/>” is shown in the view for groups: ('base.group_portal' & &
#39;base.group_system') | ('base.group_public' & 'base.group_system') | ('base.group_system' & 'base.group_user') | ('base.group_system&#
39; & 'base.group_partner_manager') | 'sales_team.group_sale_salesman'
View error context:
{'file': '/tmp/addons/account_invoice_import_simple_pdf/views/res_partner.xml',
'line': 1,
'name': 'res.partner form',
'view': ir.ui.view(15203,),
'view.model': 'res.partner',
'view.parent': ir.ui.view(15202,),
'xmlid': 'view_partner_property_form_move'}
```
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update corrects a technical issue in the Odoo accounting system that could have caused errors during payment processing. The fix ensures the system correctly identifies the 'company' record instead of the 'self' record, preventing potential errors and improving payment reliability. This resolves a minor bug impacting financial transactions.
Original PR description
This commit https://github.com/odoo/odoo/commit/f54d6918d8ef5aa143e63b7dc79e8c3e3d8583f8 introduced a bug, calling _get_batch_payment_sequence_values on self instead of company triggering possible ensure_one exception if self is not one company.
This pull request updates the core spreadsheet component within Odoo. It addresses several technical improvements and bug fixes related to spreadsheet functionality, specifically focusing on conditional formatting and internal configuration. These updates ensure the spreadsheet component continues to operate smoothly and reliably.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/9183e3668 [REL] 18.0.74 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/9183e3668 [REL] 18.0.74 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/ec8874600 [FIX] conditional_formatting: handle zero color scale midpoint [Task: 6312961](https://www.odoo.com/odoo/2328/tasks/6312961) https://github.com/odoo/o-spreadsheet/commit/8278af136 [FIX] config: filter-out claude folder from prettier [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update ensures that the Klipy search placeholder now displays "Search KLIPY" as required by Klipy's attribution guidelines. This improves the user experience and maintains compliance with Klipy's documentation. The change was made to align with the platform's integration with Klipy.
Original PR description
Klipy requires attribution with "Search KLIPY" as the default placeholder [1]. This commit complies these guidelines. [1]: https://docs.klipy.com/attribution Forward-Port-Of: odoo/odoo#275677
A recent change blocked users from creating social media posts within event communications. This update removes a restriction that was causing the issue, allowing users to once again add social media posts to event communication templates. The change was initially intended to limit template edits but inadvertently caused broader functionality problems.
Original PR description
Issue: User goes to Event.event Form -> communication tab -> add line - can no longer create a social post in template communication tab Fix: remove "no_create_edit: True" to the associated field in the xml to unblock creation of new mail.templates Reverted from commit (odoo/odoo@f58e9f97192ac0ff8d159377494d6c68f871d20b) due to not being able to make social media posts on event communication tab. I originanlly suggested this change because WA Templates need more limitations for creation and edits. This then blocked other creation and edits that rely on this flow. opw-6334168
This update resolves an issue where animated GIFs used within image shapes wouldn't play correctly in Firefox and Safari. The team added a technical workaround to ensure GIFs now function as expected, expanding the usability of image shapes with animated content.
Original PR description
Animated GIFs applied with an image shape freeze on Firefox and Safari when the shape's SVG is otherwise static. A dummy `<animateMotion dur="1ms" repeatCount="indefinite"/>` child on the <image> element keeps the animation running so the GIF plays. This hack was introduced in [1] but was missing from most shapes. This commit adds it to every <image> element that lacked it so any shape can be used with a GIF. task-5967171 [1]: https://github.com/odoo/odoo/commit/144e5ef799060da860a5fb1fbe0fd009919afe79
This update corrects a minor error in the turnstile template that prevented users from consistently controlling the display mode via the ?cf=show parameter. The fix ensures the turnstile appears as intended, resolving a visual inconsistency. This update is a safe forward-port from the 17.0 release.
Original PR description
Stable forward-port source patch. Issue - The turnstile template uses a misspelled variable name in data-appearance: appeareance. - JS provides appearance. - Because of this mismatch, data-appearance always falls back to interaction-only and ?cf=show cannot force always mode. Fix - Replace appeareance with appearance in the turnstile template. Why stable-safe - One-line template fix. - No API/model/signature changes. - No behavior change outside the intended appearance selection. This is intended as the 17.0 source fix so forward-porting can propagate to upper versions. Related: odoo/odoo#273306 and odoo/odoo#273652 Forward-Port-Of: odoo/odoo#273706
This update fixes a potential issue where loading certificates could cause unexpected errors and crashes in Odoo. By implementing safeguards, the system now gracefully handles malformed certificates, preventing tracebacks and ensuring smoother operation. This improves the overall reliability of certificate management within Odoo.
Original PR description
Loading a certificate could raise an unhandled exception instead of failing gracefully. Clearing the content, uploading a bundle with a corrupted certificate block, or handling certificates with unsupported signature algorithms or malformed extensions all could end up in a traceback. Guard those paths to ensure loading errors are handled. opw-6370529 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
Features or functions removed from Odoo
This update removes an unnecessary and always-true check within the Odoo POS self-ordering module. The previous code was designed to verify if the self-ordering mode was 'qr_code', but this option is no longer valid. This change streamlines the code and improves efficiency without impacting functionality.
Original PR description
Description of the issue/feature this PR addresses: Removed obsolete code checking "this.config.self_ordering_mode !== 'qr_code'". Since "qr_code" is not a valid value of the "self_ordering_mode" selection field. The condition is always true.
5 changes
Resolved issues and error corrections
This update ensures the Odoo spreadsheet component is running the latest version, addressing potential bugs and improving performance. The changes include fixes for conditional formatting and updates to the underlying technology. This ensures the spreadsheet functionality continues to operate smoothly within Odoo.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/209fe7cdc [REL] 17.0.102 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/209fe7cdc [REL] 17.0.102 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/23f83e0cb [FIX] conditional_formatting: handle zero color scale midpoint [Task: 6312961](https://www.odoo.com/odoo/2328/tasks/6312961) https://github.com/odoo/o-spreadsheet/commit/b016fb42b [FIX] config: filter-out claude folder from prettier [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/bc58e58d7 [REL] Ghost-rel [](https://www.odoo.com/odoo/2328/tasks/) https://github.com/odoo/o-spreadsheet/commit/22a817fe5 [FIX] config: bump node version in GH action [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update fixes a problem where users were repeatedly receiving duplicate vendor bills. The system was incorrectly creating new invoices for each incoming message, leading to unnecessary processing. Now, the system checks for existing invoices before processing new ones, preventing duplicates and improving efficiency.
Original PR description
Many users were receiving duplicate vendor bills. The issue was that duplicates were never detected in the receiving flow. Every incoming message returned by the proxy was processed and turned into a new `account.move`, even if it had already been imported previously. This commit filters out messages whose UUID already matches an existing `account.move` before processing them, and acknowledges those duplicates on the IAP side so they are not received again on the next run. task-5930116 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a technical issue related to how the Odoo website modules (website, website_sale) process data. By replacing synchronous `forEach` loops with standard `for` loops, the system's performance has been enhanced. This ensures smoother operation and avoids potential errors within these key website functionalities.
Original PR description
*: website, website_sale `forEach` is a synchronous operation, so it doesn't support promises. We refactor its usage to use `for` loops. task-4794299
This update fixes a confusing error message related to zero amounts in account reconciliation settings. The change ensures that error messages accurately reflect the type of amount being validated, leading to a clearer and more user-friendly experience. This improves the accuracy of reconciliation processes.
Original PR description
In _validate_amount(), setting a "Percentage of balance" line to 0 raises "Statement line percentage can't be 0", and setting a "Percentage of statement line" to 0 raises "Balance percentage can't be 0". Align each error message with the amount type being validated. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Documentation and clarification updates
This update formally recognizes the contributions from Royal Import & Export Ltd and Colin Van den Akker by recording their signed Contributor License Agreements. This allows Odoo to accept code changes and features from this valuable contributor. The CLA signatures are now stored for future use and to ensure compliance with Odoo's open-source licensing.
Original PR description
Description of the issue/feature this PR addresses: Contributor License Agreement signatures for Royal Import & Export Ltd and Colin Van den Akker, per https://github.com/odoo/odoo/blob/17.0/doc/cla/sign-cla.md - Corporate CLA: `doc/cla/corporate/royalimport.md` - Individual CLA: `doc/cla/individual/colinvandenakker.md` Targeted at **17.0** (oldest supported LTS) so robodoo can forward-port to 18.0/19.0. Current behavior before PR: No corporate or individual CLA on file for Royal Import / Colin Van den Akker. Desired behavior after PR is merged: CCLA and ICLA are recorded so contributions from https://github.com/royalimport can be accepted. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr