Tuesday, February 3, 2026
26 changes · master
Resolved issues and error corrections
This update resolves a bug that prevented automated tours from correctly initializing drag actions on the Gantt chart. The change re-enabled a safety check during pill dragging, ensuring actions work as expected while still allowing users to drag pills outside the chart's grid.
Original PR description
In PR https://github.com/odoo/enterprise/pull/103230, a fail-safe was removed to allow dragging pills outside the grid (for unscheduling). This caused issues in automated tours where actions triggered on off-screen pills (where no cell is hovered) failed to initialize the drag properly. This commit reinstates a validation check within `onWillStartDrag`. This ensures the drag only starts if a valid target is confirmed, fixing the tour failures while preserving the ability to drag pills out of the grid. runbot-error-238521
This update resolves a test issue related to a recent change in how the select component is implemented. The new component uses a popover instead of the traditional `<select>` tag, requiring adjustments to the tests to account for changes in how the user interface is rendered, particularly on smaller screens.
Original PR description
Following the current introduction of a new select component, we no longer rely on the native `<select>` tag, and instead invoke a popover that displays the select possible values. Since our new component relies on `<div>` and a popover which can be set as invisible if the browser window is too small, the tests needed to be adapted so that the dom helpers (that are sensitive to a node visibility by default) can still work. runbot error - 238438
This update fixes an issue where Swiss payslips were generated with the generic name "new Payslip" instead of the correct name including the employee's details. The fix ensures that payslips now display the employee's name and pay period, improving clarity and accuracy for payroll reports. This resolves a minor user experience problem.
Original PR description
_ ## Short functional explanation of the error When generating a payslip from a payrun for an employee on the swiss localization, the name of the PDF payslip is simply "new payslip" instead of…
_ ## Short functional explanation of the error When generating a payslip from a payrun for an employee on the swiss localization, the name of the PDF payslip is simply "new payslip" instead of "Salary Slip - <name of employee> - <time period of the slip>" ## Reproduction Steps 1. Install the app l10n_ch_hr_payroll. 2. Make sure you use a Swiss company. 3. Go to Payroll and click on the Payslips tab > payslips. 4. Click on Pay Run. Select Switzerland: ELM salaries and click Continue. 5. Select an employee for which you'd like to generate the payslip. 6. Click on the employee row in the list view. 7. Click Compute sheet > Print. ## Expected behavior A PDF with name "Salary Slip - <employee name> - <time period>" is generated. ## Unexpected Behavior A PDF with name "new Payslip" is generated. ## Origin of the issue When printing the slip with this flow, we don't call the method ```_compute_name()``` used to compute the name of the current slip. Therefore, it stays at 'New Slip', which is the default name. Henceforth, we have to call this method manually when printing the slip. _ opw-5253811 Forward-Port-Of: odoo/enterprise#103471
This update corrects a previous issue where the payslip report displayed the company's working schedule instead of the employee's. The report has been updated to accurately reflect the employee's individual working schedule, providing more accurate payroll information.
Original PR description
-The display for working schedule info in the payslip report was referring to the company's working schedule. -The report has been adjusted to include the employee's working schedule.
A recent test failure related to restaurant appointment tours has been resolved. The fix ensures the test accurately simulates the Point of Sale system's time, preventing inconsistencies and improving the reliability of our automated testing process. This ensures that the tour behaves predictably during testing.
Original PR description
The `RestaurantAppointmentTour` was failing inconsistently because the browser used the real system clock during the initial Point of Sale load, while the test data was created for a specific mock date (Jan 28). Because the PoS logic filters appointments based on the current time, the test data was being misinterpreted or "normalized" by the application before the tour had a chance to freeze the clock. Moving `Chrome.freezeDateTime` to the absolute first step of the tour ensures the simulated time is applied as early as possible, making the test deterministic. runbot-232601 Forward-Port-Of: odoo/enterprise#106024
This update enhances the performance of account reporting by optimizing the way data is filtered within key tables. The changes address inefficiencies in the account reports module, leading to faster report generation and improved system responsiveness. This ensures smoother operations for financial reporting.
Original PR description
In addition to: - [x] #104936 And other PRs in Odoo core: - [x] odoo/odoo#243833 - [x] odoo/odoo#243967 - [x] odoo/odoo#246440 Forward-Port-Of: odoo/enterprise#106080 Forward-Port-Of: odoo/enterprise#105960
This update fixes a potential error in the achievement reports that could cause issues when dealing with large order IDs. By using a bitwise operation instead of multiplication, the system now correctly handles IDs, preventing errors and ensuring accurate report generation. This improves the stability and reliability of the sales commission reporting.
Original PR description
Before this commit, we had issues on odoo.com when the ids of the account move, account move line, sale order or sle order line were too high. We would end up with ids bigger than BIGINT limit. This commit ensure it does not happen anymore by using bitwise operation on ids istead of multiplying the values. task-5423978 Forward-Port-Of: odoo/enterprise#105643 Forward-Port-Of: odoo/enterprise#103264
This update resolves a minor issue with the barcode app's tours related to scrap adjustments. The problem stemmed from a Chrome browser incompatibility with number input fields, leading to incorrect quantity updates. This fix ensures accurate scrap quantity entries, improving data consistency.
Original PR description
This commit fixes tours related to scrap refactor (odoo/odoo#210299) that included setting the quantity field in the scrap form in the barcode app. The issue was caused by <input type="number"> not supporting text selection in Chrome, which made the tour's edit() helper append instead of replace the value (e.g., "0.00" + "15" = "0.0015"). Fixed by using direct DOM value assignment, matching the existing workaround pattern for number inputs. Build Errors: https://runbot.odoo.com/odoo/runbot.build.error/238376 https://runbot.odoo.com/odoo/runbot.build.error/238374 https://runbot.odoo.com/odoo/runbot.build.error/238375
This update removes a redundant 'Follow-Up Report' line from PDF reports sent to customers. This line previously displayed the partner's total balance, which was confusing. Removing it simplifies the report and improves clarity for customers without impacting the report's core information.
Original PR description
When generating the followup report, compute and display the total in a single foreign currency if all invoices shown in the report share that same foreign currency. The total is suppressed (not displayed) if there is at least one invoice in a different currency (mixed currency scenario). task-4554514 --- When sending follow-up reports via the "Send" feature or payment reminders, the printed PDF includes a "Follow-Up Report" line. In this specific context, this line always equals the partner's total balance. This line is redundant and can be confusing for customers. Removing it clarifies the report without losing any necessary information.
This update resolves a test failure related to date restrictions in the dividend fiscal year selection field. The fix ensures the test environment uses the correct 'frozen' dates, preventing errors. While a long-running server scenario is theoretical, this change improves test reliability.
Original PR description
The selection field of the dividend_fiscal_year has a restricted range based on dates, which has implication for the frozen dates in the test. That is why the test will fail today: 2021 is not anymore in the selection. But, suppose however that you have a server running for 3 years, it could be problematic as well. (quite theoretical however) So we can simply make the selection field selection in the wizard a lambda method and that way also in the test, it will take the 'frozen selection'. build error 237681 https://runbot.odoo.com/odoo/runbot.build.error/237681 Forward-Port-Of: odoo/enterprise#106132
This update corrects a bug that prevented the system from correctly creating vendor partners when processing vendor bills in Uruguay. The issue stemmed from an incorrect state search when the 'Departamento' tag was missing from the XML data. This ensures accurate vendor partner creation and avoids disruptions in financial processes.
Original PR description
If the xml file has a tag "Departamento" without a value, the vendor partner creation fails because the state is searched with an empty string and detects a state that is not correct because the xml has no state value. Task Adhoc side: 109004 Forward-Port-Of: odoo/enterprise#105801
This update fixes an issue where the 'Next Booking Start' field for rooms was incorrectly empty when bookings existed. The change removes a filter that excluded occupied rooms from availability calculations, ensuring the field accurately reflects upcoming booking times. This improves the user experience when viewing room availability.
Original PR description
Steps to reproduce:
1. Install `room`
2. Create a room.
3. Create a booking for the current time (so the room becomes occupied).
4. Create another booking for tomorrow.
5. Open the list view of rooms.
Current Behavior:
- The `Next Booking Start` field is empty for the created room, despite Having future bookings.
Cause:
- The method `_compute_next_booking_start` filters the rooms using `self.filtered('is_available')`. Since the room is currently occupied (due to the active booking), the room is excluded from the query entirely.
Solution:
- Remove the `is_available` filter from the search domain. The next booking start time is now calculated for all rooms, regardless of whether they are currently available or occupied.
opw-5360101
Forward-Port-Of: odoo/enterprise#102129This update resolves a technical issue preventing the demo data for the Switzerland - HR Payroll module from functioning correctly. A recent change removed a related database model, causing errors. The fix removes outdated references to this model within the demo data, ensuring the demo environment operates as intended.
Original PR description
**Steps to reproduce:** - Install the "Switzerland - HR Payroll" module with demo data. - You get a traceback **Issue:** A recently [merged PR](https://github.com/odoo/enterprise/pull/99418) removed `res.bank` model leaving demo data with references to this model invalid. **Solution:** Remove references to `res.bank` in demo data. Task: 5905983
This update fixes a bug that occurred when users copied and then undid copying planning slots. The issue was triggered when a previously deleted slot was involved in the undo process, resulting in an error. Now, the system verifies that records exist before attempting to delete them, ensuring a smoother user experience.
Original PR description
### Steps to reproduce: - Install Planning - Navigate to the gantt view for planning slots - Copy previous week's slots - Delete one of the newly copied records - Undo the copying action - Notice an Error is raised that a record doesn't exist ### Cause: When undoing the copy process we unlink all the newly created records but if the user has already deleted one of them it will trigger an error that this record doesn't exist and it has already been deleted ### Fix: We check the existence of the records before deleting them. opw-5490327 Forward-Port-Of: odoo/enterprise#105530
This update fixes a translation issue where warnings on payslips didn't correctly display translated field names in French (CH). The change ensures that all missing information fields on payslips are accurately translated, improving the user experience for French-speaking Swiss users. This resolves a reported bug impacting data clarity.
Original PR description
The warnings that appear on a payslip when the employee's form misses information are not fully translated Steps to reproduce: 1. Install module l10n_ch_hr_payroll 2. Switch to "My Swiss Company" and change language to French (CH) 3. Open app "Paie" and create a new employee (only add a name) 4. Click on "Contrats" in the stat button and create a new contract for the employee (only add a name), save it and set it as "En cours" in the status bar 5. Go to "Fiches de paie" > "Toutes les fiches de paie" and create a new payslip 6. Add the newly created employee to the payslip 7. The warnings in the form displaying the missing fields from the employee form do not translate the name of the missing fields Solution: Use `get_description` to get the translated name of the missing fields opw-5403634 Forward-Port-Of: odoo/enterprise#106188 Forward-Port-Of: odoo/enterprise#104499
This update resolves an issue where sending a voice message without text would trigger a WhatsApp API error. The fix ensures the system correctly handles empty HTML composer content, preventing the creation of unnecessary text messages and allowing voice messages to be sent successfully. This improves the reliability of the WhatsApp integration.
Original PR description
Sending a voice message without any text can trigger a WhatsApp API error because the empty HTML body is incorrectly treated as a valid text message. ### Reproduction Steps 1. Open the Discuss app.…
Sending a voice message without any text can trigger a WhatsApp API error because the empty HTML body is incorrectly treated as a valid text message. ### Reproduction Steps 1. Open the Discuss app. 2. Select a WhatsApp channel. 3. Record and send a voice message without typing any text in the composer. 4. Observe the message status. Result: The status changes from "Sent" to "Failed" with the error `(#100) The parameter text['body'] is required`. ### Cause The WhatsApp API does not support captions for audio files. Messages containing both audio and text are split into two separate WhatsApp messages: one for the audio file and one for the text body. Whether the text message is created depends on whether the message body is considered non-empty. Since commit odoo/odoo@f4dcc83adf552466ba7b05f09a4c651fe69f18ff , the composer’s default content is an empty HTML element. Although visually empty, this HTML is still a non-empty string at the data level. As a result, the system incorrectly determines that a text message is required and creates a secondary `whatsapp.message` record. When processed, the empty HTML is converted to a plain text string (`""`). Sending this as a text message fails validation because WhatsApp requires a non-empty body for text messages. ### Fix 1. Update `DiscussChannel.message_post()` to use `tools.is_html_empty(body)` to detect semantically empty HTML. This prevents creating a separate text message for audio attachments when the composer content is effectively empty. 2. Update `WhatsappMessage._send_message()` to check the truthiness of the converted plaintext `body` rather than the raw HTML field before adding a caption. This prevents sending an empty `caption` parameter for attachments when the body is empty. opw-5266805 Forward-Port-Of: odoo/enterprise#103213
This update resolves an issue preventing users from seeing the 'compare' button when browsing rental options. The fix ensures the button is consistently available during the rental selection process, improving usability. It also adds a stability measure to prevent errors when adding products.
Original PR description
This commit fixes the issue where the "compare" button wasn't visible in the view. Now, the compare button is accessible within the process. Additionally, it addresses the indeterminacy by adding a step where the comparison bar is explicitly waited for before adding a product. runbot-error-id~231524 Forward-Port-Of: odoo/enterprise#106182
This update corrects the Odoo Enterprise system to reflect recent changes on the Swiss Federal Tax Administration website. The import of tax rates for payroll has been adjusted to use the new URLs, ensuring accurate calculations and continued functionality of the single-canton import feature.
Original PR description
Due to recent updates on the Federal Tax Administration website, the single-canton import feature was made temporarly unavailable, this PR adjusts the new URLs for downloading the tax rates Forward-Port-Of: odoo/enterprise#106288
This update simplifies the subscription plan view by removing irrelevant order line details like sections and discounts. Previously, the view was cluttered with unnecessary information. Now, it only displays the actual products included in the subscription, making it easier to configure and understand.
Original PR description
The subscription plan view was displaying all order line types, including sections, notes, and discount lines, which added unnecessary clutter. This update filters the order lines to display only actual subscription products, improving clarity and usability in the plan configuration. task-5404614 Forward-Port-Of: odoo/enterprise#106076 Forward-Port-Of: odoo/enterprise#101796
A recent issue with the sign tour process was resolved, preventing it from failing due to a selector timeout. This update ensures the sign tour now correctly opens documents in the signing view, restoring successful test results and improving the overall sign experience.
Original PR description
The sign_tour was failing because the `.o_sign_sign_directly` button was not found in the document view, causing the tour step to timeout and breaking both sign UI tests. This was due to the tour not properly opening the document in the signing view. The tour now relies on a stable selector, restoring successful execution of `test_sign_tour` and `test_sign_tour_without_sign`. Runbot issue: https://runbot.odoo.com/odoo/runbot.build.error/234923 Forward-Port-Of: odoo/enterprise#105844
This update corrects a minor error in the invoice XML format used by the Ecuadorian accounting module. The fix removes an extra closing tag, ensuring the system generates invoices correctly and avoids potential processing issues. This improves the reliability of financial reporting.
Original PR description
Currently, the `account_move_form_invoice_and_withhold_view` contains an invalid closing group tag (`</group>>`) introduced by PR [1], at [2]. The extra `>` results in malformed XML. This commit removes the stray character and restores a properly closed `</group>` tag. [1]: https://github.com/odoo/enterprise/pull/77592 [2]: https://github.com/odoo/enterprise/blob/7c574d758ff5b1404b808cc647d4a2ae40f5f0c0/l10n_ec_edi/views/account_move_views.xml#L79 **No task Id** Forward-Port-Of: odoo/enterprise#106104
This update resolves an issue where outdated account synchronization records could cause problems, preventing new connections. By focusing on fresh, uninitialized links, the system is now more reliable and stable for account online synchronization. This ensures a smoother experience for users.
Original PR description
Prevent reusing stale account.online.link records that have a provider_type set, which can leave an unusable row and block new connections. By adjusting the search domain in action_new_synchronization, we only reuse clean, uninitialized links. opw-5868438 opw-5867799 Forward-Port-Of: odoo/enterprise#106259 Forward-Port-Of: odoo/enterprise#105187
This update resolves a test failure within the Enterprise module related to how exported models are configured. The change prevents unintended behavior during installation that was causing a test to fail. This ensures the full Enterprise test suite runs correctly and reliably.
Original PR description
Updating the fieldsets of `DEFAULT_FIELDS_TO_EXECUTE` in place changes the behaviour of `test_23_export_hardcoded_models_and_fields` if that test runs after `_compute_excluded_fields` has been executed for one reason or an other, which apparently does not occur during post_install but *does* occur during at_install, and so fails in the "full" enterprise test running everything in a single job. https://runbot.odoo.com/odoo/error/238451 https://runbot.odoo.com/odoo/error/238449 https://runbot.odoo.com/odoo/error/238497 Forward-Port-Of: odoo/enterprise#106110
This update ensures the accounting dashboard data is compatible with the latest Odoo 18.5 version. The change addresses a technical issue where data formats were being incorrectly upgraded, and while partially resolved, requires further refinement for full functionality with all filter options.
Original PR description
This commit upgrades the data for the accounting dashboard from the 18.4.x file format to 18.5.x The goal is to avoid having `ODOO.FILTER.VALUE` being upgraded to `ODOO.FILTER.VALUE.V18` because the dashboard was already adapted to work[*] with the new formula see 682d6ec1ddb825674999e0db1fc0cc48c3be67c5 *: it only half-works. It only works for simple values of filters (years, quarter, months), but it doesn't work properly with others (Last 7 days, etc.) Forward-Port-Of: odoo/enterprise#106269
This update corrects an issue where demo bank data was no longer accurate after a recent change to the `res.bank` model. The team has adjusted the demo data to align with the current system, ensuring accurate reporting and demonstration functionality for the l10n_ch_hr_payroll module. This ensures a smooth experience for users.
Original PR description
after this the following commit 712b7bf `res.bank` model was removed, accordingly demo data needs to be adapted in master. task-5907863
This update removes obsolete comments left over from a previous development exploration. These comments were a minor distraction and have now been cleaned up as part of a routine maintenance task. This ensures the codebase remains clear and focused on current functionality.
Original PR description
During the development of #102625, the idea of splitting the conversion date from the order date was explored. However, it was quickly dismissed, and some outdated comments slipped through. Forward-Port-Of: odoo/enterprise#106301