Thursday, September 26, 2024
17 changes · 18.0
Enhancements to existing features
Point of Sale users can now record cash in and cash out movements even when the system is offline. This helps stores continue normal cash handling during connectivity interruptions and sync the work later.
Original PR description
Before this commit it was not possible to cash in / out offline. This commit allows to cash in / out offline.
The HTML editor floating toolbar now waits until users finish selecting text before appearing. This reduces interruptions while selecting content with a mouse or keyboard and makes editing feel smoother and more predictable.
Original PR description
This commit changes the behavior of the floating toolbar so that it will not open until the selection made by the user is complete. This means that, when selecting text with the mouse, the toolbar will open only after the mouseup event. Likewise, when selecting text with the keyboard (e.g. shift + arrows), the toolbar will open only after the key up event. In this case, the toolbar opening is debounced in order to only happen at the end of a sequence of keystrokes. task-3515977 Backward-port of https://github.com/odoo/odoo/pull/180948
Inventory barcode workflows now provide clearer feedback during RFID scans, including total reads, unique reads, scan duration, and read rate in a temporary pop-up. The update also improves multi-barcode handling, allows the same serial number across different products, and makes related barcode screens and tests more reliable.
Original PR description
RFID Count ========= While scanning RFIDs, instead of displaying the usual "Processing n/N barcodes", a pop-up with information (total reads count, unique reads count, read time and read rate) wille be displayed. This pop-up closes itself after 5 seconds. ______________ Follows this PR: odoo/enterprise#68825 [task-4089638](https://www.odoo.com/odoo/project.task/4089638)
Appointment bookings that require manual confirmation now use clearer email templates for request-based bookings. Customers receive a confirmation email when a requested appointment is approved and marked as booked, improving communication and reducing uncertainty.
Original PR description
This commit globally improves the bookings that need manual confirmation: - Adapt the mailing templates to take into account 'request' bookings ; - Send a confirmation email when the appointment status changes to 'booked' ; - Slightly tune the manual confirmation conditions. Task-3918889
Approval requests are now automatically cleared when certain business records, such as sales orders, are reset to an earlier draft stage. This ensures a fresh approval process starts after a major change or rollback, reducing the risk of relying on outdated approvals.
Original PR description
This commit implements the feature of removing every entries related to a recordset. This is useful in following use case: - Have approvals on Sale Order - The sale order's life goes on and with it the approval flow - The sale order has a major problem business-wise down the line - It is rollbacked to the "draft" status => In that case we want all approval entries to be deleted, since the approval lifecycle must start from scratch when the sale order is resetted to draft. This commit implements this feature via the creation of Base Automations and Server Actions task-4123521
Documents users can now pin and unpin embedded actions themselves. This makes frequently used document actions easier to access and gives standard document users more control without requiring higher permissions.
Original PR description
We want members of the documents_user group to be able to pin/unpin embedded actions. task-3373836
Studio exports have been optimized so repeated data lookups are prepared once instead of recalculated many times. This should make exporting Studio customizations faster and smoother, especially for larger configurations.
Studio approvals are more reliable and easier to manage. Mobile users no longer hit a debug-mode crash when opening approval options, approval changes now refresh the record and chatter, and authorized users can revoke approvals from lower-priority rules.
Resolved issues and error corrections
Website editors can once again place form blocks cleanly inside other page sections without unwanted titles, background colors, or layout constraints. The main form option remains available as a polished, titled block, so users get the right default appearance for each use case.
Original PR description
It was still possible to use it as an inner snippet, but since [1], it looked broken without further edition of the dropped inner snippet: - The form had a gray background (instead of transparent). -…
Code cleanup and technical improvements
This update simplifies how editor pop-ups and menus are managed, making them more consistent and easier to maintain. It also improves behavior when users interact with fields inside these pop-ups, reducing unexpected focus changes while editing content.
Original PR description
The purpose of this PR is to make it easier to use overlays in the editor. 1. Clarify the createOverlay API. ================================ Before, we mixed up the positioning hook options and the…
The purpose of this PR is to make it easier to use overlays in the editor. 1. Clarify the createOverlay API. ================================ Before, we mixed up the positioning hook options and the EditorOverlay props. After, put all the positioning options in the positionOptions props and move the sequence to the last param, which corresponds to the overlay system options. 2. Automatically manage the close at pointerdown. ================================================= Before, the logic for closing overlays outside the overlay was duplicated in each component use by createOverlay. After, the overlay editor is responsible for closing overlays when a pointerdown occurs outsite of the overlay. You can disable this functionality with the closeOnPointerdown=‘false’ props. 3. Managing setSelections when the selection is not in the editable =================================================================== For example, the selection is in the input of an overlay. From this commit, when you call setSelection, if the selection is not in the editable, you no longer force the selection to be moved into the editable, you just update the activeSelection. When you want to force the restoration of the selection in the editable, for example when you close an overlay, you call the focusEditable function. This change makes it possible to call functions that manipulate the selection from the outside without having to refocus in the editor. 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
It was still possible to use it as an inner snippet, but since [1], it looked broken without further edition of the dropped inner snippet: - The form had a gray background (instead of transparent). - It was forced to be small-width and centered. - There was a big title coming with it, forcing the user to remove it. - ... Since then, [2] was introduced to regroup "main" snippets in a dedicated modal. The form snippet was moved there but also remained outside of it to keep the inner form snippet feature. This commit just splits the two usecases: - The original `s_website_form` snippet is now only suggested as an inner snippet. It was restored to be without title, background and other default styling features. - A new `s_title_form` is introduced, using the `s_website_form` inside, and suggested in the snippets modal instead of the original one. That one comes with a background color, title, etc. Note: in old databases and other codebase places, `s_website_form` will still be used as a main snippet so the code here also keeps that possibility to drop it as a main snippet and move it. It is just not suggested to be used as a main one anymore, but still possible. [1]: https://github.com/odoo/odoo/commit/a3b176bf21e4ad291f51b69360ca2194517617a0 [2]: https://github.com/odoo/odoo/commit/edf81c13d8f2f6d29a77d68cbfa0dc9216da3c2a Related to task-4206683
This update corrects how unpaid balances are shown when sales orders are loaded in Point of Sale and prevents crashes in common POS workflows. It improves reliability when adding products with add-ons in self-ordering and when reopening restaurant orders already at the payment stage.
Original PR description
In this commit: ==== - Order total was not shown properly when loading sales order in POS, instead of unpaid amount, total amount was shown everytime in due balance. - Fixed Traceback on adding product in cart which contains addons. - Fixed Traceback while opening an order that is in the payment stage in the restaurant from floorscreen.
This fixes a problem where tasks could not be found through linked selection fields because their display name was not searchable. The change helps users search and select tasks normally again across related records.
Original PR description
Since https://github.com/odoo/odoo/pull/174967, use name_search on task doesn't work correctly: "Non-stored field project.task.display_name cannot be searched" Which makes any many2one toward it unsearchable. The field display_name is only added when no display_name are set on the model. It means that every model 'overriding' display_name should also included `search='_search_display_name'`. Two solution: - add `display_name` has a normal field to be extended as usual. (import nightmare to fix) - just add `search='_search_display_name'` on every model taht have display_name =field...
This change ensures the Odoo Debian package correctly includes a required dependency on Ubuntu 24.04, preventing startup failures after installation. It also updates the packaging test environment so this kind of issue is caught earlier.
Original PR description
Since lxml.html.clean was moved to a separate package starting in lxml 5.2 the odoo Debian package was broken in Ubuntu 24.04. A first fix was attempted in 318df32585b. While the package was properly…
Since lxml.html.clean was moved to a separate package starting in lxml 5.2 the odoo Debian package was broken in Ubuntu 24.04. A first fix was attempted in 318df32585b. While the package was properly built with this fix and was installable, but Odoo failed to start under Ubuntu. The bug flew under the radar because the simple test after the package build is done with a Docker based on Debian Bookworm. In fact, the fix was not taken into account because the python packages defined in the debian/control are not really taken into account by dh_python3 that tries to compute the python dependencies. With this commit, a py3dist-overrides file is used to overrides the package mapping between python packages and debian packages. The same pipe trick is used as in the previous fix to ensure that the package is installable in Ubuntu 24.04 (which provides python3-lxml-html) and in Debian Bookworm (which does not provide the python3-lxm-html). Finally, the Docker image used for the build and the test is changed to use Ubuntu 24.04. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Website SEO tool now correctly handles newer language code formats when adding keywords. This prevents an error that interrupted SEO optimization work, helping users continue editing website metadata without disruption.
Original PR description
Steps to reproduce: - Go to Website - Open the menu Site > Optimize SEO - Try to add some keyword - Traceback occurs. Since [1], language codes in the front-end now follow the BCP 47 format. This commit ensures the proper application of jsToPyLocale and pyToJsLocale conversions. [1]: https://github.com/odoo/odoo/commit/42551616dcb563c39b915f2d510217a159668cb7 task-4210172
Spreadsheet pivot tables now correctly support using the same measure field more than once with different calculations, such as sum and average. This ensures users see all requested results instead of only one calculation being loaded.
Original PR description
Steps to reproduce: - Insert a pivot view in a spreadsheet - Add two measures with the same field name and different aggregators => Only one aggregator is fetched Before this commit, the Odoo pivot view in spreadsheet didn't support correctly the case where the same field was used multiple times in the measures section with different aggregators. This commit fixes this issue by overriding the needed methods of the web pivot model (on which the spreadsheet pivot model is based on) to change the way the measurements are stored. Before, it was the fieldname of the measure, now it is an id, based on the fieldname, the aggregator and the type of the measure. Task: 4207668 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
Bank statement reconciliation is now handled in the background instead of during the user's on-screen workflow. This prevents long loading times when bank statement data is processed, making the experience more responsive.
Original PR description
Previously, the _cron_try_auto_reconcile_statement_lines method was called directly from _fill_document_with_results, which could cause significant delays when triggered from the UI, resulting in long loading times for users. This commit resolves the issue by scheduling the reconciliation process as a background cron job, improving the responsiveness of the _fill_document_with_results function. Original task-4061457
Portal users can now switch to the document list view without seeing a client error. This keeps document browsing reliable for external users who need list-based navigation.
Original PR description
When portal users try to switch to the list view, they get a client error. The error is solved by keeping the studio service accessible to the ListRenderer. task-3373836