Thursday, June 26, 2025
9 changes · 18.0
New functionality added to Odoo
This change adds a new health plan data area and links it to CRM leads, allowing teams to capture and view health plan information during customer follow-up. It can help sales or service teams organize health-plan-related opportunities more consistently.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Enhancements to existing features
When an online payment provider is activated, Odoo now automatically assigns the appropriate outstanding account to the payment method it creates. This keeps online payment setup consistent with invoicing rules and reduces manual accounting configuration for integrated providers.
Original PR description
In this PR: - When activating an Online Payment provider that creates a payment.method.line in a journal, automatically assign an Outstanding account to the payment method. - Uses the existing Outstanding Account resolution method from Invoicing module to ensure consistency across the system. - Applied to all Online Payment Providers that rely on provider integration, excluding manual payment providers without external integrations. task-4826385
Resolved issues and error corrections
Merging purchase orders that include note or section lines now completes without triggering an error. This prevents users from being blocked when consolidating purchase orders, improving reliability in the purchasing workflow.
Original PR description
Steps to reproduce the bug:
- Create two purchase orders and add a note
- Try to merge them
Problem:
A traceback is triggered:
```
ValueError: AttributeError("'int' object has no attribute
'total_seconds'") while evaluating 'if records:\n
action = records.action_merge()'
```
opw-4890120Australian payroll rule parameters have been updated for the 2025 period to keep payroll calculations aligned with current requirements. This helps businesses using Australian payroll process payslips with the latest applicable values.
Sales orders that create multiple service projects now reuse the intended analytic account instead of creating extra ones. This keeps project accounting cleaner and avoids redundant records when timesheets are enabled.
Original PR description
Prior to this commit, when a sale order was created with some service products configured to generate projects at SO confirmation, we would generate an analytic account per project instead of just one for all the generated projects. As a result, we would get redundant analytic accounts, which is not desirable. This is because we were creating the new projects without specifying the analytic account that would be set to it (because we would assume that the project would be first created without AA, then we would populate it later). The issue is that if `hr_timesheet` is installed, every new project is by default timesheetable, so that it generates an AA automatically at creation of the project (see `create()` method of `hr_timesheet`) To mitigate that, we now specify the analytic account to be used when creating the projects that have to be generated from `_timesheet_create_project()`. version-18.0 task-4854817
PDF versions of accounting reports now display correctly when using right-to-left languages, even with many columns. This prevents report content from being cut off, making printed Aged Payable and similar reports usable for RTL-language users.
Original PR description
Steps to reproduce: - Set language to RTL Orientation - Go to Accounting > Reporting > Aged Payable - Add multiple columns to report - Print as PDF Issue: When enough columns have been added to the report, the report will overflow the right side of the page Cause: Wkhtmltopdf does not correctly shrink the table if the direction is specified on the body of the document opw-4746361
Recurring field service tasks created from subscription sales now keep the related sales order item. This helps teams maintain accurate links between repeat service work and the customer order, avoiding missing sales context on follow-up tasks.
Original PR description
Steps to reproduce
- install `industry_fsm_sale_subscription`
- go to settings -> enable `recurring task`
- create product with following configs :
* enable `subscription`
* product type : `service`
* create on order `task`
* project `Field service`

- create a SO with this product
- go to `Tasks` smart button
- select the task and mark it done
- open the second task, from "recurring tasks" smart button
Obervation: in newly created task `Sales Order Item` is not linked
Issue:
- after this commit odoo/enterprise@be201cd ,sale fields are not copied for fsm task. while this is true for simple tasks, we would require such fields to be copied for recurrence tasks
Fix:
- allow sale fields to be copied for recurring tasks
opw-4875830Fixes an issue in Barcode receipts where removing serial-numbered product lines could remove the wrong serial number. This prevents valid serial numbers from being incorrectly marked as already used when warehouse staff re-enter them.
Original PR description
Steps to reproduce: - Install Purchase, Stock and Barcode apps - Create a product tracked by serial number - Create a PO of this product and confirm it (demand 3) - Open Barcode application for the PO's receipt - Start entering serial numbers for the 3 products - For each line, use the decrement button and remove all 3 lines - Make sure the last removed line is not the first scanned serial - Re-enter the serial number of the last removed line Issue: The parent line of the 3 sublines has the lot_name fixed on the first scanned serial_number. So when decrementing the last_line, it will always use the virtual_id of the first serial_number scanned, leading to decrementing the wrong serial number. It starts showing that the next scanned number is already used, because it wasn't properly removed in the first place. opw-4646765
The timer now correctly resumes from the paused point instead of counting the time spent paused. This helps users and managers rely on accurate time tracking for work logs, billing, and productivity reporting.
Original PR description
Before this commit, when a timer was paused and then resumed, it incorrectly included the paused duration in the time. This commit ensures the timer resumes from the paused time using the initial offset, resulting in accurate time tracking. task-4734681