Daily updates from Odoo
Monday, July 14, 2025
14 changes
Enhancements to existing features
Installing the Belgian POS blackbox module no longer shows a driver reload prompt. This reduces setup friction because IoT Boxes now receive the required blackbox driver automatically by default.
Original PR description
When we installed the module `pos_blackbox_be`, a dialog was shown to ask the user to reload his IoT Box's drivers (in order for its blackbox to be dected as a blackbox instead of an adam scale). We removed this dialog as we now download the blackbox driver by default on IoT Boxes. Forward-Port-Of: odoo/enterprise#89724
Domestic VAT return names no longer show the country ISO code, reducing unnecessary detail in report labels. ISO codes remain visible for foreign VAT returns, where the country distinction is useful.
Original PR description
Showing ISO codes for every return is unnecessary and should only be shown for foreign VAT returns. This commit removes the ISO code from the return name for domestic return only. task-4783937 Forward-Port-Of: odoo/enterprise#86391
Resolved issues and error corrections
Italian POS fiscal receipts and invoices no longer add a manual header because supported fiscal printers already print one automatically. This prevents customers from receiving receipts with duplicated header information, improving receipt clarity and compliance with printer behavior.
Original PR description
The printer is already adding a header by default so we don't need to add one manually. Steps to reproduce: ------------------- * Setup an Italian fiscal printer in the POS * Open the POS and create a new order * Add a product and validate the order > Observation: The printed receipt has 2 headers. Why the fix: ------------ According to the Italian fiscal printer documentation, the header is automatically added by the printer, so we don't need to add it manually. Ticket before and after the fix:  opw-4794322 Forward-Port-Of: odoo/enterprise#89856 Forward-Port-Of: odoo/enterprise#89419
The Payroll app no longer shows an error when users open the Payslips menu before any payslips have been created. This prevents an unnecessary interruption and makes the menu usable for new or empty payroll setups.
Original PR description
This PR fixes a traceback that occurred when opening the Payslips menu in the Payroll app without any existing payslips. Root Cause: The issue was caused by passing a null or undefined payrunId to the PayslipActionHelper component, which was not handled properly. Solution: Since payrunId is optional, we added a conditional check in the parent view (hr_payslip_list_renderer) to only pass the payrunId to PayslipActionHelper if it is defined. Related task: 4919933.
The VoIP softphone now uses a clearer minimize icon instead of a minus icon, aligning the interface with designer feedback. This small visual adjustment helps users better understand the button's purpose without changing functionality.
Original PR description
Following feedback from the designers. Forward-Port-Of: odoo/enterprise#89949
This fix updates stored image information so website and marketing email content uses the current image data fields. It helps prevent broken or inconsistent image handling after the html builder changes.
Original PR description
*: marketing_automation_website_sale When `html_builder` was introduced, some data attributes related to images have changed. Unfortunately, the attributes on static data were not adapted accordingly. Because of this, both namings might appear in this version. This commit migrates images and background images attributes to use the new attributes. Dataset changes: - copy `originalId` to `attachmentId` - rename `originalMimetype` to `formatMimetype` task-4367641
Helpdesk tickets created directly in a closed stage are now marked as closed immediately. This keeps the customer portal's Open Tickets filter accurate, reducing confusion for portal users and support teams.
Original PR description
**Steps to reproduce:** 1. Install the Helpdesk module. 2. Create a ticket directly in a closed stage (e.g., 'Solved') and add the portal user as a customer. 3. Log in as the portal user. 4. Apply the Open filter. **Issue:** - The ticket appears under Open Tickets, even though it was created in a closed stage. **Cause:** - Currently we consider a stage as closed if 'floded in kanban' is True and When a ticket is created directly in a closed stage, the close_date field is not set. Since the portal filter relies on close_date to distinguish open from closed tickets, this shows closed tickets in open filter. https://github.com/odoo/enterprise/blob/c34256932e593ac2774fa65af813d64edb70ec43/helpdesk/controllers/portal.py#L63 **Solution:** - During ticket creation, if the specified stage is a closing stage, set the close_date field to the current time. opw-4847097 Forward-Port-Of: odoo/enterprise#88983 Forward-Port-Of: odoo/enterprise#87293
Product pages now show subscription pricing in the correct layout. This makes prices clearer for shoppers and helps avoid confusion when products are sold as subscriptions.
Original PR description
This commit fixes the price layout when the product is offered as a subscription. task-4894315 COM: https://github.com/odoo/odoo/pull/215794
Changing the number of people on an appointment booking no longer makes the previously chosen date appear unselected. This keeps the booking flow clearer for customers and helps avoid confusion while selecting availability.
Original PR description
Step to reproduce: 1. Install appointment and website 2. Go to Appointment > create a new appointment with availability on 'resources' 3. select a 'resource' and check 'manage capacities' 4. go to…
Step to reproduce: 1. Install appointment and website 2. Go to Appointment > create a new appointment with availability on 'resources' 3. select a 'resource' and check 'manage capacities' 4. go to website by smart button 5. Select a date slot. 6. Select the Number of People. Issue: - Previously selected date gets visually deselected or does not retain active state after changing the number of people. Cause: https://github.com/odoo/enterprise/blob/955edd68837c3a8302dcd34b1a6edee28e95ba23/appointment/static/src/interactions/appointment_select_appointment_slot.js#L460 - The logic attempted to restore the previously selected date by calling .click() on the date element. However, this click() call silently failed to trigger the desired behavior. Solution: - Instead of relying on .click() to re-trigger the selection, the handler onClickDaySlot() is now called directly, passing the appropriate DOM element as currentTarget. opw-4859743 Forward-Port-Of: odoo/enterprise#87514
Features or functions removed from Odoo
Odoo PLM will no longer create the default “New Product Introduction” ECO type for new databases. This reduces confusion by keeping the default setup focused on the intended PLM change management flow; existing databases keep their current records.
Original PR description
There are two ECO types by default, which can be confusing, and PLM isn't intended to introduce new products in the first place, so we get rid of 'New Product Introduction' records from the default data. **Note:** There will be no update script to remove the record from existing databases. Task ID: [4664077](https://www.odoo.com/odoo/my-tasks/4664077)
Code cleanup and technical improvements
The Documents app test suite was updated by converting active kanban tests to the newer testing approach and removing obsolete skipped legacy tests. This improves maintainability and helps future changes be validated more reliably, with no expected direct impact on end users.
Original PR description
Convert the unskipped 'documents_kanban' tests and remove other skipped tests. We also clean some helpers and some tests.
This update modernizes internal filtering logic across several Odoo Enterprise modules without changing how users work day to day. It helps keep the codebase more consistent and easier to maintain, reducing future development risk across appointments, helpdesk, approvals, CRM, ESG, knowledge, localization, and payroll areas.
Original PR description
odoo/odoo#217708
The rental date picker and rental search components were modernized behind the scenes to use Odoo's newer interaction framework. This should help keep the website rental flow easier to maintain while preserving the customer-facing experience for selecting rental periods.
Original PR description
task-4784396
Miscellaneous changes
Community: https://github.com/odoo/odoo/pull/216865 Design Themes: https://github.com/odoo/design-themes/pull/1107 Forward-Port-Of: odoo/enterprise#89126
Original PR description
Community: https://github.com/odoo/odoo/pull/216865 Design Themes: https://github.com/odoo/design-themes/pull/1107 Forward-Port-Of: odoo/enterprise#89126