Monday, April 27, 2026
25 changes · saas-19.3
Resolved issues and error corrections
This update resolves a technical issue that caused the payroll system to crash when employee bank account information was incomplete. The fix ensures the system handles missing data gracefully, preventing errors and maintaining accurate payroll processing. This improves system stability and reliability.
Original PR description
Accessing the employee bank accounts using index [0] raised an IndexError when no accounts were defined. Additionally, computing the CLABE flag using len() caused a TypeError when the account number was missing. This change uses a safe recordset slice to avoid accessing empty records and guards the length check to only evaluate when a value is present. It prevents crashes while keeping the original behavior unchanged and avoids sending invalid empty values in the CFDI. Forward-Port-Of: odoo/enterprise#114073 Forward-Port-Of: odoo/enterprise#113987
This update fixes an issue where custom background colors in mailings weren't consistently applied, particularly with rounded text blocks. The change ensures that the Content Background color picker correctly reflects the background color of mailings, resolving a visual inconsistency. This improves the overall appearance and usability of the mailing feature.
Original PR description
The `o_mail_wrapper_td` element in the `ThemeWrapper` template had a hardcoded `bg-white` class. The intent was for the wrapper background to default to white, but doing it this way meant the color…
The `o_mail_wrapper_td` element in the `ThemeWrapper` template had a hardcoded `bg-white` class. The intent was for the wrapper background to default to white, but doing it this way meant the color didn't participate in the CSS variable system. Whenever a user set a custom Content Background color and a border-radius on a text block, the corners would reveal white underneath instead of the actual Content Background color. Removed the `bg-white` class from the template and set white as the proper default for the `--wrapper-background-color` variable instead, so the wrapper is still white by default but correctly responds to the Content Background color picker. Steps to reproduce: 1. Create a new Mailing 2. Set the Content Background color to something other than white 3. Add a Text block 4. Set a border-radius value on the block => white shows behind the rounded corners instead of the Content Background Ticket [link](https://www.odoo.com/odoo/project.task/5868955) opw-5868955 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247808
This update fixes an issue where the TicketBai QR code was missing when reprinting paid orders after reloading the POS. The fix ensures the QR code source is correctly set during order loading, guaranteeing accurate QR codes are generated for all paid orders. This improves the accuracy of order fulfillment for our Spanish customers.
Original PR description
When printing a paid order after reloading the POS, the TicketBai QR code was missing. The QR source (l10n_es_pos_tbai_qrsrc) was only set during _postPushOrderResolve after payment, but not when loading historical orders from the backend. opw-6068076 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261102 Forward-Port-Of: odoo/odoo#259372
This update streamlines the data sent to the self-order POS mobile app by removing unnecessary fields. This optimization improves app performance and reduces data transfer, leading to a smoother user experience. The change was implemented as a minor fix to enhance the mobile POS functionality.
Original PR description
Fix _generate_return_values to remove some fields that are not needed on the frontend Forward-Port-Of: odoo/odoo#260243 Forward-Port-Of: odoo/odoo#259915
This update resolves an issue where CODA bank files with an incremented detail sequence (3.2) were causing import errors. The fix adjusts the parsing process to accommodate these changes, ensuring smoother integration with bank statements. This improves the reliability of importing bank data into Odoo.
Original PR description
### Issue: Some banks provide CODA files that do not strictly follow the specification, and increment the detail sequence on 3.2…
### Issue: Some banks provide CODA files that do not strictly follow the specification, and increment the detail sequence on 3.2 https://febelfin.be/media/pages/publicaties/2023/febelfin-standaarden-voor-online-bankieren/5607daeda5-1754302976/standard-coda-2.7-en.pdf Importing such files raises an error: `Error R3004: CODA parsing error on information data record 3.2, seq 00020002! Please report this issue via your Odoo support channel.` ### Cause: The parser compared the full `infoLine['ref']`, while only `infoLine['ref_move']` needs to remain consistent https://github.com/odoo/enterprise/blob/a6efef92b86d95e05245c4ccf26324d37cc153e6/l10n_be_coda/models/account_journal.py#L683-L698 The `infoLine['ref_move_detail']` (3.2 sequence) change should not block import when incremented and should not trigger an error ### Steps to reproduce: - Install `l10n_be_coda` and switch to the `BE company` - Import a CODA file with incremented 3.2 detail sequence (e.g., files available in related tickets or test data) Before the fix, the error is trigger opw-6071761 Forward-Port-Of: odoo/enterprise#113904
This update resolves an issue where menu links containing spaces didn't correctly point to newly created pages. The fix ensures that menu URLs with or without leading slashes are properly linked, preventing 404 errors. A warning is now displayed in the menu editor when a URL contains spaces to avoid confusion.
Original PR description
When a menu item URL contains a space and has no leading slash (e.g., "some url"), creating a page from its 404 screen does not link the menu to the newly created page. The menu keeps pointing to a…
When a menu item URL contains a space and has no leading slash (e.g., "some url"), creating a page from its 404 screen does not link the menu to the newly created page. The menu keeps pointing to a 404. **Steps to reproduce**: 1. Create a menu item with a URL containing spaces and no leading slash (e.g., "some url"). 2. Click the menu item -> a 404 page is displayed (expected). 3. Click "Create Page" -> the page is created and saved. 4. Click the menu item again -> it still returns a 404 (unexpected). **Issue**: During page creation, the path is slugified (e.g., "some url" -> "/some-url"). The controller then tries to link the menu to the new page by setting `page_id`. However, `pagenew()` only searches for menu URLs with a leading slash, so a menu saved as "some url" is not found when searching for "/some url". As a result, `page_id` is never set, and `_clean_url()` keeps resolving the menu to "/some url" instead of the page's actual URL "/some-url". Menus without spaces (e.g., "mypage") have the same issue where `page_id` is not set, but since `_clean_url()` prepends "/" and renders "/mypage", which matches the new page URL, the menu still resolves correctly. **Fix**: Match both URL formats (with and without leading slash) when linking a menu to a newly created page. Additionally, a warning is now shown in the menu editor when a URL contains spaces, since spaces are slugified during page creation, which could cause confusion. (Note: this is only a warning - URLs with spaces are still allowed.) task-[5095646](https://www.odoo.com/odoo/project/974/tasks/5095646) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261208 Forward-Port-Of: odoo/odoo#248967
This update fixes a problem where the Point of Sale system wasn't correctly identifying available printers. The fix combines printer options, ensuring the system can now reliably connect to the correct printer for receipts or preparation tasks. This improves the overall functionality and reliability of the Point of Sale module.
Original PR description
We were looping over non existing `config.printer_ids`. It's either `config.receipt_printer_ids` or `config.preparation_printer_ids`. We now loop over a set containing values of both. Forward-Port-Of: odoo/odoo#259681
This update resolves a technical error preventing the IoT printer test button from functioning correctly. The fix corrects a mistake in how the system identified the printer, ensuring the test print button now operates as intended. This improves the reliability of the IoT printer testing process.
Original PR description
In the refactoring in odoo/enterprise#113545, a mistake was made where the `printer.iot_device_id` was used instead of `printer.iot_device_id.id`, causing an error when calling `searchRead`. This commit fixes the issue by restoring `.id`.
This update fixes an issue where employees assigned to the 'Administration' department weren't automatically added to relevant discussion channels. Now, the system correctly subscribes users to channels when their department is updated, ensuring consistent communication and channel membership based on role.
Original PR description
**Steps to reproduce:** navigate to 'Discuss' > 'Channels' create a new channel and set 'Auto Subscribe Departments' to 'Administration' create a new user and a corresponding employee record go to 'Employees' > locate the employee set the employee's department to 'Administration' **Current behavior before PR:** The user is not automatically added to the channel. This occurs because the auto-subscription logic is triggered before the department change is committed to the database. **Desired behavior after PR is merged:** The user is correctly auto-subscribed to the channel once the department update is saved. task-5448649 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261338 Forward-Port-Of: odoo/odoo#241617
This update fixes an issue where Google Reserve slots incorrectly showed resources as available due to missing leave information. The team also removed unnecessary code related to schedule hours, which is not relevant for pre-built Google Reserve slots. This ensures accurate availability for appointments.
Original PR description
Resources on leave were still showing as available in BatchAvailabilityLookup responses because unavailabilities were not checked. Also remove the min_schedule_hours offset copied from the frontend logic. It is not relevant for Google Reserve as slots are pre-built in the feeds. Task-6150788 Forward-Port-Of: odoo/enterprise#114793
This update resolves an issue where a duplicate 'close' button was appearing in the Discuss ActionPanel, causing confusion for users. The fix restricts the button's visibility to the meeting view, ensuring a cleaner and more intuitive user experience. This improves usability and consistency within the Discuss feature.
Original PR description
ActionPanel components (e.g. invitation panel, delete thread dialog) displayed an extra close (X) button in Discuss. The close button was shown when not in a chat window, causing duplication with the existing close button. This commit restricts the button visibility to the meeting view only, preventing the extra close button. Task-[6054963](https://www.odoo.com/odoo/project/1519/tasks/6054963) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255822
This update resolves an issue where users were seeing duplicate tooltips appear when hovering over certain fields in event lists. The fix addresses a conflict between Odoo's built-in tooltips and custom tooltips, ensuring a cleaner and more consistent user experience. This improves usability and avoids confusion.
Original PR description
…oltip How to reproduce: go on an event in communication tab. You will see two tooltips on communication reminders (see task for more details and picture). When hovering a readonly many2one/reference field in a list, two tooltips appeared simultaneously: a native browser tooltip from the `title` attribute on the inner `<span>` (set by `web.Many2One`), and the Odoo custom tooltip from the `data-tooltip` attribute on the parent `<td>` (set by the list renderer for many2one/reference/char fields). Issue come from Odoo management of nested titles, especially when having both data-tooltips and title. For stable, a local solution is to limit usage of title and use better-managed tooltips for many2one. Task-6147434 Forward-Port-Of: odoo/odoo#261057
This update addresses visual issues within the attendance system, specifically aligning elements and removing distracting lines. Additionally, a change allows for more flexible control over the attendance dropdown, preserving the default behavior while offering greater customization for related modules.
Original PR description
# [FIX] hr_attendance: alignment This commits revamps the attendance systray by aligning items and removing horizontal lines between attendance entries. # [FIX] hr_attendance: allow not to close systray based on condition This commits allows components inheriting from the attendance menu to conditionally close the systray. By default, the dropdown will be closed on check-in and check-out to preserve the original behaviour. See odoo/enterprise#113189 task-6088779 Forward-Port-Of: odoo/odoo#257930
This update resolves an issue where users migrating to the ESG module experienced problems due to an automatic installation of a related dependency (survey). By adding survey as a required auto-install, the system now only installs survey when users already have the necessary data, preventing migration disruptions and ensuring a smoother upgrade process.
Original PR description
Description of the issue this commit addresses: As survey is a dependency but not an auto_install requirement of esg_csrd only from 19.0, when migrating to that version, users that don't have survey installed but do have esg will auto_install survey and pull a new computed stored field, ResUsers.karma which causes migrations issues as no script was made to account for that scenario. --- Desired behavior after this commit is merged: This commit adds survey in the auto_install requirements for the module so only instances that already have ResUsers.karma can auto_install esg_csrd --- runbot-238524 Forward-Port-Of: odoo/enterprise#113905
This update ensures that payrun steps are correctly marked as 'valid' when the user proceeds after encountering an error. Previously, errors could linger, making it appear that key data wasn't processed. This change provides a more reliable indication of payrun completion, improving data accuracy.
Original PR description
Before: - Clicking Continue moved the payrun to the next step, but the previous step could remain in `error` if anomalies were still present. - This made explicitly passed steps (version/time/attendance) look unresolved. After: - Continue marks the passed step as `valid`. - because if the user willfully ignore an error, then it's ok to put it as validated. - This is applied consistently for all payrun step state points. Task-6053982
This update resolves an issue preventing the creation of webhooks for companies with non-alphanumeric characters in their names. The fix utilizes a regular expression to sanitize webhook names, ensuring compatibility and allowing authorized users to successfully set up webhooks for the payment process. This improves the reliability of the payment authorization feature.
Original PR description
Issue: --- Due to this issue, if the company name has non-alphanumeric chars, `authorize` doesn't allow us to create a webhook. ### Steps to reproduce: 1- Create a company with a non-alphanumeric char (_ is allowed so something else such as `company - 1`) 2- Setup `Authorize` payment. 3- Generate webhook. Fix: --- We can remove it using regular expression. `\w` matches characters from a to Z, digits from 0-9, and the underscore `_` character. https://www.w3schools.com/python/python_regex.asp#:~:text=%5Cw,%2C%20and%20the%20underscore%20_%20character opw-6152999
This update fixes a potential issue where users could falsely validate signatures in draw mode using Firefox and similar browsers. Now, a signature field requires a visible drawing before validation, ensuring signatures are only confirmed when a genuine signature is present. This improves the accuracy and reliability of our document signing process.
Original PR description
On Firefox and similar browsers, it was possible in some cases to validate a signature field in draw mode without actually drawing a signature, allowing the document signature to be confirmed with an empty signature. This change ensures that a signature field in draw mode can only be validated when the signer has effectively drawn a visible signature. task-6117312 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#259100
This update fixes an issue where invoices in the l10n_mx module were incorrectly rounding tax amounts. The change reverts to the standard mixed rounding mode, ensuring accurate tax calculations on invoices with both 16% and 53% taxes. This improves financial reporting accuracy for Mexican businesses using the Odoo system.
Original PR description
**STEP TO REPRODUCE** 1. Install l10n_mx. 2. Change the included in price settings to 'Tax included' for a 16% tax and a 53% tax. 3. Create a invoice with a product with a unit price of 360, add the 53% tax and then the 16% tax. 4. Notice the total of the invoice is 360.01 instead of 360. The issue was discussed with (las), l10n_mx_edi should no longer require to override the rounding mode for taxes. opw-5963855 Forward-Port-Of: odoo/odoo#255574
This update corrects a bug that was disrupting tests within the l10n_mx_edi module, specifically related to rounding calculations for Mexican tax invoices. The change reverted the rounding mode to 'mixed,' resolving the test failure and ensuring accurate tax reporting. This fix maintains the functionality of the Mexican tax processing features.
Original PR description
https://github.com/odoo/odoo/pull/255574 change the rounding mode back to mixed. This break the test modified in this PR. opw-5963855 Forward-Port-Of: odoo/enterprise#114321 Forward-Port-Of: odoo/enterprise#114081
This update fixes a minor display issue in the Helpdesk app's performance dashboard. Previously, the 7-day average rating was shown as a percentage, which was confusing for users. Now, the rating is displayed as a score out of 5, providing a clearer and more intuitive understanding of performance.
Original PR description
Steps to reproduce: - Open the Helpdesk app with demo data. - Check the "My Performance" section of the dashboard. Current behavior: - "Avg Last 7 days" is shown as "3.50 %". Expected behavior: - "Avg Last 7 days" is shown as "3.5 / 5". Issue: The backend already computes `7days.rating` as a 0-to-5 average, but the frontend dashboard template appends a "%" suffix. Solution: Update the Helpdesk dashboard template to display the 7-day average as a score out of 5 instead of as a percentage. task-5998903 Forward-Port-Of: odoo/enterprise#109804
This update resolves a crash that occurred when assigning recruiters in the Odoo Recruitment Kanban view. The issue stemmed from an unnecessary cache parameter in avatar image URLs, which caused errors due to missing data. Removing this parameter ensures stable operation and correct avatar display.
Original PR description
**Steps to Reproduce:** 1. Open Recruitments 2. Find a job position without a recruiter in the kanban view. 3. Clicking on the assign recruiter widget produces a traceback. **Bug Cause:** The…
**Steps to Reproduce:** 1. Open Recruitments 2. Find a job position without a recruiter in the kanban view. 3. Clicking on the assign recruiter widget produces a traceback. **Bug Cause:** The ?unique= cache related parameter was added to the avatar image URL in the autoCompleteItem slot of KanbanMany2OneAvatarEmployeeField. This parameter relies on write_date being available on the autocomplete suggestion record. However, web_name_search only returns id and display_name, so write_date is undefined on autocomplete suggestion records, causing a crash when accessing autoCompleteItemScope.record.data.write_date.ts. **Bug Solution:** Remove the ?unique= parameter from the avatar image URL in the autoCompleteItem slot, reverting it to its original form. Cache is unnecessary for autocomplete suggestion avatars as they are only visible for the duration of the dropdown interaction. **Task:** 6092768 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261040
A minor fix was implemented to correct a naming inconsistency within the Odoo website code. The resource name was updated, but a subsequent addition to the website functionality didn't reflect this change. This ensures consistent resource naming for improved website stability.
Original PR description
The resource `on_replaced_media_handlers` was renamed `on_media_replaced_handlers` with [b966432], but commit [909341c] added a use case without updating the name. [b966432]: https://github.com/odoo/odoo/commit/b966432e85a7e19c0e4e4bfbb34f673b64fc84e6 [909341c]: https://github.com/odoo/odoo/commit/909341c3ae601a83358a4ed4a0a4b6965bfef332
This update corrects a previous issue where certain users without attendance access were unable to view attendance records with overtime. The fix involved adding specific user groups to the 'Overtime Details' section, ensuring only authorized personnel can access this data. This improves data security and usability for all users.
Original PR description
Steps to Reproduce: - Log in as user which has no access of attendance - Try to open attendance record with overtime Issue: - As users below Self Attendance edit and hr administrator does not have access to rule_ids Fix: - Added groups on 'Overtime Details' section as other user does not have access to read. task-5886324 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250567
This update resolves an issue where the holiday selection process was inaccurate. The change corrects a domain filter used to retrieve holiday data, ensuring employees are correctly identified for holiday entitlements. This improves the reliability of holiday calculations and reporting.
Original PR description
Forward-Port-Of: odoo/odoo#261250
This update fixes a missing field in the Czech Republic (CZ) version of Odoo. The 'City' field was absent from contact forms, preventing accurate address data entry for CZ customers. This change ensures compliance with Czech tax regulations and improves the accuracy of customer information.
Original PR description
Steps to reproduce: 1- Install Contacts and l10n_cz 2- Switch to CZ company 3- Open any contact Issue: `City` field is missing in address section Expected behavior: Should have the `City` field opw-6123084 Forward-Port-Of: odoo/odoo#259433