Monday, July 14, 2025
7 changes · master
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