Tuesday, August 19, 2025
83 changes
New functionality added to Odoo
The Adam Equipment scale driver is now available as a separate module and must be enabled explicitly in Point of Sale settings. This prevents unrelated serial devices from being mistakenly detected as scales, reducing setup confusion for customers using IoT boxes and FDM devices.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/221326 Upgrade PR: https://github.com/odoo/upgrade/pull/8142 Before this commit, the Adam Equipment serial scale driver was included by default on the IoT box. However, this causes issues as there is no way to detect the presence of one of these scales automatically. This caused any unidentified serial device to be registered as an Adam scale, leading to much confusion with customers, especially regarding setting up an FDM. After this commit, the Adam driver is moved into its own module, and a checkbox added to the PoS settings to enable it. This way, only customers who actually need the driver will get it, and everyone else can benefit from not having it wrongly detect devices. task-4954021
Enhancements to existing features
Subscriptions now return to active status when their invoice is paid, including payments made by bank transfer or other manual methods. This prevents paid customers from remaining incorrectly marked as churned, while still respecting the allowed automatic closing period.
Original PR description
Before: - A subscription is reopened only when a customer pays through the portal. - Manual payments do not reopen the subscription. - invoice is paid but subscription remains churned. After: - Subscriptions now reopen when invoice paid through bank transfer. - Additionally, reopening is the subscription will only reopen if the next_invoice_date is within the allowed automatic closing limit (next_invoice_date >= today - automatic closing limit). Impact: - Paid invoices now always bring the subscription back to active status task-4277444 Forward-Port-Of: odoo/enterprise#92367 Forward-Port-Of: odoo/enterprise#73136
Resolved issues and error corrections
Expense reports created from uploaded receipts can once again have their names filled in automatically by OCR. This prevents users from being left with generic “Untitled Expense” labels and improves test coverage to avoid the issue returning.
Original PR description
The combination of the following recent changes prevented the OCR from filling the name of the expense: - New expenses are named "Untitled Expense {date}" by default instead of the name of the…
The combination of the following recent changes prevented the OCR from filling the name of the expense:
- New expenses are named "Untitled Expense {date}" by default instead of the name of the attachment (see commit odoo/odoo@ca1f644).
- The OCR doesn't override the name if it's not set to the default value (see commit 5c813dc).
The first commit didn't update the default expense name that was used in the OCR code, it was still computed from the attachment name.
After the second commit, the OCR couldn't fill in the name of the expense anymore, since it was expecting the name to be the attachment name, but it was "Untitled Expense {date}" instead.
This is fixed by checking that the expense name contains "Untitled Expense" (and taking translation into consideration).
This commit also improves the tests in multiple ways:
- For the `test_auto_send_for_digitization` test, it now mimicks an upload of the document to force the creation of the expense with the default name, this should prevent this from happening again.
- It now uses an actual PDF document instead of "fake" attachments.
- Minor clean up.
task-[4684825](https://www.odoo.com/odoo/project/967/tasks/4684825)
Forward-Port-Of: odoo/enterprise#92324Studio app creation now handles suggested options more predictably. Pipeline stages no longer add custom sorting automatically, while custom sorting clearly controls whether sorting fields appear, making new app setup easier to understand.
Original PR description
This commit refines the behavior of suggested features during app creation in Studio to ensure better consistency and clarity: - Enabling the Pipeline stages option no longer automatically adds the sequence field. - The Custom sorting option now solely determines whether the sequence field is added to list and kanban views. - In list views, the priority and sequence fields are no longer mutually exclusive; both can coexist. However, when both are present, priority takes precedence for sorting (as in kanban). task-4909220
The Dutch Tax Report layout has been improved to make amounts easier to understand. It now uses fewer lines and separates taxable base amounts from tax amounts more clearly, helping users review and submit tax information with less confusion.
Original PR description
The Dutch Tax Report Can be Improved - less lines by adding a distinct tax col - clear distinction between base amount and tax amount ----- This is fixing the XBRL report after this PR: https://github.com/odoo/odoo/pull/222442 task-5000683
Helpdesk teams can now create and track replacement deliveries directly from a customer support ticket. This improves visibility for agents and customers by logging replacement activity and notifying ticket followers when delivery status changes.
Original PR description
- Create a `replacements` option in the helpdesk team settings - Create a `Replace` action button in the helpdesk ticket form - assign default values of the new replacement order - create a `Replacements` stat button in the helpdesk ticket form - allow the creation of the new replacement form the stat button with the right defaults - Set visibility rules for the stat button - log replacement creation in the ticket chatter- log ticket reference in the picking chatter - add a `delivery status` notification subtype to tickets - make notifications to the followers on the delivery stage update - make `Replacements` active for `VIP Support` helpdesk team in demo data task-4781271
This fixes an issue where partially processing lot-tracked receipts in the barcode app could incorrectly increase the expected quantity when users returned to the receipt later. The change keeps backorder and grouped barcode lines aligned so inventory demand remains accurate.
Original PR description
### Steps to reproduce: - Create a storable product tracked by lot - Create and confirm a receipt for 10 units of that product - Go to the barcode app and regiter 1 unit - Exit the picking - Go back…
### Steps to reproduce: - Create a storable product tracked by lot - Create and confirm a receipt for 10 units of that product - Go to the barcode app and regiter 1 unit - Exit the picking - Go back to the picking register the 9 remaining units - Exit the picking and comeback #### > The demand of the receipt has been updated from 10 to 19. ### Cause of the issue: Exiting the picking will launch a call of the `post_barcode_process` in order to keep track of the changes you made without changing the initial demand: https://github.com/odoo/enterprise/blob/c26c21cec14a234021bb13bbc2684334bc64b70b/stock_barcode/models/stock_move.py#L50-L53 THe first time you enter the picking you have a single move with a quantity of 10. The first time you exit, since you have set a qty_done of 1 (and hence have updated the quantity of the associated move to 1), the `split_uncompleted_moves` will then create a move for a quantity of 9 in order to keep 10 units assigned. The second time you enter the picking both moves are grouped in a single line since the product is tracked by lot, however, when you update the qty_done of that grouped line you will actually only update the quantity of the first move line and its related move. Since the `_truncate_overreserved_moves` was not designed to handle these grouped lines, it does not notice that the combined reservation overcomes the actual demand. opw-4731803 Forward-Port-Of: odoo/enterprise#91381 Forward-Port-Of: odoo/enterprise#89967
Non-recurring products sold through upsell sales orders are now included in the Sales Analysis Report. This helps businesses see complete delivered quantities and revenue for one-time products, improving reporting accuracy.
Original PR description
Problem: The non-recurring products added through upsell Sales Orders are not included in the Sales Analysis Report. This results in missing sales data for those products, leading to inaccurate…
Problem:
The non-recurring products added through upsell Sales Orders are not included in the Sales Analysis Report. This results in missing sales data for those products, leading to inaccurate reporting.
Purpose:
To ensure that non-recurring products added through upsell Sales Orders are correctly included in the Sales Analysis Report (report_all_channels_sales_action). This fix updates the report's domain filter to include upsell orders when the product is not recurring, resolving the issue of missing sales data for such products.
Steps to reproduce the bug:
1. Create a Sales Order (SO):
Add two products to the order:
- One recurring product (e.g., a subscription-based product with a recurring billing policy).
- One non-recurring (standard) product.
2. Confirm the SO
3. Generate an Invoice for the confirmed SO.
4. Validate the Invoice and deliver the non-recurring product (process the delivery order fully).
5. Create an Upsell Sales Order:
- From the original SO, create a new upsell SO.
- Add the same non-recurring product again.
6. Navigate to the Non-Recurring Product Page:
- Open the Product form for the non-recurring item.
- Click on the "Sold" smart button (shows delivered/sold quantities in the past 365 days).
- This opens the Sales Analysis Report (report_all_channels_sales_action) filtered by this product.
Issue:
The upsell Sales Order is not included in the Sales Analysis Report for the non-recurring product. As a result, the delivered quantity or revenue from upsell SOs is missing from the report for non-recurring products.
opw-4940977
Forward-Port-Of: odoo/enterprise#92559