Daily updates from Odoo
Navigate
Branch
Tuesday, September 2, 2025
51 changes
Security fixes and vulnerability patches
Access to two Belgian payroll information fields was corrected so they are only visible to payroll users. This protects sensitive payroll-related employee data and restores the expected validation test behavior.
Original PR description
**Issue** The test test_payroll_fields_are_hidden_to_non_payroll_users_in_employee_form_view failed due to missing payroll group protection on fields inside the Payroll Information tab of the hr.employee form view. **Reason** - The fields acerta_code and prisma_code were assigned only to hr.group_hr_user. - The test enforces that any field under the Payroll tab must either: - Be restricted with payroll groups (hr.group_hr_manager or hr_payroll.group_hr_payroll_user), or - Belong to the whitelist of allowed generic HR fields. - Since these two fields did not meet either condition, the test flagged them as missing payroll group protection. **Fix** - Updated acerta_code and prisma_code to be restricted with payroll groups (hr_payroll.group_hr_payroll_user). - This ensures only payroll-related users can access them, keeping the Payroll tab consistent with the intended security model. - After the fix, the test passes successfully. build_error-231302
New functionality added to Odoo
Payroll salary rules can now use domain-based conditions, making it easier to apply rules only when specific employee or contract criteria are met. This gives payroll teams more precise control over calculations and supports localized payroll setups such as French employee categories.
Basic AI capabilities can now be used without installing the full AI app, while advanced configuration remains available through a separate AI app. This gives users easier access to simple AI features and keeps deeper setup options organized for teams that need them.
Original PR description
We want people to be able to use basic AI features "for free" without installing the app by splitting the `ai` module into two. - `ai` module exposes all the features but the app icon is hidden which means that configuration is very limited. We allow users to specify their own llm api keys but that's it. Any `ai` model records isn't accessible to the UI. - `ai_app` exposes the views for the ai models. This allows users to configure their database regarding any AI features. TASK-ID: 5028645
Enhancements to existing features
This update aligns enterprise report and subscription portal templates with a core platform change. It helps keep PDF exports and customer portal pages working consistently after the template engine update.
This update allows accounting return periods to be adjusted when needed instead of always following the current configuration. It helps migration processes accurately recreate older returns whose dates may differ from today’s settings.
Original PR description
The method _get_period_boundaries not allow to override the targetted period and start_date. This is used for the migration script to recreate old returns that not always has the same period as the one configured. See: https://github.com/odoo/upgrade/pull/8288 Forward-Port-Of: odoo/enterprise#93100
The website editing experience now opens new content options from a dropdown instead of a modal window. This makes creating website content quicker and less disruptive for users working in Website, Appointments, and product barcode lookup flows.
Original PR description
task-2941442
Manual invoices for post-paid subscriptions now cover the full subscription period instead of only the partial skipped period, making billing easier to understand. Users are warned when creating these advance invoices, and salespeople are alerted when work or deliveries are completed after a period has already been invoiced.
Original PR description
_*= sale_subscription_stock, project_sale_subscription, sale_subscription_timesheet ### Before - Manually invoicing a post-paid sub before its next invoice date would generate an invoice only for the…
_*= sale_subscription_stock, project_sale_subscription,
sale_subscription_timesheet
### Before
- Manually invoicing a post-paid sub before its next invoice date would generate an invoice only for the skipped period (from last invoice to today).
- Users found this behavior unclear, especially when it is shown that the invoice period ended on the same day as it started.
- There was no warning for the users during this process
### After
- The full subscription period is now invoiced when manually creating an invoice for a post paid subscription.
- A warning is shown in the invoice creation wizard to notify users about post-paid subscriptions being invoiced in advance.
- An activity is posted for the salesperson when a delivery order, timesheet,or a milestone is completed for a closed period.
### Impact
- Users gain clarity when manually invoicing post-paid subscriptions.
- Reduces confusion during manual operations.
- Salesperson is notified if something is delivered after invoicing of a closed period.
---
task- 4929802The monthly planning calendar now shows shift times and job titles on separate lines, making schedules easier to scan. Long event names are shortened neatly, and popovers are simplified by removing remaining-hours details.
Original PR description
- Displayed time and title on separate lines for better readability. - Added ellipsis to truncate long event names. - Removed the remaining hours from the popover display. ``` Before: • 8 AM - 12 P... Shipping ... Now: • 8 AM - 12 PM (04:00) Shipping Associate ``` task-4672875
Sales reports and customer portal views now follow the newer section and subsection behavior across affected regional and subscription flows. This improves consistency for displayed subtotals and hidden grouped lines, reducing confusion in customer-facing documents.
Original PR description
- Community introduced a new section/subsection logic in odoo/odoo#221574, including support for hiding sections in report/portal. - Some localizations (e.g., l10n_br_sale and l10n_br_sale_subscription) were not yet adapted to these changes. - This commit updates these localizations to ensure consistency with community behavior by: - Supporting subtotals on section lines. - Grouping hidden section lines by tax_ids. See Also: https://github.com/odoo/odoo/pull/224219 task-5009037
Annual leave management for UAE payroll is now configured through Payroll settings instead of standard leave types. This makes payroll setup clearer and stops automatically calculating total annual leave days, giving businesses more direct control over the configured allowance.
Original PR description
Removed Annual Leave type from leave types and added it in Payroll settings, total leave days per year are not computed anymore Task: 5048791
Audit report PDFs now use the same page format across account reports and article pages. This reduces layout misalignment and makes printed or on-screen reports cleaner and easier to read.
Original PR description
Currently, account reports and article pages use different page dimensions. This inconsistency causes misalignment and often leads to irregular layouts when printed. To resolve this, we enforce a single paperformat for all generated PDFs and disable custom margin settings (see: `specific_paperformat_args`). This ensures every report uses a consistent page size, improving readability on screen and producing cleaner, more reliable printouts. Task-4989809
The Appointment screens now use Odoo’s own plus and minus icons instead of older third-party icon styles. This keeps the user interface visually consistent with the rest of Odoo and helps maintain a cleaner, more unified experience.
Original PR description
Before this commit, some parts of the frontend were still using fa fa-* icons (plus/minus). This commit replaces `fa fa-plus` with `oi oi-plus`. task-5046832 Requires: https://github.com/odoo/odoo/pull/224700 <table> <tr> <td></td> <th>Current (master)</th> <th>This commit </th> <tr> <th> Appointment (Guests)</th> <td> <img width="786" height="484" alt="image" src="https://github.com/user-attachments/assets/3d6d5c5d-ae7b-4360-8059-54403de31416" /></td> <td> <img width="786" height="484" alt="image" src="https://github.com/user-attachments/assets/d095c5d2-cb35-4367-9d82-cac5ce1c27d1" /> </td> </table>
SEPA payment batch booking is now disabled by default in the affected payment modules, encouraging customers to use reconciliation based on end-to-end payment references. The field tooltip was also clarified so users better understand the business impact of enabling batch booking.
Original PR description
This commit has 2 main purposes: 1. Adapt the tooltip of batch booking fields present in both sepa modules for something more meaningful for our customers. 2. Change the default value of these field to false. The goald of this change is trying to change the "normal" behavior of our customers to let them use the new reconciliation feature based on the end to end uuid. To use this new feature, payments couldn't be batch booked. no task id
Product-related screens were polished with clearer labels, better ordering, and standard interface tools. These small updates make product setup and management easier to understand across sales, rentals, subscriptions, and barcode image lookup workflows.
Original PR description
Minor changes on the UI by renaming labels, adapting orders or using built-in tools to improve the user experience. task-4417236
Documents now record clearer activity updates when files move between folders, are sent to or restored from trash, or are affected by access-right changes. This gives users and administrators better visibility into important document changes without needing to manually investigate what happened.
Original PR description
First commit :
[IMP] documents: add tracking messages to folder when moving documents
We are adding tracking (not really) messages to the old folders when moving documents in/out to/from another folder. We also add a tracking message when sending and restoring documents to/from trash.
Second commit :
[IMP] documents: add tracking on every documents impacted by rights change
This commits handles the tracking of Documents access rights by creating manually the tracking values from all the childrens documents/folders. All those tracking values are stored temporarily in a new table and will be processed by a cron as soon as possible.
Third commit :
[IMP] documents: adapt testsSpreadsheet users can now review and edit how a data source matches global filters directly from the data source panel. This reduces repetitive navigation, makes setup faster, and lowers the risk of missed or incorrect filter matching when adding pivots or other data sources.
Original PR description
Let's say you insert a new data source (e.g. a pivot data source) into an existing spreadsheet which have lots of global filters. You want to match your new pivot to each filter (or you want to check the automatic matching). Currently, you have to open each and every global filter configuration panel, uncollapse the "Field matching" section and check your pivot matching. This is a lot of clicks, and error prone if you have lots of filters. This commit adds the ability to see (and edit) in one place all matching of a given data source. Task-4344293
Users can now open spreadsheet dashboards directly in edit mode from the form view menu and from dashboard cards on mobile. This removes extra navigation steps and makes dashboard updates faster, especially for users working on phones or tablets.
Original PR description
### **PR Description** **Description of the issue/feature this PR addresses:** * In the **form view**, the cog menu did not provide an option to open dashboards in edit mode. * In the **mobile kanban view**, dashboard cards lacked an 'Edit' button, forcing users to switch context to edit dashboards. **Current behavior before PR:** * The cog menu in the form view has no 'Edit' option. * Dashboard kanban cards in mobile view have no 'Edit' button. * Users cannot directly open dashboards in edit mode from these views. **Desired behavior after PR is merged:** * Adds an 'Edit' option to the **cog menu** in the form view of `spreadsheet.dashboard`. * Adds an 'Edit' button to **kanban cards** for `dashboard_ids` in mobile view. * Clicking either option opens the selected dashboard in edit mode through the spreadsheet client. **Task:** [4965595](https://www.odoo.com/odoo/project/2328/tasks/4965595)
Companies based in Turkey can now print a Certificate of Employment directly from an employee record. This makes it easier for HR teams to issue official employment documentation without manual preparation.
Original PR description
### Before - N/A ### After - If an employee belongs to a company based in Turkey, a Certificate of Employment can now be issued to the employee. - This option is available under the cog menu>print>Certificate of Employment Task: 4910315
Point of Sale users can now switch the IoT Box connection mode directly from the local, online, or offline status button. This makes it easier to recover or choose the best connection method, including forcing websocket mode when needed.
Original PR description
We used to allow longpolling again manually if the IoT Box was reachable (by pinging it), but we couldn't force the connection to use websocket if needed. We now switch between modes when clicking the local/online/offline button in PoS. Task: 5055024 Forward-Port-Of: odoo/enterprise#93595
Printed planning schedules now use a clearer one-week calendar layout grouped by resources instead of a simple list table. This makes shared schedules easier to read and more useful for teams reviewing staffing and assignments.
Original PR description
[IMP] Planning: Print shiny plannings In this commit: - The simple table printed from planning list view is replace with a better one week calendar view grouped by resources. task-3349893
Employees who do not have Odoo user access can now open their salary offers through secure URL tokens, similar to applicants. Offer emails are also clearer when there is no expiration date, avoiding confusing empty expiry text.
Original PR description
Currently, when an offer is sent to an existing employee, they can't open it unless they have a user. However, not all employees in a company are granted user rights. Now, offers made to employees without users, just like those made to applicants, can be accessed via url tokens. Task-4914401
Indian payroll now supports additional contract fields that calculate salary components as percentages of wage, basic pay, or gross pay. This helps ensure related allowances and deductions adjust consistently when unpaid leave affects an employee's monthly payslip.
Original PR description
To make salary computation easier, add new contract fields based on the Indian salary structure. Percentage fields are used for calculate amount with leaves if employee has leave in his payslip month all other amount should decrease according to the calculation of basic and gross. EXA: 50000 monthly wage basic 50% of wage = 25000 hra 50% of basic = 12500 with 1 leave in month basic would be less than 25000 so based on basic we should calculate other salary components like HRA, LTA, STD, etc. task-4922359
The Workcenter Planning view now automatically groups work orders by the employee assigned to them. This makes it easier for managers to see workload by person and organize production tasks more efficiently.
Original PR description
- Users found it difficult to efficiently manage work orders in the Workcenter Planning view based on the employees assigned to them. There was no immediate way to view work orders categorized by responsible employee. - After this commit, A Group by Assigned Employee filter is now applied in the Workcenter Planning view. This allows users to instantly see work orders organized per employee, simplifying work-center management and improving overall usability. Task Id: 4900235
The audit report PDF now uses a newer footer rendering method to stay compatible with upcoming platform changes. A dedicated footer template keeps the report clean by avoiding extra company branding and layout elements that are not needed for this document.
Original PR description
This PR updates the method for rendering the audit report PDF to use the `footer` option instead of the `footer-right` option, which is being removed in the COM PR. To render the footer, we now use a custom template, as the template used in the account report does not meet our needs. The account report footer includes the company name, logo, and other elements we don't want. It also loads numerous assets and applies a specific paper format. To avoid complicating the existing template, we are creating a new template from scratch. COM: odoo/odoo#222199 Task-4989809
PDF thumbnail generation for Documents now uses a shared Mail service that creates thumbnails from the first page of a PDF. This reduces duplicated logic and helps keep document previews consistent across Odoo.
Original PR description
PR community: https://github.com/odoo/odoo/pull/221006 Task-4605759
Resolved issues and error corrections
This update fixes automated website shop tests so they match a recent checkout page structure change. It helps keep rental purchase and wishlist checkout flows reliably tested, reducing the risk of unnoticed issues reaching customers.
Original PR description
This aligns the test steps with updated template structure, where the current checkout step is rendered using a added div name="active_step" instead of the older CSS class-based method. See also: - Enterprise PR: https://github.com/odoo/odoo/pull/210879 task:4766612
This fix restores an optimization that avoids starting the IoT communication session until it is actually needed. It helps keep IoT-related point of sale and self-ordering flows efficient and prevents unnecessary background activity introduced by a previous refactor.
Original PR description
* : pos_iot, pos_self_order_iot The refactor introducing the `iot_http` service dropped by mistake the previous lazy_session optimisation [1], this commit reintroduce it. [1]: https://github.com/odoo/enterprise/commit/313bde6feb756c050a20a3459e1e8282d11ffa66 Forward-Port-Of: odoo/enterprise#93600
The Chilean electronic invoicing demo data now includes the required certificate serial number. This prevents setup errors when users test sending demo invoices to the Chilean tax authority, while leaving real production certificates unchanged.
Original PR description
**Issue** When installing l10n_cl_ed, the `subject_serial_number` field is left empty. This causes an error when attempting to send an invoice to the SII. **Steps to Reproduce** 1. Install Accounting and l10n_cl_edi 2. Create and confirm an invoice 3. Click "Send Now to SII" 4. Error: Invalid Operation **Root Cause** The `subject_serial_number` is not set during installation, and this field is required for electronic document generation. **Fix** Restore the behavior from version 17.0 by setting a default `subject_serial_number` if it's missing and the certificate is available. This ensures the demo data is functional and allows users to test the SII integration out-of-the-box. Opw-4961801 Forward-Port-Of: odoo/enterprise#90636
Finding duplicate bank transactions no longer fails when the Starting Date field is left empty. The system now uses today's date by default, helping accounting users complete the duplicate check without interruption.
Original PR description
Currently, an error occurs when attempting to find duplicate transactions in the bank. Steps to Reproduce: - Install the `Accountant` module. - In the `Accounting` Dashboard, click on `Bank`. - In…
Currently, an error occurs when attempting to find duplicate transactions in the bank.
Steps to Reproduce:
- Install the `Accountant` module.
- In the `Accounting` Dashboard, click on `Bank`.
- In Actions, click `Find Duplicate Transactions`.
- Clear the `Starting Date` and click save.
Traceback:
```py
psycopg2.errors.UndefinedFunction: operator does not exist: date >= boolean
LINE 6: AND move.date >= false
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
```
This error occurs when the system attempts to detect duplicate transactions without a `Starting Date`. During the check, it evaluates the condition `move.date >= date_from`. Since `date_from` is False, the comparison triggers an error.
This commit ensures that if the `Starting Date` is empty when finding duplicate transactions, it uses today’s date as the `Starting Date`.
Reference commit: https://github.com/odoo/enterprise/pull/87000/commits/806ab2d56952e9d0f597cf1ab36ea2f180a84323
Forward-Port-Of: odoo/enterprise#92497Subscription orders that include one-time products now correctly create a delivery and generate the related invoice. This prevents fulfillment from being missed when customers buy one-off items as part of a subscription order.
Original PR description
**Version:** - saas-18.4 **Steps to reproduce:** - Install the sale_subscription_stock module. - Create a one-time product and save it. - Create a subscription order, add the one-time product to the order line, and confirm the order. **Before this commit:** - When a one-time product was added to a subscription order, no delivery was created. **After this commit:** - A delivery is properly created, and an invoice is automatically generated when the order includes a one-time product. **Solution:** Add a condition to check for one-time products in the order lines and create a delivery if found. **Impact:** - A delivery is now created when a one-time product is in the sale order. Also, an invoice is automatically generated for it. task-4938898 Forward-Port-Of: odoo/enterprise#90528
A date used in Belgian payroll accounting tests has been fixed so the tests remain reliable when the calendar year changes. This prevents avoidable failures in 2026 and helps keep payroll-related validation stable over time.
Original PR description
Some tests will fail in 2026. This adds a freeze time to prevent this failing. Task: 5034173 Forward-Port-Of: odoo/enterprise#93575 Forward-Port-Of: odoo/enterprise#92983
When duplicating accounting moves related to returns, the copied move is no longer incorrectly tied to the original return. This prevents confusion and reporting mistakes by ensuring duplicated records are treated as separate entries.
Original PR description
Duplicating some return's move also kept the duplicate linked to the return. This is wrong. task-5046319 Forward-Port-Of: odoo/enterprise#93390 Forward-Port-Of: odoo/enterprise#93323
Closing an AI Livechat conversation no longer opens a separate chat window with the ended conversation. This removes a confusing interruption for website visitors and keeps the AI chat close action behaving as expected.
Original PR description
closing the chat with the ai agent on the ai_livechat snippet results in a chatwindow popping up which gives a bad user experience. Steps to reproduce: - Log in as Mitchell Admin. - Go to website. -…
closing the chat with the ai agent on the ai_livechat snippet results in a chatwindow popping up which gives a bad user experience. Steps to reproduce: - Log in as Mitchell Admin. - Go to website. - Click on edit and choose `Contact & Forms`. - Add the AI Livechat website snippet. - From the snippet options, add an AI Agent and choose a livechat team. Make sure that Mitchell Admin is configured as an operator for that livechat team (livechat channel). - Click on save. - Open an incognito tab. Log in as Marc Demo. - Go to Website. - Type a message inside the `ASK AI` text area and press enter. - Wait until you receive a response and then click close. - A chat window will popup with the messages of the conversation with the AI along with a message saying `Visitor has left the channel`. This happens because `close` button will call `closeConversation` => `livechatService.leave()` => `visitor_leave_session` => `_close_livechat_session` that posts a message that the visitor has left the channel. This commit solves the issue by posting the message that the visitor has left the channel while suppressing the notification, if the operator of the channel isn't a human, to prevent the chatwindow from popping up. See https://github.com/odoo/odoo/pull/224758
The AI message action buttons now appear in a more logical order, with the copy option placed after sending as a message and logging as a note. This reduces confusion and makes the interface easier to use.
Original PR description
The copy button appears in between the 'Send as Message' and 'Log as Note' buttons. It should appear last (after both buttons). This commit along with the corresponding community commit update the sequence of these buttons to make the copy button appear last. See https://github.com/odoo/odoo/pull/224774
The Documents app now checks for existing redirect records when someone opens a shared document content link. This preserves access for older or migrated links, reducing broken document access for users and customers.
Original PR description
We do not currently check for `documents.redirect` records when accessing the `/documents/content/<access_token>` endpoint. This commit fixes this by redirecting if a `document.redirect` with the appropriate `access_token` was created for backwards compatibility. opw-4517698 Forward-Port-Of: odoo/enterprise#92342 Forward-Port-Of: odoo/enterprise#92313
When users upload a file to an existing document or request, the progress indicator now appears on that same item instead of creating a duplicate card or row. This reduces confusion and keeps document lists cleaner during uploads.
Original PR description
Step to reproduce: 1. Upload a file to a request: - Create a Request. - Upload a file for that request. - Another Kanban card / List row is created showing the upload progression. 2. Upload a file into the manage version dialog. - Manage version for an existing document. - Upload a new document. - Another Kanban card / List row is created showing the upload progression. The upload progression should be shown on the existing document. Task-4863051 Forward-Port-Of: odoo/enterprise#87428
This fix prevents a server error when opening the Tax Report after changing its root report setting. It ensures the report can access the needed accounting data reliably, so users can continue reviewing tax information without interruption.
Original PR description
**[FIX] account_reports: ensure join on account_move for tax report base amount calculation** Fixes a server error in the generic tax report where `account_move_line__move_id` was referenced without an explicit join. The fix adds a conditional join on `account_move` to make fields like `always_tax_exigible` available, preventing `UndefinedTable` during SQL execution. Steps to reproduce: 1 - in a fresh db or runbot go to `Accounting > Config > Accounting Reports`. 2 - Open the Tax Report and change the `Root Report` to Balance Sheet. 3 - Save and try to open the tax report. opw-4990771 Forward-Port-Of: odoo/enterprise#91941
Payroll users can now change salary rule colors reliably from both Salary Rules and Salary Structures. The fix ensures the chosen styling is applied directly in the salary rule preview and pop-up, making rules easier to identify and review.
Original PR description
Steps to Produce: - open payroll app - Go to Salary Rules or go to Salary Structures and open any salary rule. - try to change color of any rule. issue: - The color does not change in the Salary Rules. - Additionally, styles do not apply in the salary rule pop-up accessed through Salary Structures. Fix: - Instead of changing the color with formrenderer, a custom widget was created to apply styles directly to the field. opw-4716810 task-4774448 Forward-Port-Of: odoo/enterprise#93520 Forward-Port-Of: odoo/enterprise#83514
Users assigned to a secondary company could hit an access error when creating multi-company tax returns. This fix allows eligible users to create those returns without being blocked, improving reliability for multi-company accounting workflows.
Original PR description
When a tax return is created with multi companies and a user member of one of the secondary companies, he would get an access error due to missing sudo() task-5039551 Forward-Port-Of: odoo/enterprise#93325
Spreadsheet pivot configuration now hides field relationships that cannot be stored and therefore cannot be reliably retrieved. This prevents users from selecting options that would create cell errors, and adds test coverage for many-to-many relationships.
Original PR description
Before this commit, it was possible to follow a non-store field relation in the pivot chain feature. It leads to an error in the cell as it's not possible to retrieve the value of a non-stored field. In order to ease the work of the user, we do not display non-store field relation. This commit also adds a missing test for the m2m relation. Task: 5059203
Creating a new salary offer from an employee's shortcut now automatically selects the correct employee again. This prevents manual correction and helps HR teams avoid offers being created without the intended employee attached.
Original PR description
Since this PR: https://github.com/odoo/enterprise/pull/91716, the context when creating a new offer for an employee via his smartbuttons was lacking the default employee_id. This commit fixes the issue by specifying the correct default employee_id.
The barcode app now handles manufacturing orders that have no by-products when opening the scrap window. This prevents a traceback and lets users scrap completed productions reliably.
Original PR description
Issue ----- Trying to scrap a production through the barcode app gives the user a traceback. Steps to reproduce ----- - Have a done MO - Go to barcode and try to scrap it --> Traceback Cause ----- When preparing the context for the scrap window, we try to map the MO's byProducts. When there is no byProduct, we end up trying to apply a mapping on "nothing". ----- Ticket: opw-4792599 Forward-Port-Of: odoo/enterprise#92925 Forward-Port-Of: odoo/enterprise#90623
Dutch tax report submissions will now have their status checked automatically on a regular schedule instead of relying only on manual triggering during submission. This prevents reports from getting stuck without updates if a previous status check fails or crashes.
Original PR description
The way the cron was used before was by manually triggering it from the Tax Report submission flow. The cron was set to not never trigger otherwise (9999 months). However, if, for whatever reason, the cron fails/crashes, the status of the submitted report would never be fetched unless a report is submitted again.
Audit balance filtering now excludes draft entries, so users see accurate account balances for the selected period. Slovenian reporting deadlines are also set correctly across all companies, preventing missing defaults in multi-company setups.
This update fixes issues in the Documents app where moving folders by drag and drop could crash and creating a folder from the New menu could place it in the wrong location. It also simplifies internal folder handling, making folder organization more dependable for users.
Original PR description
1. Fix a crash when drag and dropping folders in the searchpanel 2. Fix creating a folder with New > Folder in any location 3. REF: Remove `is_company_root_folder` field, a simple getter can do the job. See details in individual commits. Follow-ups of #89030. Task-5055163
A timezone is now set in a timesheet test calendar so automated checks use the expected dates and times. This helps keep test results reliable when demo data is included, reducing false failures during development and releases.
Original PR description
The timezone of a working calendar is not properly set in a test class, which causes datetimes to not match the expected values when running tests with demo data. This PR sets a timezone on the working calendar to solve the issue.
Features or functions removed from Odoo
An obsolete Swiss payroll report definition was removed because it was no longer loaded by the application. This cleanup reduces maintenance overhead without changing what users see or use.
Original PR description
hr_payroll_report.xml is not included in the manifest and therefore discarded Upgrade: https://github.com/odoo/upgrade/pull/8303 Task ID: 5026087
The appointment module no longer relies on legacy website editing components that are being phased out. This keeps the module aligned with Odoo's newer editor framework without changing appointment functionality for users.
Original PR description
This commit is part of an effort to remove dependencies on the legacy web_editor module. The appointment module already includes its AppointmentPlugin in the new editor's (html_editor module) list of plugins. This commit simply removes the code that patches the old Wysiwyg, which is being phased out, alongside the QUnit tests for it (which already have the equivalent ones using HOOT). task-5046471
This change removes an older way to create multiple planning shifts from a template because the same capability is now handled by a broader, shared implementation. This reduces duplication and keeps the shift creation process simpler and easier to maintain.
Original PR description
- This commit reverts https://github.com/odoo/enterprise/commit/84a5c06cca26628d29e2db64a661db542d3eca4c, which added the multiple shift creation feature. - The feature has since been implemented in a generic way in https://github.com/odoo/enterprise/pull/89560 keeping both implementations would introduce redundancy and add unnecessary complexity to the shift creation flow. task-5025754
The eCommerce dashboard menu has been removed because the underlying dashboard is no longer available. This keeps the website sales interface cleaner and prevents users from seeing a menu item that no longer leads to an active dashboard.
Original PR description
Description: - Drop website.menu_website_dashboard as the ecommerce dashboard is removed. SEE ALSO: Upgrade PR: https://github.com/odoo/upgrade/pull/8320 Community PR:https://github.com/odoo/odoo/pull/223724 task-4855511
Code cleanup and technical improvements
The spreadsheet-related test setup was simplified now that all tests use the newer Hoot framework. This reduces hidden test interference between modules and helps keep future spreadsheet changes safer and easier to maintain.
Original PR description
All tests have been converted to Hoot now. And each hoot test suite only runs with its dependencies. Patches in other modules no longer impacts `web` tests.