Daily updates from Odoo
Wednesday, February 25, 2026
29 changes
4 changes
Enhancements to existing features
This update adds the representation of 'page 2 bis' to the 390 tax report format used in Spain. This enhancement ensures that Spanish businesses can accurately report their financial data to tax authorities, complying with local regulations. It's a key step in supporting Spanish-specific reporting requirements within the Odoo Enterprise system.
Original PR description
In this commit: - We are adding representation of page 2 bis to the 390 boe.txt task-5881396 Forward-Port-Of: odoo/enterprise#106861
This update enhances UrbanPiper's functionality by allowing discounts to be applied to individual products within orders, rather than the entire order. This ensures that order totals, payments, and taxes accurately reflect these line-level discounts, improving pricing accuracy for our clients.
Original PR description
Before this commit: ================ - Discounts were only applied to the entire order. - Product-level (line) discounts were not handled in UrbanPiper. After this commit: ================ - Product-level discounts can be applied to individual products in UrbanPiper. - Order totals, payments, and taxes now correctly reflect line-level discounts. Task - 4977960 Forward-Port-Of: odoo/enterprise#108372 Forward-Port-Of: odoo/enterprise#97114
This update clarifies that commission adjustments can only be created using users who are part of an approved sales plan. Previously, adjustments could be linked to any active plan, leading to confusion. This change improves the accuracy and usability of commission management within the system.
Original PR description
Before this commit, when defining ajustment, the add_user_id and reduce_user_id could belong to any kind of active plan. It would make difficult to select the correct user when multiple plans were available. This commit ensure only approved plan can be used to create ajustments. Forward-Port-Of: odoo/enterprise#106637
This update introduces a feature to temporarily 'snooze' products in the Point of Sale system. When a product is snoozed, it appears grayed out, but remains available for ordering. A countdown timer indicates when the product will become available again, managing inventory effectively.
Original PR description
The PR will add an extra availability section on the product info popup which shows whether a product is currently available. From that section the product can then be 'snoozed', which will make it unavailable for a specified period of time. (1, 2, 4 hours, or for the entire session). When the product is unavailable there's a countdown timer on the popup showing when the product will be available again. Products which are 'snoozed' still show up on the product screen, but grayed out. The effect is purely cosmetic, as they can still be added to new orders. Task-[5170696](https://www.odoo.com/odoo/project/1737/tasks/5170696) Previous discussion-[#232625](https://github.com/odoo/odoo/pull/232625) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#245891
2 changes
Enhancements to existing features
This update adds support for 'page 2 bis' within Spanish tax reports (l10n_es_reports). This enhancement ensures compliance with updated Spanish tax regulations by accurately representing this specific data field in the 390 boe report. It’s a key improvement for businesses using Odoo Enterprise in Spain.
Original PR description
In this commit: - We are adding representation of page 2 bis to the 390 boe.txt task-5881396 Forward-Port-Of: odoo/enterprise#106861
This update clarifies that commission adjustments can only be created using users who are part of approved subscription plans. Previously, adjustments could be linked to any active plan, leading to confusion and incorrect user selections. This change improves the accuracy and manageability of commission settings.
Original PR description
Before this commit, when defining ajustment, the add_user_id and reduce_user_id could belong to any kind of active plan. It would make difficult to select the correct user when multiple plans were available. This commit ensure only approved plan can be used to create ajustments. Forward-Port-Of: odoo/enterprise#106637
1 change
Enhancements to existing features
This update enhances the Spanish tax reporting functionality within Odoo Enterprise by incorporating data from 'page 2 bis' into the 390 boe report. This addition ensures more complete and accurate tax reporting for Spanish businesses, aligning with local regulations. The change supports a key requirement for compliance with Spanish tax requirements.
Original PR description
In this commit: - We are adding representation of page 2 bis to the 390 boe.txt task-5881396 Forward-Port-Of: odoo/enterprise#106861
1 change
Enhancements to existing features
This update enhances the Spanish tax reporting functionality within Odoo Enterprise by incorporating data from 'page 2 bis' into the 390 boe report. This ensures compliance with Spanish tax regulations and provides more complete financial reporting for Spanish businesses using the Enterprise edition. The changes were made to improve the accuracy and completeness of tax reports.
Original PR description
In this commit: - We are adding representation of page 2 bis to the 390 boe.txt task-5881396 Forward-Port-Of: odoo/enterprise#106861
18 changes
Enhancements to existing features
This update enhances the Monthly Hours feature by automatically displaying the calendar view as the default when the Monthly Hours smart button is clicked. This provides a more intuitive and user-friendly experience for tracking employee hours, making it easier to visualize attendance data.
Original PR description
Set the calendar view as the default for the Monthly Hours smart button. task-5176295
This update makes employee launch plans more resilient by issuing warnings instead of blocking if key information (manager, fleet, user) is missing. It also removes outdated responsible types, streamlining the system and improving clarity. This change ensures launch plans can still function effectively, even with incomplete employee configurations.
Original PR description
* = mail, hr_fleet, hr_sign Employee launch plans should work even if employee not well configured. Should not block if manager/fleet/user not set, just warn and assign to current user. This update also removes responsible types 'coach' and 'fleet_manager' and cleans up all related logic, validations, and references. This PR includes: - Changed blocking errors to warnings when manager/user not set. - Updated warning message strings to be shorter and clearer. - Removed 'coach' and 'fleet_manager' responsible types and associated codes. - Adjust some test cases accordingly. Task - 4879248
This update adjusts the Employee State Insurance Corporation (ESIC) contribution threshold for employees with disabilities in India. The threshold has been increased to ₹25,000, aligning with current regulations and ensuring accurate payroll calculations for this specific employee group. This change improves compliance and supports our Indian customers.
Original PR description
… with disabilities The Employee State Insurance Corporation (ESIC) scheme in India provides special provisions for persons with disabilities (PwDs), extending the wage threshold from ₹21,000 to…
… with disabilities The Employee State Insurance Corporation (ESIC) scheme in India provides special provisions for persons with disabilities (PwDs), extending the wage threshold from ₹21,000 to ₹25,000. This commit implements: - New `l10n_in_esic_pwd` boolean field on employee contracts to identify persons with disabilities - Dynamic threshold selection in ESIC computation methods based on PwDs status - Configurable rule parameters (`l10n_in_esic_pwd_value` = ₹25,000) allowing administrators to adjust thresholds without code changes - Updated salary rules (ESICS and ESICF) in both regular_pay and ind_emp structures to use parameter-based threshold conditions - Employee form view updated with PwDs checkbox and tooltip explaining the extended threshold - Comprehensive test coverage for all threshold scenarios: * Below standard threshold (₹20,000) → ESIC applies * Above standard threshold (₹22,000) → ESIC does not apply * PwDs below extended threshold (₹24,000) → ESIC applies * PwDs above extended threshold (₹26,000) → ESIC does not apply ESIC contributions are now correctly calculated based on whether the employee is a person with disability, ensuring compliance with Indian payroll regulations. Task Id: 5498893
This update adds tests to ensure accurate calculation of wage types on payslips, considering various employee contract settings and leave requests. The changes improve the reliability of payroll processing by validating that wage types are correctly applied across different scenarios, particularly those involving multiple months and leave periods.
Original PR description
This commit adds tests to the `_compute_l10n_ch_swiss_wage_ids` function to verify **Wage Types** in payslips across multiple months and with different **Monthly Wage Types** defined in an employee’s contract, as well as multiple leave requests occurring in different months. task-5906677 Forward-Port-Of: odoo/enterprise#107802
This update enhances the depreciation schedule reporting by automatically applying an analytic filter. This allows for more precise tracking of asset costs by department or project, improving financial reporting accuracy and enabling better cost analysis. This change was implemented to align with best practices for asset management.
Original PR description
Forward-Port-Of: odoo/enterprise#108334
This update incorporates data representation for 'page 2 bis' within the Spanish tax reporting process. This addition aligns with updated tax regulations in Spain, ensuring accurate and compliant reporting for our Spanish-speaking customers. It improves the completeness of the 390 boe report.
Original PR description
In this commit: - We are adding representation of page 2 bis to the 390 boe.txt task-5881396 Forward-Port-Of: odoo/enterprise#106861
This update improves the usability of helpdesk tickets by ensuring that links sent in email notifications automatically include the team the ticket belongs to. Previously, these links didn't provide context, making it difficult to navigate back to the relevant team's Kanban board. This change streamlines the workflow for support teams.
Original PR description
Before this commit, the link sent in ticket email notifications opened the ticket without team context, making it hard to navigate back to the team kanban. This commit ensures that: - Ticket URLs include the team when the ticket belongs to one. task-5354598
This update strengthens Odoo's security by adding runtime analysis for code executed through the `safe_eval` tool. It prevents the risk of using untrusted code, ensuring data integrity and protecting against potential vulnerabilities. The system's response to unsafe code is configurable via an environment variable.
Original PR description
The execution of arbitrary code in Odoo via `safe_eval` already takes place in a restricted environment, in particular via prior opcode, `co_names` static analysis and specific builtins in the…
The execution of arbitrary code in Odoo via `safe_eval` already takes place in a restricted environment, in particular via prior opcode, `co_names` static analysis and specific builtins in the evaluation context. The purpose of this commit is to introduce the ability to dynamically analyse code executed via the `safe_eval` tool. The dangerous situation we want to avoid is transferring logic to code that is considered untrusted. In other words, we want to avoid calls that use objects that are not in the whitelist. The behavior to adopt when detecting an unsafe object depends on the `ODOO_UNSAFE_POLICY` environment variable. - `disable`: Disable the feature - `log`: Log a warning (default) - `raise`: Raise an exception - `terminate`: Terminate the process Note: Python 3.12+ is required since the [sys.monitoring](https://docs.python.org/3.12/library/sys.monitoring.html) API is used. The presence of the JSON C extension library is required (`_json`) for performance reasons. _This is not a sandbox in general, but it helps prevent dangerous behavior in the context of `safe_eval`._ Task-4658036
This pull request enhances the user interface of the post modal across various social channels (Facebook, Instagram, LinkedIn, Twitter, YouTube) and light/dark modes. The changes address previous issues with padding and balance, resulting in a more visually appealing and user-friendly experience for users viewing and interacting with posts. This improves overall usability and brand perception.
Original PR description
*: social,social_facebook,social_instagram,social_linkedin, social_twitter,social_youtube Before this PR, UI was lacking padding and balance. | | Before | After | |--------|--------|--------| |Light…
*: social,social_facebook,social_instagram,social_linkedin, social_twitter,social_youtube Before this PR, UI was lacking padding and balance. | | Before | After | |--------|--------|--------| |Light Mode **Kanban**| <img width="1479" height="769" alt="Kanban_Light_Before" src="https://github.com/user-attachments/assets/3d69fd69-a548-4ace-aab0-7fe2abf197b7" /> | <img width="1479" height="769" alt="Kanban_Light_After" src="https://github.com/user-attachments/assets/2c381409-112c-473d-8977-7e5a31441c80" /> | |Dark Mode **Kanban**| <img width="1479" height="769" alt="Kanban_Dark_Before" src="https://github.com/user-attachments/assets/2340a82a-6327-4a9e-a1bd-bfd7555c19fe" /> | <img width="1479" height="769" alt="Kanban_Dark_After" src="https://github.com/user-attachments/assets/1c4917fc-2a06-4430-8774-9d2859253107" /> | |Mobile View **Header**| <img width="582" height="712" alt="Header_Before" src="https://github.com/user-attachments/assets/c1acf0f5-ddd2-4fba-aa9c-dfb98e72d8d7" /> | <img width="582" height="712" alt="Header_After" src="https://github.com/user-attachments/assets/c5d525aa-935c-4035-952c-27ad0e528076" /> | |Light Mode **Picture Modal**| <img width="987" height="807" alt="Pic_Modal_Light_Before" src="https://github.com/user-attachments/assets/41351a77-ddba-4d91-b2bc-45c03ad9035a" /> | <img width="987" height="807" alt="Pic_Modal_Light_After" src="https://github.com/user-attachments/assets/b0538ea3-87fe-45c1-aa6b-63a255c6f9d9" /> | |Dark Mode **Picture Modal**| <img width="987" height="807" alt="Pic_Modal_Dark_Before" src="https://github.com/user-attachments/assets/5cf4d512-ea7c-4aac-9a38-468d05952697" /> | <img width="987" height="807" alt="Pic_Modal_Dark_After" src="https://github.com/user-attachments/assets/3c811ad2-3e1f-4c16-a269-b04649cf68dc" /> | |Light Mode **Post Hover State**| <img width="698" height="426" alt="Hover_Light_Before" src="https://github.com/user-attachments/assets/b374584c-814f-4fe6-acf0-0e92da98dc22" /> | <img width="698" height="426" alt="Hover_Light_After" src="https://github.com/user-attachments/assets/dd63fe9d-625d-46ed-92da-1b246354e414" /> | |Dark Mode **Post Hover State**| <img width="698" height="426" alt="Hover_Dark_Before" src="https://github.com/user-attachments/assets/78f91e02-5677-4089-8a3e-1849566befd4" /> | <img width="698" height="426" alt="Hover_Dark_After" src="https://github.com/user-attachments/assets/d7a4ed20-057e-4b58-8a2a-0119b65da965" /> | |Stream Post View **Facebook**| <img width="340" height="267" alt="Facebook_Kanban_Before" src="https://github.com/user-attachments/assets/f69531bd-6177-4a28-acb5-8ad200546ca2" /> | <img width="340" height="267" alt="Facebook_Kanban_After" src="https://github.com/user-attachments/assets/f3be3d8d-70a7-4444-81b4-3c68f4729341" /> | |Modal View **Facebook**| <img width="667" height="640" alt="Facebook_Modal_Before" src="https://github.com/user-attachments/assets/8d7a14ac-5a3e-4dc2-94a9-14a371d9021d" /> | <img width="667" height="667" alt="Facebook_Modal_After" src="https://github.com/user-attachments/assets/159b8afb-4694-4419-9afc-aa5b000e2e1f" /> | |Stream Post View **LinkedIn**| <img width="346" height="155" alt="LinkedIn_Kanban_Before" src="https://github.com/user-attachments/assets/c2dd18ab-9563-4cc4-9760-2af17b6186de" /> | <img width="346" height="155" alt="LinkedIn_Kanban_After" src="https://github.com/user-attachments/assets/35edf325-0ca0-4b55-937b-f14dbebd4e5f" /> | |Modal View **LinkedIn**| <img width="667" height="640" alt="LinkedIn_Modal_Before" src="https://github.com/user-attachments/assets/4665f100-e3b1-4396-a2e3-628af5d67f38" /> | <img width="667" height="667" alt="LinkedIn_Modal_After" src="https://github.com/user-attachments/assets/c8d3e705-21cd-4354-821e-5fc0add8c505" /> | |Stream Post View **Instagram**| <img width="346" height="266" alt="IG_Kanban_Before" src="https://github.com/user-attachments/assets/79e67806-dc98-4d94-ba1b-4226ba4c766a" /> | <img width="346" height="266" alt="IG_Kanban_After" src="https://github.com/user-attachments/assets/9533413d-84db-4447-b3b5-6b4f90c64624" /> | |Modal View **Instagram**| <img width="667" height="640" alt="IG_Modal_Before" src="https://github.com/user-attachments/assets/80fad47f-5560-4807-b192-71b4f524f921" /> | <img width="667" height="667" alt="IG_Modal_After" src="https://github.com/user-attachments/assets/4367ffbe-6dc1-49fb-b68b-905849316225" /> | |Stream Post View **X**| <img width="346" height="266" alt="X_Kanban_Before" src="https://github.com/user-attachments/assets/b607be7b-3776-4ba1-8635-6557958686d3" /> | <img width="346" height="266" alt="X_Kanban_After" src="https://github.com/user-attachments/assets/2bced33f-740e-45bd-921e-d24400f1d9ab" /> | |Modal View **X**| <img width="667" height="640" alt="X_Modal_Before" src="https://github.com/user-attachments/assets/e38297c4-2380-44ae-8fd8-4776fb18d528" /> | <img width="667" height="667" alt="X_Modal_After" src="https://github.com/user-attachments/assets/f87f7c64-faf6-45b7-a995-76b6b8f2ca21" /> | |Modal View **X #MyCompany**| <img width="667" height="640" alt="X_Modal_MyCompany_Before" src="https://github.com/user-attachments/assets/479b8431-bb60-461b-9288-9d4c6e73b921" /> | <img width="667" height="667" alt="X_Modal_MyCompany_After" src="https://github.com/user-attachments/assets/0491fe6f-f1d8-418d-98f7-cbbb2c687390" /> | |Modal View **X #MyCompetitor**| <img width="667" height="640" alt="X_Modal_Competitor_Before" src="https://github.com/user-attachments/assets/e0c27498-efce-42df-bf6b-8321f4ddb628" /> | <img width="667" height="667" alt="X_Modal_Competitor_After" src="https://github.com/user-attachments/assets/63eb4c03-9d0b-47d7-aedb-a88c231de027" /> | |Stream Post View **YouTube**| <img width="346" height="442" alt="YT_Kanban_Before" src="https://github.com/user-attachments/assets/54a7e24e-b830-4b07-b763-8971448a059a" /> | <img width="346" height="442" alt="YT_Kanban_After" src="https://github.com/user-attachments/assets/f5e3f552-bf1a-4588-8eee-0e32b2f72aa5" /> | |Modal View **YouTube**| <img width="667" height="812" alt="YT_Modal_Before" src="https://github.com/user-attachments/assets/67167dcc-0f65-4a71-914e-a1b029b98c2a" /> | <img width="667" height="812" alt="YT_Modal_After" src="https://github.com/user-attachments/assets/c6b61b1c-9544-4b59-bdf3-ef7a733b712d" /> | task-4547564
This update enhances how the HR payroll system communicates with the server. It now allows for additional information to be passed with requests, ensuring the system can properly handle requests originating from the portal. This prepares the system for a future change in how messages are fetched, improving reliability and security.
Original PR description
This is a preparation change for replacing the portal chatter fetch route with the mail fetch route. Fetch methods can now receive extra fetch params from the caller components if needed, making it possible to inform the server when a request originates from the portal. This allows the server to apply specific limitations required for portal chatter. The change also involves a minor refactoring of the `useMessageScrolling` hook, which makes the thread built-in and removes the need to pass it as a parameter in every call. Extra fetch params could also be passed through another callback in the same way. [Community PR](https://github.com/odoo/odoo/pull/248208)
This update simplifies the kitchen view by merging free and priced lines for combo products when appropriate, reducing clutter and improving usability. The system now intelligently manages similar order lines, splitting them when necessary to ensure accurate updates and a cleaner user experience. Attribute changes are highlighted in red for better visibility.
Original PR description
In this commit:
-------------------
- Merged free and priced lines for the same product in the kitchen view, as separate lines are unnecessary in kitchen.
- Implemented logic to find sibling lines with the same product, notes, and attributes.
- If no difference found between the key values mentioned, search for a suitable sibling to merge with.
- If differences are detected (other than notes), lines are split to act independently.
- If only notes differ, and later both lines become identical again update a line with the same UUID as once they are splitted shouldn't be reflected to the sibling line's change.
- Updated attribute display, attributes are now shown in red for better visibility.
task- 4752080
Related PR: https://github.com/odoo/odoo/pull/208251This update replaces generic placeholder images with new, consistent icon images throughout the Odoo Enterprise platform. This improves the visual appeal and clarity of various modules, enhancing the user experience. The changes address outdated icons and streamline the user interface.
This update enhances payroll warning notifications by allowing administrators to select specific recipients – admins, officers, or assistants – for these alerts. The changes also include a new, user-friendly interface for choosing the recipient type, improving the clarity and control over who receives payroll warning emails.
Original PR description
- In warnings of payroll, I did few adjustments. - The tab's name is changed from Misc to Communication in the form view. - Changing the mechanism for specifying email reicipient: . New field (email_visibility_type) is added to select the email will go to whom (Admin, Officer, Assistant) . In method _cron_payroll_warning_email_alert, according to the email_visibility_type of the warning the suitable payroll group is selected. task - 5473707
This update enhances the performance of account reports by directly accessing data within the line dictionary. Previously, the system had to retrieve this information through a separate browse operation, which was a performance bottleneck. This change streamlines the process, resulting in faster report generation.
Original PR description
This commit will include the code in the line dict to allow the _custom_line_postprocessor function to access it directly and avoid a browse on the line object to retrieve the value. no task id
This update allows users to manage multiple bank statement lines simultaneously, streamlining the reconciliation process. The changes include the ability to apply accounts and partners to multiple lines, improving efficiency and reducing manual effort. This enhancement focuses on usability and expands functionality within the bank reconciliation workflow.
Original PR description
This commit will allow to do the set account, set partner and apply reco models on multiple lines. To select multiple line you need to use alt + click and then you will have button on top to trigger the actions. - The set partner function was modified to work with multiple statement lines and keep all existing functionality (modify line with same partner_name) - The trigger reconcile model function was also modified to work with multiple statement lines - The set account function was not touched because we use the aml_id of the suspense as a parameter but here we will have multiple suspense line to modify. Since we are doing this change in stable, we created a new function set_account_multiple_bank_statement_line. This function will have the same behavior for reco models as the basic set account. task-5253778 Forward-Port-Of: odoo/enterprise#108261 Forward-Port-Of: odoo/enterprise#100316
This update clarifies that commission adjustments can only be created using users who belong to approved sales plans. Previously, adjustments could be linked to any active plan, leading to confusion and incorrect user selections. This change improves the accuracy and usability of commission management.
Original PR description
Before this commit, when defining ajustment, the add_user_id and reduce_user_id could belong to any kind of active plan. It would make difficult to select the correct user when multiple plans were available. This commit ensure only approved plan can be used to create ajustments. Forward-Port-Of: odoo/enterprise#106637
This update enhances the visual clarity and readability of AI responses within the discuss app. Changes include formatting tables and code snippets, improving the overall user experience and making AI interactions more intuitive. The update also optimizes conversation titles for better alignment with popular AI platforms.
Original PR description
* = ai_knowledge, ai_livechat, test_full_discuss_enterprise In this commit, we "overhaul" the way that AI messages are rendered. This effort was motivated not just by aesthetics but also to make the…
* = ai_knowledge, ai_livechat, test_full_discuss_enterprise In this commit, we "overhaul" the way that AI messages are rendered. This effort was motivated not just by aesthetics but also to make the AI responses more readable and understandable for users. The first change was to inject boostrap classes to the tables added by the markdown library. By doing that, we make tables render as tables with borders and highlighting, instead of just text. We also added the prism library in the modules assets. Now, if the AI replies with some code snippet, it will be highlighted depending on the language used. We also added different CSS rules in `chat.scss` to changed some of the front end details like the padding and margin between elements in messages. In said file, we also changed some display and width values, to make tables and code segments horizontally scrollable, so information won't get "smushed" in a chat window. We also limit the width to 75% of the AI response in the discuss app because otherwise the information was too spread out - we added a media query to return the width to 100% in smaller screens. We moved the "Expand in Discuss" button, to be inbetween the close button and the minimise button, because the dropdown was confusing users, who imagined that they can switch between agents directly from the chat window. We additionally, made it so conversation titles change based on the user's first query, similarly to how it is done in the web versions of ChatGPT or Gemini. For that, we initial create channels with the name field empty and then we extend the display_name compute method of the discuss channel to add the agent's name in case the name is empty. After the first message we populate the name field which should by extension change the display_name field. We heavily patched the message template to remove the bubble and apply classes for the css rules. We also made it so user messages remain in the right in the discuss app (like in chat windows), increasing visual clarity. Finally, the test_natural_language_query_tour was modified to check for the new descriptive chat window title feature and the test_create_ai_chat was modified to reflect the new way of creating ai chats - with empty name and populated display_name. Task-5164382 Forward-Port-Of: odoo/enterprise#108080
This update adjusts how end-of-service benefits are calculated in Odoo Enterprise, aligning with recent regulations in Egypt. The calculation now directly uses the number of years worked, providing half a month's benefit for the first five years and a full month for subsequent years. A minimum one-year employment period is required for the benefit to be applied.
Original PR description
Changed how the end of service benefit is calculated, to depend directly on the number of years worked. The first five years grant half a month each to the EoS benefit, and the following years grant a full month each. Task-5018907
2 changes
Enhancements to existing features
This update adds the representation of 'page 2 bis' to the 390 boe report format within the Spanish tax reporting module (l10n_es_reports). This enhancement ensures that all required data for Spanish tax filings is accurately included, improving compliance and reporting accuracy.
Original PR description
In this commit: - We are adding representation of page 2 bis to the 390 boe.txt task-5881396 Forward-Port-Of: odoo/enterprise#106861
This update enhances the restaurant order display by allowing users to group preparation cards by course (e.g., Appetizer, Main Course, Dessert). This provides a more organized and intuitive view of the order preparation process, making it easier for staff to manage and track items.
Original PR description
Adds the possibility to organize the preparation display by course instead of a flat list of orders. - Preparation Display: Added 'organize_by_course' boolean field to the configuration model and form view. - Frontend Display: Implemented a new layout that groups order cards under labeled course headers (e.g., "Course 1", "Course 2") when the option is active. task-id: 5969167
1 change
Enhancements to existing features
This update allows accountants to easily group invoice lines by tax, reducing clutter in journal entries. A server action provides a toggle to group or ungroup lines from the original file, streamlining the import process and improving data clarity. This addresses a previous issue where multiple PDFs were generated during line grouping.
Original PR description
[IMP] account_edi_ubl_cii: (un)group lines by tax
Once an invoice is imported, a server action allows the user to group
lines by tax, and then if the same action is triggered again it will
ungroup all lines from the origin file
This feature is useful because accountants don't always need the
detail of the vendor bills, and also all the lines clutter up the
journal items
task-5047859
Forward-Port-Of: odoo/odoo#245234