Daily updates from Odoo
Wednesday, August 19, 2026
53 changes · master
New functionality added to Odoo
This change adds support for showing accurate Click & Collect availability for rental products by taking the selected rental dates into account. Customers get clearer stock and checkout behavior, including better date selection and out-of-stock handling, reducing failed purchases and confusion.
Original PR description
**Purpose:**
Click & Collect and Rental are not working together, the rental dates are not used to display the availability of the product.
**Specification:**
Create a new bridge module between website_sale_collect and website_sale_renting to ensure that we use the rental dates to compute the availability if this is a rental product.
Task-6081690
See also:
- https://github.com/odoo/odoo/pull/259321Adds support for Ivory Coast's FNE electronic invoicing requirements so companies can prepare and send compliant invoice data from Odoo. This helps businesses operating in Côte d'Ivoire meet local tax reporting obligations more efficiently and reduces manual compliance work.
Original PR description
task-6110046
Enhancements to existing features
Belgian payroll now lets companies calculate meal vouchers based on eligible hours worked instead of only eligible days. The existing day-based method remains the default, while voucher amounts and employee contributions are shown per voucher for clearer payroll setup.
Original PR description
Before this commit: - Meal vouchers were only computed from eligible worked days. - The configured amounts were displayed per worked day. After this commit: - A Calculation Method allows choosing between Days and Hours. - Days remains the default and keeps the existing behavior. - Hours divides eligible worked hours by the daily hours of the employee's Working Hours Reference and rounds the resulting quantity. - Voucher values and employee contributions are displayed per voucher. - Fixed meal vouchers for company executives remain unchanged. Task-6427957
This update refreshes icons across manufacturing lifecycle, work order, quality, and barcode screens with a newer, cleaner visual style. The change improves visual clarity and consistency without altering business processes or functionality.
Original PR description
Icons were updated with the newer, more clean ones. task-6443360
Belgian payroll now warns HR teams when DIMONA declarations do not match employee contract version dates, categories, or joint committees. This helps catch payroll compliance issues earlier and reduces the risk of incorrect employment declarations.
Original PR description
add warning when DIMONA declarations don't cover the same date ranges as contract versions or when dimona category doesn't match between periods and versions. Task Id: 5951989
Employees with referral-only access can now view their own referral links in a read-only format, helping them understand how their shared links are performing. The Points menu is also available to these users, making referral progress easier to follow without granting extra editing permissions.
Original PR description
Before: - User having group: `User: Referral only` was only able to create a referral link but not able to track how there referral link is performing. After: - User will have read-only view for their referral links. - Points sub-menu will be visible to `User: Referral Only`. task: 6402714
The Belgian payroll configuration now includes the required reporting details for recoverable 0% overtime. This helps ensure overtime is classified correctly for social security, withholding tax, and official Belgian payroll declarations.
Original PR description
- Extended the OVERTIME26 work entry type with essential Belgian reporting metadata: category_ids (Remuneration, ONSS, Withholding tax bases), dmfa_code=1, and l10n_be_egov3_code=1102001. Task: 6358853
Customers booking appointments with related accessory products are now sent to the cart first, making it easier to add complementary items before checkout. If an appointment slot becomes unavailable while in the cart, it is removed automatically and the customer is clearly notified, helping avoid payment errors while preserving other valid bookings.
Original PR description
This PR improves the website appointment flow by adapting the checkout redirection when accessory products are present and ensuring proper cart validation for unavailable bookings. When an appointment type includes accessory products, users are now redirected to the cart page to look for complementary items before proceeding, with the button label updating dynamically. Additionally, any booking slots that become unavailable while in the cart are automatically removed during checkout validation, preserving other valid bookings and displaying a clear notification to the user. task-5975874
WhatsApp business accounts can now block repeat spam senders per account, helping teams reduce unwanted incoming messages. Staff can add numbers to a blocklist and manually block or unblock them from the form view, with Odoo syncing the action to WhatsApp automatically.
Original PR description
Purpose: Prevent incoming spam by blocking WhatsApp numbers that repeatedly send unwanted messages to the WhatsApp business account. Specifications: - Allow blocklisting WhatsApp numbers per WhatsApp account. - Creating a blocklist entry automatically triggers an API call to block the number on WhatsApp. - Allow manually blocking or unblocking numbers from the form view. Documentation: https://developers.facebook.com/documentation/business-messaging/whatsapp/block-users Task-5236975
Obsolete internal duplication logic was removed from Sales Subscription and Sales Renting to match the updated core product behavior. This reduces maintenance overhead and helps keep sales-related product handling consistent across Odoo.
Original PR description
Remove obsolete _duplicate_pricelist_rules_on_copy overrides from enterprise modules (sale_subscription, sale_renting) following its removal from the product module. This avoids dead code and ensures consistency with the updated core duplication behavior. task-5470688
The accounting reconciliation interface was updated to work with the newer OWL framework used by Odoo. This helps keep bank reconciliation and related accountant workflows maintainable and compatible without introducing major functional changes for users.
Original PR description
This pr will do some changes to be compliant with owl3. What has been done: - Change of some props to the new system - Remove use of useSubEnv - Remove use of onWillRender Also apply the EsLint on all files. task-6353237
Turkish companies can now generate reconciliation letters in Odoo using a format aligned with local legal expectations. The update adds bilingual letter content, address sections, closing text, and signature areas to reduce manual work and support audit readiness.
Original PR description
SPEC: - TR companies are legally required to exchange reconciliation letters (Mutabakat Mektubu) per TTK Article 94 to confirm outstanding balances with partners. - No standardized reconciliation letter exists in Odoo for Turkish localization, forcing manual off-system processes with reduced traceability. IMP: - Adjust customer statement report to comply with TR reconciliation letter format: title, address blocks, intro/closing messages (EN + TR), and signature blocks. - Provide Turkish translations for all letter content per legal requirement. Impact: - Turkish companies can generate and send legally compliant reconciliation letters directly from Odoo, eliminating manual workarounds and improving audit readiness. taskID-6121545
Cash-basis tax entries created from bank reconciliation can now be removed when payments are unreconciled, as long as accounting locks allow it. If removal is not allowed, the system keeps the safer reversal behavior and adds checks to warn users about sequence gaps that could affect tax return audits.
Original PR description
Problem --------- Currently, once a CABA move is created through the bank reco widget, it is impossible to draft/unlink it, the move can only be reverted. This leads to noisy journal when users unreco - reco their CABA payment. Do this a few times and it gets impossible to audit. Objective --------- The objectives of this change are as followed: 1. Allow for CABA moves to be unlinked once the payment is unreconciled. This is only allowed when the move is not locked behind HARD locks and tax lock. 2. In the case the CABA move is locked behind mentioned locks, revert it as it currently work. 3. Since the deletion/creation of moves can create holes in the CABA journal sequence (which is not really allowed in audits), it adds a Tax Return default check to warns the user in case of a hole sequence in the moves included in the Tax Return/End of the Year Statement. task-6226555
This update makes a small internal change in Web Studio’s report template handling to support future improvements. It does not introduce visible changes for users today, but helps keep reporting customization capabilities ready for upcoming enhancements.
Original PR description
Pass compile_context in parameters of `_compile_expr` to prepare future improvements in QWEB according to expressions. Task-6466187
Project budget information is now more accessible from project tasks and dashboards through a new Budgets tab. The project settings page is also cleaner because the Budget shortcut is hidden when no budgets exist.
Original PR description
- Add Budgets top-bar tab to project tasks and dashboards. - Hide the Budget stat button on the project settings page if zero budgets exist. task-5969230
Austrian small entrepreneurs can now use their domestic tax number when a VAT number is not available, allowing required Fiskaly registration and POS workflows to proceed. The update also improves an internal library patching mechanism to avoid issues when patched libraries need to read bundled data files.
Original PR description
Austrian Kleinunternehmer (small entrepreneurs) aren't issued a VAT number, only a domestic Steuernummer, but Fiskaly registration requires "vat" to be set. Add `l10n_at_stnr` on `res.company` and fall back to it wherever `l10n_at_pos` required "vat" like Fiskaly registration or else. Also fix patching a library's loader after import replaced it with a stand-in missing `get_resource_reader()`, breaking `importlib.resources` for any patched lib reading bundled data files. `exec_module` is now overridden on the loader instance instead. --- Task: https://www.odoo.com/odoo/project/1737/tasks/5993536
Spreadsheet list side panels now use the same drag-and-drop behavior and visual feedback as other spreadsheet areas. This makes reordering dimensions and sorting rules feel more consistent and easier to understand for users.
Original PR description
Current behavior before PR: - Dragging list dimensions and sorting rules felt visually different from pivot dimensions and global filters in the side panel. - The list side panel used a separate drag-and-drop utility that did not match the consistent UX of other spreadsheet components. Desired behavior after PR is merged: - List dimensions and sorting rules now share the same drag-and-drop behavior and visual feedback as pivot dimensions and global filters. - All reorderable items in the side panel now look and feel the same, providing a consistent user experience across the spreadsheet. - Use the `Section` component wherever applicable to keep the UI consistent. Task: [6219600](https://www.odoo.com/odoo/project/2328/tasks/6219600)
Employee document folders are now created directly in bulk instead of being recreated unnecessarily or processed one by one. This improves setup and payroll document organization performance, especially for companies with many employees.
Original PR description
* Employee folders could be unnecessarily recreated * Payroll folders were created one by one Temporary PR related to #127973 Task-6344800
Spreadsheet-related automated tests were updated to align with the move to Material Symbols icons in the spreadsheet library. This helps keep quality checks reliable after the visual icon system change, with no expected direct impact on daily users.
Original PR description
this commit adapts the tests to the switch to Material Symbols icons in the external library o-spreadsheet. Task: 6276321
Users can now use a middle click on the expand button in signing-related form dialogs to open the form in a new browser tab. This makes it easier to keep the current workflow in place while reviewing or editing a related form separately.
Original PR description
This commit adds the ability to detect a middle click on the Expand button to the Dialog API. This is achieved through the `t-custom-click` directive. The expand callback function that is given to the Dialog API, will now receive two parameters: the event and whether it's a middle click. Note that, the custom directives and the global values used for the `t-custom-click` are mandatory for each Owl app. This commit also uses the new API to allow the FormViewDialog and x2ManyFieldDialog form dialogs to expand to a new tab. task-id: 5429014
Online bank synchronization can now automatically reconnect when a connection breaks. This reduces manual follow-up for users and helps keep financial data imports running more reliably.
The signing activity is renamed from "Request Signature" to "Signature Request" so users see wording that matches the rest of the app. The activity icon is also muted to better align visually with other activity icons, creating a more consistent experience.
Original PR description
Renaming activity from "Request Signature" to "Signature Request" to better align with the wording used in other places. Change the template icon to muted to better match the other activities icons. Task-6317051
The Point of Sale navigation menu now displays icons and labels with consistent alignment and spacing. This makes the burger menu and LNA button easier to read and improves the overall visual clarity for users.
Original PR description
In this commit - ------------------------------- icon and label in the burger menu and LNA button are now properly aligned with consistent spacing for better visibility. Task-6391440 Related PR-https://github.com/odoo/odoo/pull/280203
Kitchen staff can now see the course sequence for self-order and kiosk orders in the preparation display. This makes those orders consistent with restaurant point-of-sale orders and helps kitchens prepare items in the intended order.
Original PR description
Following this commit: ==== - Course sequence would also be visible in kitchen display for self-order/kiosk same as pos_restaurant. task-6255005 Related PR : https://github.com/odoo/odoo/pull/269216
Time off that falls in a period already covered by a payslip is now handled automatically instead of requiring manual deferral by HR. This reduces payroll corrections, avoids complex conflicts between overlapping absences, and adds extra approval safeguards for past leave that can affect validated payroll.
Original PR description
Currently when a time off is created for a period already covered by a payslips, a time off officer needs to differ it manually but if there is a conflict with another time off it's too complex to be deferred. In that case the initial payslips should be reverted and then a new one should be created.
The Frontdesk Partnership homepage has been redesigned to better match the existing Frontdesk card-based experience. Visitors can now enter barcodes directly from the card or start camera scanning immediately, making check-in smoother and more intuitive.
Original PR description
In this PR, we have improved the homepage design to provide a more consistent and intuitive user experience: * Kept the card-based design consistent with the Frontdesk app and added an option to manually enter the barcode directly within the card. * When tapping the barcode option, the camera now opens directly for barcode scanning, removing the need for manual barcode entry from the scanning flow. Task-6364852
The signing process now handles PDF updates more carefully, allowing multiple signatures on the same document while keeping the original file structure intact. This improves reliability and supports more complex signing workflows without unnecessarily changing untouched pages.
Original PR description
Refactor PDF signing to use the incremental merge workflow, allowing multiple signatures per document while preserving the original PDF structure. Overlays are now merged incrementally, and only edited pages are updated. This improves consistency in the signing pipeline and supports more complex signing scenarios. task-5426461
The accounting dashboard now avoids repeated bank institution lookups when several unconfigured bank journals are shown. This makes the dashboard become usable faster and reduces stalls when the bank synchronization service is slow.
Original PR description
An accounting dashboard with a dozen unconfigured bank journals took seconds to become usable, and stalled entirely whenever the synchronization proxy was slow to answer. The server resolves the journal to its company and keys the proxy request on that company's fiscal country, and the widget is only rendered for journals of the active company, so the journal argument selected a company that was already known. The hook now sends one request per active company and hands the resulting promise to every widget that asks for it, dropping the journal argument along the way. The fetch also moved from the widget's start to its mount. The shared promise resolves immediately for every widget but the first, and the grid sizes itself from the width of a container that is only laid out once the card is in the DOM.
Payroll run reporting for UAE companies now uses metrics tailored to local payroll needs rather than a generic view. Salary rule and category updates also help payroll teams review UAE pay runs with information that better matches their business requirements.
Original PR description
The payrun metric for AE companies has been modified in order to adapt the payrun to the localization requirement instead of a generic view to cater for the business and payroll officers needs. Moreover few changes have been introduced to salary rules and categories. Task: 6326637
The Ecuador ATS reporting tests were updated to match a platform-level change in how certain grouped results are ordered. This keeps automated checks aligned with the intended behavior and helps prevent false test failures without changing business functionality.
Original PR description
Following changes to the ORM methods _read_group_orderby and _order_field_to_sql, query results are now ordered according to the sequential definition of selection fields (if ordered by a selection field ofc). Adapt the tests to take this new ordering into account. Related: odoo/odoo#280940 Task: 6425647
Payroll teams can now set dashboard warnings relative to today, making urgent warnings appear at the top as time moves forward. Email alerts skip these rolling Today-based warnings to avoid sending the same notification every day.
Original PR description
Dashboard warnings are grouped and sorted by their warning date, and every existing Closing On option anchors to a payrun, a contract, or a calendar boundary. Today is added as the first choice so a warning can sit at the top of the dashboard. The offset applies as usual, so the row reads "N days After Today". The reference moves with the clock, so the distance is constant. _cron_payroll_warning_email_alert skips Today warnings: its (today - warning_date).days == email_alert_days check is constant for them and would otherwise re-send the alert daily. task-6456127
Desktop users can now add call flow nodes by simply clicking an item in the palette, matching the easier mobile behavior. Drag and drop remains available, but it now starts only after the pointer moves far enough, reducing accidental drags and making flow editing smoother.
Original PR description
In the call flow editor, nodes can currently be added by dragging them from the desktop palette onto the canvas. On mobile, selecting a node from the dropdown adds it directly to the center of the canvas. Allow desktop users to get the same behavior by clicking a palette item. Keep drag and drop available by starting it only after the pointer has moved beyond a small threshold. task-6472451
The Colombian electronic invoicing app now has updated demo data and a clearer contact view for DIAN-related information. Demo mode is enabled by default for the demo company, making it easier for users to test and demonstrate the workflow safely.
Original PR description
Updating some demo data and adjusting DIAN partner view. DIAN demo mode is now default for the demo company. task-6454347
The attendance Gantt view now shows the same information bar already available in the calendar view. Managers can quickly see total worked hours, extra hours, and remaining hours in one place when reviewing attendance schedules.
Original PR description
The information bar which was being displayed in the Calendar view will now also be shown in the Gantt view with: - Total Worked Hours - Extra Hours - Left Hours (from hr_holidays_attendance) **task-6259363**
The Belgian payroll employee type previously labeled "PFI/Activa" has been renamed to "PFI/IBO". This makes the label more accurate for regional training contracts in Wallonia and Flanders and avoids confusion with the unrelated Activa scheme.
Original PR description
The employee type "PFI/Activa" is incorrect because Activa is not related to Dimona Category IVT. Renamed "PFI/Activa" to "PFI/IBO" to properly reflect the Belgian regional training contracts (PFI in Wallonia, IBO in Flanders). Task: 6478957
Resolved issues and error corrections
Website-generated pages and blog posts now reuse the same image file instead of creating duplicate media entries. Cropped or customized image versions are also kept out of the general media picker, making it easier for users to find the right images.
Original PR description
Images referenced by several pages (or several blog posts) could get copied into extra ir.attachment records instead of being reused, because `_get_wg_attachment` iterated over the raw filenames list without deduplicating it first, and marked a filename "used" as soon as it was assigned once. The same visually-identical image would then end up cluttering the website media picker under several ids. Also stop customized/cropped image variants from showing up as regular library images in the media picker, since they're only meant to back a specific placement.
Payroll users can now manually adjust computed payslip lines without triggering an error when recalculating. This keeps draft payslip editing reliable and prevents disruption during payroll preparation.
Original PR description
Steps to reproduce:
- Open a draft payslip.
- Go to the Salary Computation tab.
- Manually change the amount of a computed line and compute.
- A traceback is raised (UnboundLocalError).
Reason:
When a line is manually modified, the standard computation is skipped and `explanation_info` is never defined.
Solution:
Initialize `explanation_info = {}` for manually modified lines.
Task-6462526The vehicle model engine section now keeps related power fields together, so the form no longer visually shifts when users change the selected power unit. An unused horsepower tax field was also removed, reducing clutter in fleet-related views.
Original PR description
The order of fields in "engine" section of car model is changed when selecting an other Power Unit. Cause: "power" and "horsepower" fields are conditionnaly invisible depending on the selected unit but at different positions. Solution: moving them next to each other. Removing "horsepower_tax" field as not used for any computation Task: 6428275
The accounting app now better detects fiscal years that overlap existing ones, including cases where a new, longer fiscal year fully contains an existing shorter period. This helps prevent inconsistent accounting period setup and reduces the risk of reporting or closing-period errors.
Original PR description
Before this commit: - The current constraint for overlap check that we have allows if we define a new, larger fiscal year that completely swallows an existing smaller one (e.g., creating Aug 2025 - Nov 2026 when Sept 2025 - Oct 2026 already exists). After this commit: - The constrain domain was changed to consider the above missed case.
The Sign template editor no longer performs an unnecessary background lookup when opening or preparing templates. This removes wasted processing without changing the visible editing experience, helping keep the editor leaner and more reliable.
Original PR description
The editor fetched a sign.item.role record to set currentRole, which has no effect and no use, so every value computed from it is overwritten right after. task-6449467
The Planning schedule side panel now shows the Open Shifts and Resources filters again. This lets dispatchers quickly find unassigned work and filter schedules by technician, restoring an important day-to-day scheduling control.
Original PR description
Steps to reproduce: 1. Install the planning_field_service module. 2. Navigate to the Planning app -> Schedule (Main Calendar View). 3. Check the right-hand calendar side panel. Issue: The Open Shifts and Resources checkboxes/filters are completely missing from the side panel, preventing dispatchers from filtering the schedule by specific technicians or viewing unassigned shifts. Cause: the resource_ids field was completely removed from the planning_view_calendar XML. Because the field was no longer present in the view architecture, the OWL calendar renderer stopped generating the dynamic resource filter in the side panel. task-6452329
The Phone app now shows the full Telnyx location when users search for phone numbers to buy, making it easier to identify where numbers are based. It also removes a misleading settings menu that opened a page without any Phone-specific settings.
Original PR description
When searching for a number to buy, the Location column showed only a
fragment of where the number comes from —> usually the bare state ("ON")
while Telnyx's own search shows the whole thing ("GRIMSBY, ON, CA").
This commit fixes that and shows the location like its shown on Telnyx +
a small ux change which is removing the configuration/settings menu
because Phone app doesn't have settings actually.
Task-6456328Users can now create a new warehouse directly while setting up stock-by-vehicle mappings. This removes an unnecessary setup blocker and makes configuring vehicle-based warehouse assignments faster.
Original PR description
Before this commit, users could not create a new warehouse directly from the 'stock by vehicle' mapping view because the `warehouse_id` field had the `no_create` option enabled.
With this commit, we remove `options="{'no_create': True}"` from the `warehouse_id` field in both the list and form views. This enables on-the-fly warehouse creation directly from the vehicle mapping settings.
task-6381795
Forward-Port-Of: odoo/enterprise#124240Payroll warning messages now open safely on employee records, even when no related version data is found. Warnings configured for both the payroll dashboard and employee records can now appear in both places, helping users see the right alerts where they need them.
Original PR description
Two issues could occur when using payroll warnings on employee/version records: * Opening an employee form could raise an `AttributeError` for model warnings when the warning evaluation returned an empty `base` recordset. The code attempted to access `version_ids` before checking this case. * A warning configured to be displayed both on the dashboard and on the model was excluded from one of the views. Check the warning result before accessing employee versions, and filter dashboard warnings based on `display_on_dashboard` instead of `display_on_model`. This allows model warnings to be evaluated safely and makes it possible to display the same warning both on the dashboard and on the corresponding model. task-6472369
The Discuss app badge now shows the correct red counter in Enterprise setups. A test-only dependency was moved out of the main mail enterprise module so it can install automatically as intended, restoring the expected user interface behavior.
Original PR description
Before this commit, the discuss badge counters were green because `mail_enterprise` module could not be auto-installed with `mail` and `web_enterprise` installed. This comes from recent addition of `test_tools` from a test in `test_update_notification` requiring this module. We want `mail_enterprise` to auto-install with only `mail` and `web_enterprise` modules, so the `test_tools` should only affect a test module. This commit fixes the issue by moving the test in `test_mail_enterprise`, so that `mail_enterprise` can auto-install itself as expected. Task-6475496 Before <img width="397" height="421" alt="Screenshot 2026-08-18 at 12 20 09" src="https://github.com/user-attachments/assets/9bd7e001-ecc8-44bb-8d77-342835a08dd0" /> After <img width="398" height="422" alt="Screenshot 2026-08-18 at 12 21 50" src="https://github.com/user-attachments/assets/b21611ca-9055-4922-ad58-9813f3fb6964" />
The bank journal screen now hides the “send now” reminder and connection request when the journal is no longer using online synchronization as its bank statement source. This prevents users from seeing misleading prompts that do not apply to the selected bank setup.
Original PR description
In this commit:https://github.com/odoo/enterprise/commit/86659741990de2ba9c8bf738207edf0e8a0ba8c4 the invisible condition on action send reminder was wrongly removed Now, the "send now" button and the connection request was shown as soon as we have an account online account link to the journal. But when changing the bank statement source, the information would still be there. Changing the invisible condition to hide it when the bank statement source is different from only_sync no task id
Code cleanup and technical improvements
The inventory barcode app was updated as part of a broader platform migration to keep it compatible with the next version of Odoo's interface framework. This is an internal cleanup with no expected change to day-to-day warehouse scanning or stock counting workflows.
Original PR description
As part of the Owl 3 migration, replace onWillUpdateProps hook with the appropriate Owl 3 alternatives.
This update simplifies how commission plan charts are displayed by using a shared chart handling mechanism already adopted elsewhere. It reduces duplicated code and prepares the feature for newer platform changes, with no expected change to day-to-day user workflows.
Original PR description
The commission plan graph duplicated the same Chart.js lifecycle as the community components: an `onWillStart` loading the `web.chartjs_lib` bundle, then render on mount, destroy and re-render on every patch, destroy on unmount. Here we drop it for the hook extracted in the community PR. `useChart(getConfig)` is called from the constructor as a field and owns the canvas signal ref, so the template takes its `t-ref` from `this.chart.ref`. `spreadsheet_edition` patches `GraphRenderer` and reads its chart instance, which now lives behind the hook's accessor. WHY: useLayoutEffect is deprecated in OWL3 NOTE: the `JSON.parse` of the record value that `setup` did is dropped - `renderChart` re-parsed it on every run anyway, and nothing reads `this.data` before the chart is built. Community PR: odoo/odoo#282745
The map view code was updated to use the newer application lifecycle approach required by the next Odoo web framework version. This is an internal technical cleanup with no expected change to user-facing map behavior.
Original PR description
Replace `useLayoutEffect` with `onMounted` (functionnaly 1:1 equivalent because of the empty dependency array). Seperating in its own commit for simplicity of security review. WHY: useLayoutEffect is deprecated in OWL3
This update refreshes internal code used by spreadsheet editing screens and VoIP call controls to align with newer platform standards. It should help maintain compatibility and reduce maintenance risk without changing the expected user experience.
This update simplifies internal invoice creation code across sales-related modules, including subscriptions, loyalty, tests, and Brazilian stock EDI. It should make future maintenance safer and more consistent without changing day-to-day user workflows.
The audio visualizer was updated to use the newer supported approach in Odoo’s interface framework, replacing an outdated internal mechanism. This reduces future upgrade risk and adds test coverage to help ensure the visualizer continues working correctly.
Original PR description
Replaced `useLayoutEffect` with `computed` because `useLayoutEffect` is deprecated in OWL3. `barHeights` is pure derived state from `props.frequencies` and `barCount` (a signal). `computed` auto-tracks both dependencies and re-evaluates without side effects, making it a natural fit for this case. When commenting out the useLayoutEffect there was no error, the code we refactored had NO TEST coverage. A test was written to ensure our fix was correct, and it was tested against the previous useLayoutEffect: - Passed with previous useLayoutEffect. - Failed with previous useLayoutEffect commented. - Passed with our OWL3 replacement.
This change renames an internal user access group to make its purpose clearer and more consistent across the system. It should not change day-to-day workflows, but helps maintain the platform and reduces confusion for future updates.