Daily updates from Odoo
Thursday, June 11, 2026
31 changes
3 changes
Enhancements to existing features
This update enhances order processing by allowing for timeouts when awaiting OBOX jobs in Point of Sale (POS) and Self Order systems. This ensures smoother operation when devices aren't on the same network as the OBOX, improving reliability and user experience.
Original PR description
Is now possible to await OBOX jobs with a specific timeout in PoS ans Self Order. This is usefull when the user device isn't connected on the same network as the OBOX and others hardware. taskId: 6248159
This update enhances the way Odoo handles communication with OBOX devices, particularly in Self and Point of Sale environments. It now includes a timeout feature, allowing for reliable operation even when devices aren't on the same network, improving overall system stability and usability.
Original PR description
Is now possible to await OBOX jobs with a specific timeout in PoS ans Self Order. This is usefull when the user device isn't connected on the same network as the OBOX and others hardware. taskId: 6248159
This update clarifies how GST is reported on intra-state composition transactions. Previously, these transactions were incorrectly categorized as 'out-of-scope.' Now, a new GSTR section specifically for composition supplies is created, ensuring accurate reporting of these transactions and aligning with GST regulations.
Original PR description
Previously, composition supplies in vendor bills were falling under the `out-of-scope` GSTR section because taxes are normally not applied on such transactions. With this commit, a new GSTR section `purchase_composition_supplies` is introduced for intra-state composition transactions. Now, when the GST treatment is set to composition and the transaction type is intra_state, those transactions will be reported under the new composition supplies section instead of out-of-scope. task-6239870 Forward-Port-Of: odoo/odoo#266325
1 change
Enhancements to existing features
This update clarifies how composition supplies – typically for intra-state transactions – are reported on GST returns. Previously, these transactions were incorrectly categorized as ‘out-of-scope.’ Now, a new GSTR section is created to accurately track and report these composition supplies, ensuring compliance with Indian GST regulations.
Original PR description
Previously, composition supplies in vendor bills were falling under the `out-of-scope` GSTR section because taxes are normally not applied on such transactions. With this commit, a new GSTR section `purchase_composition_supplies` is introduced for intra-state composition transactions. Now, when the GST treatment is set to composition and the transaction type is intra_state, those transactions will be reported under the new composition supplies section instead of out-of-scope. task-6239870 Forward-Port-Of: odoo/odoo#266325
4 changes
Enhancements to existing features
This update clarifies how composition supplies – typically for intra-state transactions – are reported on GST returns. Previously, these transactions were incorrectly categorized as ‘out-of-scope.’ Now, a new GSTR section is created to accurately track and report these composition supplies, ensuring compliance with Indian GST regulations.
Original PR description
Previously, composition supplies in vendor bills were falling under the `out-of-scope` GSTR section because taxes are normally not applied on such transactions. With this commit, a new GSTR section `purchase_composition_supplies` is introduced for intra-state composition transactions. Now, when the GST treatment is set to composition and the transaction type is intra_state, those transactions will be reported under the new composition supplies section instead of out-of-scope. task-6239870 Forward-Port-Of: odoo/odoo#266325
This update ensures Odoo's financial reports (GSTR-3B and GSTR-2B) accurately reflect new requirements for purchase composition supplies as mandated by Indian tax regulations. The changes align the report formats with government guidelines, improving data accuracy and compliance.
Original PR description
As a new GSTR section for purchase composition supplies has been introduced, the related report domains also need to be updated accordingly. With this commit: GSTR-3B domains are updated to properly include purchase_composition_supplies transactions in the relevant report section. GSTR-2B now includes a separate line for composition supplies, aligned with the government utility format. task-6239870 Forward-Port-Of: odoo/enterprise#118312
This update changes the 'To Review' status badge on employee records from grey to orange. This improves readability, particularly in dark mode, ensuring that HR staff can quickly identify and address employees needing review. This enhancement ensures consistent and clear communication regarding employee status.
Original PR description
The 'To Review' status on employees uses a grey badge ('secondary'), which has poor contrast and is nearly invisible in dark mode.
Update the 'review_state' field options to change '2_to_review' to 'warning' (orange). This ensures the badge is readable in both light and dark modes.
Task: 6289919This update ensures Odoo complies with Serbian accounting regulations by automatically fetching the official middle exchange rate from the National Bank of Serbia. This improves the accuracy of financial reporting and transactions for Serbian users.
Original PR description
[IMP] currency_rate_live: Fetch exchange rates National Bank Serbia To ensure compliance with the Serbian Law on accounting, fetch official middle exchange rate from the National Bank of Serbia task-6159555
1 change
Enhancements to existing features
This update introduces a new 'PINT' layer within the account_edi_ubl_cii module, streamlining the processing of UBL invoices. This layer aligns with European regulations (CEN_EN16931 and PINT-EU) for enhanced compliance and data exchange, particularly for PEPPOL transactions. It improves the handling of invoice data formats.
Original PR description
Add the layer PINT between UBL and BIS3. task: 5890887 Forward-Port-Of: odoo/odoo#260058
20 changes
Enhancements to existing features
This update expands tax calculation capabilities by incorporating detailed product information, such as screen size and battery status, directly from Avalara. This improves accuracy, particularly for regions with complex tax rules like California, and prepares for upcoming legislation.
Original PR description
The existing three inputs for tax calculation were: - ship from address, - ship to address, - avatax product category In some cases it's not enough to accurately determine taxes. For example, in…
The existing three inputs for tax calculation were: - ship from address, - ship to address, - avatax product category In some cases it's not enough to accurately determine taxes. For example, in California taxes may change depending on whether a device has an embedded battery or depending on the screen size. Because Avalara cannot create categories for every single combination of parameters they support product parameters for these cases. They've been around for a while but weren't commonly needed. In 2026 however, California has introduced some legislation that make these a more requested feature [1]. This amends our exemption syncing mechanism to pull in parameters and their values idempotently and non-destructively. The Avatax parameters are typed. Simple types are booleans, floats, and character fields. Slightly more complex are selection fields and quantity fields (i.e. with UOM). The data type is provided by Avalara during sync and selects which value_* field on avatax.parameter.value holds the input. In the API request they all are converted to a simple string, but splitting them in the model lets the form show the right widget per parameter. Quantity values auto-fill from the product's weight or volume when the picked UOM's measurement type matches and we know the corresponding Odoo UOM. So the common case (e.g. ScreenSize in inches, NetWeight in kg) doesn't require re-entering values that already exist on the product. task-5911386 [1] https://cdtfa.ca.gov/taxes-and-fees/covered-electronic-waste-recycling-fee/
This update improves the Odoo website generator by adding a necessary attribute ('data-ws-preserve') for correctly parsing Odoo 2.0 to Odoo 2.5. This change ensures accurate website generation and compatibility with older Odoo versions, streamlining the process for users.
Original PR description
This version change reflects the addition of the data-ws-preserve attributes which is required for the odoo2odoo parsing.
This update allows users to share Odoo spreadsheets with external users, granting them edit permissions. Previously, this functionality was missing, limiting collaboration with those using other spreadsheet programs. This enhancement improves usability and expands the reach of Odoo's spreadsheet capabilities.
This update enhances the user experience for point-of-sale transactions by refining the layout of order buttons and adding new options. Specifically, it includes buttons for printing receipts and accessing detailed order information, streamlining the order process for staff.
Original PR description
In this commit: - Refined the order process button layout by improving placement and reducing button size for better usability. - Added two new buttons: one for printing the order receipt and another for opening the order information pop-up. Task-6123032
This update simplifies the selection of employee types within Odoo's Belgian payroll module. The 'Worker' employee type is now the second option after 'Employee' in the employee type list, making it easier for users to find and select. This change streamlines the payroll setup process for businesses operating in Belgium.
Original PR description
Update sequence order for employee type in Belgium, move worker as the second options after employee in employee type, makes users easier to find it task:6280177
This update consolidates premium pay calculations for Belgium within the standard payroll process. Previously, premium pay was handled separately, and this change streamlines the payroll calculations and reporting for Belgian employees. This ensures consistency and simplifies payroll administration.
Original PR description
Task-6230447
This update simplifies the way salary rules are displayed in the system. By moving key information to the front and offering a visibility toggle, users can now more quickly find and utilize the necessary rules, particularly when managing expense reports or flexpense tasks. This change improves efficiency and reduces the time spent searching for relevant data.
Original PR description
This PR expected to - Change Pay Structure Visibility as visible by default, move before categories - Change Categories visibility as visible by default with hide option The purpose is to make the view easier to read when we need to search to fill a field, for example the rules on the product for the flexpense task task: 6292402
This update enhances the Clickbot's ability to thoroughly test Odoo's user interface. It now simulates clicks on records within list and kanban views, allowing for a more complete assessment of application functionality and error detection. The Clickbot now continues running even if errors are encountered, providing a more comprehensive test report.
Original PR description
Before this commit, the Clickbot only verified that the multi-record views of a menu could load successfully. This commit expands the Clickbot's coverage by simulating a click on individual records within list and kanban views. Depending on the view configuration, this will either open the corresponding form view, trigger editable mode for inline-editable lists, or execute the action specified by an open_action attribute. task-id 6249944
This update allows companies to define different salary rules for various expense categories, providing greater control over payroll calculations. Previously, all expenses were mapped to a single rule, limiting customization. This change enhances flexibility and accuracy for diverse business needs.
Original PR description
Previously, all expenses would be mapped to one salary rule of the structure, namely the one with the code 'EXPENSES'. This would limit companies that wanted to have different salary rules for different types of expenses. This commit changes how the flow goes, where now the salary rule is chosen on the expense category, and when the payslip is generated, expenses are mapped to their corresponding salary rule, rather than combining them all in one salary rule. task-4283293
This update refines how timesheet assistant rules handle interruptions like quick messages. Previously, a short event could randomly change the associated project. Now, a 'short_lived' attribute helps ensure rules accurately track activity, preventing unnecessary project switches and improving timesheet data accuracy. This change also includes updates to Google Meet, Sheets, and Slides rules to better capture these events.
Original PR description
Before this commit: Events like Discord discussions are treated as key events, but they are not linked to a fixed project. Instead, they vary daily based on manual matching. This means a short interruption (e.g., replying to a quick message) can switch the project, even if the main work continues afterward. In this commit: - Add a 'short_lived' attribute to aw.rule. - When enabled, the rule sets the project/task for its own activity but does not update the next events (unless it was previously null). task-6198024
This update changes the URL structure for our spreadsheet integration with mydb.com, making it more stable and predictable. Previously, the spreadsheet ID was a simple name ('sheet1'), but it's now a unique, short identifier (UUID) to avoid potential issues. This ensures consistent access to the spreadsheet data.
Original PR description
…e default sheet id The sheet is now part of the url: mydb.com/spreadsheet/331?sid=sheet1 The current id for the default sheet is sheet1. It would be better if it was an id like others (small uuid). before: mydb.com/spreadsheet/331?sid=sheet1 after: mydb.com/spreadsheet/331?sid=918fd8b1-b6b0 task-6276062
This update adjusts payroll calculations in Odoo Enterprise to comply with Belgian social security regulations. Specifically, it updates salary thresholds based on employee age (under 30 vs. 30+) for restructuring reduction amounts. This ensures accurate social security reporting through DMFA files, maintaining legal compliance.
Original PR description
### Why: To comply with Belgian social security regulations, the restructuring reduction amount ($133.33$ per month) is subject to specific gross salary thresholds that differ based on the employee's age (above or below 30 years old). Updating these parameters ensures that payroll calculations are legally accurate and that the resulting social security contributions are correctly reported in the DMFA files using the appropriate technical codes. ### What: - Added new parameter values for the basic salary threshold, split by age categories (under 30 and 30+). - Configured the DMFA mapping for the restructuring amount to ensure compliant electronic reporting. task-6175186
This update clarifies how work accident leaves are processed for non-workers within the Odoo Enterprise system. It ensures accurate splitting of these leaves and provides a clearer view of how they are allocated. This improves the accuracy of payroll calculations and reporting related to employee absences.
Original PR description
Correctly splitting non-workers' work accident leaves and showing how it will be split. task-6274956
This update improves the softphone's call logging functionality by allowing users to record calls even without a specific contact. Now, when logging a call, the call automatically links to the relevant document, regardless of whether a contact was initially specified. This simplifies call documentation and improves workflow efficiency.
Original PR description
Make it possible to log on calls without contacts on softphone. When no contact, you should be able to log to any documents. Task-[6204798](https://www.odoo.com/odoo/5778/tasks/6204798)
This update simplifies payment processing by replacing the 'state' field with 'is_live', streamlining the system's payment status tracking. Additionally, marketplace menus have been reorganized for better navigation. These changes improve the user experience and operational efficiency related to payment processing and subscription management.
Original PR description
The `state` field is replaced with `is_live`. Marketplace menus are moved into a separate menu category. id-5722033
This update allows employees in Hong Kong to specify a postal address for IRD reports, ensuring accurate data submission. The system now includes postal addresses and ZIP codes in the generated reports, improving compliance and data quality. A cleanup of demo data addresses has also been performed.
Original PR description
Before this commit: - Employees only had a private/residential address for HK IRD reports. - The postal address fields in IR56 XML exports were always left empty, and the PDF reports displayed the postal address label without any value. - ZIP codes were not included in the residential or postal address lines used by IRD XML/PDF reports. After this commit: - A new optional postal address block is available on HK employee forms. - When enabled, this address is used to fill the postal address section in IRD XML and PDF reports, while keeping the residential address unchanged. - Residential and postal ZIP codes are included in the generated IRD address data, including `RES_ADDR_LINE3`, `POS_ADDR_LINE3`, and the PDF address strings. Task-6119163
This update simplifies AI agent configuration by unifying provider selection and response styles. It now supports multiple AI models (Gemini and GPT) for both general conversation and image generation, enhancing flexibility and performance. This change also includes improvements to error handling and UI styling.
Original PR description
This commit aims to simplify the agent configuration process by abstracting llm_model selection. Configuration: - Replaced `llm_model` with `provider` and `response_style` (4 styles). - Agent model is selected based on provider, response_style, and whether agent is called for image generation or website builder. Models: - Defaulted to Gemini-3-Flash/3.1 Pro and gpt-5.4-mini/gpt-5.4. - Image generation uses Gemini-3.1-flash-image and gpt-5.4 series. Service Mapping: - Reworked AIProvider to map directly to provider-specific AIApiService classes, simplifying the addition of future providers. Logic: - Implemented reasoning-based timeouts (up to 120s for medium/high reasoning). - Refined error handling for 429 quotas exceeded. - Various adaptation for tests. UI: - Improved agent card alignment and configuration view styling. task id: 5411094 upgrade PR: https://github.com/odoo/upgrade/pull/9751
This update optimizes the automatic scheduling process by prioritizing shifts based on importance. Now, the system allocates resources to the most critical shifts first, ensuring maximum coverage for high-priority tasks. This prevents lower priority shifts from being assigned when capacity is limited.
Original PR description
This commit orders open shifts by priority (most important ones first) before assigning resources to it (i.e., auto-plan). This ensures resources are allocated to the most important shifts first, leaving lower priority ones unassigned if maximum capacity is reached. task-6176328
This update simplifies the Helpdesk ticket interface by moving the 'Convert to Opportunity/Lead' option to the action menu. Previously, this button was always visible, creating unnecessary clutter and a less intuitive experience. This change improves the overall usability of the Helpdesk module.
Original PR description
Right now, the “Convert to Opportunity” button is always visible on Helpdesk tickets, even when it is not really relevant. It feels a bit inconsistent compared to other actions, and adds unnecessary clutter to the interface. Hence, this commit moves the convert to opportunity/lead to the action menu of helpdesk tickets. Related: odoo/upgrade#10018 task-6119255
This update enhances the Gantt view's ability to fold non-working hours when open shifts are used. Previously, open shifts were treated as always available, preventing the Gantt view from simplifying schedules for companies with fixed working times. Now, the system dynamically adjusts to accommodate both fixed and flexible schedules, improving the visual clarity of the Gantt chart.
Original PR description
### Purpose: The Gantt view has a visual feature that automatically folds non-working days (like nights and weekends) to avoid bloating the interface. However, the Planning app does not benefit from…
### Purpose: The Gantt view has a visual feature that automatically folds non-working days (like nights and weekends) to avoid bloating the interface. However, the Planning app does not benefit from this when open shifts are present, as these unassigned shifts are treated as fully flexible (24/7). This prevents the entire view from folding for companies with fixed schedules. ### Cause: In the `_gantt_unavailability` method, open slots (identified by `False`) were hardcoded to return an empty array of unavailabilities, forcing the Gantt renderer to keep those columns unfolded. ### Solution: Introduce dynamic flexibility checking for open shifts: - If all employees currently in the view have a fixed schedule, open shifts will adopt the company's default working calendar's unavailabilities. This allows the Gantt view to successfully fold weekends/nights. - If any employee in the view has a flexible schedule, open shifts will remain flexible (no unavailabilities), preserving scheduling freedom for flexible workforces. task-6189622
2 changes
Enhancements to existing features
This PR improves the error logs posted in the chatter when GSTR-1 filing fails. The error message now includes the GST portal error code, error description, and all failing HSN codes. Each HSN code is clickable, allowing users to directly open the related journal items and identify the records that need correction. Previously, only the error code and message were shown. Users had to manually inspect the GST response JSON to find the failing HSN codes and then search for the corresponding j
Original PR description
This PR improves the error logs posted in the chatter when GSTR-1 filing fails. The error message now includes the GST portal error code, error description, and all failing HSN codes. Each HSN code is clickable, allowing users to directly open the related journal items and identify the records that need correction. Previously, only the error code and message were shown. Users had to manually inspect the GST response JSON to find the failing HSN codes and then search for the corresponding journal items. This enhancement makes it much easier and faster to identify and resolve filing issues.
This update enhances the synchronization of sales transactions with Fiskaly, the payment processing system. It separates flows for retail and restaurant orders, ensuring more accurate and timely updates are sent, particularly during kitchen synchronization for restaurants. This improves the reliability of payment processing and reporting.
Original PR description
In this commit: ------------------ - Maintain separate Fiskaly transaction flows for retail (short tx) and restaurant (long tx) orders as discussed with the Fiskaly team. - `Initialize order…
In this commit: ------------------ - Maintain separate Fiskaly transaction flows for retail (short tx) and restaurant (long tx) orders as discussed with the Fiskaly team. - `Initialize order transactions` with an empty payload when the `first product` is added. - Start `receipt transactions` with an empty payload when the `first payment line` is added. - For retail flows, no intermediate order updates are sent to Fiskaly before finalization. - For restaurant flows, create additional transaction updates during kitchen synchronization. Ensure already synchronized products are not resent, and only newly added or updated quantities are included in the payload. - `Finalize order and receipt transactions` with complete order lines and payment details when we validate the order. task: 6208963 Reference: <img width="1863" height="1285" alt="de_tss_flow" src="https://github.com/user-attachments/assets/9140788e-7948-4a08-9f11-27197b22ca8b" /> Forward-Port-Of: odoo/enterprise#119765 Forward-Port-Of: odoo/enterprise#117526