Daily updates from Odoo
Tuesday, December 16, 2025
40 changes · master
New functionality added to Odoo
This update allows Odoo users to receive and respond to Facebook messages directly within Odoo's Discuss platform. It utilizes a secure webhook connection to Facebook, ensuring messages are delivered reliably. This improves customer engagement and streamlines communication.
Original PR description
Purpose ======= Be able to send/receive Facebook messages in Discuss. The code must be generic, to be able to send messages on other medias, in the future. Specifications ============== Features…
Purpose ======= Be able to send/receive Facebook messages in Discuss. The code must be generic, to be able to send messages on other medias, in the future. Specifications ============== Features -------- We want to be able to send messages from Odoo to Facebook and to receive the Facebook messages in Odoo. We want to specify operators per page. So, a list of users will receive the messages of the Facebook page and will be able to respond. Facebook webhook ---------------- Facebook manage events (as new message) with webhook. You specify an URL in your application setting, and when you receive a new message on your page, Facebook will perform a HTTP request on the endpoint you specify with the message information. The steps are 1. You create a Facebook application, and you set your callback URL to `<web_base_url>/social_facebook/webhook` 2. You connect your Facebook account with Odoo (so we have an access token per page) 3. Each page make a HTTP request to register itself to the webhook (to receive the new messages) 4. When a new message is received on a page, Facebook perform a HTTP request with the page ID. IAP --- If the user use IAP, a callback URL will be passed to IAP during the authentication. We save it in the IAP database. So, when IAP will receive a new event, we look at the Facebook page ID (in the data we received from Facebook), and we give the event to the right callback URL. Note that multiple Odoo database might be linked to the same Facebook page, that Facebook send notifications in batch(so we can receive notifications of different page/database in same request). Signature --------- In order to prevent malicious users from impersonating Facebook sign each message with the APP secret. If the events are passed thought IAP, the signature is checked when IAP receive the message and then IAP sign each request to each database with the shared secret passed during the authentication (this key is build with the database secret). So, each message is signed and can not be impersonate. Operators -------------- To not spam all operators with all social messages, we want to choose only one operators to respond to the Facebook contact. The order of priority to choose an operator is 1. An online operator who is not in an active social channel 2. The online operator who has the lowest number of active social channel 3. An offline operator who is not in an active social channel 4. The offline operator who has the lowest number of active social channel A social channel is considered as "active" if one message has been sent in the last 30 minutes. We take offline operators if nobody is available to not loose the conversation and to be able to respond later to the customer. Task 2124457 See odoo/odoo/pull/45493
This update enhances the Odoo Enterprise platform by adding type definitions for the SIP.js library. These definitions improve code reliability and maintainability, ensuring better integration and development of VoIP functionality within Odoo. This change primarily supports internal development and improves the overall quality of the Odoo Enterprise codebase.
Original PR description
odoo/odoo#240058
Enhancements to existing features
This update prevents unnecessary data loading in the Point of Sale calendar view, specifically addressing potential performance issues and data security concerns. By simplifying the display and removing unused components, we've optimized the user experience and reduced the risk of accessing sensitive partner information. This change focuses on improving the PoS functionality.
Original PR description
Purpose ======= Prevent using the attendee popover in the calendar view popover in point of sale. Specification ============= The attendee popover is not necessary/relevant in point of sale where discuss is not available and access to further partner personnal information could be a problem. Changing the field to use the web "many2many_tags_avatar" widget. Also preventing the assets from loading the "Many2ManyAttendee" and the "Many2ManyAttendeeExpandable" components as they're inheriting from a mail field component which can't easily be loaded in PoS as it's using discuss and ImStatus features. Task-5153118
This update ensures that tax payments made by companies are accurately reflected in reports submitted to the government. Previously, the reports didn't include these tax payments, leading to potential discrepancies. This change adds the total tax value to the invoice total for GSTR reporting, aligning with government requirements.
Original PR description
Here we are not collecting tax from the customer but the company has pay taxes to the goverment and after that the company can claim refund for the taxes. So when we are sending report data to goverment then we need to include tax part into the invoice total task-5369117 Forward-Port-Of: odoo/enterprise#101538 Forward-Port-Of: odoo/enterprise#101308
This update simplifies a key query used in the sale commission reporting process. By adding an alias to a temporary table (CTE), the underlying code is now easier to modify and maintain. This improves the efficiency and flexibility of generating accurate sales commission reports.
Original PR description
Add an alias to the CTE used for sale order log selection. This is done to simplify modifications to the query. Forward-Port-Of: odoo/enterprise#102145
This update adjusts how the system sends email notifications using the Odoo mail template API. The API now returns a recordset of emails sent, rather than just an ID. This change ensures the system continues to function correctly with the latest Odoo updates and maintains reliable email delivery.
Original PR description
Purpose ======= Now, the `send_mail` method of `mail.template` returns a recordset, and not just an id, adapt the code to that change. Task-3084943
This update adds detailed logging for communication with the Odoo blackbox. Combined with a related feature for saving and downloading logs, this will significantly simplify troubleshooting client issues and improve support efficiency. It's a key step in proactively addressing potential problems.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/236927 This commit adds several log messages for the communication with the blackbox. In combination with the associated Community PR to save and download these logs, this should enable easier debugging when clients experience problems. Forward-Port-Of: odoo/enterprise#102141 Forward-Port-Of: odoo/enterprise#100183
This update enhances the formatting of tax reports for the Dominican Republic (l10n_co_dian) by standardizing float number formats. This ensures accurate and consistent reporting, aligning with local tax regulations and improving the reliability of financial data. The change was driven by a previous related enhancement.
Original PR description
Forward-Port-Of: odoo/enterprise#102085 Forward-Port-Of: odoo/enterprise#101288
This update simplifies the demo setup process for the HR Expense Stripe module by skipping the Stripe KYC settings and pre-filling information. This reduces the time needed to configure the demo, making it more efficient for presentations and testing. Note that a refresh is still required after setup to fully verify the account.
Original PR description
When clicking on Connect, we are now skipping Stripe KYC Settings and prefilling every informations to make the demonstrations quicker to set up. It's still required to wait a bit before refreshing to have the account as verified in the Odoo settings page. task-5246475
This update enhances the usability of the appointment calendar by streamlining the sharing process and preventing duplicate unavailability alerts. Specifically, the calendar view now provides a more intuitive sharing experience and correctly manages appointment availability, ensuring accurate scheduling.
Original PR description
1) Make sure the Share dropdown allowing to share an appointment type from the calendar view is correctly focusing the different items on mouse hover. The dropdown items are just simple buttons, improving them by using the DropdownItem component. 2) As a new unavailability alert has been set for the partners on the calendar quick create form, making sure the unavailability alert from the appointment template is correctly replacing it to prevent duplicates. 3) In PoS appointment, making sure the simplified calendar event form is the one opened instead of the full form when accessing it from the PoS calendar view. Task-5407656
This update enhances document access by synchronizing members to the destination when moving documents, ensuring consistent behavior. It also maintains access logs when removing membership, preserving access through other means and preventing data loss in the 'Recent' view. This improves document management and user experience.
Original PR description
1. Sync members with destination on moves so behavior is more consistent, predictable 2. Keep access logs when removing membership as user can still have access through other means and shouldn't lose the document in "Recent". See details in individual commits Task-5139786
This update simplifies the campaign kanban view by hiding irrelevant metrics (those with zero values) and renaming the 'Send/Add' label to 'New'. This improves the user experience and makes it easier to focus on key campaign data.
Original PR description
Hide zero-value metrics in the kanban view of the campaign. Rename the confusing 'Send/Add' label to 'New'. Task-5182993
This update removes a performance-hindering feature from the account report engine. The previous method, using 'safe_eval', was only needed for a specific calculation and caused slowdowns with large datasets. This change improves overall report generation speed and prepares the system for future updates like the partner ledger refactoring.
Original PR description
The safe_eval used in account report was only useful for domain engine to handle "-sum()". This however has huge performance impacts when handling a lot of lines, for example in the future partner ledger refactoring. task-5116827
This update streamlines the bank reconciliation process by ensuring the chatter used within the bank reconciliation widget now pulls information from the statement line instead of the general move. This reduces unnecessary noise and improves the clarity of reconciliation reports, making the process more efficient for users.
Original PR description
Before this commit, the chatter of bank reconciliation widget was using the move's chatter and not the statement line one. This commit changes that to have less noise when we do the reconciliation. task-5385187
This update integrates AI-powered SEO directly into the Odoo website. It automatically generates titles, descriptions, and keywords for web pages based on their content, improving search engine visibility. A new feature allows for structured data output control, ensuring optimal website performance.
Original PR description
This PR introduces an AI-based SEO to the website app. It does so by overriding the `TitleDescription.autoFill` method, using the default agent to generate title, description, and keyword based on the page content. This PR also adds a new parameter to the `_generate_response` of the `ai.agent` to allow one to pass a JSON schema for getting structured outputs. Doing so, it adds a restriction on the controller endpoint to forbid the use of structured outputs if the `enable_html_response` flag is set to true. task-5385183 Community PR: https://github.com/odoo/odoo/pull/238889
Resolved issues and error corrections
This update resolves an issue where duplicating a bill within the ESG app would inadvertently create additional assignment rules. The fix ensures that only the original rule is created, maintaining data integrity and preventing unnecessary rule proliferation. This improves the stability and usability of the ESG carbon emissions tracking feature.
Original PR description
[FIX] esg: prevent rule creation on copy Steps: 1. Go to the ESG app and create a new Emissions Factor (or duplicate one for sake of ease) 2. Open the Assignation tab and create a rule for Any Account - Any Partner - Mileage 3. Create a Bill and add the Mileage product If you check here, no other assignation rule is created 4. Duplicate the bill 5. Navigate back to the Emissions Factor on the ESG app. A new assignation rule has appeared. Notice that the steps use a product Mileage as example, you can use another one You can also test the steps with different rule configuration, you only need at least one "Any" opw-5350250 https://github.com/odoo/enterprise/commit/bab99c460a93cb4eef959d8dcd2f12e4ebaa07af Forward-Port-Of: odoo/enterprise#101789
This update resolves a bug where locking a Point of Sale (PoS) with employee login and a blackbox would sometimes cause an error when trying to select an employee. The fix ensures the system checks if an employee is actually set before attempting to update the clock in date, improving PoS stability.
Original PR description
When a PoS was configured with "login with employees" and a blackbox, locking the pos then trying to select an employee raised a traceback. The PoS was trying to update the clock in date, but the employee was undefined. This is now fixed checking whether if the employee is set. Forward-Port-Of: odoo/enterprise#102137
This update fixes an issue where users without access to a document's folder were incorrectly shown as 'Restricted Folder' in the Documents Kanban view. The fix ensures the LLM receives the correct parent folder name, even when access is denied, improving the user experience and data accuracy.
Original PR description
Bug === In documents, when we don't have access on the folder of a document, we show "Restricted Folder" in the kanban view. For AI, because we don't want to add "Restricted Folder" in the prompt when the user has no access on the folder, we skip that in the compute of the display_name when we are in sudo. But display_name are always computer in sudo, so we never show "Restricted Folder". Forward-Port-Of: odoo/enterprise#100850
This update addresses an issue where certain buttons ('Reset Password' and 'Remote Debug') were not functioning correctly on Windows IoT. To ensure compatibility, these buttons have been hidden from the user interface, preventing potential errors and improving the user experience on this platform.
Original PR description
"Reset Password" and "Remote Debug" buttons are not compatible with Windows IoT, we then hide them on the corresponding records. Forward-Port-Of: odoo/enterprise#102154
This update resolves an issue where users with access to multiple companies but only one employee were unable to schedule themselves for planning slots in those companies. The fix restores the previous behavior, ensuring all users with company access can participate in planning slots, preventing disruptions to internal scheduling processes. This ensures consistent access for all users.
Original PR description
Since #91616, if a user has access to multiple companies but only has an employee in one, they are unable to assign themselves to a planning slot from a company other than that of their employee. This was not the case in previous versions and is causing issues in our internal db. To restore the previous behavior, any user with access to a company but only 1 employee will be able to assign themselves to slots of said company. opw-5163200 Forward-Port-Of: odoo/enterprise#101883 Forward-Port-Of: odoo/enterprise#101659
This update fixes an issue where unscheduled shifts weren't immediately reflected in the Gantt view, requiring a page refresh. The change ensures shifts are updated instantly when unscheduled, improving scheduling accuracy and reducing user frustration. This improves the overall planning process.
Original PR description
**Steps to reproduce:** Go to planning gantt view. Click on shift. Click on unschedule button on popover. **Issue:** When clicking on Unschedule button on a shift popover, sometimes the shift still appears and again clicking on that it cause missing error occured until the page is refreshed. **Cause:** The record wasn’t updating in the view after a shift was unscheduled, so the unscheduled shift was still showing. **Fix:** Modified the method to reload the model and notify the view immediately after calling action_unschedule, ensuring shifts reflect the latest server state without requiring a manual refresh. task-5075381 Forward-Port-Of: odoo/enterprise#102010 Forward-Port-Of: odoo/enterprise#97108
This update fixes an issue where newly created employees were incorrectly marked as unavailable in the Planning Gantt view. The fix addresses a problem with how the system identified employee contracts and calculated working periods, ensuring accurate scheduling for all employees.
Original PR description
Steps to reproduce: - 1. Install Planning module. 2. Create a new employee without setting a contract start date. 3. Go to the Planning Gantt view by resource. Issue: - The Planning Gantt view…
Steps to reproduce:
-
1. Install Planning module.
2. Create a new employee without setting a contract start date.
3. Go to the Planning Gantt view by resource.
Issue:
-
The Planning Gantt view incorrectly grays out the entire schedule for newly created employees. It can also incorrectly gray out the initial days of a contract.
Cause:
-
1) With the introduction of `hr.version`, a version is now created for every employee by default. The logic to identify employees with a contract history was using a domain `[("employee_id", "in", ...)]`, which selects all employees, even those with no contract. This incorrectly flagged new employees as having a contract history, causing them to be marked as unavailable.
2) The view was using the computed `version.date_start` field. The computed `date_start` is calculated as the maximum of the version's creation date and the contract's start date. (e.g., contract starts Sep 1st, version created Sep 5th), the computed start date becomes Sep 5th, incorrectly graying out the period from Sep 1st to Sep 4th.
Fix:
-
1) The query that checks for an employee's contract history is now filtered by `('contract_date_start', '!=', False)`.
2) The Gantt view's working period calculation now uses the stored, `contract_date_start` and `contract_date_end` fields.
task-5058866
Forward-Port-Of: odoo/enterprise#101956
Forward-Port-Of: odoo/enterprise#94007This update ensures that shift schedules now accurately reflect a resource's working days, preventing the creation of shifts on weekends and holidays. Previously, the system incorrectly generated shifts for all days of the week, leading to inefficient scheduling. This change improves the accuracy and usability of shift planning.
Original PR description
Steps to reproduce: - Go to Planning. - Create a multi-shift for a resource for the entire week. - Shifts are created for all days, including weekends and non-working days. Issue: Shifts were created for the entire week, ignoring the resource working schedule, so weekends and non-working days were also included. Cause: Shifts were created without considering the resource’s working schedule, which led to inclusion of weekends and non-working days. Fix: Updated shift creation to align with the resource’s schedule, skipping weekends and non-working days. task-5051694 Forward-Port-Of: odoo/enterprise#95093
This update resolves an issue that caused errors during call recording by correctly managing how the system listens for media streams. The change ensures the Odoo's SIP library functions properly, preventing disruptions and improving recording reliability. This enhances the overall call recording experience.
Original PR description
When recording a call, a traceback shows up because the current session uses `onTrack` to set a listener. This is a problem because `onTrack` is a property on the `peerConnection`, this means that it overrides the listener put by SIP library. This commit fixes that by using `addEventListener` instead so the original implementation of the SIP library is not overriden. The handler override was introduced in this PR: https://github.com/odoo/enterprise/pull/99168 Task-5379708
This update refactors the HTML sanitization process within the MRP Workorder module, utilizing the 'bleach' library for enhanced security. The associated unit tests have been updated to align with these changes, ensuring consistent and reliable HTML handling.
Original PR description
Purpose ======= The HTML sanitizer has been refactored to use bleach, adapt the unit tests to those changes. Task-2812488 See odoo/odoo/pull/90965
This update fixes an issue where Odoo wasn't correctly displaying replies to Tweets, leading to a double mention. The change aligns Odoo's Twitter reply interface with Twitter's native format, now showing "In reply to <user>" in feeds and related views. This ensures a consistent and user-friendly experience when interacting with Tweets.
Original PR description
Bug === When we reply to a Tweet, we want to show "In reply to <user>", in the feed view, in the modal for the "post" and the "comments". Task-3686630
This update resolves an issue where sick leave deferral calculations were inaccurate when a leave period extended across multiple months. The fix ensures correct deferral amounts are applied, improving the accuracy of payroll processing for employees with extended sick leave. This impacts the proper calculation of employee compensation.
Original PR description
The defer computation was not correct if the leave spans multiple months. This commit fixes it. Forward-Port-Of: odoo/enterprise#102188
This update resolves a bug that prevented refunds from being processed correctly for orders created with 'Consumidor Final Anónimo' customers in the POS system. The fix ensures proper error dialogs are displayed, preventing crashes and allowing refunds to be completed for this customer segment.
Original PR description
We had a bug when attempting to refund orders that were created with the "Consumidor Final Anónimo" customer. The refund validation would crash with a TypeError instead of showing the proper error…
We had a bug when attempting to refund orders that were created with the "Consumidor Final Anónimo" customer. The refund validation would crash with a TypeError instead of showing the proper error message. Steps to reproduce: ------------------- In POS with l10n_cl_edi module activated: * Create a new order with "Consumidor Final Anónimo" as customer * Add products and pay the order * Validate the order * Attempt to refund this order > Observation: The refund validation would crash with: TypeError: Cannot read properties of undefined (reading 'add') at OrderPaymentValidation.isOrderValid Why the fix: ------------ The code was trying to access `this.dialog` which is undefined in the OrderPaymentValidation class context. The dialog service should be accessed via `this.pos.dialog`, which is the correct pattern used throughout the base OrderPaymentValidation class. This fix ensures the error dialog is properly displayed when attempting to refund orders for the anonymous final consumer, instead of crashing with a TypeError. Forward-Port-Of: odoo/enterprise#101356
This update resolves a technical error that occurred when users switched between scanner modes. The change was necessary due to a recent update to how the system communicates with devices, and the original error handling wasn't properly adjusted. This ensures the scanner functionality is now reliable.
Original PR description
When toggling the "is scanner" toggle, we were getting a traceback. This comes from the switch from longpolling to `iot_http`, but the error handling wasn't adapted. opw-5408986 Forward-Port-Of: odoo/enterprise#102059
This update ensures that orders are immediately sent to the kitchen (PDIS) after a self-order payment is confirmed, regardless of whether the user sees a confirmation page. Previously, delays or missed confirmation pages could cause confusion. This change improves the reliability of order processing for self-order and kiosk transactions.
Original PR description
pos_online_payment* = pos_online_payment_self_order_preparation_display Task: [#5217268](https://www.odoo.com/odoo/project/1737/tasks/5217268) --- Previously, when an online payment was made, the…
pos_online_payment* = pos_online_payment_self_order_preparation_display Task: [#5217268](https://www.odoo.com/odoo/project/1737/tasks/5217268) --- Previously, when an online payment was made, the user was supposed to be redirected to a payment confirmation page which, once the transaction succeeded, sent the related order to the kitchen (PDIS). However, in some cases, the user never reaches this page. For example, the user may see the payment succeed in their banking app and close the tab before the redirection happens. For POS self-orders, we must send the order to the kitchen as soon as the payment is confirmed to avoid confusion between the customer, the cashier, and the kitchen staff. Relying solely on the confirmation page was therefore unreliable. --- To fix this, we now leverage the cron that post-processes payment transactions: we gather all transactions made in self-order or kiosk mode that are not yet post-processed, and send their corresponding orders to the kitchen. This ensures that orders reach the PDIS even when the user never lands on the confirmation page. Forward-Port-Of: odoo/enterprise#99249
This update resolves an issue where incorrect date formats were appearing in reports related to bills to receive. The fix ensures dates are consistently formatted, regardless of user locale settings, improving the accuracy and reliability of financial reporting. This prevents errors and ensures data integrity.
Original PR description
Steps to reproduce: - Complete a purchase - Go to Accounting > Review > Bills to receive - Select the PO and click on `Create Accrual Entries` Issue: A traceback appears, showing an invalid date format. To keep date formats working properly with the server independantly from the locale, we must use `serializeDate` to avoid symbols that wouldn't be understood by the server. Forward-Port-Of: odoo/enterprise#102030
This update automatically selects a failure location when a quality check fails, preventing incorrect stock movements and manual corrections. Previously, users had to manually choose a location, leading to errors and inconsistencies. This change ensures accurate stock tracking and reduces the risk of mistakes in quality control processes.
Original PR description
- When `failure location(s)` are configured on a `Quality Point`, users must manually choose one when failing a `quality check`. However, if the user forgets to select one, the failed quantities are incorrectly moved to the `stock location` instead of a `designated failure location`. - This results in incorrect stock moves and quantity values, requires manual corrections, and increasing the risk of mistakes. This improvement ensures that the quality check wizard automatically preselects the first available failure location whenever at least one exist, ensuring that failed quantities are correctly going to failure location even if user don't select one, which ensures consistency across all operation types, creates correct stock moves, and maintains accurate quantity values. Task ID: 4737111
This update refreshes the user interface for the signer experience within the Enterprise module. The changes modernize the toolbar and background, creating a more consistent and professional look and feel. This improves the overall user experience for signing documents.
Original PR description
Before this PR, the toolbar was looking a bit old and the viewer background was to dark in LM. Now it is more harmonized. | Before | After | |--------|--------| | <img width="1596" height="831" alt="Screenshot 2025-11-13 at 17 40 51" src="https://github.com/user-attachments/assets/30eae7ae-f8bb-4fe2-87f7-9151974d5d86" /> | <img width="1596" height="831" alt="Screenshot 2025-11-13 at 17 40 37" src="https://github.com/user-attachments/assets/673ba382-0bf1-4385-b669-a81438123aac" /> | task-5060120
This update fixes an issue where assignee rows weren't displayed in the Gantt view when users had no tasks assigned. Now, all users are consistently visible, and searching by assignee filters correctly, showing only unassigned tasks within a specific project.
Original PR description
**Before this commit:** When searching for an assignee in the gantt view, the corresponding row was not displayed if the user had no tasks assigned. Similarly, when applying a custom filter on the assignee also not working properly. **After this commit:** When searching or filtering by an assignee, the corresponding user row is now always visible in the gantt view, even if the user has no assigned tasks. Custom filters on assignee also work properly. task-5076701 Forward-Port-Of: odoo/enterprise#102072 Forward-Port-Of: odoo/enterprise#96531
This update fixes a minor error in the demo data for the Belgian HR payroll module, ensuring the correct number of paid time off days are displayed. The maximum allowed time off has also been updated to comply with Belgian law (24 days for 6-day workweeks).
Original PR description
In the demo data, the number of paid time off was displayed as 21, when it should be 20. The issue was tracked to the statement used for assigning the working schedule to each employee. Also the maximum time off possible is now 24 days as stated by the law (for people working 6 days a week). task-5172492 Forward-Port-Of: odoo/enterprise#98228
This update addresses a requirement from FAIA version 2.01, which now mandates the inclusion of a 'PurchaseInvoices' tag in the generated SAFT XML reports for Luxembourg (`l10n_lu`) companies. Previously, vendor bills weren't correctly identified, leading to report discrepancies. This change implements a standardized template to ensure accurate reporting.
Original PR description
Since version 2.01 of FAIA, it is a requirement to include the `PurchaseInvoices` tag in the FAIA XML. With a `l10n_lu` company: - Create a vendor bill. - In the general ledger, download the FAIA XML report. In the generated XML document, the vendor bill will not appear under `PurchaseInvoices`. The `PurchaseInvoices` section is meant to mirror the `SalesInvoices` section and contains the exact same structure. This PR implements a generic template for both. **Specs and source** (in `FAIA_v2.01_full`): https://pfi.public.lu/dam-assets/backup/FAIA/FAIA/XSD_Files.zip opw-5360572 Forward-Port-Of: odoo/enterprise#102092 Forward-Port-Of: odoo/enterprise#100697
This update fixes an issue where refreshing a new offer page would reset the employee information, requiring users to re-enter details. The change ensures the correct employee context is maintained when the offer page is refreshed, improving the user experience and data accuracy. This prevents data entry errors and streamlines the offer creation process.
Original PR description
Steps to Reproduce ================== - Go to Employees - Choose an employee with no offers - Click on the "Offers - new" smart button (a form view will open with the correct employee name at the bottom) - Refresh the offer's page without saving (the employee field is emptied and the required Applicant field appears) Issue ================== The generate offer action that is triggered through the smart button returns a one-time action dictionary with the context. But that context is lost when we refresh the offer page as it's not saved anywhere. Fix ================== Replace the action dictionary with an action record for creating a new offer to ensure the context is maintained upon page refresh. Task-ID: 5059490
Features or functions removed from Odoo
This update removes outdated and unused code within the WhatsApp module, streamlining the system. Specifically, a feature that allowed users to leave channels and a testing element for pinning channels have been removed. This improves efficiency and reduces potential complexity.
Original PR description
See individual commits.
Code cleanup and technical improvements
This update enhances how HR data is accessed within Odoo Enterprise. The changes streamline internal processes and improve the efficiency of managing employee information. This update focuses on internal improvements to the HR modules.
Original PR description
https://github.com/odoo/odoo/pull/238850
This update enhances the partner ledger report by leveraging Odoo's report engine, allowing for more flexible customization. Specifically, users can now define custom groupings within the report, providing greater control over the data presented. This improves the report's usability and analytical capabilities.
Original PR description
Currently, the partner ledger is generated using the dynamic lines generator. This is fine but it doesn't take advantages of the features of the report engine. With this commit, it now uses a custom engine. This allows notably the user to define a custom groupby. task-4245219