Daily updates from Odoo
Thursday, July 2, 2026
20 changes · master
New functionality added to Odoo
This update adds sample restaurant bookings to the Odoo Enterprise system, allowing new users to quickly visualize how reservations are displayed on the floor plan. These bookings are automatically created during module installation or manually loaded via a 'Load Sample' button, streamlining the onboarding process and providing a practical demonstration of the module's functionality.
Original PR description
In this commit - --------------------------------- - Add 5 demo restaurant bookings with different states (attended, late, and upcoming) so users can see how reservations appear on the floor plan. - With demo data: demo bookings are automatically created when the module is installed with demo data . - Without demo data: demo bookings are created when the user clicks the "Load Sample" button . Task-6250031
Enhancements to existing features
The button previously labeled “Revert” is now labeled “Mark as Unpaid” in payroll run screens. This makes the action easier to understand and better reflects what actually happens when a paid run is changed back to unpaid.
Original PR description
Problem: Reverting a pay run simply removes the "Paid" status to put back all payslips as "Done". This is not consistent with the payslips and does not reflect the behavior. Solution: Changed the label of the "Revert" action button to "Mark as Unpaid". Task-6352441
The DMFA form now includes a read-only XML file field so users can download the original XML directly from the record. The action buttons were also rearranged to make the declaration step easier to find and the preview action more clearly secondary.
Original PR description
Add a read-only "XML File" field on the DMFA form view, allowing the user to download the original XML. Also reorder the header buttons so "Post ONSS Declaration" is positioned first and the "Preview" button is positioned last. Task: 6333142
When users compare report lines against selected lines, the comparison is always shown as a percentage. This update hides the amount/percent selector in that case, so the report settings only show options that are actually useful. This makes the interface clearer and avoids confusion.
Original PR description
In [^1] support for comparison against user selected lines was added. This is always in percentages, as such, the "Comparison In" option that was added in [^2] is not useful as we would never set it to Amount. In this PR we hide "Comparison In" if the report line is selected. task-6322616 [^1]: odoo/enterprise#116721 [^2]: odoo/enterprise#116480 Forward-Port-Of: odoo/enterprise#121526
The Time & Attendance step is now hidden in Belgian payroll runs for all payroll structures except the Monthly Pay structure. This makes the process clearer and avoids showing a step that does not affect payslip calculations for those other payrun types.
Original PR description
Hide the Time & Attendance step in Belgian payruns for all payroll structures except the Monthly Pay structure, since attendance data does not affect payslip computation for the other structures. task: 6346664
This update adds 'Today' and 'Tomorrow' labels to the preparation display cards used in point-of-sale orders. This clarifies the expected timeframe for order fulfillment, improving communication and accuracy for staff and potentially customers.
Original PR description
Introduce "Today" and "Tomorrow" labels for preset times on the preparation display cards. Task-6279720
This update adjusts the location of the attachment list menu within the Odoo interface. This change enhances the user experience by streamlining access to attachments and improving overall usability. The update was implemented to address a minor visual inconsistency.
Original PR description
PR community: https://github.com/odoo/odoo/pull/273380
Resolved issues and error corrections
When a business card is scanned into CRM, the city information is now captured correctly. This makes newly created contact records more complete and reduces the need for manual edits.
Original PR description
Previously, when user scans any business card, every information was fetched except for the city name. After this commit the city field will be properly fetched. task-6332914 Forward-Port-Of: odoo/enterprise#121766
This update corrects how several country-specific fields are placed around the tax ID section on partner forms. It ensures the layout changes introduced earlier continue to work properly, so related fields display in the right position and the form remains consistent across localization modules.
Original PR description
In the multi ID [1], we completely revamped the UI around the `vat` field. It's now mostly made of: - the VAT field inlined with a "+" button adding additional_identifiers - the additional identifiers that comes below with input-text-like display. The feature should stay in one block, therefore we added an "identifiers" div wrapping all these fields/buttons/labels. This way other fields can easily xpath before or after the whole block. We also have a vat_div identifiers that is meant for feature needed to be inlined with the vat and the "+". This PR and its Community counterart fix some xpath that were still incorrect after [1] and [2] in following modules: l10n_br, l10n_my_ubl_pint, l10n_ca, l10n_ph, l10n_in, l10n_rs_edi, l10n_mx_edi_stock [1]: https://github.com/odoo/odoo/pull/262274 [2]: https://github.com/odoo/odoo/pull/271906 task-6352123 Forward-Port-Of: odoo/enterprise#122524
Testing a receipt print on an Obox point-of-sale printer now produces a sample ticket instead of doing nothing. This makes it easier to verify that the printer is correctly set up before using it in daily operations.
Original PR description
See: https://github.com/odoo/obox/pull/200 Before this commit, attempting to perform a test print for an Obox POS printer would do nothing. After this commit, a test receipt will be printed for the Obox printer just like for ePOS printers. task-6330857 Forward-Port-Of: odoo/enterprise#122033
When a new file is uploaded in Documents, it now appears with its available actions visible right away. This removes the need to deselect and reselect the file just to access those actions, making the workflow smoother and faster.
Original PR description
Bug === When uploading a new file in documents, it's selected, but the actions are not visible (we need to unselect - select the record to see the actions). Task-5408471 Forward-Port-Of: odoo/enterprise#122396 Forward-Port-Of: odoo/enterprise#114770
The product UNSPSC list now includes code 10171500, which covers organic fertilizers and plant nutrients. This fixes a missing option so users can correctly classify products when working in Product > Accounting.
Original PR description
The code 10171500 - Organic fertilizers and plant nutrients wasn't appearing. In the file that has the unspsc product codes this one was set to False. Steps to reproduce: - Activate module product_unspsc. - Go to product > accounting. - Verify that this code is not listed. Ticket [link](https://www.odoo.com/odoo/project.task/4461974) opw-4461974 Forward-Port-Of: odoo/enterprise#121914
This change removes an unnecessary event handling qualifier in the online bank sync portal. It makes the code easier to maintain and reduces confusion for future updates, without changing the user experience.
Original PR description
The `.withTarget` qualifier for interactions events is widely misunderstood: it is not necessary in most cases. It is only required when the event handler is processed through an asynchronous callback (such as interactions' `debounced` or `locked`): in such a case, when the line `ev.currentTarget` is evaluated, the property has been lost and is not available anymore due to the async nature of the call. In all other cases, developers should prefer calling `ev.currentTarget` directly.
This update fixes a mislabeled description in the Swiss payroll monthly snapshot. It now correctly refers to monthly history instead of yearly history, which improves clarity for users and administrators.
Original PR description
The L10nCHEmployeeMonthlySnapshot model incorrectly stated "Swiss Employee yearly history" as a description. Fix the _description attribute to "Swiss Employee monthly history". Task: 6340659
This pull request addresses UI issues within the HR holiday Gantt chart, enhancing the visual clarity and usability for users. The changes focus on resolving display problems and improving the overall presentation of holiday information within the chart. This ensures a smoother and more accurate representation of employee holiday schedules.
Original PR description
TODO task-6328566
This update fixes an issue where the 'Signature Requested' button on company contacts didn't accurately reflect sign requests from related contacts. The fix ensures that all sign requests, including those from child contacts, are included in the button's count, providing a more complete and accurate view of sign requests.
Original PR description
Version - 19.4 Steps to reproduce: - Open the Contacts app - Open a company contact and create a sign request via activity - Open one of its related contacts and create a sign request similarly Issue: When a company has related contacts with sign requests, the smart button on the parent company only reflected its own sign requests. Sign requests belonging to child contacts were completely ignored, resulting in an incorrect count and missing records when clicking the button. Fix: Updated both the count computation and the click action to include child contacts under the company. Following the same approach used by other smart buttons like invoices and sales orders Task id - 6326680
This update resolves a problem where clicking actions on HR payroll warning dashboards was failing due to lost context information. The fix ensures that the original action context is preserved and correctly applied, guaranteeing that actions work as expected. This improves the reliability of the HR payroll dashboard.
Original PR description
When clicking the action button on an hr_payroll.warning dashboard card, the window action's predefined XML context was completely overwritten by the dynamic `additional_context` dictionary. Fix the context loss by reading the action's existing context, processing it via literal_eval if it is serialized as a string, and safely merging `additional_context` on top of it using dictionary unpacking. This ensures core action tags successfully flow to the target view wizard. Task: 6341611
This update resolves a crash issue within Odoo's web_studio tool when translating reports. The fix involves setting up a database with a language other than English (US) and installing other language packs. This allows users to successfully translate reports through the studio interface without encountering errors.
Original PR description
Init a db with a language different from en_US install other languages, except en_US Try to translate via studio a report's XML This gives a crash, because the baseLang is not installed After this commit, there is no crash. opw-6239938 Forward-Port-Of: odoo/enterprise#122447 Forward-Port-Of: odoo/enterprise#122026
Code cleanup and technical improvements
This change removes outdated internal configuration from several interface components. It does not change how users work in the product, but it helps keep the codebase simpler and easier to maintain.
Original PR description
These components never read props.slots (only t-call-slot/t-set-slot, which don't require it to be declared), so the schema entry was dead.
This update simplifies the testing environment by reducing unnecessary reliance on the test environment variable. The changes prepare for a future update that will replace the current environment setup with a more streamlined testing approach. This refactoring aims to improve test execution speed and maintainability.
Original PR description
\* account_reports,ai,documents,documents_spreadsheet,
spreadsheet_edition,timer,web_studio,web_studio_ai_fields
This commit reduces the explicit usage of env in tests like:
- `patchWithCleanup(env.services.*, *)`: converted to `mockService("*", *)`.
- `env.services.*`: converted to `getService("*")`.
- `const env = await makeMockEnv();`: `makeMockEnv` is still called but
the result is not used anymore. If needed we can still use `getMockEnv`.
This change is to prepare the removal of env in the future.
`makeMockEnv` will be replaced by a function `makeTestApp`.