Daily updates from Odoo
Monday, December 9, 2024
21 changes
6 changes
Enhancements to existing features
The Sign portal now presents signing requests more clearly, with consistent icons, status colors, and less unnecessary information. Users can also download fully signed documents more easily, while expired documents are hidden from the portal list.
Original PR description
In this commit, - Replaced the sign icon in the portal to match the icon used in the backend helper for consistency. - Added the download button on my sign request to improve accessibility, allowing users to easily download fully signed documents. - Remove user information from my sign request as it doesn't provide any useful value to the user. - Remove expired documents from portal list view - Add different color for different state of sign request task-4163974
Boolean fields in Sign documents now appear as a checkbox with a tick when selected, or an empty box when not selected. This makes signed forms easier to read and reduces ambiguity compared with showing only an X.
Project sharing has been updated to align with recent platform changes and no longer relies on an embedded iframe approach. This improves consistency for users accessing shared projects and uses the standard user context to better manage which shared-project features are available.
Original PR description
This commit adapts the template used in project sharing according to the changes made in community. task-4267190
The self-ordering flow now includes preconfigured choices for eat-in, takeout, and delivery. This makes it quicker for businesses to guide customers to the right order type and helps preparation teams see clearer order context.
Original PR description
Ensure the user has access to easy pre configured switch for Eat in/ Takeout / Delivery taskId: 4310935
Studio search views can now group records using integer fields. This gives users more flexibility to organize and analyze data directly in Odoo without custom development.
Original PR description
SPECIFICATION: Enhances the Studio feature in the search view by adding support for grouping records by integer fields. Task-4287131
Portal users will now interact with WhatsApp-related conversations through the standard backend discussion area instead of a separate portal chat widget. This simplifies the experience and keeps customer communications in one consistent place.
13 changes
Enhancements to existing features
The Documents app now offers clearer folder navigation and a more consistent Home experience. Users can browse folders without unexpected panel expansion, see the folder context for targeted documents, and benefit from a cleaner paged view with fewer records loaded at once.
Original PR description
[IMP] documents improve search panel and home kanban view This commits brings changes to the search panel that should improve UX: - When coming from another app (e.g. Projects), the COMPANY folder…
[IMP] documents improve search panel and home kanban view This commits brings changes to the search panel that should improve UX: - When coming from another app (e.g. Projects), the COMPANY folder stays folded... -... and the name of the folder containing the targeted document is displayed below the breadcrumbs, right before the cogwheel. - "Home" background changes when you hover or select it, the same way as for the folders. - Deselect 'Home'* (if selected) when adding a search item. - Clear search and order by `last_accessed_date` when clicking on 'Home'. - When users navigate through COMPANY folders via the Kanban or the List view, and COMPANY is folded, the search panel does not expand the visited folders. - Clicking on the caret before the folder name, fold/unfold the folder without selecting it (setting it as the active folder). - Clicking on a folder name in the search panel just select it (no folding/unfolding). - Main folders like 'COMPANY', that name is preceded by an icon, also have a caret for folding/unfolding. - Kanban view: limit pager size to 40 records. * actually, it's just a visual trick: removing the active class from the 'Home' header element. task-4293935
Resolved issues and error corrections
This fix ensures that when a screen component fails while loading, Odoo avoids leaving users with a partially displayed and inconsistent page. Instead, the web client replaces the failed view with a safe blank component so the interface remains stable.
Original PR description
Before this commit, if a component raised an error on it's onMounted hook, the rest of the onMounted hooks of all the other components would not execute. This is a desired behaviour, if an error is raised, we need to stop the execution. The issue with this, is that the error component (and the others), are already in the DOM, and since the onMounted hook functions haven't been executed, this leaves an inconsistent state. This commit will allow the action service to identify this particular case, and mount an BlanckComponent, to avoid having an inconsistent view.
The self-order interface now shows the product information icon when a public product description exists. This lets kiosk and self-order customers view helpful product details before ordering, reducing confusion and improving the ordering experience.
Original PR description
Problem: The `public_description` field is not loaded in `_load_pos_data_fields`, which prevents the product information icon from appearing in the self-order interface, thus hiding the public description from users. Solution: Ensure the `public_description` field is loaded so that the product info icon is displayed, allowing users to view the product's public description. Steps to reproduce: - Add a Public description to a product. - Open the Kiosk/Self-order interface. - The info icon is not visible, and the product description cannot be viewed. opw-4250442 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Chat windows now use the full mobile screen correctly in Safari instead of being constrained by a desktop-style shape. This keeps longer conversation names and header content visible, making mobile chat usable and consistent across browsers.
Original PR description
Chat window have their style improved recently [1]: their size and aspect-ratio have changed. The aspect-ratio is intended for desktop use. In mobile, it should take whole height and width of screen.…
Chat window have their style improved recently [1]: their size and aspect-ratio have changed. The aspect-ratio is intended for desktop use. In mobile, it should take whole height and width of screen. This works well in almost all browsers: `w-100 h-100` seems to take precedence over explicit aspect-ratio. On Safari however, it seems to comply with given aspect-ratio even if this means cropping the content. This is unintentional and makes chat windows barely useable. Steps to reproduce: - Open a chat window with a relatively long conversation name on safari browser in small screen => The header content on the left is cropped. This commit fixes the issue by putting the `aspect-ratio` in a non-mobile rule. That way `w-100 h-100` will be used correctly in Safari browser as in all other browsers. [1]: https://github.com/odoo/odoo/pull/188665 Before / After <img width="233" alt="Screenshot 2024-12-09 at 11 46 10" src="https://github.com/user-attachments/assets/b60a306d-1357-41cc-874e-da0529e40b4c"> <img width="233" alt="Screenshot 2024-12-09 at 11 46 32" src="https://github.com/user-attachments/assets/efd5a75a-73a8-4f79-b273-56516bd4996e">
This fixes an issue where expanding a table in the HTML editor could cause the row picker to jump around and add rows too quickly. The table resizing controls now stay stable, making table editing smoother and less frustrating for users.
Original PR description
**Problem**: When creating a table and expanding its size, its position shifts upon reaching the window border due to the following code:…
**Problem**: When creating a table and expanding its size, its position shifts upon reaching the window border due to the following code: https://github.com/odoo/odoo/blob/1f4a85386eb258b08a3a6f43f1f3910598f005c4/addons/html_editor/static/src/core/overlay.js#L55-L57 The resize mechanism keeps the bottom of the table picker aligned with the top of the target element. When hovering over the gray square to add rows, the table expands upward (due to the position change), triggering a hover event again. This results in rapid row additions, causing the picker to jump back and forth, creating a poor user experience. **Solution**: Allow dynamic enabling or disabling of position changes during resizing, to match the fixed overlay positioning as prior versions (approved by the Product Owner). **Steps to reproduce**: 1. Open the editor and insert a table. 2. Start adding rows by hovering over the table's resize picker. 3. As the picker moves above the target element, try to hover to add more rows. 4. Observe that rows are rapidly added during mouse movement, and the picker jumps back to the bottom, causing chaotic behavior. opw-4351695 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change ensures email templates handle empty dynamic placeholders correctly by converting certain template tags into a safer format. It prevents broken rendering when a placeholder has no value, improving reliability for users editing or sending templated emails.
Original PR description
**Problem**: Self-closing `t` tags do not render properly, leading to issues in templates where the tag is opened but never closed. **Solution**: Extend the fix introduced in the following commit: https://github.com/odoo/odoo/commit/26b922ef5cad42da7e188195e919e54878d472fc to also cover `t` tags, ensuring proper conversion to open/closed tag format. **Steps to reproduce**: 1. Open Email templates. 2. Add a dynamic placeholder with no default value. 3. If the record has no value for that attribute, the `t` tag is opened but never closed, causing rendering issues. opw-4376109 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where opening a project could take users straight to a new sales order form instead of the expected sales order list. The change ensures the selected project shortcut uses its own settings, so users can still navigate and adjust the project top bar as intended.
Original PR description
Before this commit, when the user creates a new billable project and change the order of the embedded actions inside the topbar of that project to put `Sales orders` embedded action first to be able…
Before this commit, when the user creates a new billable project and change the order of the embedded actions inside the topbar of that project to put `Sales orders` embedded action first to be able to load that action first, the context of that embedded action is not given the `doAction` rpc and so the view loaded in the form view of SO to be able to create a new SO. The problem is if the user does not want to create a SO, it will not be able to change the first action to load for that project since the topbar is not visible in the form view. This commit makes sure the context of the embedded action to load is given to `doAction` rpc. Steps to reproduce the issue: ============================ 1. Install Sales and project apps 2. Create new billable project 3. go inside that project to see the tasks of that project and open the top bar 4. display the `Sales Order` embedded actions inside the top bar of that project 5. reorder the embeddded actions inside the top bar to first load `Sales Order` action when we open that project. 6. Go back to the project kanban view 7. Click on that project Expected Behavior ----------------- The list view of sale.order model should be displayed Current Behavior ---------------- The form view of sale.order model is opened to be able to create a new SO for that project. task-4295738
Applications received by email now create the candidate under the same company as the related job. This prevents recruitment records from being split across companies and avoids errors that could block incoming applications.
Original PR description
When an application is received through email, an `hr.candidate` is created without `company_id`. The default for this field is self.env.company. When processing an email this will be the company of OdooBot. `hr.applicant` on the other hand, will compute its default company based on the linked `hr.job`.
Because of this, it's possible that these two records are created in different companies leading to:
File ".../addons/hr_recruitment/models/hr_applicant.py", line 351, in create
raise ValidationError(_("You cannot create an applicant in a different company than the candidate"))
Fix it by creating the candidate in the same company the job is in.
opw-4384806This fix allows scheduled automated tasks to run even when assigned to a non-administrator user. It prevents jobs from failing due to overly strict permissions when recording their progress, improving reliability for routine background operations.
Original PR description
Step to reproduce: - Set any non-admin user as the cron scheduler - The cron won't run as the permission required to create the ir.cron.progress are admin Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where document actions with no group restrictions were hidden from users. These actions now correctly appear globally, helping teams access expected document workflows such as creating vendor bills.
Original PR description
**Current behavior:** Having some embedded action for `documents.document` which has no `groups_ids` set will result in that action not ever appearing in the actions bar/menu in the documents app.…
**Current behavior:**
Having some embedded action for `documents.document` which has no `groups_ids` set will result in that action not ever appearing in the actions bar/menu in the documents app.
**Expected behavior:**
In the absence of any records in the `groups_ids` relation, the actions should be exposed globally.
**Steps to reproduce:**
*`-i documents_account` for example*
1. In technical settings, open the embedded actions list view
2. Edit the `Create Vendor Bill` action so that it has an empty `groups_ids` field
3. Open the documents app, click on the finance tab on the left sidebar
4. Click on one of the demo documents, observe in the actions menu for the record that the create vendor bill action is no longer present
**Cause of the issue:**
The domain was constructed incorrectly, as the
`('field', 'in', [False] + X.ids)`
pattern does not work when `'field'` is itself a m2m recordset.
**Fix:**
Split this domain leaf into 2 so we can check for membership as well as falsy-ness.
opw-4342841Users limited to a branch company can now open contact records without being blocked by a company access error. This prevents unnecessary disruption for teams working in branch-based company setups.
Original PR description
Steps to reproduce 1. Install account_followup and contacts 2. Have a branch company 3. Have a user with only the branch in its allowed companies (setting in the "Access rights" tab) 4. With this user, go to Contacts and click on any contact. ** Access Error: Access to unauthorized or invalid companies. ** Cause Commit https://github.com/odoo/enterprise/commit/fb59524a95b0f78112002d1e4d5ad3d6c301de7e modified the way company dependent fields work, which reveals an access error issue: a user may not have access to the root company of the currently selected company. Change Currently `.with_company(self.env.company.root_id.id)` has no effect, remove it to fix access error. opw-4368736
Urban Piper order statuses in the POS ticket screen now refresh without requiring staff to reload the POS. This helps teams see when kitchen orders are completed in real time, reducing confusion and manual checks.
Original PR description
Steps to Produce: - Configure Urban Piper in your POS. - Open the particular session. - Configure preparation display. - Place test order and accept in through POS. - Order gets placed in Kitchen display. - Done the order from Kitchen Display. - Order status does not get updated in POS without reloading it. Issue: - Order status was not updated when the order was done from the Kitchen display. Fix: - Initially, only draft orders were fetched from the server but now all orders are been fetched from server that belongs to urbanPiper. task- 4320193
Users can now change a document or folder's parent location directly instead of relying only on drag and drop. When company folders are pinned or moved, the system better preserves the right access for previous owners or document managers without unnecessarily spreading those permissions to every child item.
Original PR description
Commit 1: Follow-up of previous owner keeps and `edit` permission on the documents set as company root. When moving a folder in Company, to pin it, and we add the previous owner or the document manager as member for them to keep access, we do not want to add the member on all children (default behavior). Adding a parameter to skip member propagation is more convenient than checking for partner existence before adding/editing them. Tests are adapted. Commit 2: It is not convenient nor necessary to restrict moving documents to using drag & drop. Note that we keep the action for the webclient as it will call action_create_shortcut or action_move_documents (with the same arguments list). Task-4365165
2 changes
Enhancements to existing features
This update significantly improves the speed of generating the Profit & Loss report, especially when using multiple analytic filters. The change streamlines the report generation process by avoiding unnecessary table creation, resulting in faster loading times for larger datasets. This enhances user experience and efficiency.
Original PR description
When loading the Profit and Loss report with multiple analytic filters, loading times can be very slow on larger databases. Analytic filtering necessitates the creation of a temporary table which is…
When loading the Profit and Loss report with multiple analytic filters, loading times can be very slow on larger databases. Analytic filtering necessitates the creation of a temporary table which is used to merge the account_move_line and account_analytic_line tables. This process takes an enormous amount of time on large databases and is unnecessary. Since this table is created whenever the analytic filters are changed (it is dropped on commit), it is much faster to only copy the relevant lines into the new table. This PR adds logic to identify the relevant analytic accounts for the given query, and changes the table-making query to only copy lines with the relevant analytic accounts attached to them. Performance Benchmarks Pre: | 100,000 lines | 250,000 lines| 500,000 lines| |--------|--------|--------| | 5.2s | 10.77s | 110s | | 4.86s | 11.43s | 110s | | 5.16s | 12.2s | 115s | Performance Benchmarks Post: | 100,000 lines | 250,000 lines | 500,000 lines | |--------|--------|--------| | 1.56s | 3.19s | 6.22s | | 2.65s | 6.03s | 11.58s | | 3.74s | 8.36s | 16.36s | OPW-4300365
Resolved issues and error corrections
This update fixes an issue where the precision of product prices on Ecuadorian customer invoices was incorrectly rounded, particularly when discounts were applied. The change ensures that all price calculations and the resulting XML invoices accurately reflect the specified decimal accuracy (4 digits) as set in the Odoo configuration, improving reporting accuracy for Ecuadorian clients.
Original PR description
### Steps to reproduce: - Activate developer mode - Install the 'l10n_ec' module and switch to an Ecuadorian company - In Settings > Technical > Database Structure > Decimal Accuracy change the…
### Steps to reproduce: - Activate developer mode - Install the 'l10n_ec' module and switch to an Ecuadorian company - In Settings > Technical > Database Structure > Decimal Accuracy change the number of decimals for "Product Price" to 4 for example - In Accounting, create a new Customer Invoice - Select 'Instituto Ecuatoriano' as Customer - Add a line with a price with 4 decimals - Select 'Sin utilization del sistema financiero' as Payment Method - Confirm - On the blue popup at the top of the page, click 'process now' to get the XML in the chatter - In the XML the "precioUnitario" field only has 2 precision digits, it has been rounded - When adding a discount of 100% this field has all precision digits needed ### Cause: The price_unit is calculated differently if the discount is 100%. The "precioUnitario" field should always have the number of precision digits specified in the settings. ### Solution: We need to find the unit price without the discount, but without the included. This value is not computed. As the values computed in the account.move.line are already rounded based on the currency (2 digits) we need to recompute the values using `compute_all` and multiplying by the `price_digits` to not round in `compute_all`. The way the rounding is made here is by taking the decimal precision from the settings and making it a power of 10 in `price_digits` (4 decimals results in price_digits = 10000). Then we compute the taxes with `price_unit * price_digits`. As, per definition, `price_unit` has the number of digits used in the calculation of `price_digits`, we end up with an integer. But after the results of `compute_all` may no longer be an integer. We need an integer to keep the decimal precision. This is why, in the result, there is a call to `round()`. The call to `float_round()` is to make sure there are not more decimals than 6. This is needed as the number displayed in the XML will always be of 6 decimals, so if the client set a number of decimals greater than 6, it will be rounded in the XML but not on the invoice. To ensure that both values are the same, we round the value here. Some tests had "precioUnitario" with strange values that did not match the actual price_unit. It was because the precedent way to calculate this field was not perfect, I guess. opw-4120341 Forward-Port-Of: odoo/enterprise#68555