Daily updates from Odoo
Navigate
Branch
Sunday, October 19, 2025
14 changes
3 changes
Resolved issues and error corrections
This fix prevents Odoo from failing during startup when running on Python 3.10 with the supported PDF library version. It avoids checking for a PDF-related capability that may not exist in that environment, restoring compatibility for affected deployments.
Original PR description
On Python 3.10, we require PyPDF2==1.26.0 that doesn't have this attribute. For now, we should ignore it. Description of the issue/feature this PR addresses: We cannot start Odoo in Python 3.10 Current behavior before PR: On https://github.com/odoo/odoo/commit/daf7c285bc82fb875e59c2bc50471d6d7b3aa903 it was added a fix, but it was breaking python3.10 installation. Desired behavior after PR is merged: Odoo works in Python 3.10. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232247
Project profitability now shows the full expected purchase cost when a purchase order is billed across multiple vendor bills. This gives users a more accurate view of remaining and billed costs, and avoids counting canceled credit notes.
Original PR description
## Issue: When a Purchase Order is linked to a Project and its quantity is billed through multiple vendor bills, the "Expected" amount in the project profitability view was incorrect ## Cause: When…
## Issue: When a Purchase Order is linked to a Project and its quantity is billed through multiple vendor bills, the "Expected" amount in the project profitability view was incorrect ## Cause: When at least one invoice line exists for a PO line, `_get_profitability_items()` computes `to_bill` and `billed` amounts without using the purchase order's ordered quantity This causes the computation to only consider the quantities already billed, ignoring the remaining quantity that still needs to be billed: https://github.com/odoo/odoo/blob/cdb8370647ca4b07f89edaf5fcc687508f6af16d/addons/project_purchase/models/project_project.py#L155-L178 Additionally, the code included all credit notes, even those that were canceled ## Steps to reproduce: - Ensure the "Sales" app is installed to display project profitability - Create a new Project "Profitability" and mark it as Billable - Create and confirm a PO (any product, quantity: 5, unit price: 100, Taxes: None, Other Information > Project: "Profitability") - Check the project dashboard for Purchase Orders (Expected: -500, To Bill: 0, Billed: 0) - Create and confirm a Vendor Bill (Quantity: 2) - Check the project dashboard for Purchase Orders (Expected: -200, To Bill: 0, Billed: -200) - Create and confirm a Vendor Bill linked to the PO using Auto-Complete (Quantity: 3) - Check the project dashboard for Purchase Orders (Expected: -500, To Bill: 0, Billed: -500) opw-5077609 Forward-Port-Of: odoo/odoo#229221
Sales payment validation now avoids skipping required follow-up processing after a transaction is confirmed. This keeps validation emails suppressed where intended while ensuring the rest of the sales confirmation workflow still runs correctly.
Original PR description
Versions -------- - 18.0+ Issue ----- `super` isn't called on `_post_process` for confirmed validation transactions. Cause ----- A fix that prevented the sending of mail for validation transactions added a `continue` in a loop, which skips over the `super` call in the loop. Solution -------- Instead of `continue`, add an `if` check to see if we want to send mail. Forward-Port-Of: odoo/odoo#231972
2 changes
Resolved issues and error corrections
This fix prevents Odoo from failing at startup when running on Python 3.10 with the supported PDF library version. It safely skips a missing PDF-related attribute so affected installations can launch normally.
Original PR description
On Python 3.10, we require PyPDF2==1.26.0 that doesn't have this attribute. For now, we should ignore it. Description of the issue/feature this PR addresses: We cannot start Odoo in Python 3.10 Current behavior before PR: On https://github.com/odoo/odoo/commit/daf7c285bc82fb875e59c2bc50471d6d7b3aa903 it was added a fix, but it was breaking python3.10 installation. Desired behavior after PR is merged: Odoo works in Python 3.10. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232247
This fixes an issue where some confirmed validation payments in Sales skipped part of the normal post-processing flow. Businesses benefit from more reliable order and payment handling while still avoiding unnecessary validation emails.
Original PR description
Versions -------- - 18.0+ Issue ----- `super` isn't called on `_post_process` for confirmed validation transactions. Cause ----- A fix that prevented the sending of mail for validation transactions added a `continue` in a loop, which skips over the `super` call in the loop. Solution -------- Instead of `continue`, add an `if` check to see if we want to send mail. Forward-Port-Of: odoo/odoo#231972
4 changes
Resolved issues and error corrections
Swiss payroll batch generation now works correctly for users operating across multiple companies. This prevents access-related interruptions when creating pay runs, helping payroll teams process salaries reliably in multi-company setups.
Original PR description
Forward-Port-Of: odoo/enterprise#97503
Salary package simulations now avoid creating unnecessary tracking entries when employee details are temporarily updated. This prevents incorrect or confusing change history values from appearing during simulations.
Original PR description
There was a tracking disable missing on a write on the employee model. This was causing some issues with the selection field tracking values. task-5155497 Forward-Port-Of: odoo/enterprise#96753
Tags in project sharing now use the same light visual style as the rest of the page. This fixes an inconsistent dark appearance, making shared project views look cleaner and more consistent for users.
Original PR description
Before this commit, the project sharing was using the dark style for tags even though the rest of the views are in light mode. Removing the tags_list.dark.scss file from the imported file in the manifest fixes this issue. task-5130176 Forward-Port-Of: odoo/enterprise#97406 Forward-Port-Of: odoo/enterprise#96751
The Documents app now counts Inbox items based on the actual internal folder rather than an inbox tag. This makes KPI figures more accurate and avoids test data cleanup issues that could disrupt automated checks.
Original PR description
After a discussion about what should be considered the inbox folder on earlier versions, it appears that the `kpi.provider:get_kpi_summary` method should return the count of documents in the folder having the external identifier `documents.documents_internal_folder`, instead of selecting the documents with the inbox tag. As some documents might be referenced by foreign keys in demo data, we also avoid to unlink the documents in the tests to avoid potential errors in the test suites. Runbot-build-error-id: [231787](https://runbot.odoo.com/odoo/runbot.build.error/231787) Task-id: [5062431](https://www.odoo.com/odoo/project.task/5062431) Forward-Port-Of: odoo/enterprise#97594 Forward-Port-Of: odoo/enterprise#95699
2 changes
Resolved issues and error corrections
The Documents dashboard now counts Inbox items based on the designated internal folder rather than a tag. This makes the KPI more reliable and avoids test issues linked to deleting demo documents that may be referenced elsewhere.
Original PR description
After a discussion about what should be considered the inbox folder on earlier versions, it appears that the `kpi.provider:get_kpi_summary` method should return the count of documents in the folder having the external identifier `documents.documents_internal_folder`, instead of selecting the documents with the inbox tag. As some documents might be referenced by foreign keys in demo data, we also avoid to unlink the documents in the tests to avoid potential errors in the test suites. Runbot-build-error-id: [231787](https://runbot.odoo.com/odoo/runbot.build.error/231787) Task-id: [5062431](https://www.odoo.com/odoo/project.task/5062431) Forward-Port-Of: odoo/enterprise#97416 Forward-Port-Of: odoo/enterprise#95699
This fix prevents Odoo from failing during startup on Python 3.10 when an older PDF library lacks a newer attribute. It restores compatibility for deployments using the supported Python 3.10 setup.
Original PR description
On Python 3.10, we require PyPDF2==1.26.0 that doesn't have this attribute. For now, we should ignore it. Description of the issue/feature this PR addresses: We cannot start Odoo in Python 3.10 Current behavior before PR: On https://github.com/odoo/odoo/commit/daf7c285bc82fb875e59c2bc50471d6d7b3aa903 it was added a fix, but it was breaking python3.10 installation. Desired behavior after PR is merged: Odoo works in Python 3.10. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232247
3 changes
Resolved issues and error corrections
This update prevents PDF handling issues on Odoo installations that use older PyPDF2 versions, commonly tied to Python 3.10 or earlier. It applies a compatibility patch only when needed, reducing the risk of errors while keeping behavior unchanged for newer environments.
Original PR description
The attribute `renumber_table` was only added in PyPDF2 2.10.8, and is absent from 1.26.0, which is the versions used in Odoo for Python 3.10 or less https://github.com/py-pdf/pypdf/commit/fb8be4065bfb26ec3bec71d8c6d65b3be3a2034f
This fixes a startup problem that could prevent Odoo from running on Python 3.10. The PDF tooling now avoids relying on a library detail that is not available in the required Python 3.10 dependency version.
Original PR description
On Python 3.10, we require PyPDF2==1.26.0 that doesn't have this attribute. For now, we should ignore it. Description of the issue/feature this PR addresses: We cannot start Odoo in Python 3.10 Current behavior before PR: On https://github.com/odoo/odoo/commit/daf7c285bc82fb875e59c2bc50471d6d7b3aa903 it was added a fix, but it was breaking python3.10 installation. Desired behavior after PR is merged: Odoo works in Python 3.10. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The project sharing customer preview now matches what portal customers actually see when billing is based on validated timesheets. This prevents draft or unvalidated timesheet entries from appearing in the preview, reducing confusion and helping staff verify the customer-facing view accurately.
Original PR description
### Issue: Due to this issue, in the project sharing, the customer preview doesn't reflect the actual behaviour of the portal view. It shows non-validated timesheets even if invoicing policy is…
### Issue: Due to this issue, in the project sharing, the customer preview doesn't reflect the actual behaviour of the portal view. It shows non-validated timesheets even if invoicing policy is validated timesheets only. #### To reproduce: 1- Create a db with sale_project and sale_timesheet_enterprise 2- Configure invoicing policy to validated timesheets only 3- Create a service product: - Create on Order: Project & Task - Invoicing policy: Based on Timesheets 4- Create a Quotation for the product and confirm it 5- Open project from smart button 6- Share project with a portal user with Edit access 7- Open tasks, and add two timesheets to the task 8- Open timesheet app, and validate one of the timesheets 9- From project page, click on Customer preview 10- In preview, open the task. You can see both timesheets which is a different behaviour if you view the project using portal user. Using portal user, only validated timesheets are shown. ### Cause: The timesheets are filtered here to only show validated timesheets: https://github.com/odoo/enterprise/blob/8223ed0765c6064b88280656a5ab6b13ca9a431f/sale_timesheet_enterprise/models/project_task.py#L73-L91 However, it is filtered only if user is portal. In customer preview the user is still the internal user, as a result the timesheets will not be filtered. To fix that we can check if project_sharing_id exist in context to filter timesheets. opw-5093339