Daily updates from Odoo
Friday, February 13, 2026
175 changes
17 changes
Resolved issues and error corrections
This update resolves an issue preventing users from modifying POS Daily Sales Reports (PDIS) when a POS session was active. Now, users can create and edit PDIS regardless of whether there are active orders, improving workflow flexibility. This change ensures consistent reporting capabilities.
Original PR description
Steps to reproduce : 1. Open a POS session 2. Create a pdis with all PoS 3. An error is raised So now, when we creating a new pdis or when there is no ongoing orders in this pdis, we allow to modify it. But if there is ongoing orders, user cannot. task : 5881587 Forward-Port-Of: odoo/enterprise#105736
This update resolves a formatting problem where the total time on timesheets in the list view wasn't displaying correctly after a page refresh. The fix ensures that the total time is formatted consistently, regardless of whether the user is viewing the data in a grid or list format. This improves the accuracy and usability of timesheet reporting.
Original PR description
# Steps to reproduce - Open Timesheets - Go to list view - Refresh page - Total is formatted as regular float instead of time # Cause of the issue The list view uses the `timesheet_uom_timer` widget…
# Steps to reproduce - Open Timesheets - Go to list view - Refresh page - Total is formatted as regular float instead of time # Cause of the issue The list view uses the `timesheet_uom_timer` widget for the `unit_amount` field. While the row entries were formatted correctly since the widget is added to the fields registry in `timesheet_uom_timer.js`, the aggregate (total sum) is not formatted in the same way because the formatters registry is missing that particular widget. Switching to the grid view and going back to the list view would solve the formatting. That is because the `timesheet_uom_timer` widget is added to the formatters registry when loading the grid view (in `timesheet_grid_uom_service.js`). We ensure the formatter is registered globally by patching the `timesheetGridUOMService` outside the grid view context, ensuring consistent aggregate formatting in list view, even after a page refresh. task-5907954 Forward-Port-Of: odoo/enterprise#107203 Forward-Port-Of: odoo/enterprise#107006
This update corrects a display issue in the rental schedule's Gantt view where a product grouping filter reappeared after being removed. The fix removes a conflicting default setting, ensuring the Gantt view behaves as expected and users can consistently control product groupings. This improves the user experience when managing rental schedules.
Original PR description
Versions -------- - 19.0+ Steps ----- 1. Install the Rental and Inventory apps. 2. Go to the rental schedule. 3. Observe the gantt view is grouped by product by default. 4. Remove the product groupby…
Versions -------- - 19.0+ Steps ----- 1. Install the Rental and Inventory apps. 2. Go to the rental schedule. 3. Observe the gantt view is grouped by product by default. 4. Remove the product groupby filter. Issue ----- The product groupby filter reappears. Cause ----- The base gantt view defines `default_group` as product. Additionally, the `sale_stock_renting` module overrides the `sale_renting.action_rental_order_schedule` action to add two default groupby filters: `search_default_groupby_product` and `search_default_groupby_reserved_lot`. This creates conflicting defaults: one from the gantt view directly (groupby product) and another from the context (groupby product and reserved lot). Since lots are disabled by default, the lot groupby filter is ignored. When removing the product filter, the framework falls back to `default_group` and reactivates the product groupby filter. Solution -------- Remove the `default_group` parameter from the gantt view. Ensure all actions using the gantt view define their own defaults via context. opw-5887837 Forward-Port-Of: odoo/enterprise#107008
This update corrects a bug where holiday attest documents incorrectly rounded leave allocations (e.g., 19.5 days became 19 days). The fix changes internal data types to handle decimal values accurately, ensuring correct holiday allocation figures are displayed. This prevents discrepancies in payroll reports.
Original PR description
Bug : allocate a number of holidays that is not an integer (ex : 20.5), then check the holiday attest (shows 20 allocation). The same problem happens if the number of leaves taken is not an integer…
Bug : allocate a number of holidays that is not an integer (ex : 20.5), then check the holiday attest (shows 20 allocation).
The same problem happens if the number of leaves taken is not an integer
Steps : - in the belgian company, create a new employee with a valid contract give an employee 19.5 days of Time Off type leaves.
- on the form view of the employee , click on the action button -> Departure: Notice period and payslip -> and fire the employee.
- now click on action button -> Departure: Holiday Attests, you'll see that the employee has 19 allocated instead of 19.5
Reason : The number of leave_allocation_count and leave_count are defined as integers in HrPayslipEmployeeDepatureHolidayAttestsTimeOffLine, when they are populated, they end up casting the assigned value to an int.
Fix : Create two new float fields leave_count_float and leave_allocation_count_float to replace their corresponding integer fields.
task - https://github.com/odoo/enterprise/commit/5461268c9411d36feac90cd45dcff42aab59599b
Forward-Port-Of: odoo/enterprise#103258This update corrects a discrepancy in the Belgian payroll calculations by incorporating the latest car ATN (acquisition-linked tax number) data up to 2026. This ensures accurate tax calculations for employees using company cars in Belgium, aligning with current tax regulations and improving payroll accuracy.
Original PR description
TaskID: 5932573 Forward-Port-Of: odoo/enterprise#107237
This update resolves an issue where tests were unintentionally executed twice, impacting system performance. The fix ensures tests run only once, streamlining the process and improving overall system stability. This change is a routine maintenance update.
Original PR description
Forward-Port-Of: odoo/enterprise#106911
This update addresses a technical issue preventing accurate report date filtering when using Faketime builds. The fix skips a problematic test case specific to Faketime, ensuring report functionality works correctly for standard builds. Future versions (19.2+) will have a more robust solution.
Original PR description
Faketime doesn't integrate well with our current version of the report date filter. JS date is not frozen, so the filter misbehaves. It's working OK for all other builds. Future versions (19.2+) will probably have another version of the filter which should have a different implementation, solving the problem in another way. Reworked and backported from: odoo/enterprise#101689 Runbot error [link](https://runbot.odoo.com/odoo/error/234624) runbot-234624 Forward-Port-Of: odoo/enterprise#107186 Forward-Port-Of: odoo/enterprise#106172
This update fixes a display issue where tax amounts were incorrectly shown as negative in the tax totals widget for credit notes in Brazil (BR). The fix ensures that tax calculations are accurate, presenting the correct tax amount for financial reporting and reconciliation. This resolves a prior bug impacting financial accuracy.
Original PR description
Currently, when computing taxes for a credit note, the system will show the included tax as negative in the tax totals widget Steps to reproduce: - Setup a BR Company - Setup a product requiring tax ICMS included in price - Create a credit note with the product - Compute taxes Issue: In tax totals widget the tax amount will be reported as negative, even if the tax line balance is correct. opw-5866180 Forward-Port-Of: odoo/enterprise#107177 Forward-Port-Of: odoo/enterprise#106579
This update resolves a minor issue related to the scale certification process for European IoT solutions. It synchronizes a key checksum value following a recent fix implemented in the main Odoo repository. This ensures consistent and accurate certification calculations.
Original PR description
This commit simply updates the expected scale checksum after the fix in the community PR odoo/odoo#248416. Forward-Port-Of: odoo/enterprise#107246
This update resolves an issue where adding components to work orders could trigger a technical error, preventing users from correctly managing their shop floor operations. The fix clarifies how work order moves are linked, ensuring accurate display and preventing duplicate data entries.
Original PR description
### Steps to reproduce: - Enable debug mode (to trigger a traceback rather than a silent error) - In the settings, enable `Work Orders` - Create an MO for a product without a BoM - Add an operation…
### Steps to reproduce: - Enable debug mode (to trigger a traceback rather than a silent error) - In the settings, enable `Work Orders` - Create an MO for a product without a BoM - Add an operation to be performed in a workcenter - Confirm the MO and open the Shop Floor - Enable the workcenter of your operation, switch to it, and click on the three dots at the bottom right of the operation display - Click on `Add component` and add any valid component via the catalog #### > Traceback: `OwlError: Got duplicate key in t-foreach` ### Cause of the issue: The rendering error is raised by the `MrpDisplayRecord` template: https://github.com/odoo/enterprise/blob/51ce336f8dac9ba0a8ca719201640b2829044164/mrp_workorder/static/src/mrp_display/mrp_display_record.xml#L69-L72 Two moves with the same `id` are provided to the template. Which is unexpected since the `moves` getter should not return the same move twice: https://github.com/odoo/enterprise/blob/51ce336f8dac9ba0a8ca719201640b2829044164/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L174-L188 However, neither of the two move pools is well defined. The issue stems from the confusing `operation_id` field, which should rather be `workorder_id`. Currently, the moves associated with the MO are those not linked to an `operation_id` (i.e., not linked to an `mrp.routing.workcenter` from the BoM), whereas they should instead be those linked to a `workorder_id`, representing an operation of the MO: https://github.com/odoo/odoo/blob/0d7e3d4c0ea976e37871ca44a10a442cce7caa85/addons/mrp/models/stock_move.py#L43-L47 Similarly, moves linked to workorders are only those matching the same `operation_id` as the workorder. This can only happen when the workorder is generated from the BoM and therefore has a set `operation_id`, or when both are `False`. In the latter case, all moves unlinked to any `operation_id` are displayed on all operations not generated by the BoM, which is again completely unexpected. In the present case, our operation has not been generated from the bom and hence will fall in both move pulls for the unexpected reason leading to the duplicate key-error. opw-5417887 Forward-Port-Of: odoo/enterprise#106200
This update corrects a calculation error in how mobility budgets are determined for employees in Belgium. The change implements an iterative method to ensure budgets align with legal limits and are appropriately scaled based on employee wages, leading to more accurate payroll processing.
Original PR description
We implement in this PR the iterative computation method of mobility budget. Given an employer cost, we find the wage and mobility budget such that mobility budget amount respect legal constraints of minimum and maximum and rate with respect to wage
This update fixes an issue where invoices sent to DIAN were incorrectly flagged with a warning if the invoice date was within a specific range. The change aligns the invoice date validation with Colombian regulations, allowing for a 6-day window around the current date for invoice creation, ensuring compliance with DIAN requirements.
Original PR description
Currently, an `incorrect warning` message is shown when sending an invoice to `DIAN`, if the invoice date is 6 days before today, even though this date should be considered valid. **Steps to…
Currently, an `incorrect warning` message is shown when sending an invoice to `DIAN`, if the invoice date is 6 days before today, even though this date should be considered valid. **Steps to reproduce:** - Install the `l10n_co_dian` module and switch to the `CO company`. - Go to `Invoicing` and create a new invoice with `taxes`. - Set the `Invoice Date` to 6 days before today. - Click `Confirm` > `Send`, ensure `DIAN` is selected, and `send` the invoice. - Observe the warning message. **Observation:** `The issue date can not be older than 5 days or more than 5 days in the future.` **Root cause:** At [1], the allowed invoice date range is incorrectly computed, using `5 days in the past` and `10 days in the future`. This does not match the Colombian regulations and triggers incorrect validation errors for valid invoice dates. **Fix:** This commit updates the date constraint logic to allow invoices dated up to `6 days before and 6 days after` the current date, in accordance with the DIAN specification described in Anexo Técnico – Documento Soporte No Obligados, page 59, at [3]. <img width="1089" height="120" alt="DIAN" src="https://github.com/user-attachments/assets/408c5ccc-5fed-4585-a81e-dce4ccb98b40" /> [1]: https://github.com/odoo/enterprise/blob/62f59f87a513a86a61f871ca743e7f7b04926a82/l10n_co_dian/models/account_edi_xml_ubl_dian.py#L1086-L1093 [3]: https://www.dian.gov.co/impuestos/factura-electronica/Documents/Anexo-Tecnico-Documento-Soporte-No-Obligados.pdf opw-5482555 Forward-Port-Of: odoo/enterprise#107372 Forward-Port-Of: odoo/enterprise#105763
This update resolves a bug that was preventing users from correctly applying amounts to bank reconciliation lines. The fix ensures that amounts are calculated using the correct currency (amount currency) instead of the balance, improving the accuracy of reconciliation processes. This change impacts the way users can adjust amounts when reconciling transactions.
Original PR description
In this commit: We broke the way the apply amount work, this commit will solve that. For the apply full amount, we modified the field fetch by fetchReconciledLines and also the substraction of the amount currency to use the amount currency and not the balance For the partial, keep it like before we actually take the value of the suspense so it's ok. opw-5925046 Forward-Port-Of: odoo/enterprise#107377
This update ensures the OCR functionality correctly processes receipts, resolving an issue where the 'Digitize document' button wouldn't work when a receipt was manually set. Previously, incorrect tax calculations were occurring on sale receipts. This fix improves the accuracy of receipt processing and ensures OCR works as expected.
Original PR description
Since the OCR is available on receipts (commit a7e9575), the calls to `is_purchase_document`/`is_sale_document`/`is_invoice` need to have the `include_receipts` parameter set to `True` to return an accurate value. This was omitted in the original commit and later fixed in commit 0dc9352, but only for calls to `is_purchase_document`. This commit fixes it for calls to `is_sale_document` and `is_invoice`. The missing parameters caused the following bugs: - OCR not available on receipts, i.e. if the user manually sets the invoice as a receipt, the "Digitize document" button was there, but it wouldn't work. - Purchase taxes would be used instead of sale taxes for sale receipts. These use cases aren't very common, probably why there was no ticket to report it. task-none Forward-Port-Of: odoo/enterprise#107272
This update resolves an issue where customer display URLs weren't consistently being sent to IoT devices when records were updated. The change ensures the correct URL is transmitted, improving the functionality of the IoT integration. This fix was triggered by a bug in the update process.
Original PR description
This PR fixes the customer display url not being sent to the iot box when updating the corresponding record in iot device form view. By replacing onWillSaveRecord by onRecordSaved we ensure that our method is always called ticket-5782927 Forward-Port-Of: odoo/enterprise#106621 Forward-Port-Of: odoo/enterprise#106331
This update resolves an issue where approval feedback wasn't being recorded within Odoo. The recent code changes have corrected this by ensuring feedback is now posted as a message, allowing for accurate tracking of approvals and feedback within the web studio interface. This ensures a smoother workflow for users providing and receiving feedback on approvals.
Original PR description
Approving an approval via an activity with feedback did not work properly as the feedback was never posted. This was due to the consecutive refactoring that broke the feature. After this commit, the feedback is posted as a message opw-5782803 Forward-Port-Of: odoo/enterprise#106185
This update resolves a misleading warning that appeared in the Belgian tax report when negative values were generated from carryover lines. The fix ensures that carryover lines correctly produce positive values, eliminating the unnecessary and confusing warning. This improves the accuracy and reliability of the report.
Original PR description
The Belgian tax report was displaying a warning when a negative amount originated from all the lines even from carryover ones. This warning was misleading, as carryover lines are not supposed to generate a declared negative value. task-5411005 Forward-Port-Of: odoo/enterprise#103046
4 changes
Resolved issues and error corrections
This update corrects a discrepancy in the calculation of car tax (ATN) for employees in Belgium within the Odoo Enterprise system. The update incorporates tax rates and regulations up to 2026, ensuring accurate payroll processing for Belgian businesses. This fix improves compliance and reduces the risk of errors related to car tax deductions.
Original PR description
TaskID: 5932573 Forward-Port-Of: odoo/enterprise#107237
This update resolves an issue where tests were unintentionally run twice within the delivery ups integration module. This improvement ensures more efficient system performance and reduces potential strain on resources. The fix was implemented to maintain smooth and reliable operation of the delivery process.
Original PR description
Forward-Port-Of: odoo/enterprise#106911
This update resolves a bug that prevented users from correctly applying amounts to bank reconciliation lines. The fix ensures that amounts are calculated using the correct currency (amount currency) instead of balance, improving the accuracy of reconciliation processes. This change impacts how users handle both full and partial amount applications.
Original PR description
In this commit: We broke the way the apply amount work, this commit will solve that. For the apply full amount, we modified the field fetch by fetchReconciledLines and also the substraction of the amount currency to use the amount currency and not the balance For the partial, keep it like before we actually take the value of the suspense so it's ok. opw-5925046 Forward-Port-Of: odoo/enterprise#107377
This update resolves a misleading warning appearing in the Belgian tax report. The issue stemmed from a false negative value being generated by carryover lines, which are not intended to produce negative figures. This change ensures the report displays accurate information and avoids unnecessary alerts.
Original PR description
The Belgian tax report was displaying a warning when a negative amount originated from all the lines even from carryover ones. This warning was misleading, as carryover lines are not supposed to generate a declared negative value. task-5411005 Forward-Port-Of: odoo/enterprise#103046
3 changes
Resolved issues and error corrections
This update fixes a discrepancy in the Belgian payroll module (l10n_be_hr_payroll) by incorporating the latest car ATN (acquisition-termination) data up to 2026. This ensures accurate tax calculations and reporting for Belgian businesses using the Odoo Enterprise system. The change corrects a previous data limitation, maintaining compliance with Belgian tax regulations.
Original PR description
TaskID: 5932573 Forward-Port-Of: odoo/enterprise#107237
This update resolves a bug that prevented users from correctly applying amounts during bank reconciliation, specifically for both full and partial amount adjustments. The fix ensures that currency amounts are used accurately, improving the reliability of the reconciliation process.
Original PR description
In this commit: We broke the way the apply amount work, this commit will solve that. For the apply full amount, we modified the field fetch by fetchReconciledLines and also the substraction of the amount currency to use the amount currency and not the balance For the partial, keep it like before we actually take the value of the suspense so it's ok. opw-5925046
This update resolves a bug that prevented users from successfully editing reconciled bank statement lines. The fix initializes necessary variables to avoid an error that occurred when attempting to adjust the balance of a reconciled line. This ensures the bank reconciliation process functions correctly.
Original PR description
Currently, an error occurs when user edits a reconciled line. **Steps to Reproduce([Video](https://drive.google.com/file/d/18dSAsZCl---wfCkMBfyo9LviTqgq3qpK/view)):** - Install the `Accounting`…
Currently, an error occurs when user edits a reconciled line. **Steps to Reproduce([Video](https://drive.google.com/file/d/18dSAsZCl---wfCkMBfyo9LviTqgq3qpK/view)):** - Install the `Accounting` module. - Create an `invoice` with an `invoice line` having an amount greater than zero. - `Confirm` the invoice. - Go to the `Bank journal` and create a `statement line` with the same amount as the invoice. - Click `Reconcile` on that `statement line` and select the newly `created invoice line`. - Click the `pencil icon` to edit the line, enter a `positive amount` in the Balance field, and save. `UnboundLocalError: local variable 'original_base_lines' referenced before assignment` The error occurs because, when a specific condition [1] becomes true, the variables original_base_lines and original_tax_lines are expected to be defined. However, if reconciled_lines_ids is present in move_line_to_edit, these variables are never initialized and are later referenced, causing the UnboundLocalError [2]. This commit ensures that original_base_lines and original_tax_lines are initialized to None, which prevents the error. [1]- https://github.com/odoo/enterprise/blob/fa4bbc20f25ec12c609ebbf37885e48900619de5/account_accountant/models/account_bank_statement.py#L1393-L1394 [2]- https://github.com/odoo/enterprise/blob/fa4bbc20f25ec12c609ebbf37885e48900619de5/account_accountant/models/account_bank_statement.py#L1410-L1411 sentry-7189027839
4 changes
Resolved issues and error corrections
This update corrects a discrepancy in the calculation of car tax (ATN) for employees in the Belgian payroll module. The update incorporates tax rates and regulations up to 2026, ensuring accurate tax deductions for employees with company vehicles. This ensures compliance with Belgian tax laws and accurate payroll reporting.
Original PR description
TaskID: 5932573 Forward-Port-Of: odoo/enterprise#107237
This update strengthens the security of invoices by preventing untrusted accounts from being used in the ‘is_inbound’ process. This change addresses a potential vulnerability and ensures that invoices are processed only with authorized accounts. The fix was implemented as part of a broader testing effort.
Original PR description
fixed some tests see odoo#247954 Forward-Port-Of: odoo/enterprise#106980
This update corrects a checksum issue related to the EU IoT scale certification process. It's a necessary step to ensure accurate reporting and compliance following a recent fix in the main Odoo project. This change maintains the integrity of financial data for European customers.
Original PR description
This commit simply updates the expected scale checksum after the fix in the community PR odoo/odoo#248413. Forward-Port-Of: odoo/enterprise#107241
This update fixes an issue where refund calculations were incorrectly summing line items, leading to errors with orders containing multiple products. The change ensures accurate comparisons between refund amounts and original order totals, preventing refund processing failures. This improves the reliability of the refund process for all users.
Original PR description
Before this commit, the some of individual line amounts were being summed to compare against the original order total when processing a refund. This could lead to incorrect comparisons due to rounding issues, resulting in errors when attempting to refund orders with multiple lines. <img width="626" height="288" alt="image" src="https://github.com/user-attachments/assets/e1bdc126-64d9-4b9a-bd16-2b97ac75e40c" /> opw-5433201 Forward-Port-Of: odoo/enterprise#105301
25 changes
New functionality added to Odoo
This update adds the functionality to generate Aged Partner Balance Reports in the required CSV and PDF formats for the Philippine BIR (Bureau of Internal Revenue). This ensures compliance with BIR regulations and allows for consistent reporting within the company's Book of Accounts.
Original PR description
### [IMP] l10n_ph_reports: add BoA Aged Receivable and Payable Report BIR requires the Aged Partner Balance Reports with CSV and PDF export formats consistent with the rest of Book of Accounts task-[5419912](https://www.odoo.com/odoo/action-4043/5419912)
Enhancements to existing features
This update enhances how Odoo handles requests from search engine robots (like Google). By implementing a static `/robots.txt` file, we prevent Odoo from dynamically rendering templates for these bots, improving performance and security. This aligns with best practices for website accessibility and search engine optimization.
Original PR description
Following the changes in PR \[1]\, this module extends that behavior by introducing a custom `IrHttp` implementation that leverages the new static `/robots.txt` mechanism to avoid runtime template rendering. \[1]\: https://github.com/odoo/odoo/pull/237737 task-[5095225](https://www.odoo.com/odoo/project/974/tasks/5095225)
This update enhances shift planning by allowing multiple resources to be assigned to a single shift record. Previously, each resource needed for an intervention required a separate shift, which is now streamlined for efficiency. This change simplifies team assignments and improves the overall planning process.
Original PR description
This commit converts resource_id field into resource_ids in planning.slot model to allow to assign multiple resources on the same shift since it could happen to send a whole team with some machines to an intervention, it makes more sense to assign them all in the same record instead of creating a shift for each resource needed to an intervention or any other mission to complete. task-5259036
This update strengthens Odoo's Web Studio approval process by introducing child rules for model methods. Previously, bypassing approvals was possible through certain actions. Now, additional rules can be applied to specific methods, ensuring that critical actions are always properly authorized, improving overall data integrity and security.
Original PR description
task-5344534
This update enhances Czech VAT reports by adding optional tags to the VetaD and VetaP sections. These tags align with official Czech country names, ensuring greater accuracy and compliance with reporting requirements. This change improves the reliability of the reports used for tax filings.
Original PR description
This commit adds optional tags to the exports, in the sections VetaD and VetaP. It also adds the corresponding official country names as detailed in the [documentation](https://adisspr.mfcr.cz/pmd/dokumentace/ciselniky/ukazka/zeme), since it does not always match the country names in Odoo. task-5384854
This update introduces a new hierarchical structure for selecting RAG sources, allowing users to manage entire document folders and knowledge article families. This simplifies source creation and synchronization, ensuring content is consistently updated and available for AI applications.
Original PR description
## Summary Previously, only individual files could be selected as sources. This PR introduces **source hierarchies**, allowing users to select and manage entire collections of content as RAG sources.…
## Summary Previously, only individual files could be selected as sources. This PR introduces **source hierarchies**, allowing users to select and manage entire collections of content as RAG sources. Supported hierarchies include Documents folders, and Knowledge articles with parent–child relationships. ## What’s New ### AI Agent Source: Cleanup and Improvements - Simplified the status update flow for sources, ensuring more reliable transitions between "Processing," "Indexed", "Failed" and "Incomplete" states. - Decoupled Knowledge article processing from the `ir_cron_process_sources` to improve performance and provide more immediate feedback during source creation. - Implemented cached URL fetching to reduce redundant requests and introduced standardized error templating for better troubleshooting and translation support. - Introduced sources hierarchies allowing sources' folder structure. ### Documents: Folder Support - Users can now select entire **Documents folders** as RAG sources. - All valid binary documents within selected folders are automatically extracted. - Sources are represented as a **hierarchical structure**, mirroring the folder layout. ### Knowledge Articles: Hierarchical Selection - Introduces a new wizard: **`ai.add.knowledge.articles`**, replacing the previous article selection flow. - Users can select **parent articles** and optionally include all **child articles** via a toggle. - The parent–child structure is preserved in the source hierarchy. ### Source Synchronization (Reprocess / Retry) Source hierarchies can now be synchronized across all source types: - **Documents** - Syncs hierarchy when documents are created or moved within folders. - Content is re-synced if a document is updated or its version changes. - **Articles** - Updates parent–child relationships when articles are created or moved. - Folder sources automatically collapse when parent articles no longer have children. ### UI Improvements - The document selection dialog now supports **folder selection**. - Reuses the same dialog component as the one used in the chatter for consistency. --- **Task ID:** 5153669
This update significantly enhances the Odoo Report Editor by allowing direct editing of the combined report architecture, simplifying XML modifications, and improving the user interface. The changes focus on translation support and a more intuitive workflow for customizing report layouts, leading to a more efficient and user-friendly experience.
This update streamlines the process of creating assets from vendor bills by introducing a new depreciation model and updated account fields. It simplifies asset creation for fixed assets and improves the accuracy of financial reporting, particularly for accounts related to fleet vehicles.
Original PR description
*=account_fiscal_categories_fleet,l10n_lu_reports,l10n_ro_saft This commit applies vendor bill and fixed asset improvements, mainly creating new depreciation model, new asset fields on accounts, and…
*=account_fiscal_categories_fleet,l10n_lu_reports,l10n_ro_saft This commit applies vendor bill and fixed asset improvements, mainly creating new depreciation model, new asset fields on accounts, and new process to create assets from bills. Changes: - New `account.depreciation.model` New `depreciation_model` is created, which contains the asset method, duration, and factors. Previously, the concept `asset model` existed as an asset in `account_asset` with `state` as `model`. The old asset model concept has been removed and consequently the fields and views have been removed from the `account_asset` model. - `account.account` asset changes Asset fields were removed from `account.account` and new fields were added. Previously, the account contained fields: `create_asset` and `asset_model_ids` which were used to indicate how an asset gets created when account is used in a vendor bill. These fields were replaced by `depreciation_model_id`, `asset_depreciation_account_id`, and `asset_expense_account_id`. An asset is created automatically when using account in bill only if these fields are set. These fields can only be set on accounts with type `fixed asset`. The Automation tab has been removed. - Changes to vehicle in accounts A new field `is_vehicle_account` is added to account to indicate if a vehicle is required when using account to create an asset. - New process for creating assets from bills If an account that has a `depreciation_model_id` is used, then it will automatically create and validate an asset with default depreciation model, depreciation account, and expense account as in the fixed asset account. The user has the ability to only change the default depreciation model, before creating the asset, from the invoice line. A new JS custom widget was created to display the fixed asset account, depreciation model, and vehicle in same cell in the invoice lines. These fields are required and used when creating an asset. Every invoice line can create only 1 asset even if the quantity is more than 1. The functionality of multiple assets per line has been removed. - New method A new depreciation method is added: No depreciation, to be used when asset doesn't depreciate. Depreciation model, asset, and account form views were adjusted to make some fields invisible if method is no depreciation. task-5240457
This update enhances the user experience of appointment scheduling and calendar views within Odoo. Key changes include improved reminder settings, a more intuitive Gantt chart display, and the ability to link activities to calendar events. These improvements streamline workflows and provide a better overall user experience.
Original PR description
This PR improves the UX of calendar and appointment with multiple commits: - Commit 1 improves the appointment.type form by allowing modifications of reminders when clicking on their tag. It also…
This PR improves the UX of calendar and appointment with multiple commits: - Commit 1 improves the appointment.type form by allowing modifications of reminders when clicking on their tag. It also improve the UX of the calendar.event forms by requiring resources when the appointment type is schedule based on them, changing the display of a button and adapting the code to modifications done in calendar in the community PR. - Commit 2 improves the UX of the gantt view by changing the date format on the "day" scale and fixing the hotkey of the "New" button. It also improves the calendar view by displaying the share button's messages inside toasters and adapting the code to modifications done in calendar in the community PR. - Commit 3 adapts the appointment code to allow simple and appointment calendar events to have different default alarms. - Commit 4 adds a message in the log's calendar.event when whatsapp-type reminders are sent. - Commit 5 allows appointment calendar events to have activities. Community PR: https://github.com/odoo/odoo/pull/242504 Upgrade PR: https://github.com/odoo/upgrade/pull/9344 Task-5429852
This update enhances the automatic scheduling of tasks when creating projects from project templates. Previously, overlapping task schedules were prevented, leading to potential scheduling conflicts. Now, the system allows for overlapping tasks when using a template, ensuring more flexible and realistic project scheduling.
Original PR description
When a project template has unassigned tasks that are scheduled such that they overlap each other, the auto scheduling algorithm should allow them to overlap when creating a project from that template. Task-5177182
This update enhances the map view by providing better grouping of tasks, improved Google Maps integration, and more accurate location data. It now centers the map on the company location when no tasks are present and displays geolocation information for tasks without addresses, making it easier to visualize related projects.
Original PR description
**Better support of grouping functionalities in the map view.** 2nd PR from a series of PR improving the map view (1st PR: odoo/enterprise#104618) This PR introduces: Geolocation features: - New fallback on the current company when no records available in the map view. - For records with no addresses but with geolocalisation, the geoloc is now specified on the map marker popup Google Maps features: - Modify the logic on the controller Google Maps button to only open records of expanded groups. - New per group Google maps button (only appears on hover) which opens only the group record on Google maps. Routing features: - When routing, hovering over the legs displays the time and duration of each leg. (Duration is temporarily in seconds while waiting for a widget) - Routing is now also available when the data is grouped (one route per group). - Routing when grouped now uses the group marker color, as the route color. Task#5259181
This update clarifies payment states to avoid user confusion and potential overpayments. The 'in_process' state is removed, and new 'paid' and 'reconciled' states are implemented to accurately reflect payment status and financial reconciliation. This ensures accurate financial tracking and reduces the risk of duplicate payments.
Original PR description
The current payment states naming is misleading and creates several functional issues: The in_process label fails to clearly indicate a completed payment. This confusion leads users to pay the same invoice multiple times. Accounting Misalignment: The paid state currently signifies reconciliation rather than payment completion. This naming gap, combined with an abrupt transition from draft to paid, obscures the actual financial status. Lack of Data Integrity and Visibility: Manual validation of reconciliation is too easily accessible, risking inconsistent data. Additionally, the lack of chronological sorting for outstanding payments and missing conversion rates in multi-currency contexts hinders accurate financial tracking.
Resolved issues and error corrections
This update adjusts the tests for the spreadsheet sale management feature to align with a recent update to the Odoo spreadsheet library. This ensures the tests accurately reflect the current functionality and helps maintain the stability of the sale process. The change is a technical update to the testing framework.
This update addresses a technical issue related to how Odoo fetches email data, improving the performance and stability of email-related operations within the Enterprise edition. The change removes a workaround that was impacting query counts, ensuring more efficient email processing. This ultimately leads to a smoother user experience for email functionality.
Original PR description
Update query count. https://github.com/odoo/odoo/pull/221906
This update fixes an issue where icons on delivery buttons were displaying incorrectly due to a technical error in how they were defined. The change ensures consistent and accurate icon rendering across key delivery modules like Easypost, Shiprocket, and Starshipit, improving the user experience. This resolves a visual inconsistency and ensures proper functionality.
Original PR description
*: easypost, shiprocket, starshipit The proper syntax for buttons with icons is to use the icon="" keyword instead of manually defining the font within a class attribute. When it is implemented via…
*: easypost, shiprocket, starshipit The proper syntax for buttons with icons is to use the icon="" keyword instead of manually defining the font within a class attribute. When it is implemented via the class attribute any string attribute on the button appears in some random sarif font instead of the standard odoo text font. Before / After Easypost <img width="256" height="127" alt="image" src="https://github.com/user-attachments/assets/56cae398-ea49-4961-b599-eab493efa02f" /> <img width="301" height="130" alt="image" src="https://github.com/user-attachments/assets/11c7bf47-41c3-4c18-b218-7d61831ae2cb" /> Shiprocket <img width="213" height="101" alt="image" src="https://github.com/user-attachments/assets/caaef053-7209-41e8-a0aa-46e3ba018cd9" /> <img width="217" height="116" alt="image" src="https://github.com/user-attachments/assets/940c753f-06a8-4ce0-95a9-b8c2024aa9eb" /> Starshipit <img width="365" height="141" alt="image" src="https://github.com/user-attachments/assets/861671b8-77d0-44c2-bc27-bb68d638788a" /> <img width="361" height="144" alt="image" src="https://github.com/user-attachments/assets/382deef4-8251-47fc-8ae4-66786da01506" />
This update simplifies the view editor by resetting options to null when a field's widget is changed. Previously, the system retained compatible options, which became unreliable with increasingly specialized widgets. This change improves the stability and predictability of the view editor experience.
Original PR description
/!\ Behaviour change /!\ Historically, when changing a widget on a field via studio, options were kept. This allowed for the user to circle back and keep mostly compatible options between widgets that handle the same field types. That assumption is becoming more and more fragile as field widgets become more and more specialized. After this commit, when changing the widget that handles a field, we reset the options to `null` task-4194461
This update enhances the visual consistency of the Point of Sale (POS) navbar across different Odoo modules (pos_appointment, pos_enterprise, pos_urban_piper). Specifically, it addresses inconsistent button styling, improves appearance in dark mode, and updates the delivery badge and button for a more polished user experience.
Original PR description
*: pos_appointment, pos_urban_piper Before this commit, the POS navbar had inconsistent button styling. Alongside the community commit improving the navbar and buttons hierarchy, this one focus on improving btn-light active state and border color for dark mode, and improving the delivery badge & button. requires: https://github.com/odoo/odoo/pull/248273 task-5905481
This pull request fixes a minor typo – 'Theorical' – to 'Theoretical' within the MRP Workorder module. This ensures consistent terminology across the codebase, improving clarity and preventing future errors. The change is a standard quality assurance update.
Original PR description
Rename the related occurrences in the codebase to maintain consistent terminology and help prevent similar issues in the future. task-5137717
This update resolves an issue preventing LNA (Line Notifications Available) from working correctly for IoT-connected POS printers. The change adjusts how IoT printer data is loaded, ensuring LNA functionality is properly enabled when using IoT printers. This improves the reliability of receiving notifications from these devices.
Original PR description
This commit fixes an issue where LNA was never being enabled for IoT devices in the POS due to an issue caused by the different way the IoT records are loaded in the POS. This commit also changes the LNA checkbox in the POS printer form to a related field of the IoT box's LNA checkbox when an IoT printer is used.
This update enhances the accuracy of invoice processing by shifting from OCR-based partner name matching to relying on layout IDs. Previously, incorrect OCR results could lead to inaccurate partner matches. This change significantly reduces errors and improves the overall reliability of invoice data.
Original PR description
Before this commit, we were using the partner name identified by the OCR on previous documents to help with the matching of the partner on next bills. The intended use case was the following: - User…
Before this commit, we were using the partner name identified by the OCR on previous documents to help with the matching of the partner on next bills. The intended use case was the following: - User parses a bill from "SNCB" with the OCR. - OCR identifies "SNCB" as the supplier, but this vendor is encoded as "Societe Nationale des Chemins de fer Belges" in the database, so it isn't able to match it. - After the user manually sets the proper supplier and validates the bill, it creates a link from OCR partner name "SNCB" to "Societe Nationale des Chemins de fer Belges". - From this link, the OCR knows that when it finds "SNCB" as supplier, it needs to set the vendor "Societe Nationale des Chemins de fer Belge". The issue with this kind of matching is that, if the OCR finds an incorrect vendor name (which is quite frequent unfortunately), it can match completly unrelated partners. Instead, we will now rely solely on the layout ID identified by the OCR to perform this kind of match as it is much more reliable. task-[5340130](https://www.odoo.com/odoo/project/2068/tasks/5340130)
This update automatically activates a cron job that fetches vendor bills based on IRN (Invoice Reference Number) only when the user enables automatic GST e-invoice retrieval. This change ensures that the system doesn't unnecessarily consume resources and improves performance for users who don't require this specific functionality. It's a targeted fix to optimize the process.
Original PR description
The cron to fetch the vendor bill based on IRN is disabled by default and only activates if the user changes the `l10n_in_gstr_activate_einvoice_fetch` to `automatic`. see https://github.com/odoo/upgrade/pull/9423 task-5885482
This update resolves an issue related to how product locations are managed within Odoo. The changes optimize the internal processes for retrieving location data, ensuring more accurate and efficient product tracking. This improves the reliability of inventory and sales operations.
This update adjusts the tests for the spreadsheet sale management feature to align with recent changes to the Odoo spreadsheet library. This ensures the tests accurately reflect the current functionality and helps maintain the stability of the sale process. The change is a minor fix to improve test reliability.
This update reverts a recent change to how call durations are displayed in the Odoo Enterprise system. Previously, call durations were shown in a standard numeric format (e.g., 1:23:43). This fix ensures that call durations are displayed consistently, providing users with the familiar and expected format.
Original PR description
This commit is a followup of odoo/enterprise#102439 where a new formatting of duration has been introduced. This formatting doesn't fit for the voip usecase, so this commit forces the "numeric" display, which was the one used previously. In other words, call durations will be displayed like "1:23:43" as before.
Code cleanup and technical improvements
This update streamlines how knowledge articles are loaded, enhancing their speed and responsiveness. The changes consolidate data and batch requests, reducing unnecessary overhead and improving the overall user experience. This refactoring removes custom overrides that were previously slowing down the system.
Original PR description
Remove custom overrides as requests are now batched by default in mail. task-4685447 https://github.com/odoo/odoo/pull/248311 Example: knowledge: grouped threads of the same article (even with all overrides removed) <img width="399" height="858" alt="image" src="https://github.com/user-attachments/assets/f59fd91a-4404-4e7c-9228-3308ba306d3b" />
15 changes
Resolved issues and error corrections
This update corrects a bug where holiday attest reports incorrectly rounded leave allocations (e.g., 19.5 days became 19 days). The fix replaces integer fields with float fields to accurately represent leave balances, ensuring correct reporting of holiday entitlements. This improves payroll accuracy for Belgian employees.
Original PR description
Bug : allocate a number of holidays that is not an integer (ex : 20.5), then check the holiday attest (shows 20 allocation). The same problem happens if the number of leaves taken is not an integer…
Bug : allocate a number of holidays that is not an integer (ex : 20.5), then check the holiday attest (shows 20 allocation).
The same problem happens if the number of leaves taken is not an integer
Steps : - in the belgian company, create a new employee with a valid contract give an employee 19.5 days of Time Off type leaves.
- on the form view of the employee , click on the action button -> Departure: Notice period and payslip -> and fire the employee.
- now click on action button -> Departure: Holiday Attests, you'll see that the employee has 19 allocated instead of 19.5
Reason : The number of leave_allocation_count and leave_count are defined as integers in HrPayslipEmployeeDepatureHolidayAttestsTimeOffLine, when they are populated, they end up casting the assigned value to an int.
Fix : Create two new float fields leave_count_float and leave_allocation_count_float to replace their corresponding integer fields.
task - https://github.com/odoo/enterprise/commit/5461268c9411d36feac90cd45dcff42aab59599bThis update fixes an issue where multi-employee payslips were defaulting to the language of the first employee. The change ensures that each employee's payslip is printed in their correct, selected language, improving accuracy and user experience. This resolves a previous bug related to date formatting and caching.
Original PR description
Steps to detect the bug: - Install payroll - Create more than one employee with different payslip languages - Add a contract for the employees - Payroll -> Payslip -> Pay run - Create a new payroll for more than one employee - Select all the employees in the pay run - Click 'print' button - Dates for the employees that are not the first one are in the language of the first employee This commit will allow the user to create multiemployee payslips maintaining the correct selected payslip language for each one of them. The issue was caused by a cache dictionary that used only the date and date format as a key, failing to include the user language. This led the system to reuse the first translated date for all subsequent employees. opw-5865260 Forward-Port-Of: odoo/enterprise#106575
This update fixes an issue where invoices sent to DIAN or Carvajal were incorrectly flagged with a warning if the invoice date was within a specific range. The change adjusts the allowed date range to align with Colombian regulations, ensuring invoices are properly processed and preventing unnecessary errors. This improves the reliability of invoice submission.
Original PR description
Currently, an `incorrect warning` message is shown when sending an invoice to `DIAN` or `Carvajal`, if the invoice date is 6 days before today, even though this date should be considered valid.…
Currently, an `incorrect warning` message is shown when sending an invoice to `DIAN` or `Carvajal`, if the invoice date is 6 days before today, even though this date should be considered valid. **Steps to reproduce:** - Install the `l10n_co_dian` module and switch to the `CO company`. - Go to `Invoicing` and create a new invoice with `taxes`. - Set the `Invoice Date` to 6 days before today. - Click `Confirm` > `Send`, ensure `DIAN` is selected, and `send` the invoice. - Observe the warning message. **Observation:** `The issue date can not be older than 5 days or more than 5 days in the future.` **Root cause:** At [1] and [2], the allowed invoice date range is incorrectly computed, using `5 days in the past` and `10 days in the future`. This does not match the Colombian regulations and triggers incorrect validation errors for valid invoice dates. These checks are intentionally implemented in both modules because they apply at different stages and for different providers: 1) `l10n_co_dian` When `DIAN: Free service` is selected as the `Electronic Invoicing Provider` from the `Invoicing Settings`, the date constraint is evaluated at `send time`. After the invoice is created, the validation is performed when the user sends the invoice to `DIAN`, and a blocking error is raised as a `UserError` if the invoice date is outside the allowed range. 2) `l10n_co_edi` When `Carvajal` is selected as the `Electronic Invoicing Provider`, the same rule is checked `at the confirmation time` of the draft invoice. In this case, the validation results in a `chatter message`, not a blocking send-time error. **Fix:** This commit updates the date constraint logic to allow invoices dated up to `6 days before and 6 days after` the current date, in accordance with the DIAN specification described in Anexo Técnico – Documento Soporte No Obligados, page 59, at [3]. <img width="1089" height="120" alt="DIAN" src="https://github.com/user-attachments/assets/408c5ccc-5fed-4585-a81e-dce4ccb98b40" /> [1]: https://github.com/odoo/enterprise/blob/2217827c0989fc5fc8d52a6a9b6f6c6d00b9773f/l10n_co_dian/models/account_edi_xml_ubl_dian.py#L672-L679 [2]: https://github.com/odoo/enterprise/blob/913e55abc4a9aa58509aa2a60d378fb552de554d/l10n_co_edi/models/account_edi_format.py#L574-L603 [3]: https://www.dian.gov.co/impuestos/factura-electronica/Documents/Anexo-Tecnico-Documento-Soporte-No-Obligados.pdf opw-5482555 Forward-Port-Of: odoo/enterprise#107348 Forward-Port-Of: odoo/enterprise#105763
This update fixes a discrepancy in the Belgian payroll system by updating the Annual Tax Notification (ATN) data up to 2026. This ensures accurate tax calculations for employees with company cars in Belgium, complying with current tax regulations. The change corrects a potential error impacting financial reporting and employee compensation.
Original PR description
TaskID: 5932573 Forward-Port-Of: odoo/enterprise#107237
This update ensures the OCR functionality correctly processes receipts, addressing a previous bug where it wasn't available. Previously, setting an invoice as a receipt wouldn't trigger the 'Digitize document' button. This fix ensures accurate tax calculations and proper OCR processing for receipt documents, resolving issues with incorrect tax application and preventing the digitization button from working.
Original PR description
Since the OCR is available on receipts (commit a7e9575), the calls to `is_purchase_document`/`is_sale_document`/`is_invoice` need to have the `include_receipts` parameter set to `True` to return an accurate value. This was omitted in the original commit and later fixed in commit 0dc9352, but only for calls to `is_purchase_document`. This commit fixes it for calls to `is_sale_document` and `is_invoice`. The missing parameters caused the following bugs: - OCR not available on receipts, i.e. if the user manually sets the invoice as a receipt, the "Digitize document" button was there, but it wouldn't work. - Purchase taxes would be used instead of sale taxes for sale receipts. These use cases aren't very common, probably why there was no ticket to report it. task-none
This update resolves an issue where tests were unintentionally executed twice within the delivery ups integration module. This improvement ensures more efficient testing and reduces potential performance impacts. The fix focuses on streamlining the testing process for a more reliable system.
Original PR description
Forward-Port-Of: odoo/enterprise#106911
This update resolves a problem where the report date filter misbehaved in faketime build environments. The fix skips tests specifically for faketime builds, as the issue is isolated to this environment and will be addressed in future versions. This ensures reports function correctly for all users.
Original PR description
Faketime doesn't integrate well with our current version of the report date filter. JS date is not frozen, so the filter misbehaves. It's working OK for all other builds. Future versions (19.2+) will probably have another version of the filter which should have a different implementation, solving the problem in another way. Reworked and backported from: odoo/enterprise#101689 Runbot error [link](https://runbot.odoo.com/odoo/error/234624) runbot-234624 Forward-Port-Of: odoo/enterprise#107186 Forward-Port-Of: odoo/enterprise#106172
This update resolves an issue where users with limited inventory access experienced an access error when validating recurring product deliveries. The fix addresses a permissions problem preventing access to necessary invoice data, ensuring these deliveries can be processed correctly.
Original PR description
When a user that only has inventory access right validate a delivery that has an recurring product it will trigger an access right error. Steps to reproduce: ------------------- * Install sales,…
When a user that only has inventory access right validate a delivery that has an recurring product it will trigger an access right error. Steps to reproduce: ------------------- * Install sales, inventory, subscription, * Create a subscription product * Create and validate a sale order with this product and a recurring plan * Connect to Odoo with an user that only has inventory user right * Validate the delivery -> Access Error Observation: ------------- When we validate the delivery,we call button_validate that will call [_action_done](https://github.com/odoo/odoo/blob/93fa6d9fff63534cfa9251e21fc82797d8b83468/addons/stock/models/stock_picking.py#L1427) During this we try retrieve invoices information [here](https://github.com/odoo/enterprise/commit/b07b1c47c97bb6d6da9fa61dacb5cba66aff2a16#diff-dbf7b40a6942fbcc81ebc4c3009a8a37a5a620cffac74889bd0ff2bccd52b1e3R30-R36). The issue is that this user doesn't have access right to several records: * sol.order_id.invoice_ids -> sale.order.invoice_ids * sol.order_id.last_invoice_date -> sale.subscription.plan opw-5869446
This update resolves a bug that prevented users from correctly applying amounts to bank reconciliation lines. The fix ensures that amounts are calculated using the correct currency (amount currency) rather than the balance, improving the accuracy of reconciliation processes. This change impacts the account reconciliation functionality.
Original PR description
In this commit: We broke the way the apply amount work, this commit will solve that. For the apply full amount, we modified the field fetch by fetchReconciledLines and also the substraction of the amount currency to use the amount currency and not the balance For the partial, keep it like before we actually take the value of the suspense so it's ok. opw-5925046 Forward-Port-Of: odoo/enterprise#107377
This update resolves an error that occurred when users disabled the 'Partners' filter in the Partner Ledger report. The fix ensures the report functions correctly regardless of whether partners are selected, preventing a system crash. This improves usability for all users.
Original PR description
Currently, an error occurs when the user opens the Partner Ledger report. **Steps to Reproduce ([Video](https://drive.google.com/file/d/1nM6WZW0_knAoDZP0G3VZsv1RMxtY5ZEI/view)):** - Install the…
Currently, an error occurs when the user opens the Partner Ledger report. **Steps to Reproduce ([Video](https://drive.google.com/file/d/1nM6WZW0_knAoDZP0G3VZsv1RMxtY5ZEI/view)):** - Install the `Accounting` module. - Go to `Accounting Reports` (in developer mode). - Open the `Partner Ledger report`. - Go to `Options and disable Partners`. - Now navigate to `Reporting > Partner Reports > Partner Ledger`. `KeyError: 'partner_ids'` When the user disables the Partners filter, the partner_ids key is not included in the report options. Later, when the report is opened, the system tries to add amounts from move lines without a partner and, after [this commit], attempts to access partner_ids. Since partner_ids is not present, an error is raised [1]. similar error also occurs here [2]. This commit ensures that when filter_partner is disabled, opening the report works the same way as when no partner is selected by default. [this commit]: https://github.com/odoo/enterprise/commit/2b429ec8b019df2983144dfd31193cfbd2cfd1ad [1]- https://github.com/odoo/enterprise/blob/7837a4497759dc9dd75aeac30083266798c5ce59/account_reports/models/account_partner_ledger.py#L406 [2]- https://github.com/odoo/enterprise/blob/7837a4497759dc9dd75aeac30083266798c5ce59/account_reports/models/account_partner_ledger.py#L550 sentry-7138579048
This update resolves an issue where rental orders were failing due to an incorrect customer name being used. The fix ensures that the system uses the customer's `display_name` instead, which is a reliable and consistent field, preventing errors and improving order processing. This ensures accurate customer information is displayed in rental schedules.
Original PR description
Steps to produce: --- - Install `sale_renting` and `contacts` modules. - Go to contact and open `yourcompany` record. - Add a new contact of type Delivery and save (leave the name empty). - Go to…
Steps to produce: --- - Install `sale_renting` and `contacts` modules. - Go to contact and open `yourcompany` record. - Add a new contact of type Delivery and save (leave the name empty). - Go to Rental > New Order. - Select YourCompany, Delivery as the customer. - Add a rental product and confirm the order. - Open the Schedule view. Traceback: --- `TypeError: sequence item 0: expected str instance, bool found`. Root cause: --- - At [1], the system tries to use the customer's name when computing the display name. However, in this case, the delivery contact has no name, resulting in a False value. This False value is then included in the description list, causing the TypeError when joining the sequence. Solution: --- - Use the partner's `display_name` instead of `name`. The `name` field can be `False` in some cases. The `display_name` field is a computed field that always provides a valid, formatted string by using fallback values such as the company name, parent name, or contact type. This ensures consistency and prevents errors [1] https://github.com/odoo/enterprise/blob/f5fea1d7b40e42b7bc1c323cc9613b1aa347da09/sale_renting/models/sale_order_line.py#L61 opw-5914084 ---
This update enables users to delete orderlines when using the LNE certified scale module in Point of Sale. Importantly, the system still prevents manual quantity adjustments beyond zero, ensuring accurate inventory tracking. This improves operational efficiency for businesses utilizing the certified scale solution.
Original PR description
This PR allows the user to delete PoS orderline when using LNE certified scale module while still forbidding to manually set quantity to anything other than 0
This update resolves an issue where the number of rental products that could be grouped on the Gantt chart was limited. The fix adjusts a technical setting to allow for a larger group expansion, ensuring that more rental products can be displayed and managed effectively. This improves the usability of the rental scheduling feature.
Original PR description
Versions -------- - 19.0+ Steps ----- 1. Create more than 30 rental products. 2. Override or raise `group_limit` on the `sale_renting.sale_order_line_gantt_schedule` view to 40 (>= 30). 3. Open the rental schedule and group by products. Issue ----- Only 21 products expand even when the limit is increased. Cause ----- Commit 9010416881857c5b810a56e74db04a5fcd869f63 added a hard limit to the search expanding product groups, based on the gantt default limit of 20. When the gantt limit is increased, the Python limit remains. Solution -------- Increase the Python-side limit to what it was before 9010416881857c5b810a56e74db04a5fcd869f63, i.e. 80, which is the default limit at the action level. opw-5887837
This update resolves a misleading warning appearing in the Belgian tax reports. The issue stemmed from a false negative value being generated by carryover lines, which are not intended to produce negative values. This change ensures the reports accurately reflect financial data.
Original PR description
The Belgian tax report was displaying a warning when a negative amount originated from all the lines even from carryover ones. This warning was misleading, as carryover lines are not supposed to generate a declared negative value. task-5411005 Forward-Port-Of: odoo/enterprise#103046
Miscellaneous changes
6 changes
New functionality added to Odoo
This update introduces a new feature that allows other Odoo modules to dynamically adjust timesheet values within the helpdesk timesheet wizard. This improves the flexibility of time tracking and ensures timesheets accurately reflect the work performed across different departments. It allows for more precise reporting and integration with other business processes.
Original PR description
Add a hook in helpdesk_timesheet timer wizard for other modules to modify timesheet values.
Resolved issues and error corrections
This update strengthens invoice security by preventing untrusted accounts from being used in 'is_inbound' invoices. The fix addresses a vulnerability that could have allowed unauthorized access. It involved updating and running tests to ensure the change is effective.
Original PR description
fixed some tests see odoo#247954 Forward-Port-Of: odoo/enterprise#106980
This update optimizes the MPS report to handle large production schedules more efficiently. By reducing unnecessary data retrieval and memory usage, the report now runs faster and avoids errors, particularly when dealing with complex inventory scenarios. This results in a smoother and more reliable experience for users.
Original PR description
Problem: When running the MPS report on a large number of production schedules, if the associated number of stock moves is high, the _get_moves_and_date method can cause a memory error. Solution: We…
Problem:
When running the MPS report on a large number of production schedules, if the associated number of stock moves is high, the _get_moves_and_date method can cause a memory error.
Solution:
We will fetch only the necessary fields to reduce queries and memory usage and set prefetch_fields=False to further reduce memory usage.
Benchmarks:
Run locally on a dupe of customer's db.
Time/queries measured by requests to /get_mps_view_state Memory measured using memray on method get_production_schedule_view_state()
<table>
<tr>
<th rowspan="2"># of Production Schedules</th>
<th colspan="3">Before</th>
<th colspan="3">After</th>
</tr>
<tr>
<th>Time</th>
<th># of Queries</th>
<th>Memory usage</th>
<th>Time</th>
<th># of Queries</th>
<th>Memory usage</th>
</tr>
<tr>
<td>20</td>
<td>22.846s</td>
<td>1,379</td>
<td>882.0MB</td>
<td>8.046s</td>
<td>1,180</td>
<td>103.4MB</td>
</tr>
<tr>
<td>300</td>
<td>41.098s</td>
<td>6,297</td>
<td>1.0GB</td>
<td>43.694s</td>
<td>5,732</td>
<td>363.5MB</td>
</tr>
<tr>
<td>1000</td>
<td>N/A (MemoryError)</td>
<td>N/A (MemoryError)</td>
<td>>2GB</td>
<td>88.416s</td>
<td>22,629</td>
<td>1.1GB</td>
</tr>
</table>
Average memory usage reduction: 75%
opw-5225472This update fixes an issue where tags and followers weren't carried over when renewing subscriptions. Now, tags added to a subscription will be included on the renewed version, and followers are correctly associated. This ensures consistent tracking and management of subscriptions.
Original PR description
This commit is a backport of https://github.com/odoo/enterprise/commit/245759ef82250a8eb32f38853e5c5f6aac841823 and https://github.com/odoo/enterprise/commit/a35d64133cc3c598c66fcadc2310b0118a678424.…
This commit is a backport of https://github.com/odoo/enterprise/commit/245759ef82250a8eb32f38853e5c5f6aac841823 and https://github.com/odoo/enterprise/commit/a35d64133cc3c598c66fcadc2310b0118a678424.
## Issue
When renewing a subscription, the tags and followers are not copied from the original subscription to the new one.
## Steps to reproduce
1. Install *Subscriptions* (`sale_subscription`)
2. Create a confirm a subscription S
- Any *Customer*
- Any *Recurring Plan*
- Any Product
- In the *Other Info* tab, add a tag T
3. There should be two followers on the subscription S: the creator of the subscription, and the customer. If it is not the case, add at least one follower.
3. Create and confirm an invoice for subscription S
4. Back on the subscription S, click *Renew*
5. **The tag T is missing on the new subscription. Also, the followers were not copied from subscription S.**
## Cause & Fix
### Tags
In `SaleOrder._prepare_upsell_renew_order_values`, tags are not part of the `values` generated when renewing a subscription:
https://github.com/odoo/enterprise/blob/a650fb74fd79965a6f0e441e61d8977c599057e6/sale_subscription/models/sale_order.py#L1149-L1171
They were added by https://github.com/odoo/enterprise/commit/245759ef82250a8eb32f38853e5c5f6aac841823:
https://github.com/odoo/enterprise/blob/245759ef82250a8eb32f38853e5c5f6aac841823/sale_subscription/models/sale_order.py#L1173-L1175
### Followers
Similarly to the tags, followers were not added/subscribed to the subscription when generating the renewed subscription. This was fixed by https://github.com/odoo/enterprise/commit/a35d64133cc3c598c66fcadc2310b0118a678424, by creating and calling the `_subscribe_followers_to_new_order(order)` after creating the new subscription (`order`):
https://github.com/odoo/enterprise/blob/a35d64133cc3c598c66fcadc2310b0118a678424/sale_subscription/models/sale_order.py#L956-L958
https://github.com/odoo/enterprise/blob/a35d64133cc3c598c66fcadc2310b0118a678424/sale_subscription/models/sale_order.py#L2147-L2157
opw-5478071This update corrects a bug in the timesheet approval reminder email. The email was referencing an outdated action, which caused it to fail. This change ensures the approval reminder email functions correctly, prompting timely approvals for timesheets.
Original PR description
### Issue: The action used in the ` timesheet approval reminder` email template refair to a non existing action. ### Cause of the issue: The issue has been introduced in…
### Issue: The action used in the ` timesheet approval reminder` email template refair to a non existing action. ### Cause of the issue: The issue has been introduced in [1](b56e355c400c874f7cd9c3174e2253ad5769a461) b56e355c400c874f7cd9c3174e2253ad5769a461 Starting from 17.3 the actions `action_timesheet_previous_week` and `action_timesheet_previous_month` have been removed and merged in a single action `timesheet_grid_to_validate_action`. See [2](7040535ffe2c08d0d286cfccbaf4cc7f81f18443) 7040535ffe2c08d0d286cfccbaf4cc7f81f18443 However, while [2](7040535ffe2c08d0d286cfccbaf4cc7f81f18443) correctly replaced the usage of both actions used in the template as `action_xml_id`: https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L209-L221 https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/data/mail_template_data.xml#L43-L45 The forward port of [1](b56e355c400c874f7cd9c3174e2253ad5769a461) replaced it with the deleted action: https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L161-L171 https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L193-L198 opw-5890269
This update enables users to remove line items from Point of Sale (PoS) orders when the LNE certified scale module is in use. Importantly, the system still prevents manual quantity adjustments beyond zero, ensuring data accuracy for certified transactions. This improves usability for users relying on the certified scale.
Original PR description
This PR allows the user to delete PoS orderline when using LNE certified scale module while still forbidding to manually set quantity to anything other than 0
1 change
Resolved issues and error corrections
This update resolves an issue where DHL shipping rate requests failed when submitted late in the day. The fix adds a 'next business day' flag to the request, ensuring rates are calculated correctly and preventing errors related to unavailable pickup dates. This improves the reliability of DHL shipping calculations.
Original PR description
Before this commit, there was an issue when trying to get the rates for DHL shipping late in the day. The issue happened because `plannedShippingDate` fell outside of the working hours. This commit adds the nextBusinessDay flag for the rating request to avoid the error. Error: ``` Product not found 996: The requested product(s) not available for the requested pickup date. Process ID associated for this transaction') ``` opw-5393684