Daily updates from Odoo
Monday, June 22, 2026
74 changes · master
New functionality added to Odoo
This update introduces support for Nepal's unique fiscal year system, specifically the Bikram Samvat calendar. It allows for dynamic calculation and display of dates in the standard "day month_name, year" format, crucial for accurate financial reporting in Nepal. New fields and validation rules have been added to ensure correct date handling and prevent overlapping fiscal year ranges.
Original PR description
Inherit `account.fiscal.year` to add month lines One2many Add `l10n_np.account.fiscal.year.month.line` model with month name, start date and end date fields Add inline list view on fiscal year form for Nepal companies only
This update empowers appraisal administrators with the ability to create new appraisal plans within the Odoo Enterprise system. This enhancement streamlines the appraisal process and allows for greater flexibility in defining performance goals. The change was driven by task 6302703.
Original PR description
The appraisal admins should be able to create new appraisal plans. Task: 6302703
This update enhances the way our website displays appointment information to search engines and other online platforms. By adding Schema.org microdata, we're helping potential customers find our services more easily and accurately through search results. This improves visibility and potentially drives more leads.
This update introduces a new website form allowing customers to submit Field Service requests directly. Planning Managers can then review these requests and schedule interventions manually, bypassing the previous limitations of fixed booking times and payment requirements. The change also includes address autocomplete and improvements to ticket creation processes.
Original PR description
Field Service interventions can be booked online through the Appointment integration, but that flow has several limitations: - Interventions are booked at a fixed date and time without considering the customer's location. - Appointment types must enable upfront payment to create interventions. This commit: - Provides a public website form that lets customers submit Field Service requests. Submissions create a shift with no start date so Planning Managers can review the request and schedule the intervention manually. - Adds a "Service Requests" menu under Planning > Schedule listing slots with no planned date so managers can follow up with requesters. - Uses Google Places autocomplete on the address field when `website_address_autocomplete` is installed. task-6073523
This update adds the ability to associate contract dates with user groups within the HR payroll system. This allows for more precise tracking and reporting of employee contracts, improving payroll accuracy and compliance. The change impacts multiple localization modules.
Original PR description
Add the contract dates to the group_hr_user. Task: 6303353
This update introduces the ability for customers to set up recurring donations directly within the website's shopping cart. Users can now choose the frequency of their donations, streamlining the donation process and increasing donation flexibility. This enhancement improves the user experience and expands donation options for our supporters.
Original PR description
Add recurring donation product and plans. Expose them to the website_sale donation snippet via the donation info API. Enable selection of recurrence in the snippet, allowing subscription based donations to be added directly to the cart and processed in checkout. Community PR: https://github.com/odoo/odoo/pull/265981
This update introduces dynamic mailing lists, allowing marketers to create targeted lists based on specific criteria within Odoo. Users can now save and manage these dynamic lists, improving campaign efficiency and segmentation. This change simplifies the process of reaching specific customer groups.
Original PR description
The purpose of this commit is to add **dynamic** mailing lists alongside the existing manual/static lists. Dynamic lists are list defined by a target mailing model and a domain. This PR is linked to a community PR. task-5358279
This update allows businesses to automatically add travel charges to field service task invoices. A new setting lets you link a product to cover travel expenses, ensuring accurate invoicing. To ensure the setting works correctly during initial module setup, a technical adjustment was made to explicitly define the default product.
Original PR description
## Expected Behavior of this PR Add support for applying an additional travel charge when a field service task is completed. This feature currently supports only fixed travel fees. ## Additional A new product field, `travel_time_invoicing_product_id`, is added to the Field Service's settings to define the product used for adding travel fees to field service. The default value for this field is provided in a `data.xml` file. However, because this file is loaded after default field values are initialized, the default product is not available during the module’s initial installation. To ensure proper initialization, the default value is also explicitly set in the `post_init` hook of the `planning_field_service_sale_timesheet` module. task-[5871604](https://www.odoo.com/odoo/project/4105/tasks/5871604)
This update introduces an AI-powered tool to automatically rename documents, streamlining document management. The previous demo tool has been removed, and the new system uses a standardized naming convention ([ORIGIN]-[SENDER]-[DOC_TYPE]-[DATE]) to ensure consistent document organization. This improves data clarity and efficiency.
Original PR description
This commit introduces a new AI-powered tool for automatically renaming documents, replacing the previous demo tool which has been removed along with its data. Key changes: - Added a standard default prompt for document renaming that follows the naming convention: [ORIGIN]-[SENDER]-[DOC_TYPE]-[DATE]. - Removed the obsolete demo renaming tool and its associated demo data. - Updated demo data of `documents_ai` bridges to make the demo prompt more readible task-5860839
This update adds the ability to generate a required CSV export for the Oman Wage Protection System (WPS) from payroll runs. This allows businesses to comply with Omani regulations by providing the necessary data in the correct format for reporting to the MOL. The report includes details for both employers and employees, streamlining the payroll reporting process.
Original PR description
Adds support for generating the Oman Wage Protection System (WPS) CSV export from payroll batch runs, along with the configuration fields and payslip validation it requires.
The payment report wizard gains a new l10n_om_wps format that generates a CSV with an employer section (MOL numbers, bank short name, IBAN, period, totals) and an employee section (ID, bank details, salary breakdown, extra hours, notes). Bank code resolution prefers the account's WPS Short Name and falls back to a hardcoded BIC to code table covering all Omani banks. The filename follows SIF_{MOL}_{BankCode}_{YYYYMMDD}_{NNN} with a daily-resetting 3-digit counter.
task-6040641Enhancements to existing features
This update improves the user experience by ensuring that clicking the budget icon on project overviews directly opens the budget action. Previously, this icon was inactive. This change streamlines the process of accessing project budgets, making it easier for users to manage financial planning.
Original PR description
**Before this commit:** - In the project overview, there's a button that indicates whether a budget has been set for a particular project. - Currently, clicking this button does not trigger any action. **After this commit:** - Clicking the budget icon on a project overview now opens the budget action. **Task-4841050**
This update adapts the SEPA Direct Debit payment process to support the new 'Pay on Invoice' option. This allows customers to choose to pay invoices directly, streamlining the payment process and offering greater flexibility. The changes were driven by community feedback and are designed to enhance the user experience.
Original PR description
See community commit for details. task-5149051
This update improves the live map experience by allowing users to easily focus on colleagues' locations and automatically including their live locations in Google Maps routing. This provides a more efficient and accurate way to coordinate with team members and plan routes.
Original PR description
# [IMP] web_map: allow inheritance of pin list for mobile view Prior to this commit, it was not possible for child modules to inherit from the pin list popover (i.e., the one used for the mobile view). # [IMP] planning_field_service: focus on user marker in live map In this commit, we add a button allowing users to focus on users' live location markers. The button is displayed only if the user is located (i.e., has a live location), and the view will zoom with an animation on the user pin. # [IMP] planning_field_service,web_map: google maps routing includes user location This commit adds users' live location as original addresses when opening the routing in Google Maps in the live map. task-6168733
This update introduces continuous production tracking for work orders, allowing workers to easily record completed quantities. The latest quantity recorded automatically updates the production quantity, speeding up the process. Enabling this feature ensures work orders become ready as soon as some quantities are completed, improving efficiency.
Original PR description
Allow workers to record the quantities completed on each workorder, the latest recorded quantity becomes the mo's producing quantity. Add a flag to enable continuous production (subsequent work orders will become ready as soon as some quantities are ready). See https://github.com/odoo/odoo/pull/267113 task: 6175830
This update adds AI-driven transcription to Odoo calls (VoIP and Discuss), improving meeting summaries and searchability. The new system processes call recordings in smaller chunks, preventing performance issues and ensuring reliable transcription, while also integrating with VoIP demo mode for testing.
Original PR description
This PR builds upon the Community PR (odoo/odoo#233836) by extending the call.artifact model with AI-powered transcription capabilities for both VoIP and Discuss calls. Rather than attempting to…
This PR builds upon the Community PR (odoo/odoo#233836) by extending the call.artifact model with AI-powered transcription capabilities for both VoIP and Discuss calls.
Rather than attempting to transcribe monolithic, multi-hour call recordings, this architecture processes chunked artifacts independently. This solves the 25MB payload limit of the LLM APIs and allows for granular error handling.
**Overview:**
- Gevent Orchestration (vs. Cron): Abandoning cron-based approach. Transcription is now orchestrated via a background gevent thread (action_transcribe_gevent). This provides immediate feedback post-call and prevents long-running I/O operations (LLM API calls) from hogging the Odoo cron workers.
- Safe 3-Phase Processing: To keep db connections short during the slow LLM API calls, the gevent orchestration uses a Claim → Process → Finalize pattern, committing the transaction between each step.
- Cloud Storage Architecture: Persistent call recordings are strictly offloaded to the cloud_storage module to prevent Odoo filestore bloat. However, transient STT audio chunks bypass this requirement, saving locally and deleting themselves immediately after successful transcription.
- VoIP Integration (voip_ai): Fully integrates the transcription flow into the VoIP softphone, including automated one-liner call summaries generated from the concatenated artifact transcripts.
- VoIP bonus -- demo, as a byproduct of this PR the demo for call was enriched with bying able to record and transcribe
(Note: Previous legacy recordings/transcriptions are migrated to call.artifact via odoo/upgrade#9521).
**Artifact Transcription Lifecycle:**
When an audio chunk is uploaded for transcription, it state machine to guarantee it is processed exactly once, with built-in retry logic for transient API failures.
```mermaid
stateDiagram-v2
[*] --> Pending : Chunk Uploaded (is_stt=True)
state "Pending" as Pending
state "Claimed (Leased)" as Claimed
state "Done" as Done
state "Error (Terminal)" as Error
Pending --> Claimed : action_transcribe_gevent (TX#1)
Claimed --> Pending : API Failed (Retries < Max)
Claimed --> Done : API Success (TX#3)
Claimed --> Error : API Failed (Retries >= Max)
Claimed --> Error : File too large / No media
Claimed --> Pending : Worker Crash (Lease Expires)
Done --> [*] : Media unlinked, Parent notified
Error --> [*] : Media unlinked, Parent notified
```
task-5153790This update adjusts the Odoo payroll accounting configuration to align with the latest Egyptian Chart of Accounts. This ensures that all payroll journal entries accurately reflect the correct accounts, complying with Egyptian tax regulations.
Original PR description
The Egyptian Chart of Accounts has been updated, so the payroll accounting configuration must be adjusted accordingly to ensure payroll journal entries use the correct accounts. Related PRs Community - https://github.com/odoo/odoo/pull/266614 Upgrade - https://github.com/odoo/upgrade/pull/10339
This update simplifies the process of tracking stock by vehicle within Field Service. Previously, configuring vehicle warehouses was hidden and difficult, but now a centralized dashboard provides easy access and management, streamlining operations at scale. The new system enforces data integrity to prevent errors and ensures accurate fleet assignments.
Original PR description
Since v14, tracking stock by vehicle required manually setting a 'default warehouse' hidden deep within individual user preferences. Because this field was completely invisible unless multi-warehouses were enabled, the feature was largely undiscoverable and extremely tedious to manage at scale. This commit solves the discoverability and configuration issues by introducing a centralized Vehicle Warehouses dashboard directly in the Field Service settings. Key impacts: - Adds a direct "Stock by Vehicle" setup link in the Field Service settings. - Introduces a dedicated list and mobile Kanban view to easily map specific warehouses (vehicles) to assigned technicians (planning users). - Enforces strict constraints to prevent duplicate fleet assignments and ensures warehouses and users remain strictly linked within the same company. Task: 6190476
This update removes an unnecessary abstraction layer in the SGK Hiring report process. The previous abstract model was deemed redundant as it was only used in one place, leading to a simpler and more maintainable codebase. This change improves efficiency and reduces complexity.
Original PR description
Previously, we had an SGK abstract model that was used by the SGK Hiring report. The idea was that we might extend its functionality to other models in the future, improving code readability and maintainability. However, it turns out that there is currently no benefit to having an abstract model, as it is only used in one place. Therefore, this change removes the unnecessary abstraction and keeps the implementation simpler. Task: TBD
This pull request makes minor improvements to the user experience within the MRP modules (mrp_plm, mrp_workorder, quality_mrp). Specifically, the 'Review Changes' button has been simplified for better clarity and the wording of the work order timer setting has been updated for improved understanding. These changes enhance usability and streamline workflows.
Original PR description
Minor UI tweaks for MRP submodules: * 'Review Changes' smart button renamed to simply 'Review' in PLM form view. * Reworded description for the WO timer setting. Built atop #112997. Task ID: [6152764](https://www.odoo.com/odoo/my-tasks/6152764)
This update enhances the map view by displaying resource avatars when routes are grouped by resources. This provides a clearer visual representation of the routes and makes it easier to identify associated resources within the map interface. This change improves usability and provides a more intuitive experience for users.
Original PR description
## [IMP] web_map: define template for routing information popup This commit defines the routing information popup as a template, allowing other modules to extend/modify it. ## [IMP] planning_field_service: show resource avatar on route popover In this commit, we add the resource's avatar to the routing popover in the map view. This only applies when the view is grouped by resources. task-6273760
This update enhances the layout of the MRP BOM line view by aligning the 'Bom Version' and 'Product Version' columns with their corresponding 'Final Product' and 'Bill of Material' counterparts. This change improves clarity and consistency for users reviewing BOM information, mirroring a previous update in the Odoo Community.
Original PR description
The 'Bom Version' and 'Product Version' columns positions are switched to match their 'Final Product' and 'Bill of Material' counterparts on the same view (see PR 262691 on Odoo Community). Task: 6113304
This update introduces a variable resource calendar, allowing users to precisely define attendance dates instead of relying on fixed schedules like weekly recurring options. This provides greater flexibility in managing employee working schedules and accommodates diverse attendance patterns, replacing the previous two-week calendar.
This update adjusts the Peru withholding module's test cases to align with current business practices. Previously, tests incorrectly generated withholding payments without associated bill taxes. Now, tests accurately reflect the real-world workflow of creating withholding amounts from bill taxes, streamlining the payment process.
Original PR description
As the should_withhold_tax field is being replaced by withhold, the Peru withholding module must be updated accordingly. In Peru, withholding can only be deducted when withholding taxes are applied on bills. However, the existing tests were creating withholding payments without adding withholding taxes on the bill and were manually providing withholding line values when creating the payment wizard. This no longer reflects the actual business flow. This commit updates the test cases to follow the real-world workflow by creating withholding amounts from bill taxes and letting the payment wizard generate the withholding lines accordingly. task-5438849 com:https://github.com/odoo/odoo/pull/266946 upg:https://github.com/odoo/upgrade/pull/10436
A new 'Cancelled' filter has been added to the ticket screen, allowing cashiers to easily view and manage all cancelled orders, regardless of their origin. This change improves order management and provides greater control for cashiers, aligning with a streamlined workflow. The cancellation process is now logged for transparency.
Original PR description
..., pos_hr, pos_self_order, pos_platform_order --- In order to give the cashier more control over orders, a new "Cancelled" filter has been added to the ticket screen. This filter already existed in `pos_platform_order`, but it was limited to orders cancelled from platform orders only. It now shows all cancelled orders, regardless of their origin. Previously, cancelling an order would delete it locally — it remained in the backend but was absent from the frontend, making it impossible to display in the cancelled filter. This behaviour has been removed. We also no longer load only draft orders for the current POS config, but all orders for the current session, whatever their state. Additionally, the cancellation is now logged in the chatter under the current cashier's name. --- Task: https://www.odoo.com/odoo/project/1737/tasks/6112014
This update enhances payment processing by adding debtor and creditor information to the data sent to our payment processors (Powens and Saltedge). This ensures accurate payment initiation and improves integration with financial systems.
Original PR description
In order to be able to initiate payments using Powens and Saltedge, we need to include debtor information in the payload sent to Odoofin. This commit adds the necessary fields and updates the tests accordingly. Task ID: 5977148, 6095729 Forward-Port-Of: odoo/enterprise#119843
This update improves the marketing automation form by aligning its settings with a recent design change. The Autofocus plugin has been moved to a more accessible location, allowing it to be used in mass email campaigns. This ensures a smoother user experience for creating and managing marketing emails.
Original PR description
This PR updates marketing_automation overrides for the mailing form view to match the new structure of the view, and moves the Autofocus plugin from knowledge to html_editor to make it available in mass_mailing. task-5976317
This update adds travel time calculations and display to the Field Service Gantt view, specifically designed for resource-based scheduling. It introduces travel time buffers, automatically tracking distances and times, and provides a popover for detailed travel information when hovering over a shift. This improves scheduling accuracy and efficiency for field service teams.
Original PR description
## [IMP] web_gantt: allow setting conditions to display buffer times This commit allows children to conditionally display buffer times in the Gantt view. This is particularly important for Field…
## [IMP] web_gantt: allow setting conditions to display buffer times This commit allows children to conditionally display buffer times in the Gantt view. This is particularly important for Field Service, where buffers do not make sense if the view is not grouped by resource. ## [IMP] web_gantt: editable specification for get_gantt_data rpc This commit allows views inheriting from `GanttModel` to modify the specification passed to the `get_gantt_data` rpc call. This will become handy for Field Service, where we want to read extra fields (other than `display_name`) for partners. ## [IMP] planning: check user group before loading data This commit ensures that the `isManager` boolean value is always fetched before loading the Gantt view. ## [IMP] planning_field_service: travel time computation in the Gantt view This commit introduces travel time and distance tracking for field service shifts. Travel times displayed as buffers on the day-scale gantt view when grouped by resource. - Add `travel_time_in/out` and `travel_distance_in/out` fields on planning slots - Travel data is reset automatically when the partner, resource, or datetime changes, and preserved when splitting/undoing splits or undoing drag-and-drop - Compute routes using MapBox on gantt load (when all records are stale) or on demand via a toolbar button (when some are stale)` - The travel data are computed starting and ending at the resource's work location (i.e., work, daily interventions, work) - Hide the buffer-end visually when a subsequent shift exists for the same resource ## [IMP] planning_field_service: add travel time and distance popover in gantt This commit adds a popover containing the travel time information for the intervention, when hovering its buffer time. It contains the departure time, travel time, and distance. If there is no previous intervention, the information is relative to the resource's work location. task-6200248
This update adds necessary fields to the payment process for Saltedge, enabling seamless payment initiation. The changes were made to ensure compatibility with Saltedge's requirements. The update will be applied across all Odoo Enterprise versions.
Original PR description
In order to be able to initiate payments using Saltedge we need to include a couple more fields in our payload. This commit adds them. This PR is in master to ease testing but will be backported to 18.0 to cover all versions of the payment initiation flow. Task ID: 6095729
This update enhances the safety of product template merging by preventing the automatic merging of complex templates with variant configurations. Previously, this could lead to unexpected product behavior. Now, only simple, single-variant templates can be merged directly, ensuring more reliable and predictable product management.
Original PR description
Before product template merge could try to merge templates with variant configuration this could lead to unsupported or confusing product behavior there was no clear check for only simple templates After added a merge guard for product templates only plain single variant templates can be merged directly configurable or multi variant templates now stop with a clear message Impact safer product merge behavior prevents incorrect merges on configured products keeps de-duplication limited to the simplest valid cases task id - 5928499
This update simplifies how prices with taxes (included or excluded) are managed within Odoo. Users can now dynamically adjust tax settings on invoices, orders, and purchase orders, reducing the risk of duplicate taxes and improving overall financial accuracy. However, be aware of potential complexities when overridden tax settings are in place.
Original PR description
### Purpose To improve management of prices with tax included and tax excluded. To simplify handling a mix of both in the same company and avoiding duplicate taxes. ### Implementation Users can…
### Purpose To improve management of prices with tax included and tax excluded. To simplify handling a mix of both in the same company and avoiding duplicate taxes. ### Implementation Users can change default taxes into included or excluded in the prices dynamically on account.move, sale.order and purchase.order. This is done through a selection field document_tax_mode that allows the user to set any default taxes on the lines to tax included or excluded. This will be reflected on the total amounts of the document. Taxes with an override tax mode set (price_include_override on account.tax) will keep their overridden behavior regardless of the document tax mode. Beware of functionally non-applicable cases with overridden taxes that can lead to erratic behavior: -company tax mode set to tax included, with a tax included override tax, document set to tax excluded, -company tax mode set to tax excluded, with a tax excluded override tax, document set to tax included. odoo/odoo/pull/251800 odoo/upgrade/pull/9951 task-5942016
This update enhances the payroll experience for employees classified as 'company executives.' Specifically, it adds support for a 'joint committee' of 999 and hides irrelevant fields (sub-type, dimona category, and flat rate) to simplify data entry and improve usability. This change aligns with user needs and streamlines the payroll process.
Original PR description
This PR expected to - Add the joint committee 999 on the employee type 'company executive' - If the join committee of the employee is 999: - Hide the field sub-type and make sure it's empty - Hide the field dimona category and make sure it's empty task: 6300301
This update simplifies the systray check-in process by aligning it with backend attendance settings. Previously, check-in was triggered by attendance status, but now it's controlled solely through backend configurations. This change streamlines the process and reduces complexity.
Original PR description
[IMP] hr_work_entry_attendance: systray check_in appearance adjustment Systray check-in was available when the employee or user is attendance based but now, it will only depends on attendance check-in from backend setting. So, no need to look to attendance_based now. task - 6309593
This update enhances the user experience for payroll reports in the Belgian HR module. Now, users can preview reports as PDFs, even for batch reports, and the 'Eligible Employee' button directly navigates to the employee's profile, streamlining workflows.
Original PR description
1. Display the preview button even for batch reports. When clicking on it, a PDF appears: it is the same PDF that would be shown if we previewed the report as web. 2. From the Eligible Employee smart button, allow the user to navigate to the employee profile. __ task-6304028
This update enhances the customer display within our POS apps (enterprise, IoT, and mobile) by incorporating dark mode assets and streamlining URL calculations. By centralizing the URL computation, we've reduced redundancy and improved the overall consistency of the customer display across all POS experiences. This change ensures a better user experience and simplifies future updates.
Original PR description
pos*: pos_enterprise, pos_iot, pos_mobile - Add proper dark mode assets for the customer display (aligned with POS styling) - Centralize customer display URL computation in the PoS store service to avoid code duplication Task-6139178 Related PRs: - https://github.com/odoo/odoo/pull/260331
This update improves reporting for Belgian payroll runs by renaming and reorganizing key data fields. Specifically, it adds information on NSSO contributions and withholding taxes, providing a more complete picture of Belgian pay run data. This change is limited to the Belgium localization.
Original PR description
This PR expected only applies to Belgium Localization. There are fews changes in this view: - Rename Employer cost to Total Cost - Remove Gross - Add NSSO Contribution - Add Witholding taxes This changes to provide important information on belgian pay run task: 6290433
This update simplifies the process of creating Quality Alerts directly from Manufacturing Orders, making it easier for users to report issues. The form has been redesigned with a clearer layout and streamlined fields, reducing unnecessary complexity. This change improves efficiency and data accuracy when managing quality control.
Original PR description
Users cannot easily create a Quality Alert directly from a Manufacturing Order (MO), and the Quality Alert form exposes fields that are unnecessary or unclear depending on the context. This commit…
Users cannot easily create a Quality Alert directly from a Manufacturing Order (MO), and the Quality Alert form exposes fields that are unnecessary or unclear depending on the context. This commit improves alert creation from MOs and refines the form behavior. This commit's changes: - Add an action on the Manufacturing Order form to create a Quality Alert directly from the Action menu. - Simplify the Quality Alert form header and move the priority widget to the top of the form. - Show "Title..." as the Title field placeholder for new alerts, then use the Quality Alert reference once assigned if no title was entered. - Remove the Product Template field from the quality.alert model. - Rename the Product Variant field label to "Product". - Update the form to show either the Picking or Manufacturing Order, hiding the unused field. - Rename the "Lot" field to "Lot/Serial". - Show the "Lot/Serial" field only when the selected product is tracked by lot or serial number. - Add "allowed_lot_ids" to identify lots/serials linked to the current Manufacturing Order or Picking. - Restrict "Lot/Serial" selection to "allowed_lot_ids" when available; otherwise fall back to all lots of the selected product. - Hide the Work Center field on the form unless it is set. task-6102168
Resolved issues and error corrections
This update fixes an issue in the Belgian payroll calculations related to DMFA (termination) payments. Previously, the system incorrectly stopped calculating payments after a 3-month period, even with ongoing remuneration. This change ensures that payments continue as long as remuneration exists, preventing employees from being completely unenrolled with no payment during extended sickness periods. The update includes new tests to guarantee accurate calculations.
Original PR description
. Iterate as long as there is a remuneration on the dmfa period > 0, not stop to the previous period only. . The fix was made so if the remuneration on the dmfa period (3 months) is null, system will check the previous remuneration on the previous dmfa period, BUT, if we take a long sickness period on an employee, you can have people with 2 or 3 DMFA fully unenmployed with no remuneration at all . Add the corresponding tests task-6299792
This update adds a validation check to ensure employees have a defined work schedule (resource calendar and hours per week). This prevents issues with the DMFA process, ensuring accurate payroll calculations and data integrity. It's a necessary step to maintain the reliability of employee data within the HR module.
Original PR description
Added an @api.constrains check on resource_calendar_id and hours_per_week. Raises a translated ValidationError if both fields are left empty. Added validation since it's causing issue with DMFA. task-6296689
This update resolves an issue where sending NFC-e invoices would halt the POS synchronization process when IAP credits were exhausted. The change prevents the system from blocking POS updates, ensuring continued functionality even when IAP credit limits are reached. This improves reliability and prevents disruptions to sales operations.
Original PR description
When sending an NFC-e, tax calculation is done by calling Avatax through IAP. If the IAP account has no credits left, iap_jsonrpc() raises an InsufficientCreditError. opw-6290857 Forward-Port-Of: odoo/enterprise#120700
This update resolves a crash that occurred when users were manually correcting bank statement lines within the Odoo Enterprise system. The issue stemmed from a missing context setting during record creation, preventing the correct journal from being assigned. This fix ensures accurate journal assignments and prevents data modification errors.
Original PR description
When the manual correction tool was used to fill in the lines, we weren't passing the active context when creating the new records. In the case of bank statements, it could be an issue as the `default_journal_id` key is expected to be present to set the correct journal on the newly created bank statement line. Without this key in the context, it would default to the first journal with a valid type (see function `_search_default_journal`). If the journal found this way didn't match the current journal, a crash would occur when modifying the newly created lines. opw-[6294117](https://www.odoo.com/odoo/unassigned-tasks/6294117) Forward-Port-Of: odoo/enterprise#121032 Forward-Port-Of: odoo/enterprise#120745
This update resolves an issue where manually created timesheets weren't correctly linked to the associated Sales Order Item. The fix ensures the Sales Order Item information is properly inherited during timesheet creation, improving data accuracy and streamlining the timesheet process. This prevents errors when recording time against sales orders.
Original PR description
### Issue: When manually creating a timesheet from a planning shift's smart button, the Sales Order Item is not inherited. ### Cause: The `planning_slot_id` was missing from the timesheet list view. As a result, the `default_planning_slot_id` passed in the context was dropped during the creation of the new record, preventing us from linking the correct SO line. Solution: Added `planning_slot_id` as `column_invisible="True"` in the timesheet list view so the context default is retained. task-6229397
This update fixes an issue where the Gantt chart popover displayed only start and end dates for project tasks. The change ensures the popover correctly uses the card view, providing richer task details. This improves the user experience when viewing project timelines.
Original PR description
Since odoo/odoo#114328, the kanban view of the action isn't used as gantt popover by default if no popover is defined in the gantt view arch. As a consequence, on the project sharing task gantt view, the popover was the default, basic one which displays only the start and end dates. This commit restores the previous behavior by explictly set on the gantt view the id of the card view to used inside the popover. To achieve this, it was necessary to extract that card view out of the kanban. Followup of task~5262907
This update resolves a minor issue where deleting an Obox didn't properly remove associated queue records, leading to potential data inconsistencies. It also corrects a bug where duplicate device identifiers caused incorrect device updates. This ensures accurate device tracking and management within the Obox system.
Original PR description
This commit fixes two minor bugs: 1. Deleting an Obox record does not delete the queue records associated with it. If you link an Obox with the same serial again, the old queue actions are linked to with the smart button, but don't actually link to the new Obox record. 2. If an Obox discovers a device with the same identifier as an existing device linked to a different Obox, the device is not added, instead updating the other device.
This update resolves an issue where the search input in a SelectMenu was unintentionally clearing typed characters due to timing conflicts. The fix ensures the input value is controlled directly, resulting in a more reliable and consistent search experience. This improves usability for users searching within the system.
Original PR description
Before this commit, some very specific timing could cause re-renders after debounced was called but before it was finished, causing a re-render of the input and setting its value to a previous state, removing typed characters. This commit fixes that by making the input value controlled manually, not via the reactivity. Community: https://github.com/odoo/odoo/pull/266912
This update resolves an issue causing instability in the systray highlight test. The team replaced a complex, temporary workaround with a more reliable implementation of the `useEffect` hook. This ensures the test consistently passes, improving the overall stability of the timesheet grid functionality.
Original PR description
This PR fixes the systray highlight test by using a simplified version of the old implementation of the `useEffect` hook instead of the setTimeout hack
This update resolves an issue where an incorrect amount was being duplicated in the Balance Sheet report for French financial statements. The fix involves adjusting a journal entry to accurately reflect partner accounts and eliminate the double-counting of 45 accounts under 'Borrowings and Similar Liabilities'.
Original PR description
1. Create a journal entry with: -> 455100 Partners/Associates - Current Accounts - Principal → Credit -> 512001 Bank → Debit 2. Navigate to Accounting → Reporting → Balance Sheet. -> Observe that the amount of the journal entry appears twice in the Balance Sheet: 1. Under Borrowings and Similar Liabilities 2. Under Partners' Current Accounts 45 accounts should not be included under borrowings and similar liabilities opw-6271305 Forward-Port-Of: odoo/enterprise#120282
This update corrects a previous issue where fully settled customers with past pay-later payments were incorrectly prevented from seeing their customer statements. The fix now checks for any past pay-later payment lines, ensuring the statement button remains visible even after the customer's total balance is paid off. This improves the user experience for all customers.
Original PR description
The override of _compute_has_moves was checking `total_due != 0` to set `has_moves` on for PoS pay_later customers. Once the customer is fully settled however, `total_due` is 0 and the check does not pass anymore, so `has_moves` goes back to `False` and the Customer Statement button hides for them, even though they had past pay_later payment lines. The fix is to check directly for any past pay_later `pos.payment` instead, which covers the cases where partner had used pay_later payment methods before, regardless if they have settled their total due or not. opw-6173760 Forward-Port-Of: odoo/enterprise#120911 Forward-Port-Of: odoo/enterprise#116536
This update adds a required field for UNECE code to UoM units, resolving previous issues with UBL/CII validation. This ensures Odoo correctly handles international trade documents and improves compliance with industry standards. It addresses a limitation in the previous static mapping approach.
Original PR description
Before this PR, we mapped UoMs with UNECE codes using a static dictionary. However, due to this static nature, some UoMs were missing the UNECE code, which created validation issues for UBL/CII. To address this issue, we introduce a new UNECE code field on UoM, which will be utilised by the UBL/CII for setting unitCode on Quantity nodes. task-6171459 Community PR - https://github.com/odoo/odoo/pull/261975 Upgrade PR - https://github.com/odoo/upgrade/pull/10091
This update fixes an error in the l10n_ph withholding tax report that was incorrectly adding a negative sign. The change has been reverted to use balances directly, ensuring accurate reporting of withholding taxes and aligning with how the system handles signed amounts. This improves the reliability of tax reporting.
Original PR description
A negative sign was added in the tax report of l10n_ph. This should not have been changed. The reason for the change was to set the balance negate of the tag, but this is incorrect. We therefore revert this change and remove the absolute value and balance negate from the query in the withholding tax report. Relying on these to force sign changes is incorrect. We can instead use balances directly: - `tax_base_amount` is used natively (signed). - `balance` is negated for the report presentation (to show credit-side withholding as positive).
This update resolves an issue where the rental and subscription status badges were overlapping in the sales order view. The fix replaces a positioning method with a simpler float-end approach, ensuring both badges are correctly displayed without interference. This improves the visual clarity of sales orders.
Original PR description
Steps to produce: --- - Install the `Rental` and `Subscription` modules. - Create a rental product and a subscription product. - Create a sales order containing both products and set a rental period.…
Steps to produce: --- - Install the `Rental` and `Subscription` modules. - Create a rental product and a subscription product. - Create a sales order containing both products and set a rental period. - Confirm the sales order. Issue: --- - The rental status badge overlaps the subscription status badge. Root cause: --- - The rental status badge uses the position-absolute CSS class to place it at the end of the header. When the subscription status badge is also displayed in the same area, both badges are positioned at the same location, causing them to overlap. - After [commit], this issue is introduced. Solution: --- - Replace position-absolute with float-end so the badges remain right-aligned without overlapping. [commit]: https://github.com/odoo/enterprise/commit/32ab15dc1f26af0e3d510ec859b1ec428068e9b5 Before: --- <img width="122" height="64" alt="image" src="https://github.com/user-attachments/assets/e6b47c9e-ed59-4a4b-a95c-0318cc43660e" /> After: --- <img width="175" height="57" alt="image" src="https://github.com/user-attachments/assets/ea98f7a1-67f6-4b2b-b699-1f2cd3376d8f" /> opw-6295212 --- Forward-Port-Of: odoo/enterprise#120660
This update fixes alignment issues within the Timesheet Assistant, specifically in the 'By Project' and 'Chronological' views. The changes ensure that descriptions and times are displayed correctly, even with lengthy project details, and adds a necessary margin to the 'No time recorded' section for better visual clarity.
Original PR description
# [FIX] timesheet_grid: alignment issues in assistant This commit resolves the following alignment issues in the Timesheet Assistant: - View "By Project", the time wraps if description too long - View "Chronological", the time wraps if descriptions too long and project / task is not truncated - No timesheet recorded does not have a margin start # [FIX] sale_timesheet_enterprise: alignment issues in assistant This commit adds margin start on the "No (non-)billable time recorded" information. task-6264756 Forward-Port-Of: odoo/enterprise#121054 Forward-Port-Of: odoo/enterprise#120608
This update ensures the Documents smart button now displays *all* linked documents for records connected through bridge modules (like approvals, fleet, HR, and projects), regardless of their location. Previously, it only showed documents within a configured folder. The change also includes improvements to document counting across various modules, enhancing the overall document management experience.
Original PR description
* = approvals, fleet, hr_recruitment, project Before this commit, clicking on the Documents smart button, it only displayed the documents contained in the configured folder. But it happens that a document is linked to a record from a bridge module but is not in that configured folder. This commit fix that by displaying all the linked documents for a record from a bridge module. So we toook the opportunity to move the document_count field to the 'documents.mixin' model with its compute method and the 'action_open_documents' method. Task-5948278
This update fixes an issue where timesheet settings (specifically, whether a project is billable) would reset after the timesheet systray was closed and reopened. Now, the selected billable status is correctly saved and retained, ensuring accurate tracking of billable hours. This improves the reliability of timesheet data.
Original PR description
## Behavior before PR 1. Open the timesheet systray. 2. Select a billable project. 3. Toggle the is_billable field. 4. Close and reopen the systray. 5. The is_billable value resets to its default instead of keeping the updated value. ## Expected Behavior After this PR The systray now correctly retains the is_billable value after being closed and reopened. ### Technical Notes The issue occurred because the systray view loads a sudo record that triggers compute methods, which overwrite the stored is_billable value. The fix ensures that after compute methods run, the saved is_billable value is preserved. Forward-Port-Of: odoo/enterprise#121087 Forward-Port-Of: odoo/enterprise#119681
This update resolves an issue in the Data Cleaning app where record IDs were incorrectly summed and displayed alongside group names, leading to truncated names and inaccurate counts. The fix removes the automatic summation of IDs in grouped list views, ensuring correct group names and counts are shown.
Original PR description
## Issue In the *Data Cleaning* app, when grouping records, the record IDs are summed up and appear right next to the name of each group, which: 1. truncates the name and count of the groups 2. does…
## Issue
In the *Data Cleaning* app, when grouping records, the record IDs are summed up and appear right next to the name of each group, which:
1. truncates the name and count of the groups
2. does not make sense (summing up IDs is pointless)
<img width="709" height="374" alt="6166623-before" src="https://github.com/user-attachments/assets/9d80b1ec-49c0-4b7f-8c6e-53846f9e433e" />
## Steps to reproduce
1. Install *Data Cleaning* (`data_cleaning`)
2. In Data Cleaning > Configuration > Field Cleaning, create a new rule (or edit an existing one):
- Any name
- Model: *Contact*
- Rule:
- Field to Clean: *Name (Contact)*
- Action: *Set Type Case* - Case: *All Uppercase*
4. Click the *Clean* button in the upper left corner
5. In Data Cleaning > Field Cleaning, group the records by any field (e.g., *Field*)
6. **The name of the group (_Name (Contact)_) is truncated, making it and the record count unreadable. This is due to the sum of _Record ID_ being displayed in the same row, even though that information is irrelevant.**
## Cause
The *Record ID* (`res_id`) field is an Integer field defined [here](https://github.com/odoo/enterprise/blob/3603afdd5c0d19c9276f3855156be4040ab5717d/data_cleaning/models/data_cleaning_record.py#L20). By default, Integer fields have the `sum` aggregator:
https://github.com/odoo/odoo/blob/681610c002a310f1c73fc2e5bec8d3dae27bc4a7/odoo/orm/fields_numeric.py#L17-L23
This causes the IDs to be summed up and appear in the group headers.
## After
<img width="740" height="370" alt="6166623-after" src="https://github.com/user-attachments/assets/a42d8f58-06dc-4308-8b6f-1ab09e8034f8" />
related: https://github.com/odoo/odoo/pull/265163
opw-6166623
Forward-Port-Of: odoo/enterprise#115492This update resolves a problem where order signing with Fiskaly failed after a change to the Fiskaly API key. The system now correctly resets the associated SCU and cash registers, ensuring seamless integration with the Fiskaly system. This prevents order processing errors and maintains accurate financial data.
Original PR description
When the Fiskaly API key/secret is changed, the company is bound to a new Fiskaly organization (owner). The SCU and cash registers stored on the company and POS configs were created under the previous owner and no longer exist for the new one, so signing orders fails with E_CASH_REGISTER_NOT_FOUND. Clear l10n_at_pos_company_scuid and each config's l10n_at_cash_regid together with the access token so they are recreated under the new organization on the next authentication. opw-6297695 Forward-Port-Of: odoo/enterprise#120839
This update fixes an issue where created packages weren't displayed within the barcode picking app when putting items into packs. The fix ensures that users can clearly see the source and destination packages during the packing process, improving workflow and reducing errors. This enhancement simplifies the process of managing packaged goods within Odoo.
Original PR description
### Steps to reproduce: - Enable `Lots & Serial Numbers` and `Packages` in the settings - Create a product tracked by SN and add SN001 and SN002 to stock - Create and confirm a delivery for 2 units -…
### Steps to reproduce: - Enable `Lots & Serial Numbers` and `Packages` in the settings - Create a product tracked by SN and add SN001 and SN002 to stock - Create and confirm a delivery for 2 units - Open the Barcode app and open the delivery - Scan the product > Scan SN001 - Click `Put in Pack` ### Current behavior: The created package is not displayed anywhere. Clicking Put in Pack again nests the package into another package without any visible indication to the user. ### Cause of the Issue: The GroupedLineComponent cannot display neither the source or destination package: https://github.com/odoo/enterprise/blob/c5bbcaeed513817fdda1f3f42f4c9b2440264174/stock_barcode/static/src/components/grouped_line.xml#L4-L21 However, our case the grouped line contains only a single line and prevents the users from viewing the sublines since the `Show Reserved Lots` is disabled on the operation type and only one lot (with additional demand) was scanned: https://github.com/odoo/enterprise/blob/c5bbcaeed513817fdda1f3f42f4c9b2440264174/stock_barcode/static/src/components/grouped_line.js#L75-L77 https://github.com/odoo/enterprise/blob/c5bbcaeed513817fdda1f3f42f4c9b2440264174/stock_barcode/static/src/components/grouped_line.js#L44-L55 opw-6237834 Forward-Port-Of: odoo/enterprise#119114
This update fixes an error in the XML export for the Luxembourg eCDF platform. Incorrect financial year data was being generated due to a specific account entry. The fix removes problematic account mappings and adds a test to ensure accurate reporting going forward.
Original PR description
Issue: Users reported that the financial year result in the XML export for the Luxembourg eCDF platform is incorrect, despite being correct in the Odoo Profit and Loss visualization. The exported XML populated incorrect amounts in cell 0161 under certain circumstances (namely, in the case of an explicit entry from account 999999 to account 142000). Solution: * Removed account 142 entirely from both the `ACCOUNTS_2019` and `ACCOUNTS_2020` dictionaries so it no longer auto-populates cells 0161/0162 (up to 2019 included) and 2955/2956 (from 2020 onward). * Removed the 2019 threshold condition in the loop bypass for account 142. * Removed the hard-coded manual pop for cell 2955 since it has been removed from the mapping. * Deleted the redundant reassignment of `net142` in the loss calculation block. Ticket [link](https://www.odoo.com/odoo/project.task/6059571) opw-6059571 Forward-Port-Of: odoo/enterprise#121010
This update resolves an issue preventing the correct export of balance sheet data in XML format for Luxembourg companies. The system now automatically includes a 'date_from' field, aligning with changes in the Odoo 19.2 version, ensuring accurate financial reporting.
Original PR description
Steps to reproduce: - setup a LU company - go to balance sheet - export the xml file - validate the wizard -> Traceback, because the code expects the options to contain the date_from, which is no longer the case since 19.2 as the balance sheet has by default only a date_to. The solution is therefore to define it for the export to the beginning of the fiscal year. Forward-Port-Of: odoo/enterprise#120843
This update resolves an issue where focusing on the end date within a daterange widget incorrectly modified the start date. The fix ensures that the correct date field is updated when a user interacts with the input fields, improving data accuracy and preventing unintended changes.
Original PR description
When a daterange widget is used (e.g., `deferred_start_date` coupled with `deferred_end_date`), focusing on the end date input was incorrectly modifying the start date field. This occurred because the `focusin` event was resolving the field name from the parent widget rather than the specific input focused. This commit updates `onFocusFieldWidget` and `getFullFieldName` to accept and evaluate the specific `event.target`. For `o_field_daterange` widgets, it now extracts the correct field name from the target's `data-field` attribute, ensuring the correct date field is updated. opw-6250048 Forward-Port-Of: odoo/enterprise#121099 Forward-Port-Of: odoo/enterprise#120684
This update clarifies timesheet tracking by changing the AW rule to display the name of the GitHub Pull Request instead of its ID. This provides better context for users, making it easier to link PRs to the relevant project or task within the Timesheets Assistant.
Original PR description
Before this commit, the AW Rule used in Timesheets Assistant will display the id of the Github Pull request and the repository but that information is not always clear for the user to know which project/task is related to that PR. This commit changes the AW rule for Github to display the name of the pull request instead to have more context to easily match the project/task to the event created by that rule. task-6306166 Forward-Port-Of: odoo/enterprise#121231 Forward-Port-Of: odoo/enterprise#120676
This update resolves an issue where DIAN XML files were being rejected due to incorrect calculations of prepaid payments. The fix combines payment amounts into a single tag, ensuring the total paid matches the due amount and eliminating the need for negative payment lines, improving compliance with DIAN requirements.
Original PR description
**Steps to reproduce:** To test this, you will need an official DIAN setup, because this error comes from the response to our API call to the DIAN. - Setup the DIAN in a colombian company - Open the…
**Steps to reproduce:** To test this, you will need an official DIAN setup, because this error comes from the response to our API call to the DIAN. - Setup the DIAN in a colombian company - Open the PoS - Order a product - Before paying, make the amount we are paying bigger than the amount due - We get an error response from the API, the error is saying that the total due does not match what we paid **Why the fix:** Currently, the xml is rejected because the sum of the **PaidAmount** in the **PrepaidPayment** tag is not equal to what we are trying to pay for. This is happening because to avoid the fact that we can not send a line with negative amount, we used the **abs()** function on the line amount to make it positive. The negative line comes from the fact that when we have a total due that is below the amount paid, we create a new payment line with a negative amount to balance it out. But as we can't send lines with negative amount, we needed to make it positive. This does not work, as the sum of the lines' amount will then be too much compared to what we are paying for, because instead of substracting it we will be adding it. To avoid this, we now group the amount in one single tag and send it this way. This ensures that the sent amount is correct and equals the amount due, and does not send a negative line. opw-6232575 Forward-Port-Of: odoo/enterprise#121075 Forward-Port-Of: odoo/enterprise#119255
This update resolves an issue where new tasks created through Timesheets Assistant rules were incorrectly set as private. The fix ensures that tasks are always associated with the selected project, improving workflow and data organization within the Timesheets module. This prevents confusion and ensures accurate task tracking.
Original PR description
Steps to reproduce: - Install Timesheets and enable Timesheets Assistant. - Go to Timesheets -> Configuration -> Assistant Rules. - Open an existing rule or create a new one. - Select a Project and enter a new Task name. Issue 1: - Click Create. - The task is created as a private task, and the project is cleared. Issue 2: - Click Create and Edit. - Remove the project and save. - The task is saved as a private task. Cause: - When using Create, the `default_project_id` from the context is not applied, so the task is created as a private task. - When using Create and Edit, users can remove the prefilled project before saving, which also results in a private task. Fix: - Pass `default_project_id` and `form_view_ref='project.view_task_form_res_partner'` in the context. This prefills the project and makes it required when creating a task. task-6293306 Forward-Port-Of: odoo/enterprise#121188 Forward-Port-Of: odoo/enterprise#120862
This update fixes a previous limitation where users couldn't properly set prices for hybrid subscription products (those allowing one-time sales). Now, the system requires a plan to be selected for subscription products and correctly filters pricelist items to support one-time pricing for hybrid subscriptions, ensuring accurate and flexible pricing options.
Original PR description
Before this commit:
1. Users could save a pricelist rule for a pure subscription product without assigning a plan.
2. Hybrid subscription products (where 'Allow One-Time Sale' is True) were filtered out of the pricelist item form when no plan was selected, preventing users from setting a one-time price.
After this commit:
- The `plan_id` field on the product template form is now mandatory if the product is a subscription and does not allow one-time sales.
- The `product_tmpl_id` domain on the pricelist item form is updated to `['|', ('recurring_invoice', '=', bool(plan_id)), ('allow_one_time_sale', '=', True)]`, allowing users to select hybrid products for one-time pricing.
task: 6164232
Forward-Port-Of: odoo/enterprise#120323
Forward-Port-Of: odoo/enterprise#115271This update allows for more flexible scheduling by introducing 'duration-based' calendars for resources. Previously, resources were limited to strict time slots or fully flexible arrangements. Now, resources can have a mix of fixed and flexible days, ensuring better resource allocation and utilization while maintaining capacity limits.
Original PR description
Currently, resources are either entirely strict (bound by fixed start/end intervals) or entirely flexible. There is no native way to support a hybrid calendar where an employee has specific days that…
Currently, resources are either entirely strict (bound by fixed start/end intervals) or entirely flexible. There is no native way to support a hybrid calendar where an employee has specific days that are flexible (duration-based) and other days that are strict. This commit introduces "duration-based" scheduling, allowing the system to bypass strict time intersections on specifically flagged days while maintaining a strict capacity cap. Changes include: - `resource.resource`: Added `_is_duration_based(start_dt, end_dt)` helper to dynamically identify if a resource has flexible attendance within a specific date range or single day. - `planning.slot`: - `auto_plan_ids`: Expanded the bulk interval fetch for hybrid resources to prevent the core HR module from clipping flexible days, and implemented a day-by-day intersection bypass inside the `find_resource` allocation loop. - `_get_working_hours_over_period`: Intercepted manual shift calculations. If a shift falls on a duration-based day, it bypasses the strict `work_intervals` overlap and assigns the literal shift duration (safely capped at the employee's daily capacity). Timezone-aware date conversions ensure accuracy. - `_gantt_unavailability`: Filtered out grey unavailability blocks on duration-based days so the Gantt chart accurately reflects flexible placement. Task-ID: 6285642
This update ensures that cancelled and no-show appointment bookings now correctly appear as 'free' in the calendar, rather than 'busy'. Previously, the calendar incorrectly marked these bookings as occupied. This change improves the accuracy of appointment scheduling and reduces confusion for users.
Original PR description
When an appointment booking status is changed to `cancelled` or `no_show`, the calendar event could remain marked as `busy`. This commit updates the appointment event synchronization so `show_as` is set to `free` for cancelled and no-show bookings, and restored to `busy` when the booking goes back to an active appointment state. task-6108930
This update corrects a technical issue where the wage types menu domain wasn't updated after changes to payroll rules. This ensures the menu accurately reflects the new capabilities of wage types, allowing for correct payroll calculations. It's a minor fix to maintain payroll accuracy.
Original PR description
After the change to rules that allowed them to be used in multiple structures, the domain for the wage types menu was not updated. This commit fixes it.
This update resolves an issue preventing accurate wage calculations within the Chinese payroll module. The fix corrects a domain filter, ensuring that the correct wage types are applied to employee payrolls. This ensures payroll processing is functioning as intended.
Original PR description
Oversight of c2f18f3de7ebaa418ae24b73dd4be7483972bbaf
A recent update altered how Odoo designates the default website based on sequence number. This change caused a test to fail because a newly created website was incorrectly set as the default. This commit resolves the test by adjusting the website sequence number, ensuring the test continues to run successfully.
Original PR description
The community PR connected to this PR changed the website behaviour such that the website with the lowest sequence is considered to be the default one. After this change, `test_helpdesk_team_visibility` fails. This happens because the test creates a website with the lowest sequence number which now immediately becomes the default one. This was not intended, and it breaks the test. This commit fixes the test by using an higher sequence number such that the newly created website does not get set as the default website. Community PR: https://github.com/odoo/odoo/pull/225335 Upgrade PR: https://github.com/odoo/upgrade/pull/9434 task-5028180
This update fixes an issue where payroll reports (specifically the 281.10 PDF) were cutting text in half, making them difficult to read. The changes ensure that data rows remain intact on a single page, resulting in a more professional and easily understandable report layout. This improves the clarity and accuracy of payroll documentation.
Original PR description
The PDF engine cuts text in half when a row hits a page break, making it unreadable. Forced breaks also leave unnatural gaps. This ensures rows stay intact on a single page and allows the document to paginate naturally. task-6316335
This update resolves a minor issue with the Enterprise version of Odoo's VoIP system. Specifically, it adapts the system to ensure proper subscription handling during startup, improving reliability. This change ensures a smoother and more stable experience for users.
Original PR description
Enterprise counter-part. https://github.com/odoo/odoo/pull/270281
This update resolves a problem where the point-of-sale tour was incorrectly proceeding before order preparation data was fully synchronized. This prevented accurate testing and could lead to inconsistent results. The fix ensures preparation synchronization completes before the tour continues, improving the reliability of the testing process.
Original PR description
The `applyBestComboMultiQty` tour was proceeding before the order synchronization and preparation requests had completed. This introduced timing-related inconsistencies in `test_apply_best_combo_multi_qty`, causing assertions to occasionally run against incomplete data. Add the required `waitRequest` steps to ensure preparation synchronization is finished before advancing to the next tour actions. Runbot Error-[939058](https://runbot.odoo.com/odoo/error/939058)
Code cleanup and technical improvements
This update adjusts how SEPA payment versions are managed within Odoo. Previously, all payment method lines on a journal shared a single version, which wasn't flexible enough. Now, the SEPA pain version is moved to the payment method line itself, allowing for more accurate and adaptable payment processing, particularly for different SEPA countries.
Original PR description
Payment methods lines don't always share the same SEPA pain version. Setting that version across all payment method lines on the journal is not flexible enough, so this commit moves that field to the payment method line. Task ID: 6106974
This update ensures that references to the fragment query string functionality are accurate as it's being reorganized within Odoo. This change is part of a larger effort to improve the internal structure of the code and maintain consistency across modules. It ensures the social media integrations continue to function correctly.
Original PR description
The aim of this commit is to keep referencing fragment_to_query_string correctly as it is moved into `http.py`. task-id: 6071808 Forward-Port-Of: odoo/enterprise#121195 Forward-Port-Of: odoo/enterprise#121019
This update enhances the process of printing shipping labels and documents by supporting direct printing via ePOS and Zebra printers, eliminating the need for IoT devices. Additionally, the system has been refactored to reduce code duplication within the stock delivery module, improving efficiency.
Original PR description
We now allow printing Shipping Labels/Documents using ePOS protocol (e.g. EPSON TM-L100) and Zebra ZPL network printers to avoid using IoT. We then moved some the chatter search of documents in `stock_delivery` to avoid duplicating code. see odoo/odoo#248509 task-4599220