Tuesday, January 13, 2026
21 changes · master
Resolved issues and error corrections
This update resolves an inconsistency in the SLSP reports, ensuring data is displayed in a predictable order. The change adds a standard sorting method to the database queries, preventing future test failures and improving report reliability. This ensures accurate reporting for Philippine tax compliance.
Original PR description
A recent test was added that tests the lines of the SLSP reports. Up until now, all tests were either testing specific lines (not the report structure) or the export, which uses different queries. This new test is now failing inconsistently due to the order in which the data is being displayed. We add default orderby in SQL queries of the SLSP (using the models default orderby) in order to make the order consistent and avoid further issues. Forward-Port-Of: odoo/enterprise#103925
This update simplifies the Point of Sale interface by removing a confusing option. Specifically, when the POS IoT module is enabled, the system now correctly displays both IP address and IoT options for device selection. This ensures a cleaner and more intuitive user experience for sales staff.
Original PR description
When there is only one choice in the selection of `use_type` (IP address or IOT), we hide it in the form. But when there is two choice (so, when pos_iot is installed), we show the two options. community pr: https://github.com/odoo/odoo/pull/242790
This update fixes a visual inconsistency in the HR appraisal module by aligning progressbar headers and content to the left. This ensures a cleaner and more professional appearance, particularly when the application is displayed in right-to-left languages.
Original PR description
**Progressbar** columns currently have **right-aligned headers**, which results in visual inconsistency. This change enforces **left alignment** for both the **progressbar headers** and their **column content** to ensure a clearer and more consistent layout. When rendered in an **RTL (right-to-left)** format, the headers and content are aligned to the **right** accordingly, consistent with the alignment of other fields in that format. Community: https://github.com/odoo/odoo/pull/241053 task-5248253
This update resolves a technical issue where the 'Mark as Ready' order completion process in UrbanPiper POS was failing, resulting in an 'undefined street' error. The fix ensures that the system correctly checks if a customer is assigned before completing the order, preventing this error and improving order processing reliability.
Original PR description
Steps to produce: ==== - Place an online delivery order through urbanpiper - Edit the order and remove customer - Complete the order as Marks as Ready - Print Reciept Issue: ==== - TB occurs stating undefined street Fix: ==== - Check whether partner is assigned or not task-5407001 Forward-Port-Of: odoo/enterprise#103736 Forward-Port-Of: odoo/enterprise#102100
This update corrects a discrepancy in the employment bonus calculations for the Belgian HR payroll module, ensuring accurate figures up to March 2026. This change addresses a technical adjustment to comply with updated Belgian tax regulations, guaranteeing accurate payroll reporting for our Belgian clients. The fix impacts the calculation of bonus payments.
Original PR description
Forward-Port-Of: odoo/enterprise#103820
This update fixes an issue where refund alerts were triggered incorrectly due to rounding differences in order totals. The change ensures that the system accurately compares refund amounts to original order amounts, preventing false alerts and improving the reliability of the POS system. This ensures accurate financial reporting and reduces potential customer service issues.
Original PR description
Before this commit, if the total amount of the order had rounding differences compared to the sum of its lines, the system could incorrectly trigger an alert stating that the refund amount exceeds the original order amount. This was due to a direct comparison between the two amounts without considering potential rounding issues. opw-5402240 Forward-Port-Of: odoo/enterprise#103758 Forward-Port-Of: odoo/enterprise#102224
This update resolves a display issue within the sign flow where the third dropdown option in the style list menu was not appearing correctly. The fix ensures that the system waits for font data to load before presenting the full menu selection, preventing a single option from being displayed intermittently. This improves the user experience during the sign process.
Original PR description
In this tour, when we want to select the third dropdown item in style list menu, we must wait that the rpc get_fonts/ is done, or else, it has only one item in the menu. When the menu is opened before the call is completed, there is only one style. When it is opened after, there is all styles loaded. runbot-error-id~232652 Forward-Port-Of: odoo/enterprise#103813
This update ensures that timesheet timers accurately reflect the task they're associated with when viewed in the list view. Previously, timers defaulted to the user's favorite project instead of the specific task, leading to inaccurate time tracking. This fix corrects this behavior.
Original PR description
### Issue: When looking at the list of timesheet for a task, we can start the time but the timer have default values that don't correspond to the task. ### Cause: `startTimer` in the `timesheetTimerService` is called from the timesheet timer hook without vals. It then makes an orm call to `action_start_new_timesheet_timer` to retrieve the fields (project or task) but as nothing is given in the vals, the selected project is the one returned by `_get_favorite_project_id()`. ### Solution: Get the context of the list view to retrieve the task or the project and input it in `vals`. opw-5342525 Forward-Port-Of: odoo/enterprise#103922 Forward-Port-Of: odoo/enterprise#102152
This update resolves a performance issue related to appointment scheduling within the HR module. Refactoring the HR system and moving employee data to a new model required a slight adjustment to database queries to ensure accurate scheduling calculations. This change improves the speed and efficiency of appointment slot availability.
Original PR description
Since hr has been refactored and lot of hr.employee fields moved to hr.version model, we have to increase Querycount by one as now _slot_availability_prepare_users_values_workhours function calls for hr.version together with hr.employee to get all the right values. Original function flamegraph  Since https://github.com/odoo/odoo/pull/202869, extra call for hr.version when we are trying to read employees[0].resource_calendar_id  Fixing [Runbot error 226700](https://runbot.odoo.com/odoo/error/226700)
This update corrects a persistent warning about duplicate payslips that appeared after deleting one. The fix ensures a payslip is first cancelled before deletion, preventing the warning from incorrectly triggering. This improves payroll accuracy and reduces potential user confusion.
Original PR description
### Steps to reproduce: - Create two payslips for the same employee for the same period. - Delete one of them; the duplicate warning still appears on the other payslip. ### Fix: - Before deleting a payslip, first cancel it so the current payslip can be skipped while checking for duplicate payslips. - Then invalidate the issue fields of the current payslip, which indirectly recompute the warning for duplicate payslips. task: 5427473
This update corrects a technical issue where the CFDI button was incorrectly displayed on payruns that didn't include Mexican payroll data. The change adds a check to ensure Mexican payslips are present before determining CFDI requirements, preventing the button from appearing unnecessarily. This improves the user experience and avoids potential confusion.
Original PR description
Before this commit, the computed fields `l10n_mx_cfdi_primary` and `l10n_mx_cfdi_secondary` would return True for payruns containing only non-Mexican payslips. This happened because `all()` returns True for empty iterables, causing the CFDI button to appear on payruns that have no Mexican payslips. This commit: - Adds explicit check for Mexican payslips existence before evaluating the CFDI state conditions - Hides `l10n_mx_edi_cfdi_origin` field for non-Mexican payslips - Adds test coverage for CFDI visibility on non-Mexican payruns task-5478038 Forward-Port-Of: odoo/enterprise#103783
This update resolves an issue where the attendance app would crash when an employee didn't have a linked calendar. The fix ensures the app handles employees with flexible schedules properly, preventing errors and improving overall usability. This change ensures all employees can accurately record their attendance.
Original PR description
Steps to reproduce: - Create an employee - Remove the calendar to have fully flex - Open the attendance app -> traceback When an employee has no resource calendar (resource_calendar_id=False), the _gantt_unavailability method would crash with a TypeError when trying to create a ZoneInfo from calendar.tz (which is False/None). This fix adds a check to skip calendar periods where the calendar is not set, consistent with how flexible calendars are already handled. task-5462208 Forward-Port-Of: odoo/enterprise#103243
This update ensures the databases module's app icon is consistent with official branding guidelines. The change corrects previous inconsistencies, maintaining a professional and aligned user experience. This is a minor visual improvement.
Original PR description
There were a few inconsistencies on the databases module's app icon. These have been corrected to align with the app icon guidelines. task-5186170
This update clarifies the terminology used for payroll input types, renaming 'Other Input Types' and 'Payslip Other Input Types' to 'Salary Input Types'. This change enhances user understanding and simplifies the payroll setup process, reducing potential confusion.
Original PR description
Updated the Input type for better clarity and easier understanding for users: - '**Other Input Types**' : 'Salary Input Types' - '**Payslip Other Input Types**' : 'Salary Input Types' **task-5474028** Forward-Port-Of: odoo/enterprise#103632
This update corrects a display issue where archived recurring plans continued to show up as pricing options on the website. The fix ensures that only active plans are considered when displaying pricing, improving the user experience and preventing outdated information from being presented. This change ensures accurate product pricing for customers.
Original PR description
**Steps to produce:** - Install `sale_subscription,website_sale` module. - `Subscription > Configuration > Recurring Plans`. - `Archive` the `Monthly` plan. - Go to website > Shop > Open product `Car…
**Steps to produce:** - Install `sale_subscription,website_sale` module. - `Subscription > Configuration > Recurring Plans`. - `Archive` the `Monthly` plan. - Go to website > Shop > Open product `Car Leasing (SUB)`. **Issue:** - Even after archiving the Monthly recurring plan, its pricing still appears on the website product page. **Root cause:** - At [1], when searching for a suitable recurring price, the system does not filter out pricing records belonging to archived recurring plans. - As a result, inactive plans are still considered during pricing selection. **Solution:** - In this fix, we ensure that recurring plan pricing is included only if the related plan is active. - Archived plans are now ignored, preventing them from appearing on the website. [1]: https://github.com/odoo/enterprise/blob/25edaac85f8fd1699bb78163b01efb966e7fb680/sale_subscription/models/sale_subscription_pricing.py#L78-L79 before <img width="340" height="184" alt="recurring_plan_before" src="https://github.com/user-attachments/assets/abac39fb-5765-4bc4-aec3-87eef7135a18" /> after <img width="337" height="168" alt="recurring_plan_after" src="https://github.com/user-attachments/assets/35ee92e8-e66b-4612-add3-58b277560ea5" /> **opw-5266333** Forward-Port-Of: odoo/enterprise#103473 Forward-Port-Of: odoo/enterprise#100587
This update ensures that eTIMS configuration warnings are only displayed for companies operating in Kenya. Previously, warnings were shown for all companies, causing confusion. This change streamlines validation and ensures warnings are relevant to users working within the Kenyan eTIMS requirements.
Original PR description
Before: In multi-company setups, the eTIMS configuration warning was shown even when working in companies that are not based in Kenya. This resulted in confusing and irrelevant warnings for users using other localizations. After: The eTIMS configuration warning is now limited to Kenyan companies only. Non-Kenyan companies are no longer impacted, keeping the validation relevant while preserving the intended eTIMS behavior. task-5462334 Forward-Port-Of: odoo/enterprise#103291
This update resolves minor issues with the German Point of Sale certification process. Specifically, it now correctly transmits net values instead of gross values, includes previously prepared cash statement business cases, and ensures amounts are formatted precisely for Fiskaly's system. This improves the accuracy and reliability of the reporting.
Original PR description
In this commit: ------------------ - Transferred **net value** instead of **gross value** for `price_per_unit`. - Included **cash statement business cases** that were prepared earlier but not sent to Fiskaly. - Ensured all **amount fields are sent as strings** to Fiskaly. - Fixed rounding precision using `toFixed()` to maintain **2–5 decimal places**, as required by Fiskaly (e.g., `4.70` should not become `4.7`). - Adjusted logic for **customer account payments** to send the **adjusted order amount** instead of the original total. task: 5122652 Forward-Port-Of: odoo/enterprise#99643
This update resolves an issue where hosts with basic FrontDesk access couldn't check out visitors. The system has been updated to allow hosts to view and check out visitors assigned to them, improving usability and efficiency. This change ensures all hosts can perform the core FrontDesk function.
Original PR description
Before: * Hosts with only FrontDesk user access could receive the checkout email but got an access error when clicking “Check Out Visitor.” * They couldn’t read the visitor record because the rule only checked station responsible users. * The visitor is able to add the new button in the visitor menu. After: * Updated the access rule to also allow hosts to see visitors where they are listed as the host. * The visitor which is not responsible to station can't create new records Impact: * Hosts with user access can now open the visitor record and check out the visitor without any errors. task- 5373026
This update fixes a potential issue with how Odoo tours interact with the Clipboard API, particularly in headless environments like Chrome. By delaying cleanup steps, the system now ensures the API call is fully executed before attempting to mock it, preventing delays or permission errors. This improves tour reliability and performance.
Original PR description
Reliably mocking Clipboard API calls in tours should be done in two steps: - the step that will actually do the call should do the patching, followed by the actual action. - the cleanup should only be done in the following step to ensure the action's listener has actually finished. This commit applies this principle to avoid the "cleanup" to be executed before the action's listener has actually reached the call to the Clipboard API (because of slower processing, slower network...), which would defeat the mocking purpose (and either get the browser to indefinitely wait for the user's clipboard usage approval or a permission error depending on the browser's default behavior). Note: this was mainly brought to light by the new Chrome 143+ default policy which revoke all permissions in headless mode. Forward-Port-Of: odoo/enterprise#103971
This update resolves an issue where the IoT test button incorrectly displayed a 'success' status even when errors occurred during communication. The fix standardizes the data format used for IoT responses, ensuring accurate status reporting and preventing misleading feedback for users. This improves the reliability of the IoT device monitoring feature.
Original PR description
This commit fixes several situations where a positive status would be given by the test button despite the presence of an error: - If the websocket connection was used but there was a timeout - If the websocket connection was used but there was any other error - If any 6-digit error code was returned when using the stable IoT box To fix these issues, we stop using the `data['message']` field, since it gets ignored by the websocket confirmation controller. We now use the same result format as the other requests (and the stable IoT box). We also add a check for the `"timeout"` that we receive when a websocket request times out. Forward-Port-Of: odoo/enterprise#103963 Forward-Port-Of: odoo/enterprise#103817
This update ensures that thumbnails are correctly updated for requests shared publicly. Previously, public users couldn't update thumbnails on associated documents, even when they had access to the request itself. This change resolves a discrepancy in access permissions, guaranteeing consistent thumbnail updates regardless of user access levels.
Original PR description
Bug === 1. Create a request 2. Create a shortcut to that request 3. Share it to public 4. Public upload => The thumbnail is updated on the document, but not on the request. The reason is that the public user has `user_permission = none`, because he has only access with the token, and so we skip the thumbnail propagation. This has no sense, because if we don't have access on the document, we loose the access on the shortcut (even if we are the owner). Task-5485511 Forward-Port-Of: odoo/enterprise#102888