Daily updates from Odoo
Wednesday, August 20, 2025
13 changes · master
New functionality added to Odoo
Manufacturing teams can now view scheduled manufacturing orders in a Gantt chart. This makes it easier to understand timing, expected duration, and status at a glance for better planning.
Original PR description
**Desired behavior after PR is merged:** - Gantt Chart was added to make it easier to visualize scheduled MOs, expected duration and their status. Task: 4931085
Enhancements to existing features
The Romanian SAF-T reporting setup now includes the correct tax types and codes for newly introduced taxes. This helps companies in Romania keep their statutory tax reports aligned with the latest legal requirements.
Original PR description
New taxes were introduced in Romania as per the new tax Law. The PR https://github.com/odoo/odoo/pull/221238/files added new taxes in community. This PR updates the SAF-T Tax Type and Code for the newly added taxes. TaskID:4979168 Forward-Port-Of: odoo/enterprise#92188 Forward-Port-Of: odoo/enterprise#91512
Appointment scheduling now includes easier time-of-day filters, a new chart view, and clearer booking information. This helps teams quickly understand demand, see booked capacity, and manage restaurant appointment resources more efficiently.
Original PR description
**: pos_restaurant_appointment In this commit: --- - Added time-based filters (Morning, Lunch, Evening) in the Kanban view. - Introduced a new Graph view for visualizing appointment data. - Displayed person count on resources that are booked during the event time. - Improved the overall Kanban UI for better readability and interaction. task-4873228
Bank statement imports and automatic matching are optimized for very large accounting databases, reducing the risk of slowdowns and timeouts. This makes reconciliation more reliable and significantly faster, with benchmarked processing time dropping from 185 seconds to 52 seconds for a 200-line import.
Original PR description
[FIX] account_accountant: refactor and optimize _try_auto_reconcile_statement_lines() In big databases, this method called on large recordsets of statement lines would take too much time, or worse:…
[FIX] account_accountant: refactor and optimize _try_auto_reconcile_statement_lines() In big databases, this method called on large recordsets of statement lines would take too much time, or worse: timeout. This is mainly because the 2 SQL queries are doing too complex searches and hence are badly optimized by the query planner. To solve that, * We search for reconciliable accounts outside the queries to avoid a join * We add a trigram index on statement_line.payment_ref and only use ILIKE operations for reference matching so that it can be used * Instead of using complex and costly regexp_split, we search for matches by splitting account_move_line.ref on ' - ' * We move some logic in python, amount matching, rather than in sql * We don't try anymore to match on amounts found in the payment_ref Additionnally, * The algorithm now treats the statement lines with and without partner the same for reference matching, but lines without partner are just ignored for the amount matching, as it's way too dangerous * Bug of with_prefetch, pre-loading the ids of a wrong object, has been fixed * We revert the patch https://github.com/odoo-dev/enterprise/commit/da52bc70cd745f3e9f7a0539528c84aa47b98cc5 because it was only a temporary measure while the time was back to acceptable * The test_matching_rules_with_empty_aml_ref, irrelevant, was removed Benchmark --------- Importing a csv file of 200 statement lines, on a database of 21M account.move.line, and thus triggering the culprit function, takes (hot timings): | Before | After | Speed-up | |--------|-------|----------| | 185 s | 52 s | ~3.5x | see https://github.com/odoo/odoo/pull/218642 Forward-Port-Of: odoo/enterprise#90077
The Helpdesk Customer Ratings menu now opens directly instead of relying on a server-only action. This improves compatibility with offline mode while keeping company-specific rating filters in place.
Original PR description
Before this commit, the "Customer Ratings" action in helpdesk menuitem was a server action. This was incompatible with the framework's offline mode, as it required a live connection to the server for execution. This commit replaces the server action with a direct window action. The dynamic company filtering is now handled by a non-stored computed field with a search method. task-4920367
Users can now start asset imports from a ready-made template that highlights the most important fields. The empty assets screen is clearer and offers a direct template import link, helping reduce setup confusion and import errors.
Original PR description
- Introduced a template file to guide users on which fields are most relevant during asset import, reducing confusion and import errors. - Updated the empty asset screen to include a clickable link: "Import assets using a template." - Removed the sample data banner previously visible on empty screens (e.g., My Company Chicago). task-4886537
Project privacy rules were updated across related business apps to match the latest project privacy options. This helps ensure access to project documents, field service work, forecasts, and timesheets follows the intended privacy setting consistently.
Original PR description
This commit's purpose is to update the ir.rules in accordance to the changes done in the community counterpart of this commit. task - 4029633
Signer names are now loaded once per request instead of repeatedly, reducing unnecessary database work. This makes the Sign template experience smoother and faster, especially for templates with many signer roles.
Original PR description
Currently, the application retrieves signer names multiple times from the database, leading to unnecessary overhead and delays. By modifying the logic to fetch signer names only once per request, we significantly reduce the number of database calls. This change will result in a smoother and faster user experience, especially when dealing with templates that contain many roles. task-4841694
Payroll users can now correct payslips when an employee record changes after a payslip was already generated. The former refund action is now part of a clearer revert-and-correct flow that automatically creates the updated payslip and makes related payslips easier to find.
Original PR description
This PR introduces a correction mechanism for payslips to handle scenarios where a new employee version applies to a period for which a payslip was generated using an older version. The existing "refund" action is renamed to "revert" and is now part of this broader correction process. A new payslip, reflecting the correct employee version, is automatically generated after the reversion. Additionally, UX is improved with smart buttons on payslips, allowing users to easily navigate between the original, reverted, and corrected payslip versions. Task: 4731029
Italian withholding report functionality is being consolidated into the main Italian reports module. This reduces the number of separate Italian localization modules to manage, making setup and maintenance simpler for users and administrators.
Original PR description
In an attempt to simplify italian modules, we are merging `l10n_it_edi_withholding_reports` into `l10n_it_reports`. task-5012581
The Sign app now presents signature field settings with clearer labels and a simpler size selector for text fields. Users can also archive unused field types, making configuration easier to manage without deleting records.
Original PR description
Changes include: - Change of the model name text in form and list views from "Signature Item Type" to "Signature fields". - Addition of "active" field in the sign.item.type model to add the option to archive/unarchive records. - Capitalized default value of "tip" field from "fill in" to "Fill in". - Removed "default_width" and "default_height" fields from the form view and substituted them with a new field "field_size" which allows for 3 values (short, normal, long) and, on change, updates the two height and width fields accordingly. This new field is only displayed when the "field_type" is set to Text. - Restructuring of the form view to have on the left normal fields and on the right autocompleted ones. - Change of the names of two columns on the list view: from "Specific Model Linked" to "Linked to" and from "Auto-fill Field" to "Linked field". Task: 4908814 Upgrade PR: [link](https://github.com/odoo/upgrade/pull/7993)
Subscription service products can now be configured to charge either a prorated amount or the full recurring period when added mid-cycle. Goods products continue to always invoice the full period, preserving the existing behavior while giving businesses more billing flexibility for services.
Original PR description
Before this PR, Subscription Goods Products are always invoiced for the full recurring period, even when added from an upsell or another method in between an ongoing invoicing period. For Subscription Service Products, instead, we always calculate the prorated price when adding them in between invoicing dates and we have the customer only pay for the remaining days in the period. The behavior of the Goods is intended and the flow is left untouched while for services, although the default is still to calculate the prorated price, we leave the option of deactivating this and invoicing for the full period price. Under the hood this is done by adding an allow_prorated_price field which is kept False for Goods and has default True for Services. Task: 4932997 [Upgrade PR](https://github.com/odoo/upgrade/pull/8228)
Point of Sale users now see clearer Epson printer status notifications when printing through an IoT device. If printing fails, the system shows the issue in a popup and gives staff the option to retry, helping reduce checkout delays.
Original PR description
Following odoo/odoo#208958, odoo/odoo#208611 and odoo/odoo#208058, we adapt the the iot printer in PoS to display the printer status in a modal in the PoS, with ability to retry on failure. Community PR: odoo/odoo#223581 Task: 4756311