Daily updates from Odoo
Saturday, August 1, 2026
13 changes · master
New functionality added to Odoo
Odoo now includes a native ShipStation integration, giving businesses access to a broader range of shipping carriers and fulfillment options from within Odoo. This reduces reliance on manual shipping workflows or third-party connectors and supports key needs such as label generation, tracking, and broader US carrier coverage.
Original PR description
ShipStation is a cloud-based shipping and order-fulfillment platform that centralizes order management, processing, and shipping. It integrates with major e-commerce marketplaces (Amazon, eBay, Shopify, WooCommerce, Etsy) and connects to leading US carriers (USPS, UPS, FedEx, DHL). Odoo's current shipping integrations are limited to specific carriers and do not cover the broad range supported by ShipStation. Without native integration, businesses must rely on manual processes or third-party connectors that lack full functionality for shipping label generation and tracking management. Why another shipping aggregator alongside EasyPost and Sendcloud: - Market share: ShipStation has significantly more customers in the US than both other providers. - Freight support: EasyPost does not support freight. Since ShipStation merged into the Auctane conglomerate, their API covers freight, LTL, and flatbed trucking carriers. task-5185679 Forward-Port-Of: odoo/enterprise#111891
Enhancements to existing features
The Documents button on a company or contact now shows documents linked to the full partner hierarchy, including child contacts such as branches or employees. This gives users a more complete view and a more accurate document count from the partner record.
Original PR description
Previously, the Documents smart button on a partner record only displayed documents directly linked to that specific partner. For a parent company, this meant documents associated with its child contacts (branches, employees, etc.) were not visible, and the 'document_count' was inaccurate. This commit implements hierarchy-aware behavior: - The smart button now displays all documents related to the partner hierarchy (parent and children). - The 'document_count' is updated to reflect the total number of documents across the entire hierarchy. Task-6343919
Bank reconciliation now allows a small 3% difference when invoice and bank transaction currencies differ. This helps account for exchange rate fluctuations and reduces unnecessary manual adjustments during reconciliation.
Original PR description
When doing a reconciliation while having a different currency between the invoice and the bank transaction allow a 3% tolerance to compensate the currency exchange rate. task-6143815
This update aligns Field Service sales flows for stock and timesheet products with recent platform changes. It helps keep product catalog, stock tracking, and timesheet-related sales behavior consistent and reliable for users after the underlying community update.
Original PR description
*= stock, timesheet Community PR: - https://github.com/odoo/odoo/pull/257853 task-5942647
Sales teams can now follow up with shoppers who leave items in their cart using WhatsApp, in addition to email. A new setting lets businesses enable this channel and choose the message template, helping improve cart recovery through a more immediate communication option.
Original PR description
This PR allows users to receive a follow-up for their cart via WhatsApp. Previously, only an email follow-up was possible. A new setting parameter allows enabling WhatsApp in addition to emails. Community PR: https://github.com/odoo/odoo/pull/251790 Upgrade PR: https://github.com/odoo/upgrade/pull/9607 tasks-5404823
The rental dashboard has been refined to focus on the most useful quotation and rental status categories, including Today, Pickups, Returns, Late, To Confirm, and To Invoice. Users can now select several dashboard items at once, even when a category has no current records, making it easier to combine filters and review rental work more efficiently.
Original PR description
This change improves the rental dashboard by focusing on quotation statuses. The dashboard now includes the following items: Today, Pickups, Returns, Late, To Confirm, and To Invoice. Additionally, users can now select multiple dashboard items to combine their filters, including items with a count of 0. task-6354117
Belgian payroll bicycle reimbursement amounts are updated for the rates effective October 1, 2026. This ensures payroll calculations use the new €0.32 per kilometer rate and €12.80 daily tax-exempt limit.
Original PR description
This PR updates the Belgian bicycle reimbursement rates to reflect the amounts applicable from October 1, 2026. ### Changes - Increase the bicycle reimbursement rate from the previous amount to €0.32/km. - Increase the maximum daily tax-exempt reimbursement to €12.80/day. These values are aligned with the latest Belgian regulations and are required for payroll calculations from October 1, 2026. Task-6385742 Forward-Port-Of: odoo/enterprise#126116 Forward-Port-Of: odoo/enterprise#124481
Resolved issues and error corrections
The AI call debrief timeline now correctly accepts transcript line data after a framework update changed how screen data is defined. This prevents missing transcript details in call summaries and keeps the AI-assisted debrief view working as intended.
Original PR description
Prior to this commit, the CallDebriefTimeline component in mail defined its props schema inside setup() using OWL 3's props() hook. However, the AI override in enterprise still used the legacy OWL 2 static class property format to extend the schema with the 'transcriptLines' prop. Because of that new prop was simply skipped. This commit refactors the CallDebriefTimeline in odoo to export its props schema as 'callDebriefTimelineProps'. The AI patch in enterprise now imports and expands it. task-6376518 **community counter part https://github.com/odoo/odoo/pull/275355**
The timesheet grid now safely handles away-time entries when no unmatched activity group is available. This prevents an error from interrupting users while reviewing or processing timesheet assistant events.
Original PR description
Before this commit, when the unmatched group is not found in events before processing afk event, a traceback occurs saying `Cannot read properties of undefined (reading 'Away (afk status 1)')` This commit moves the code checking the group key exists in `this.state.grouped` after processing afk event and before adding the afk event in unmatched group. Forward-Port-Of: odoo/enterprise#124251 Forward-Port-Of: odoo/enterprise#123452
This change removes a previous fix that was only relevant to an older Odoo version and should not have been carried forward. It helps avoid unexpected errors when users use quick create during bank reconciliation in the Accounting app.
Original PR description
This commit https://github.com/odoo/enterprise/commit/e559d9f5acbd176792db0dedc4e1f0cad7271457 fixed a problem only happening in 19.0. The commit shouldn't have been forward ported. no task id Forward-Port-Of: odoo/enterprise#126039
The German DATEV general ledger export now calculates foreign currency exchange rates in the direction expected by DATEV and rounds them to six decimal places. This helps exported accounting files match DATEV requirements and avoids overly long or incorrect rate values.
Original PR description
### Steps to Reproduce: 1. Activate l10n_de 2. Navigate to the General Ledger and export the "Datev DATA" 3. Column D, "Kurs," is incorrect ### Description of the issue/feature this PR addresses:…
### Steps to Reproduce: 1. Activate l10n_de 2. Navigate to the General Ledger and export the "Datev DATA" 3. Column D, "Kurs," is incorrect ### Description of the issue/feature this PR addresses: **Issue:** DATEV documentation states that the column for "Kurs" should be the ratio of WKZ-Umsatz : WKZ-Basisumsatz, which is Foreign : Base Currency. Additionally, all sample files show this column's values being rounded to 6 decimal places. Currently, when Odoo exports the general ledger as DATEV data, there is no rounding of decimal places and the formula does base / foreign amount, `line_amount / line_amount_currency`. **Solution:** In the `datev_export_csv.py` file, the relevant method is called `_l10n_de_datev_get_csv()`. In there, we can fix the line to round the value of `line_amount_currency / line_amount` to 6 decimal places. ### Current behavior before PR: Exporting the general ledger as DATEV data currently gives the reverse foreign currency rate and fails to round to 6 decimal places, which causes some values to be extremely long. ### Desired behavior after PR: The csv files should output the correct rate and be rounded appropriately. **Releted Documentation:** https://developer.datev.de/en/file-format/details/datev-format/format-description/booking-batch opw-6366276s Forward-Port-Of: odoo/enterprise#125097
The point-of-sale pricer now recalculates a product variant's On Sale Price immediately when its cost changes under cost-based pricelists. This prevents outdated prices from appearing after the first update, helping businesses keep displayed sale prices accurate.
Original PR description
When we create a product variant and have a pricelist which is based on the cost price, and change the cost price, the on_sale_price doesn't update correctly. It gets delayed by one update because the product._origin isn't getting updated with the new onchanged value. Steps to Reproduce: 1.Create a pricelist and add a line with "formula" price type, and based on "cost", 2.Create a product variant, and add the pricelist just created. 3.Change the "Cost". The "On Sale Price" updates based on the value before. To fix the issue, we need to update the product._origin for standard_price just like the lst_price before computing the on_sale_price opw-5947995 Forward-Port-Of: odoo/enterprise#122391 Forward-Port-Of: odoo/enterprise#119470
Audit reports now use the company selected for the report instead of defaulting to the user's main company. This ensures the correct company address appears in accounting report headers when generating audit reports for multiple companies.
Original PR description
When adding the accounting reports to the audit report, we browse the reports with the request's environment which is defaulting to the user's main company. As a result, the company's address displayed in the reports' header is not correct if we generate the audit report for any other company with a different address. https://github.com/odoo/enterprise/blob/aaab137897e6ad794247470e48d5ea91382577a3/account_reports/data/pdf_export_templates.xml#L85 We propose to inject the correct company in the report's environment. opw-6373956 Forward-Port-Of: odoo/enterprise#125125