Wednesday, August 6, 2025
18 changes · saas-18.4
Enhancements to existing features
This update adds automated checks for the appointment features used in Point of Sale. It helps ensure future changes do not accidentally break appointment-related behavior in the sales interface.
Original PR description
Introduced HOOT test cases for `pos_appointment` module: - Add unit tests for patched service methods in `pos_store.js` - Add unit tests for patched component logic in `navbar.js` Task: 4945632 Forward-Port-Of: odoo/enterprise#91095
The VoIP softphone now prevents users from changing DTMF tones that have already been sent during a call. This reduces call-control mistakes by ensuring users can only add new keypad tones using valid DTMF characters.
Original PR description
The already sended DTMF signal can't be changed. In this commit, we ignore the useSelection effect when sending DTMF, user can only append new value to sended vulues. we also make the input readonly so that user can only send DTMF from the softphone keypad, since normally DTMF only support "123456789*0#" Forward-Port-Of: odoo/enterprise#91692
Resolved issues and error corrections
The messaging menu now shows the right helper message when a quick search returns no conversations. This prevents users from seeing conflicting messages and makes it clearer whether there are no search results or no conversations at all.
Original PR description
**Steps to reproduce:** - Open the messaging menu with 20+ threads (quick search btn shows on 20+ threads) - Dismiss (or install) the 'Install Odoo' notification - Dismiss (or allow) the 'Turn on notifications' notification - Use quick search to look for a thread that doesn't exist => Both 'No thread found.' and 'No conversation yet...' messages are displayed This happens due to an incorrectly handled condition. This PR ensures only the relevant message is shown: - 'No thread found.' is displayed when the search yields no results. - 'No conversation yet...' is shown only when the user has no threads at all. <img width="565" height="279" alt="image" src="https://github.com/user-attachments/assets/689bc007-dfb4-4041-8543-18bc4ad2e19d" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221878
This fixes an issue where website editors could accidentally edit the shop sorting control and trigger an error when saving the page. The sorting display remains visible, but is no longer editable in the website editor, preventing save failures for shop pages.
Original PR description
Step to reproduce: - install website_sale - open website -> shop page - open editor, by clicking on `Edit` from right corner observation: - you are now able to edit sort by element - on saving, traceback is received. Issue: After odoo/odoo@9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 , we know make every t-field [editable](https://github.com/odoo/odoo/blob/saas-18.4/addons/html_builder/static/src/core/setup_editor_plugin.js#L23-L36), from `SetupEditorPlugin.setup()` when editing a website. This makes `shop_default_sort` field editable, (which is a sequence field) and tries to update its name/value from `ir.qweb.field.selection()` ,raising traceback on save() Fix: Use t-out instead of t-field, to prevent it from being editable opw-4937025 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A small issue in Odoo's shared date utilities was fixed so time values are converted correctly. This helps prevent incorrect duration calculations in features that rely on this common helper.
Original PR description
'time_to_float' method in the date utils is using 'time' to make its computation but 'time' is actually the type of the parameter (datetime.time). Using the actual duration parameter. related PR: odoo/odoo#207882 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures a base system view test is included when localization-specific tests run on their own. It helps catch localization-related issues earlier, reducing the risk of nightly build failures after changes are merged.
Original PR description
This test is not run during the l10n standalone tests leading to error in nightly that are not detected before the merge. 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 Forward-Port-Of: odoo/odoo#219473 Forward-Port-Of: odoo/odoo#219376
The Profiling screen no longer allows creating new profiling records that could generate broken Open links before being saved. This prevents users from hitting an error when clicking a profiling report link on an unsaved record.
Original PR description
Currently, the speedscope URL is generates even for unsaved records and clicking this URL resulted in an error. **Steps to reproduce:** - Open Profiling. - Create new Ir Profile. - Without saving the record, click on the speedscope URL in the 'Open' field. **Error:** `ValueError - invalid literal for int() with base 10: 'NewId_0x789d07a57b80'` **Cause:** The `speedscope_url` compute method [1] generated the URL using a temporary `NewId`. When this URL was accessed, the controller [2] attempted to process it as an integer, which resulted in the error. **Fix:** This fix prevents the creation of new `ir.profile` records. [1] - https://github.com/odoo/odoo/blob/679d99b8bd233a1046e3219ddb3e23e8465f6107/odoo/addons/base/models/ir_profile.py#L109-L112 [2] - https://github.com/odoo/odoo/blob/679d99b8bd233a1046e3219ddb3e23e8465f6107/addons/web/controllers/profiling.py#L33 sentry-6753780250
The editor now properly clears empty nested content blocks that could previously remain after users deleted their content. This prevents leftover invisible structure from interfering with editing features and keeps pages cleaner after content removal.
Original PR description
Problem: In some cases, content with nested `div` elements is added to the editor. These `div`s can break certain editor features and cannot be deleted through the UI. Solution: Add support to remove empty `div` elements when clearing content. Steps to reproduce: - Add `<div><div>abc</div></div>` to the editor - Focus inside and remove all content - The `div` elements remain and are not removed opw-4805901 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website editor now hides the irrelevant theme color tab when configuring the map color filter. This reduces confusion and helps users choose the appropriate custom or gradient color settings for map styling.
Original PR description
The "theme" tab does not make any sense with the color filter option since it will generally apply an opaque color. Only the custom and gradient tabs are relevant. This commit removes this tab for the s_map color filter option. task-4367641
This fix ensures Point of Sale automated tests can run correctly without an internet connection. It helps keep development and quality checks reliable in offline or restricted environments, with no direct impact on day-to-day users.
Original PR description
Ensure hoot tests are correctly running offline. rb-error: 229927 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221268
This update corrects a small typo in the website/page builder's internal warning handling. It helps ensure warning messages are recorded properly in the browser console, making troubleshooting more reliable without changing user-facing behavior.
The DHL delivery integration now sends commodity code information using the field name expected by DHL's API. This helps avoid shipment creation issues caused by rejected or misread customs data.
Original PR description
Changed the field name in commodityCodes from `code` to `value` to match with DHL API documentation. Check ticket log notes for details of DHL documentation. opw-4892324 Forward-Port-Of: odoo/enterprise#91645
The accountant test tour now waits for the page to settle before clicking key buttons. This reduces intermittent failures during statement creation and helps keep automated checks stable.
Original PR description
Steps --------- 1. Install account 2. Run the following test-tags `.test_accountant_tour` Problem --------- Sometimes, the tour fails in the statement creation step because the "New" button is not correctly pressed. The error does not always occur. Solution --------- Adding some intermediary steps so that the page settles before pressing on buttons. build-error-226436 Forward-Port-Of: odoo/enterprise#91785
This fixes a test failure that could occur when the Accountant app is not installed. It improves reliability of the accounting batch payment test suite without changing business functionality.
Original PR description
**Issue:** "test_partner_account_batch_payments" test may fail when "accountant" module is not installed. **Solution:** Handle the case when "accountant" module is not installed separately as it is done in previous versions. runbot-230480 Forward-Port-Of: odoo/enterprise#91621
Searching for loans in the Loan Analysis view now uses the correct loan label field. This prevents users from seeing an error when looking up loan records and makes the analysis view usable again.
Original PR description
Behaviour before this commit: While searching for 'Loan' in the Loan Analysis view, a traceback appears since the filter_domain for the search is on `name` but `name` is not present in account.loan.line, instead it is `loan_name`. Desired behaviour after this commit: The filter_domain for 'Loan' is updated to search for `loan_name` instead of `loan`, and domain for `display_name` is removed. TaskID:4991369 Forward-Port-Of: odoo/enterprise#91637
A test for down payments in Peru e-invoicing was failing in setups without demo data because the test user lacked the needed sales access. The change adds that access so automated checks run reliably, reducing false failures during validation.
Original PR description
The new downpayment test failed in without demo due to missing sales group on the user. This fix adds the missing group. runbot-230456
Invoices in the Mexico localization can now be saved when they contain only a section or note line. This removes an unnecessary validation error and helps users create draft invoices with descriptive lines without needing tax details.
Original PR description
Issue: When we try to save an invoice with only a line section or line note, an error is thrown indicating invalid fields: invoice lines. This happens because the `l10n_mx_edi_tax_object` is required on account move lines. Purpose of this PR: Allow for line sections and line notes to be saved without tax objects. Steps to reproduce on Runbot: install l10n_mx switch to MX company and create an invoice with just a line section or line note save Invalid Fields error is raised opw-4987040
This fix updates an internal barcode inventory test so it no longer depends on sample data being present. It helps keep automated checks stable and reduces the chance of false failures during release validation.
Original PR description
Add group 'stock.group_production_lot' to user to enable lots/SN runbot-error-230495 Forward-Port-Of: odoo/enterprise#91709