Daily updates from Odoo
Thursday, October 23, 2025
41 changes
4 changes
Enhancements to existing features
This update suppresses misleading warning messages caused by an operating system packaging issue on Ubuntu Jammy environments. It helps keep automated checks and server logs cleaner without changing business features or user workflows.
Original PR description
Apparently on jammy the pdfminer package returns nonsensical versions (the distribution for `pdfminer.six` yields `-VERSION-`, and inside the python code the `__version__` is `__VERSION__`). When trying to look up the distribution for the (invalid as a distribution name) `ldap`, as a fallback `pkg_resources` parses every package on the sys.path before returning a lookup failure. Doing so, it encounters `pdfminer` fails to parse its version as a `Version`, warns that that is deprecated, then parses it using the more lenient `LegacyVersion` and warns that this is also deprecated. Since this is a packaging issue in just jammy and we can't really do anything about it, just sweep the issue under the rug. https://runbot.odoo.com/odoo/error/163677 Forward-Port-Of: odoo/odoo#232650
Belgian partner lookup on the Peppol network now checks the two most commonly used identifiers, improving the chances of finding the right participant. Related warning messages about recommended identifiers were removed because the mandatory identifier handling is now managed automatically by the Peppol access service.
Original PR description
1. For belgian partner, we now check for 0208 and 9925 which are the two most used EAS when looking for partner existence on the Peppol network. 2. Remove the warnings about the recommended EAS: 0208 is now the mandatory EAS, this will be handled directly on IAP where the Peppol Access Point will try to register 0208 in all cases with an alias system. Note that we have always computed 0208 as recommended value in registration process. task-4852903 Forward-Port-Of: odoo/odoo#231142 Forward-Port-Of: odoo/odoo#227431
This update improves performance when Odoo connects sales orders with related projects. It helps avoid slow database scans in cases with many projects, making affected sales order pages or processes respond more efficiently.
Original PR description
This commit adds an index on `project.project. reinvoiced_sale_order_id`, because the search in `sale.order. _compute_project_ids` might not be selective enough based on `sale_order_id`, which is a related field using `sale_line_id`. Since it's related, there is only a where clause on `sale_line_id IS NOT NULL`, which might not be selective enough and leads to a Seq. Scan of the `project_project` table. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232623
The web development tooling now includes VoIP-related modules in its linting checks. This helps catch code quality issues earlier for those areas, reducing maintenance risk without changing user-facing behavior.
Original PR description
Forward-Port-Of: odoo/odoo#232559 Forward-Port-Of: odoo/odoo#232484
3 changes
Enhancements to existing features
This update suppresses misleading warning messages caused by an external packaging issue on Ubuntu Jammy environments. It helps keep monitoring and logs cleaner without changing user-facing Odoo behavior.
Original PR description
Apparently on jammy the pdfminer package returns nonsensical versions (the distribution for `pdfminer.six` yields `-VERSION-`, and inside the python code the `__version__` is `__VERSION__`). When trying to look up the distribution for the (invalid as a distribution name) `ldap`, as a fallback `pkg_resources` parses every package on the sys.path before returning a lookup failure. Doing so, it encounters `pdfminer` fails to parse its version as a `Version`, warns that that is deprecated, then parses it using the more lenient `LegacyVersion` and warns that this is also deprecated. Since this is a packaging issue in just jammy and we can't really do anything about it, just sweep the issue under the rug. https://runbot.odoo.com/odoo/error/163677 Forward-Port-Of: odoo/odoo#232650
This change improves performance when sales orders look up linked projects for reinvoicing. It helps avoid slower database scans as project data grows, making related sales and project views more responsive.
Original PR description
This commit adds an index on `project.project. reinvoiced_sale_order_id`, because the search in `sale.order. _compute_project_ids` might not be selective enough based on `sale_order_id`, which is a related field using `sale_line_id`. Since it's related, there is only a where clause on `sale_line_id IS NOT NULL`, which might not be selective enough and leads to a Seq. Scan of the `project_project` table. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232623
The update includes VoIP-related modules in the project’s automated code quality checks. This helps maintain consistent standards and reduces the risk of issues in future VoIP updates, with no direct change for end users.
Original PR description
Forward-Port-Of: odoo/odoo#232559 Forward-Port-Of: odoo/odoo#232484
16 changes
Enhancements to existing features
The equity transaction form has been reorganized to make key information easier to read and enter. Transaction, beneficial owner, and valuation records now have clearer names, and tracked security prices show the correct currency symbol for easier review.
Original PR description
This commit 1. Reorders fields on transaction form 2. Gives better display names for transactions, ubos, and valuations 3. Fixes the tracking of transaction security_price not having currency sign task-5144766 Forward-Port-Of: odoo/enterprise#97644
Multi-company financial reports can now group lines by account code before individual account. This makes it easier for users to compare and review accounts consistently across companies.
Original PR description
If the report has a line that contains a group by `account_id` and if the report is multi-company, we allow the user the group per `account_code` before `account_id`. task-5092712 Forward-Port-Of: odoo/enterprise#94920
The payroll payment report popup now shows a meaningful title instead of the generic “Odoo” label. This makes it clearer to users which payroll action they are performing and reduces confusion across supported payroll localizations.
Original PR description
When users clicked the Payment Report button, the popup window opened with the generic title, Odoo. This was confusing because it provided no context about the action being performed. This change introduces a dedicated action so that the wizard displays a meaningful title. task-5052018
HR salary configuration now lets users archive personal information fields, benefits, and resume items they do not want to use. This helps companies keep their preferred setup after upgrades, instead of removed items reappearing automatically.
Original PR description
…its and resume Some want to remove some personal info fields they don't want in their salary configuration but, after an upgrade, those fields are put back. These changes allow the archiving of personal info, benefits and resume so that users can configure what they want without worrying about an upgrade making the records come back. There was no need to add the active field in the personal_info and salary_resume models, since they were already included. I just had to add them in the views in these cases. task-4901052
Payslip action buttons have been renamed to use clearer wording. This makes payroll screens easier to understand by changing “Compute Sheet” to “Compute” and “Recompute whole sheet” to “Recompute whole payslip.”
Original PR description
. payslip compute sheet buttons renamed from "Compute Sheet" to "Compute" for better clarity . action button "Recompute whole sheet" renamed to "Recompute whole payslip"
Salary rule descriptions on payslips now wrap onto multiple lines instead of being cut off. This makes payroll information easier to read both on-screen and in printed or PDF payslips.
Original PR description
Ensures full description is visible on both the payslip view and PDF by wrapping text instead of cropping it. task-5034372
UrbanPiper test orders can now be launched directly from the POS frontend debug widget instead of the backend configuration page. This reduces tab switching and makes it easier for teams to validate the UrbanPiper order flow during setup or troubleshooting.
Original PR description
Before this commit: --------------- The UrbanPiper test order action was only accessible from the backend POS configuration form. This required opening two separate tabs to test the UrbanPiper order flow. After this commit: --------------- - The "UrbanPiper Test Order" action is now available directly in the frontend debug widget. - Removed the test order button from the configuration page. <img width="1308" height="108" alt="image" src="https://github.com/user-attachments/assets/706d0a88-4b52-42da-88cc-4bf2f80fab7a" /> Task-4977992
Icon resources are now loaded through a shared bundle in the affected apps, helping keep the interface consistent and easier to maintain. This is a minor technical improvement with low direct impact for everyday users.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/224663 See community PR for details: https://github.com/odoo/enterprise/pull/94023#issue-3387954727
The payroll employee view now consistently places the External Codes section at the end of the payroll area. This makes the screen layout more predictable for users and avoids the section appearing among other payroll fields depending on system loading order.
Original PR description
Made sure that the External codes Group appear last in the payroll view. Previously the `external_codes` group was added with `position="inside"` on the `payroll_group`, which caused it to sometimes appear in the middle of the payroll fields depending on the load order of inherited views. This commit changes the inheritance to use `position="after"` on `payroll_group`, so that `external_codes` is consistently inserted at the end of the payroll section. task - 5109281
The payroll and salary configuration screens now use the clearer label "Employee Record" instead of "Version" for employee-related records. This makes the wording easier for HR users to understand and aligns chatter messages with the updated terminology.
Original PR description
Rename "Version" to "Employee Record" in selection option of type `hr.version` and in chatter message. task-5074160
This update improves how Documents Spreadsheet keeps user-entered information during spreadsheet interactions, reducing the chance of losing or overwriting work. It also updates automated checks for charts and list views to ensure the behavior remains reliable.
Original PR description
Enterprise counter-part of https://github.com/odoo/odoo/pull/227449 This commit contains adaptation of tests. task-4756754
The AI website live chat now retrieves conversations through the dedicated chat channel system instead of a more generic messaging route. This is an internal improvement that should make the live chat integration cleaner and easier to maintain without changing the user experience.
Original PR description
This commit replaces the use of the `mail.thread` model to retrieve a channel with the direct use of the `discuss.channel` model.
The German tax report has been reworked after removing the balance column, so related calculations and report logic continue to align with the new layout. This keeps the report clearer and helps ensure German tax reporting remains accurate for businesses.
Original PR description
After removing the balance column, we need to refactor the code that depends on it task-5046641
The VoIP call history screens have been adjusted to work better on smaller devices, making recent calls easier to read and use on mobile. The update also improves visual alignment of phone details and status indicators for a cleaner, more consistent experience.
Original PR description
**Purpose:** - The form view was broken on mobile, making it difficult to read and interact with. - The list view was not usable on smaller screens, so a kanban (fake list) view was required for a better mobile experience. - The country flag was misaligned with the phone number in views. - The state badge was not vertically centered in the list view. **Specification:** - Fixed the form view layout for mobile while keeping the desktop layout intact. - Added a kanban view to improve readability and usability on small screens. - Updated “Recent Calls” redirection to open in kanban view on mobile and in list view on desktop. - Fixed alignment of country flag with the phone number. - Fixed vertical alignment of the state badge in list view. **Task**-5060875
BACS payments can now use UK account numbers and sort codes directly, instead of relying only on IBAN details. This makes setup more practical for UK bank accounts and removes an unnecessary journal field from Direct Debit mandates to keep payment handling clearer.
Original PR description
BACS was only supporting IBAN account type and extracting account number and sort code from it. Added support for BACS to handle account number and sort code(clearing number field) separately. Removing Journal fields on bacs.ddi, ss there's no reason that we have payment_journal_id field on the mandate, as all related journal logic is in the payments themself. task-4630586
The ESG emissions workflow now opens emitted emission records through a dedicated form, making navigation more consistent regardless of the source record. It also prevents users from choosing a physical calculation method when the required unit of measure is missing, avoiding save errors.
Original PR description
task-5152778
11 changes
Enhancements to existing features
This change suppresses a misleading warning caused by a third-party packaging issue on Ubuntu Jammy systems. It helps keep logs and automated checks cleaner without changing business functionality or user workflows.
Original PR description
Apparently on jammy the pdfminer package returns nonsensical versions (the distribution for `pdfminer.six` yields `-VERSION-`, and inside the python code the `__version__` is `__VERSION__`). When trying to look up the distribution for the (invalid as a distribution name) `ldap`, as a fallback `pkg_resources` parses every package on the sys.path before returning a lookup failure. Doing so, it encounters `pdfminer` fails to parse its version as a `Version`, warns that that is deprecated, then parses it using the more lenient `LegacyVersion` and warns that this is also deprecated. Since this is a packaging issue in just jammy and we can't really do anything about it, just sweep the issue under the rug. https://runbot.odoo.com/odoo/error/163677 Forward-Port-Of: odoo/odoo#232650
This pull request updates several website and HTML editing tools used to build pages, forms, menus, links, carousels, and layout blocks. The changes appear aimed at improving the page-building experience and editor behavior, although the PR description is incomplete and the commit is marked as work in progress.
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
The Czech localization now includes dedicated fiscal positions for intra-community and extra-community transactions. This helps businesses apply the correct 0% EU goods and services tax setup more reliably.
Original PR description
When using the CZ localisation, the fiscal position are not fully set up. This commit will create a new fiscal position for intra-community and changes the 0% EU G and 0% EU S taxes to have that fiscal position. To be able to have the "replaces" (original_tax_ids) fields, i had to change the vat_required field on the domestic fiscal position. task-5103864 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves how Odoo finds projects linked to reinvoiced sales orders. It can reduce slow database searches in sales and project workflows, helping larger databases respond more efficiently without changing user-facing behavior.
Original PR description
This commit adds an index on `project.project. reinvoiced_sale_order_id`, because the search in `sale.order. _compute_project_ids` might not be selective enough based on `sale_order_id`, which is a related field using `sale_line_id`. Since it's related, there is only a where clause on `sale_line_id IS NOT NULL`, which might not be selective enough and leads to a Seq. Scan of the `project_project` table. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232623
The point of sale experience has been refined with clearer button labels, better guidance, and fewer unnecessary warnings. These changes help cashiers and restaurant staff move through orders, payments, notes, and preparation steps more smoothly and with less confusion.
Original PR description
pos*: point_of_sale, pos_restaurant This commit introduces several UX enhancements in the standard POS flow: - Removed unintended onboarding step tip. - Updated note input dialog title to include the…
pos*: point_of_sale, pos_restaurant This commit introduces several UX enhancements in the standard POS flow: - Removed unintended onboarding step tip. - Updated note input dialog title to include the selected product name (e.g., “Pizza: Add Customer Note”). - Fixed issue where the Payment button incorrectly became primary when only the order-level note was updated. - Renamed "Order" to "Send" when only a note or message needs to be sent for preparation. - Added "New Order" button on the Ticket screen when no orders are available. - Improved placeholder text for floating order name input. - Added a back button on the Floor screen in table-finding mode for direct sale. - Moved preset filters next to order state filters (Active, Paid, etc.). - Made the Customer button primary when a customer is required for the order. - Removed unnecessary toaster warning for “Pay Later” payment method selection. - Shifted order preparation warning from the Validation button to the Payment button on the Product screen. - Added toaster notification when an order is sent for preparation summary. Task-5116688 Related-https://github.com/odoo/enterprise/pull/97458
The option to create batch payments is now available to users working in Invoicing. This makes it easier for the right finance users to access batch payment workflows without needing broader accounting permissions.
Original PR description
This commit will change the security group of the create batch payment action, to be available in invoicing. task-5187435
This update improves automated checks around the warning shown when discarding an order during restaurant preparation. It helps ensure the point of sale flow behaves correctly on the Product screen, reducing the risk of staff encountering inconsistent warnings during service.
Original PR description
*: pos_restaurant_preparation_display, l10n_de_pos_res_cert This commit improves the preparation flow by updating the `discardOrderWarningDialog` tour step to validate its behavior on the Product screen. Task-5116688 Related- https://github.com/odoo/odoo/pull/229915
This update refreshes localization files and translation configuration, mainly for the 3-way matching accounting area. It helps keep multilingual text and translation workflows aligned for users working in different languages.
Users can now download invoices in a single ZIP file containing all supported formats, such as PDF and XML. This makes it easier for businesses using Odoo to share sales and purchase invoices with accountants who may use different tools.
Original PR description
With PEPPOL, many clients use Odoo for invoicing while their accountant uses another tool. To easily send invoices to the accountant, it’s important to export invoices for both sales and purchase. Adding a `Export ZIP` option to download invoices in all supported extensions (pdf, xml, ..etc) in the same zip. task-4946367 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219245
The web tooling configuration now includes VOIP-related modules in automated code quality checks. This helps maintain consistent standards and catch issues earlier, with no direct impact on end users.
Original PR description
Forward-Port-Of: odoo/odoo#232559 Forward-Port-Of: odoo/odoo#232484
Belgian partners are now checked against the two most commonly used Peppol identifiers, making it more reliable to find whether they exist on the Peppol network. The update also removes outdated recommendation warnings because the required identifier is now handled automatically during registration.
Original PR description
1. For belgian partner, we now check for 0208 and 9925 which are the two most used EAS when looking for partner existence on the Peppol network. 2. Remove the warnings about the recommended EAS: 0208 is now the mandatory EAS, this will be handled directly on IAP where the Peppol Access Point will try to register 0208 in all cases with an alias system. Note that we have always computed 0208 as recommended value in registration process. task-4852903 Forward-Port-Of: odoo/odoo#231142 Forward-Port-Of: odoo/odoo#227431
3 changes
Enhancements to existing features
This update suppresses misleading warning messages caused by a packaging issue in Ubuntu Jammy's PDF tooling. It keeps server logs cleaner so teams can focus on real issues without changing business functionality.
Original PR description
Apparently on jammy the pdfminer package returns nonsensical versions (the distribution for `pdfminer.six` yields `-VERSION-`, and inside the python code the `__version__` is `__VERSION__`). When trying to look up the distribution for the (invalid as a distribution name) `ldap`, as a fallback `pkg_resources` parses every package on the sys.path before returning a lookup failure. Doing so, it encounters `pdfminer` fails to parse its version as a `Version`, warns that that is deprecated, then parses it using the more lenient `LegacyVersion` and warns that this is also deprecated. Since this is a packaging issue in just jammy and we can't really do anything about it, just sweep the issue under the rug. https://runbot.odoo.com/odoo/error/163677 Forward-Port-Of: odoo/odoo#232650
The web team has updated the code quality setup so VOIP-related modules are now included in linting checks. This helps catch issues earlier during development and supports more consistent maintenance, with no direct change for end users.
Original PR description
Forward-Port-Of: odoo/odoo#232484
This update adds new capabilities for Six payment terminals in Odoo Point of Sale, including end-of-day balance report printing and support for refunds or reversals. It also improves transaction handling, receipt formatting, and card information handling to make terminal operations faster and more reliable for merchants.
Original PR description
Based on the feedback received from our partners we are missing some features in our Six terminal integration. This PR adds them 1. Send balance command to print end-of-day report 2. Adapt the code to reduce the sleep delay after each transaction 3. Refunds/payment reversals for Six + it also adds some minor code improvements like a) Card brand is now saved in pos payments instead of the card number b) Card number is still being sent to PoS and while not stored in v17 will be stored from v18 c) The code of ctypes_terminal_driver and Six Driver was improved to reuse the buffer size and improve the buffer usage d) Fixes the receipt size for the Six terminals e) updates the Six C libraries used to the latest version to get all the newest fixes Related C PR: https://github.com/odoo/worldline-lib/pull/9 Forward-Port-Of: odoo/enterprise#96748
4 changes
Enhancements to existing features
This change makes automated browser test failures easier to diagnose by warning when Chrome cannot be found or does not start correctly. It also cleans up stalled Chrome processes and captures error details, reducing hidden test issues and leftover temporary files on test machines.
Original PR description
If we can't find the devtools port file after 10 seconds we skip the test, however - this is an invisible error because the runbot does not surface skipped tests, so this specific variant should also have a warning (also the skip from not finding a chrome executable) - if chrome started but got stuck before it managed to create the port file we don't `stop` the chromebrowser as it never finished starting, however this means we leave a chrome running in the void a `user_data_dir` littering the machine / vm's tempdir So improve the handling of that bit. Also have chrome write its stderr to a file (in the `user_data_dir`) so we can log that out in case it contains useful information as to why chrome didn't finish booting. While at it backport the spawn changes from #206574 for consistency and simplicity: we don't need to test the platform for every single tour and the indirection makes updating the `Popen` parameters unnecessary complicated. Forward-Port-Of: odoo/odoo#232612
Stock synchronization logs for Amazon sales now include the related account ID. This gives support teams clearer context when investigating customer stock sync issues, helping them resolve cases more efficiently.
Original PR description
Based on feedback from the support team, additional information has been added to the stock sync logging messages. This enhancement includes the account ID for better traceability and to help the team understand customer issues more effectively.
Odoo now routes Peppol partner lookup checks through its IAP service so it can support the Peppol network’s upcoming DNS change. This helps keep electronic invoicing partner discovery working after the switch from CNAME to NAPTR records, without requiring unsupported package changes in stable versions.
Original PR description
Starting from 1st November, the Peppol SML will start to use NAPTR records instead of CNAME. This mainly allow them to enforce a specify a scheme (https). To be able to retrieve this specific type of records and follow the replacement record we need `pythondns` package which is not available in stable versions. We therefore will now use IAP to serves as a bridge to query the Peppol network when retrieving a partner services/existence on Peppol. This solution is also good to handle future changes by moving most of the logic into IAP where stable policy is easier to handle. Related: https://github.com/odoo/iap-apps/pull/1203 Documentation: https://docs.peppol.eu/edelivery/changelog/2025-04/Peppol%20CNAME%20to%20NAPTR%20Migration%20Process%20v1.0.0%202025-04-17.pdf task-5059508
Electronic invoices can now use a fallback payment code when no bank account is configured, avoiding validation errors in BIS3 exports. This makes initial setup smoother for businesses that have not added bank details yet.
Original PR description
Backport of commit 026743fb2627edeada5ae2a517b64bf05ae921ae . To generate a valid BIS3 format, if we put 30 - credit transfer as payment means, we need to have a bank account set. If it's not the case, it will raise an error. We improve the usability by changing that code to ZZZ - mutually defined if no bank account is provided to the invoice. This should improve the onboarding flow when no bank account is set yet. task-None Forward-Port-Of: odoo/odoo#232795