Thursday, October 23, 2025
11 changes · 18.0
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
Resolved issues and error corrections
This update makes rental-related automated tests more reliable when demo data is not installed. It ensures the tests set up the required accounting and stock information themselves, reducing false failures in validation environments.
Original PR description
The test was failing in no-demo environments because it relied on accounting and stock configurations that were not present. When the test attempted to set property_valuation = 'real_time' on the product category, it triggered a ValidationError because the related stock accounts had not been properly set up for the test's transaction context. runbot-error-230417 Forward-Port-Of: odoo/enterprise#92292
Code cleanup and technical improvements
This update applies automated cleanup to the VoIP codebase without changing how users make or manage calls. It helps keep the module easier to maintain, reducing the risk of future issues and making ongoing improvements smoother.
Original PR description
Forward-Port-Of: odoo/enterprise#97750
This fix updates internal test expectations for work entry calculations when employees use different work schedule types. It helps ensure payroll and appointment-related processes continue to be validated correctly after the calendar lookup behavior changed.
Original PR description
- adjusted some query counters to account for the extra search in `_attendance_intervals_batch` done by the method `_get_calendar_at` task-id: 5065160
This change prevents an error that could occur when users expanded a Spanish VeriFactu document. It removes an unsupported discussion panel from the document screen, improving stability without changing business workflows.
Original PR description
The system will crash with error when user clicks on expand button. **Error:** `AttributeError: 'l10n_es_edi_verifactu.document' object has no attribute '_get_thread_with_access'` **Cause:** - `l10n_es_edi_verifactu.document` does not inherits ['mail.thread', 'mail.activity.mixin'] and used chatter in it's form view. - In this PR, removed `<chatter/>` from view. Already fixed for master here: https://github.com/odoo/odoo/pull/231477 **sentry-6792833694** I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231601
Submenu items in the website navigation now keep the same font styling as the main navbar. This prevents submenu text from unexpectedly changing when a user updates the paragraph font, keeping website menus visually consistent.
Original PR description
To reproduce: ============= 1- Go to website 2- Add a submenu to any menu item. 3- Choose a font for the navbar. 4- Change paragraph font. → Observe that the added submenu in the navbar also changes…
To reproduce: ============= 1- Go to website 2- Add a submenu to any menu item. 3- Choose a font for the navbar. 4- Change paragraph font. → Observe that the added submenu in the navbar also changes its font. Problem: ========= When creating submenu the class nav-link which contains the navbar font was removed by theses lines: https://github.com/odoo/odoo/blob/6f5682b1cab3c2e043e1f1d4316093bab2752521/addons/website/static/src/js/content/auto_hide_menu.js#L173-L179 cause this one was false https://github.com/odoo/odoo/blob/6f5682b1cab3c2e043e1f1d4316093bab2752521/addons/website/static/src/js/content/auto_hide_menu.js#L39-L39 but in the default template the navbar has another class name https://github.com/odoo/odoo/blob/6f5682b1cab3c2e043e1f1d4316093bab2752521/addons/website/views/website_templates.xml#L498-L498 Undesired Behavior: =================== When you set a navbar font, the navbar and submenu both initially use it. But if you change the paragraph font afterward, the submenu text incorrectly switches to the paragraph font, while the navbar still uses the correct navbar font. Desired Behavior: ================== Once a navbar font is set, it should be consistently applied to both the navbar and submenu text, regardless of changes to the paragraph font afterward. Solution: ========= If we are in the navbar we will keep the nav-link class. Link for bug: https://drive.google.com/file/d/1OyWUUEvvtHw5MKITew5F_KOP_m6zgi9B/view opw-4943240 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The web test runner now handles cases where someone clicks Run before all test assets have finished loading. This prevents an early-click crash in manual testing and makes the test workflow more reliable.
Original PR description
Before this commit, in manual mode, "Run" could be clicked before the assets finished loading (and so, before the test runner was properly "ready"). This caused a crash because it tried to resolve a promise that did not exist yet. Steps to reproduce: - Go to test URL (manual) - Click "Run" as soon as the button is visible (probably via a script to make sure the click is fast enough) This commit fixes that by adding failsafes around that promise, effecitvely allowing to click "Run" early on. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Benefits form now prevents users from creating related employee, cost, or mandatory benefit records from the selection fields. This keeps benefit setup cleaner and reduces accidental duplicate or incomplete records.
Original PR description
This commit prevents creating new employee, cost or mandatory benefits records directly from the Benefits form by setting these fields' `'no_create'` to `True`. task-5156844
Helpdesk SLA reports now include the SLA status as an available grouping option. This lets users remove and reapply the grouping without having to reload the report, making analysis smoother and less frustrating.
Original PR description
Currently, when the user opens the sla reporting view, if he removes the default grouping of sla_status, he has no way to get it back unless he reloads the view completly. This commit fixes this issue by adding the sla_status field to the group_by options. task-5076401 Forward-Port-Of: odoo/enterprise#95261
Sale orders that only use fixed taxes can now be read through XML-RPC without failing. The fix prevents empty tax display values from breaking external integrations that retrieve order data.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Create a fixed tax; 2. create a sale order using only the fixed tax; 3. read the sale order via XML-RPC. Issue ----- TypeError: cannot marshal None unless allow_none is enabled Cause ----- If only a fixed tax is used, the `_get_tax_totals_summary` method returns a dict where the `display_base_amount_currency` and `display_base_amount` values are `None`, leading to an error serializing the result. Solution -------- As the result gets serialized by `OdooMarshaller(allow_none=False)`[^1], we should use `False` instead of `None`. [^1]: https://github.com/odoo/odoo/blob/b887bf2/odoo/addons/base/controllers/rpc.py#L114 opw-5173477