Daily updates from Odoo
Friday, February 14, 2025
27 changes · master
Enhancements to existing features
Documents now supports easier card selection in Kanban views, including Alt-click selection and continued Ctrl-click support in Documents. This also makes Kanban actions more consistent with list views, including options such as inserting selected records into spreadsheets.
Original PR description
For Documents:
This commit reimplements the way Documents handle record selection. Since it
is now supported to select Kanban cards globally, we can now move some implemented
logic where it makes sense (KanbanRecord, KanbanController).
We can now also select cards by clicking on them with the 'Alt' key pressed, since
this is the main key being chosen for the feature to work on most kanbans ('Ctrl' key
cannot be used, since it opens records in new tabs). For Documents, we have decided
to continue supporting 'Ctrl' for the moment.
Code has been cleaned and simplified. Visual consistency with all kanbans has been
given, by slighlty adapting the look of the cards.
General changes:
Kanban has the same actions available as in List view. This includes "Insert in Spreadsheet".
The code has been shared accross both views, thanks to a hook dedicated with core functionalities.
task-4318322Signed PDF documents can now include a cryptographic signature, making it possible to detect if a document is changed after signing. Companies configure the required certificate information in Sign settings, improving trust when signed files are shared externally.
Original PR description
## Purpose Currently when we download a signed document, and send it by mail, we have no way to ensure that no change has been made on this pdf after the recipient signed. We would like to use some format that would keep track of all changes on the pdf. ## Specification Once signed, the pdf should be converted in a format that allows tracking of subsequent changes. ## Technical details In order to be able to add the cryptographic signature documents, the user must upload his private key and certificate files to the database from the settings. The user must also add the password used when creating the files. These settings are found under the sign catergory in the settings app. **Note**: The required files can be generated using the following command ```bash openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 ``` ### Known limitation - The signer currently only supports SHA256-RSA signing keys Task: 4331729
Document-related automations have been adjusted to work with the updated way Odoo links multi-step server actions. This keeps document, accounting, project, signing, and WhatsApp workflows operating consistently after the underlying platform change.
Original PR description
*: documents{_account,_project,_sign}, whatsapp
This commit adapts modules that uses server actions of type "Multi" to
their new type of child's relation: one2many.
It also contains an adaptation for the automatic naming of a child
action of type "Send Whatsapp message".
Task: opw-4370092Updated multiple email templates and demo signatures to better handle double hyphens, improving how automated messages appear to recipients. This is a small consistency and presentation improvement across invoicing, appointments, documents, subscriptions, field service, localization, and payroll-related content.
Original PR description
Part of: https://github.com/odoo/odoo/pull/194131 Task-4485719
Invoice reports now better support global invoices that combine multiple POS orders. This helps businesses using UrbanPiper integrations present consolidated order information more clearly and accurately on invoices.
Original PR description
In this commit: ------------------- - We adapted the report for the case of global invoices which will have multiple POS orders. task: 4256209 Related PR: https://github.com/odoo/odoo/pull/186723
Users can now add Knowledge articles to the templates gallery, making reusable content easier to find and duplicate. The gallery also includes permission-aware delete options, so administrators can remove templates and article owners with write access can remove articles from the gallery.
Original PR description
This commit adds a new button to the Knowledge kebab menu, allowing users to add articles to the templates gallery. This feature improves usability by making it easier for users to locate their templates and create copies. To ease template management, a delete button has been added next to each article and template in the gallery. The button is displayed only to users with the appropriate permissions: - Deleting a template requires administrator privileges. - Deleting an article from the templates gallery requires "write" access to the article. Task-4247544
This update keeps India GST reporting aligned with recent changes to the Indian e-invoicing setup. It is a small internal compatibility change that helps preserve existing reporting and send/print flows without introducing new business features.
Original PR description
Minimal technical changes for the counter commit of communnity commit Before this `l10n_in_edi` dependency was `account_edi` this commits counter community commit removes the dependency of `account_edi` from `l10n_in_edi` this commit only changes the technical things related to `l10n_in_edi` related- - https://github.com/odoo/upgrade/pull/7098 - https://github.com/odoo/odoo/pull/191920 task-4190711
Appraisal survey templates included with the system are no longer limited to a single default language. This helps companies use appraisal surveys across all installed languages without extra configuration.
Original PR description
We have added a field on the model survey (lang_ids) that allow the user to define the language in which the survey is translated. The default value for this field is the current user language. To not limit all the survey created in demo/data to English, we set lang_ids to False for them which means that they are available in all installed language. Task-3884012
Profit and Loss reports can now show financial budget columns alongside horizontal grouping, making it easier to compare grouped results against budgets. Budget values are placed clearly at the end of the report and remain aligned even when reports use multiple header levels.
Original PR description
Previously, the Profit and Loss report could not display both a horizontal groupby and financial budget columns simultaneously. This commit resolves that limitation by ensuring the budget columns (base, amount, and percentage) are displayed at the end of the report, separate from the horizontal groupby columns. Key improvements: - Budget columns are positioned after the horizontal groupby, avoiding mixing them within grouped columns. - If the horizontal groupby spans multiple header layers (e.g., with analytic filters), budget columns now utilize rowspan to ensure proper alignment. - This allows for cleaner reports where both groupby and budget filters can be visualized together. Note: The percentage column does not include the horizontal total, but this approach still enhances the ability to analyze horizontal values against the budget. task-4456510
Product image retrieval by barcode now uses the Barcode Lookup service instead of the previous Google-based approach. The image-fetching workflow has been consolidated into the existing Product Barcode Lookup app, reducing separate module maintenance while keeping product enrichment available.
Original PR description
Before this commit: ================== - Before this commit to fetch images of existing products using barcode we used Google API. - To fetch images of existing products we have a module product_images. After this commit: ================== - To fetch images of existing products we are using barcodelookup.com API. - Removed product_images module - Integrated image fetching logic with existing product_barcodelookup module task -4005612
International payment files now use a clearing number in the ISO 20022 bank information where required. US payment and payroll payment flows have been aligned to this same field, improving consistency and helping banks process payment files correctly.
Original PR description
For international payments, the clearing number is required to be set under ClrSysMmbId node in ISO20022 XML file. Odoo: https://github.com/odoo/odoo/pull/186972 task-4307862
This update keeps the Kenyan OSCU point-of-sale product setup working after related product page changes in Odoo. It also updates automated checks for sales and subscription flows so they match the latest stock quantity process, reducing the risk of false test failures.
Original PR description
This commit aligns with the changes introduced in the related Community PR, where the header element is being removed from the main product template. See Community PR: https://github.com/odoo/odoo/pull/191742 Task: [4385237](https://www.odoo.com/odoo/my-tasks/4385237)
Appointment invite creation now checks for an identical simple setup and reuses the existing invite link when possible, reducing duplicate records. The invite form is also clearer for choosing users or resources, helping staff avoid confusing options.
Original PR description
When opening the appointment invite modal, we now attempt to find a "identical configuration". We only account for simple use cases, aka not multi-appointments, not user/resource specific. If we find an identical configuration, then the "Copy Link & Close" button of the modal will just copy the existing code instead of creating a new record. When the user changes anything to the configuration, we re-generate a new random code Task-4280698
Quality teams can now define a failure destination for any type of quality control, not just checks on individual move lines. This helps route failed products, moves, or full operations to the right inspection or repair location more consistently.
Tax integrations now use the sales or invoice line description instead of only the product name when sending line details. This gives tax providers clearer, more accurate context and keeps behavior consistent across invoices, sales orders, point of sale, and Brazil-specific tax flows.
Original PR description
We replaced the product name with the line description in stable for Brazil [1]. Now that we're in master, we can change the account_external_tax_mixin interface to add it properly and remove the need to browse the line. For consistency, we also do the same for sale.order now. [1] https://github.com/odoo/enterprise/pull/77610 task-4401787
Employees can now submit most expenses directly without creating a separate expense report, reducing extra steps and friction. If an employee has no expense manager assigned, submitted expenses are automatically approved, making reimbursement processing faster.
Original PR description
Most of the time, expenses are created as "standalone"s and forcing the use of an expense report is adding frustrating unnecessary steps. A simplification was decided and the model hr.expense.sheet is removed, giving all of its remaining important logic to the `hr.expense`. In addition, approval flow was simplified with the implementation of an auto-validation process, where submitting an expense also approves it when no expense manager is set on the employee. See task for more details. task-id: 4481615
The Appointment app now shows a helpful prompt in the Gantt view when no calendar events are found, letting users share an appointment link or create a booking directly. This makes it easier to generate bookings from an empty schedule and clarifies resource-based booking details.
Original PR description
This commit adds the action helper in the Gantt view when no calendar event is found. Users can click the button present in Action Helper and share the appointment to get some bookings. Task-4138356
Bank reconciliation can now match payments with draft invoices and bills, helping users avoid creating duplicate documents when payments happen before accountant review. This makes month- or quarter-end workflows smoother for businesses that process bills before they are formally posted.
Original PR description
Since users cannot view draft invoices/bills on the bank recon screen, duplicates may be created. To avoid this, and to simplify the process for users who might pay on draft bills, we allow the reconciliation of bank statement lines with draft invoices & bills. Task-4286245
The spreadsheet styling was updated to stay compatible with a recent change in the underlying spreadsheet component. This helps keep spreadsheet screens and side panels displaying correctly without changing business workflows.
Original PR description
The global directive `content-box` was removed in o-spreadsheet, this commits adapts the Odoo's scss to take this change into account. Task: 4550753
Users can now group search results by Properties in Frontdesk Visitors and HR Appraisal. This makes it easier to organize records by custom property information and quickly compare related entries.
Original PR description
**Specifications** : Add search group by **Properties** in following places: - Frontdesk Visitors - HR Appraisal Task-3989993
Users can now correct OCR results on imported bank statements by selecting a balance field and clicking the correct value directly on the document preview. This extends an existing bill correction workflow to bank statements, helping reduce manual retyping and improve statement accuracy.
Original PR description
After a bank statement has been OCRed, we allow the user to make corrections by simply clicking one of the balance fields and then clicking the correct amount by clicking on the boxes overlay of the imported file. This is a feature that was introduced first for bills, and is now made available to bank statements as well. A new mixin has been written to factorize as much as possible between the two models. Upgrade PR: https://github.com/odoo/upgrade/pull/7010 Upgrade Util PR: https://github.com/odoo/upgrade-util/pull/182 task-id 4260464
A new list view helps users review bank transactions that the provider has marked as duplicates directly in the duplicate transaction wizard. This makes it easier to identify and handle potential duplicate entries during online bank synchronization.
Original PR description
This commit will add a new list view in the wizard of duplicate transaction for transaction that are marked as duplicated by the provider in the transaction details. task-4345739
Appointment pages and website snippets now have refreshed default card styling plus new Picture and List layouts, giving businesses more attractive ways to present booking options. Demo images and descriptions are shared across appointment modules, making previews and sample content more consistent without requiring extra website appointment dependencies.
Original PR description
### Make demo img available in appointment sub-modules Prior to this PR, demo data images were located in `website_appointment`, and this module was mandatory if we wanted to use these demo images.…
### Make demo img available in appointment sub-modules Prior to this PR, demo data images were located in `website_appointment`, and this module was mandatory if we wanted to use these demo images. After this PR, these images are moved to the main `appointment` module to be available in it and its sub-modules. ### Add image & description demo data This PR adds image & description demo data to match the `website_appointment` snippet previews. ### Allow to customize avatar number Prior to this PR, the maximum number of avatars displayed in the `appointment_booking_resource_description` template was set to 6. After this PR, we can now customize the amount of avatars displayed, simply by defining the `avatars_max_count` variable, to match the layout where this template is called. ### Removes unnecessary option for s_appointments Prior to this PR, it was possible to define the height of the column wrapping the main content of `s_appointments`. As this content is dynamic, this option is not necessary and is removed. ### Review the card layout This PR reviews and enhances the default card layout used in the appointment snippet and appointment website page. ### Introduce new snippet layouts This PR introduces the "Picture" and "List" layouts for the appointment snippet. task-4317830 --- Requires: - https://github.com/odoo/odoo/pull/190946 --- Review default snippet layout: | Before | After | |--------|--------| |  | <img width="1343" alt="Capture d’écran 2024-12-18 à 12 55 34" src="https://github.com/user-attachments/assets/1b63448c-559f-4d9b-94c2-8f8a0e853c03" /> | Introduce two new snippet layouts: | Picture Layout | List Layout | |--------|--------| | <img width="1351" alt="Capture d’écran 2024-12-18 à 12 56 17" src="https://github.com/user-attachments/assets/a20eb199-1a42-4abe-9e23-4e386e4d9142" /> |<img width="1337" alt="Capture d’écran 2025-01-29 à 13 01 23" src="https://github.com/user-attachments/assets/0a1e4b7c-84a3-466d-80ce-11a437ba094c" /> |
The Sign app interface has been refined to make the sidebar and document fields clearer and more polished. The update also improves color handling in dark mode, helping users work more comfortably and consistently across display settings.
Original PR description
This commit refines the design of the sidebar and fields and adapts the colors for dark mode for the Sign module. task-4552049
Brazilian AvaTax users can now override a product's purpose of use directly on sales orders and invoices when the sale context requires a different tax treatment. This helps businesses handle cases like B2B versus B2C sales without creating duplicate products.
Original PR description
In some cases the purpose of use will change based on the exact conditions of a sale (e.g. the partner, ...). An example is if you do b2b and b2c sales, the b2b sale's purpose will be "resale" and the b2c sale's purpose could be "use or consumption". To avoid users having to duplicate their products we provide an optional override on sale.order and account.move. task-4520757
The spreadsheet edition styling was updated to match a recent change in the underlying spreadsheet component. This helps keep spreadsheet screens, comments, and side panels displaying consistently without changing user workflows.
Original PR description
The global directive `content-box` was removed in o-spreadsheet, this commits adapts the Odoo's scss to take this change into account. Task: [4550753](https://www.odoo.com/web#id=4550753&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
This update aligns several Odoo apps with newer email-style recipient handling, helping messages and suggested recipients behave more consistently. The changes are mostly internal adaptations, with limited direct impact for business users.