Friday, April 24, 2026
65 changes · master
Resolved issues and error corrections
This fix ensures automated tests keep the right test details when they are retried, especially tests that span multiple areas. It helps prevent false failures or empty reruns in the test process, improving confidence in release validation without changing customer-facing features.
Original PR description
Regenerating the test instance on retry works in most cases but fails when the test instance contains relevant data about what to test, which is the case for cross module tests and test params. Combined with an error while disabling autoretry this caused the hoot test to retry with an empty list. Fixing the issue by setting the relevant flags. This is a quick fix to reenable the test but a more robust solution would be to make sure ALL test instance existing attributes are properly copied before starting the test, or forbidding to set them on the instance before running them. Forward-Port-Of: odoo/odoo#261130
The portal address form now correctly connects field labels with their matching inputs, including the city field. This helps the system identify labels properly and avoids small form issues for users entering address information.
Original PR description
- Fix the label `for` attributes in the address form to match the input element IDs, ensuring compatibility with the JavaScript `_getInputLabel` method. - Before this change, the `_getInputLabel` method failed to locate the labels for specific fields (like city_id) because of a mismatch between the label's for attribute and the element's id. Related PR : https://github.com/odoo/enterprise/pull/107877 task-5098418
The product module's import tests were adjusted so they no longer depend on optional demo data being present. This helps prevent false test failures in automated checks and keeps release validation more stable.
Original PR description
runbot error: 242012 (lasted error in `Post install tests for pos_restaurant -> !sale`: resolved) Forward-Port-Of: odoo/odoo#255497
This fix ensures that when users cancel a confirmation prompt in spreadsheets, the intended cancel action is properly carried out. This avoids missed cleanup or follow-up behavior and makes spreadsheet interactions more reliable.
Original PR description
The `cancel` callback of the `env.askConfirmation` method was not called when the user clicked on the cancel button. task-6074948 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#260061
Linked sales order status changes will no longer automatically create chatter messages on projects or tasks. This keeps project communication cleaner and reduces unnecessary notifications for users.
Original PR description
Before this commit: - The chatter on the Project record tracked and logged changes to the linked Sales Order's status. After this commit: - Explicitly set `tracking=False` on the related `sale_order_state` field in `project.project`, `project.task` models. - Status updates to linked SOs will no longer automatically post tracking messages in chatter. task-6079809 Forward-Port-Of: odoo/odoo#260915 Forward-Port-Of: odoo/odoo#258549
This fixes an issue in the website builder where custom snippets using zoom scroll effects looked too weak in the block insertion dialog. Business users get a more accurate preview when choosing reusable website blocks, reducing confusion while editing pages.
Original PR description
Commit 468ddd4d244d0098e5c8b9726bc1c85c036a913d changed the viewport height of the iframe in the snippets preview dialog (from `333%` to `100%`). That height is used in the computation of the zoom effect of backgrounds. This computation was not adapted to the change of height, and thus the zoom was too weak. This commit adapts the computation for the zoom to compensate the viewport height change of that previous commit. Steps to reproduce: - Open website builder - Create a bunch of custom snippets (for scrolling in the dialog) - Create a custom snippet which has a background with "Scroll Effect" set to "Zoom In" (or "Zoom Out") - Create a bunch of custom snippets (for scrolling in the dialog) - Open the dialog to "Insert a block", choose the "Custom" category - Scroll - Bug: the custom snippets with zooming task-6088029 Forward-Port-Of: odoo/odoo#260695
This fixes an issue where extra spaces were being included in website and interface translation files. By removing that unwanted whitespace, existing translations remain valid and translation exports are cleaner and easier to maintain.
Original PR description
Due to the refactor in this commit[^1], we lost the stripping of whitespace from QWeb translations, which caused a lot of whitespace to be included in the exported POT files, invalidating existing translations. This commit restores the stripping of whitespace from QWeb translations. [^1]: https://github.com/odoo/odoo/commit/9eac755406028496375025c8c7fe4128c8740079 Forward-Port-Of: odoo/odoo#260972
Dropdown labels in bottom sheets now wrap properly and leave room for selection indicators, preventing text from spilling out or overlapping. This improves the experience on mobile and small screens, especially when long device names appear in voice or video settings.
Original PR description
**Purpose of this PR:** Before this commit, in the bottom sheet, dropdown labels could overflow their active container or overlap with the checkmark icon when selected. In voice/video settings, long…
**Purpose of this PR:**
Before this commit, in the bottom sheet, dropdown labels could overflow their active container or overlap with the checkmark icon when selected. In voice/video settings, long selected device names could cause horizontal
scrolling on small screens.
This commit:
- Allows dropdown labels in bottom sheets to wrap on small screens.
- Reserves space for the checkmark icon in all bottom sheet dropdowns if any item is selected, ensuring consistent alignment.
- Constrains the selected device label within the available space voice/video settings to prevent layout overflow.
<table>
<tr>
<td><b>Before</b></td>
<td><b>After</b></td>
</tr>
<tr>
<td><img src="https://github.com/user-attachments/assets/8f347abc-fe26-427a-95ec-97ace3a0c5a2" width="300"/></td>
<td><img src="https://github.com/user-attachments/assets/6d6104b5-46c3-404b-be09-1cfa55209a96" width="300"/></td>
</tr>
</table>
task-[6095602](https://www.odoo.com/odoo/project/1519/tasks/6095602)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#260740
Forward-Port-Of: odoo/odoo#257572This fix prevents an error when a user removes the dismissal date in the End of Collaboration form. It ensures HR staff can update employee departure information without the form crashing.
Original PR description
Currently, an error occurs when user removes dismissal date on `End of Collaboration` form. Steps to replicate: - Install `hr` with demo. - Open any employee (e.g.- Abigail Peterson) > Click on cog…
Currently, an error occurs when user removes dismissal date on `End of Collaboration` form.
Steps to replicate:
- Install `hr` with demo.
- Open any employee (e.g.- Abigail Peterson) > Click on cog button > End of Collaboration.
- Remove value from `Dismissal date` and click else where.
Error:
```
File "/home/odoo/odoo19/community/addons/hr/models/hr_employee_departure.py", line 56, in _compute_action_date
if departure.action_date and departure.action_date < departure.departure_date:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '<' not supported between instances of 'datetime.date' and 'bool'
```
Cause:
- As dismissal date is assigned from departure date [here] and the user removed the value from dismissal date so we receive it as false.
- So, we receive the error from [this] line, as `departure.departure_date` is received as False.
Solution:
- Added a conditional check for `departure_date` before the date comparison.
[here]: https://github.com/odoo/odoo/blob/a9d1b7ad18cfbc90fa415af6675518d687f072f9/addons/hr/models/hr_employee_departure.py#L51
[this]: https://github.com/odoo/odoo/blob/a9d1b7ad18cfbc90fa415af6675518d687f072f9/addons/hr/models/hr_employee_departure.py#L56
No ID
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#260615Fixes an error that could occur when users edited the address area in the Full Page Ticket report through Studio. This makes event ticket report customization more reliable and prevents a save-time crash.
Original PR description
The error occurs when a user tries to edit the address field in a report, which causes the template `event_report_template_formatted_event_address` to act as the `main_node` in the following…
The error occurs when a user tries to edit the address field in a report, which causes the template `event_report_template_formatted_event_address` to act as the `main_node` in the following [line](https://github.com/odoo/enterprise/blob/d1b36478bef4bae37dbb9f2394f36a5ed365f58c/web_studio/controllers/keyed_xml_differ.py#L658). According to the following [commit](https://github.com/odoo/enterprise/pull/62955/commits/0489fcf7d2c6666b53aaa2007e636c5132028cf6), when modifying elements within a report, it is assumed that the modified elements will always have a parent view where the modification occurs. **Steps to replicate:** * Install `event` and `web_studio` * Events > Studio > Reports > Full Page Ticket Example * Put your cursor to the left of `Rue de la paix 123` next to the small gps symbol * Type anything > Save `AttributeError: 'NoneType' object has no attribute 'replace'` **Solution:** * Add a wrapping `<div>` element so that it acts as the `main_node` instead of the template itself, which does not have a parent. * This would allow user to make changes near address. **Sentry-6727234781**
This update makes Odoo's messaging notifications more reliable when some message details are missing, reducing the risk of errors in mail-related workflows. It also simplifies the underlying notification handling, with test updates across CRM, Events, Mail, and SMS to keep performance expectations aligned.
Original PR description
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
This fix makes the ordering of related accounting lines consistent when processing subcontracting purchases. It helps avoid confusing differences between setups and makes test results and records more predictable.
Original PR description
This commit sorts account move line by account and product to make sure the order stay the same in all configuration. runbot: 242697 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
This update corrects the spelling of "occurred" across several Odoo areas, including HR, web, point of sale, localization, IoT, marketing, and dashboards. The change improves the professionalism and clarity of user-facing and internal messages without altering business functionality.
Original PR description
Enterprise: https://github.com/odoo/enterprise/pull/114861
This update corrects an automated test for record count limits in the web interface after recent styling changes caused it to fail silently. It helps keep quality checks reliable so future changes are less likely to introduce unnoticed issues.
Original PR description
PR [1] introduced a count limit test in v18, which was forward-ported to master/19.3. However, the forward-port was merged despite a silent failure caused by CSS changes in PR [2]. This commit fixes the failing test. [1] #259562 [2] #255332 Forward-Port-Of: odoo/odoo#261188
The online store footer configuration now uses Odoo’s centralized footer option system. This keeps the website shop aligned with the latest website builder approach and reduces the risk of footer customization issues as the platform evolves.
Original PR description
In [1], footer templates were refactored to use a centralized resource provider for better extensibility. This commit aligns `website_sale` with the new pattern by registering its footer options via the `footer_templates_providers` resource instead of directly extending `website.FooterTemplateOption` in XML. [1]: https://github.com/odoo/odoo/commit/ea25e015a6935216c15612b28cbf824fb7f29c21
This update corrects issues that caused automated checks for the website and HTML builder to fail after a recent change. It helps keep the builder stable and reduces the risk of regressions reaching users.
Original PR description
Fix Hoot fails introduced by [1f86365]. Fixes: -:WebSuite.test_unit_desktop[@website/builder], -:WebSuite.test_unit_desktop[@html_builder/background_shape_color/ Connections shape color updates when snippet is dropped next to it], -:WebSuite.test_unit_desktop[@html_builder/block_tab], -:WebSuite.test_unit_desktop[@html_builder/operation] [1f86365]: https://github.com/odoo/odoo/commit/1f863651ed64b207683fc7295e1f7e5a38920dac runbot-243304 runbot-243316
This change makes several automated user journey tests more precise so they run consistently. It reduces false failures in internal validation for areas like Project, Sales, Survey, Website, and Mail activity checks, helping teams ship changes with more confidence.
Original PR description
Fix undeterministic tours by making some triggers more precise in a few steps. 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
This fixes an issue where some images selected together in the media dialog were not converted to the more efficient WebP format when the source image had cross-origin restrictions. Users should see more consistent image optimization, helping pages stay lighter and load more reliably.
Original PR description
Since [1], when users select multiple images through the media dialog, subsequent images of a CORS protected image are not converted to webp. This commit fixes that issue. Related to task-5405262 [1]: https://github.com/odoo/odoo/commit/422b073bcc6406c76339a1ccaa0c40dc3f42801c Forward-Port-Of: odoo/odoo#261055
The recruitment refusal wizard now shows the completed email message when refusing a single applicant, instead of displaying template placeholders. This helps recruiters review the exact message before sending and reduces confusion or accidental communication errors.
Original PR description
Issue: ---------------------------------------- The `applicant.get.refuse.reason` wizard displays the mail body with the placeholders, not the values actually sent. Steps to reproduce: ---------------------------------------- - Open Recruitments and go to an applicant form view - Click "Refuse" - Select the template "Job already fulfilled" - The subject and the mail body have placeholder values Cause: ---------------------------------------- We don't render the body for the wizard, only when we send the mails. Solution: ---------------------------------------- Render the body when we get it from the template. This only works if `applicant_ids` have one value. Otherwise, we display the placeholders because the values can be different from an applicant to another. opw-6082883 Forward-Port-Of: odoo/odoo#258874
Fixed an accounting issue where taxes configured to replace themselves could be treated as redundant and hidden from account moves. These taxes now remain available when searching and selecting taxes, helping ensure invoices and journal entries show the correct tax information.
Original PR description
If a tax replaces itself, it's not redundant and must appear on account moves. This commit solves this issue by including self-replacing taxes in the name_search. task-6147767 Forward-Port-Of: odoo/odoo#261044 Forward-Port-Of: odoo/odoo#260616
The Gelato order status update email template can now be edited and saved without triggering an error. This prevents an issue caused by invalid email layout markup that could break template maintenance for administrators.
Original PR description
**Steps to reproduce:**
- Go to Technical > Email > Email Templates
- Try to edit and save "Gelato: Order status update"
- QWebError is raised: `KeyError: 'tracking_data'`
**Issue:**
Browser html normalization silently move block elements such as `<ul>` outside `<p>` when rendering the template body_html as it is invalid html. This moved the `t-foreach="ctx['tracking_data']"` evaluation outside the surrounding `<t t-if="ctx.get('tracking_data')">` which triggered the error.
**Fix:**
Removed `p` element to use the outer `div` and avoid the issue for now.
related: https://github.com/odoo/odoo/commit/b24974d64c3afe5febdad9abff9cb23a333f1ada
similar: https://github.com/odoo/odoo/pull/256605
opw-6114223
Forward-Port-Of: odoo/odoo#259548This update fixes an internal test issue caused by a short delay in the settings search feature. It helps keep quality checks reliable so future changes to settings can be validated without false test failures.
Original PR description
Before this commit, the settings view tests were failing because a 500ms debounce was added to the search functionality in 1. This commit ensures that the test waits for the debounce timer to finish before continuing with the assertions. [1] https://github.com/odoo/odoo/commit/2c246214e62a9bd2ee7bd372cac99b55ed565a83 Forward-Port-Of: odoo/odoo#261116
Odoo now checks custom related fields in a way that better matches how the system actually evaluates fields. This prevents valid configurations from being incorrectly blocked while still ensuring related field paths can be searched when needed, with safeguards to avoid disrupting upgrades.
Original PR description
Following up on #259309. A field must be searchable to be used in the related path. To know it, we must go into the instantiated field on the model to read that property, as being stored is not necessary. This mixes two different levels of abstraction but is necessary to have more consistent behaviour and not to block valid related field going through searchable fields. We also do this check only when the registry is ready to avoid blocking upgrades. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261138 Forward-Port-Of: odoo/odoo#260585
This fixes an unstable automated test related to sharing mail activity updates between browser tabs. The change helps keep Odoo's mail activity functionality safer to maintain by reducing false test failures during development and release validation.
Original PR description
The `@mail/activity/activity/activity updates are shared between tabs` fails in a non-deterministic fashion. It occurs because the `/mail/data` route can interfere with the test. runbot-242616 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#260862 Forward-Port-Of: odoo/odoo#260265
Sales service order line names will no longer automatically include unit prices just because formatted names are enabled. This keeps displayed sales information cleaner and prevents prices from appearing unless that option is specifically requested.
Original PR description
Before this commit, when `formatted_display_name` is true in the context, the display name of `sale.order.line` records will always show the partner and the price unit if it contains a service product. The problem is `with_price_unit` is no longer checked in the context to really know if we want to display or not the price unit in the formatted display name. This commit checks `with_price_unit` in the context to display the price unit in the formatted display name if it is truly in the context. Forward-Port-Of: odoo/odoo#259080
This change updates a web module test so it works correctly after recent test data changes. It helps keep automated checks reliable and prevents unrelated code changes from being blocked or incorrectly accepted due to a failing test.
Original PR description
PR [1] added a record in the test data, which made an existing test fail. The PR should have never been merged as is, but due to a runbot issue, failing tests were ignored by the mergebot and the PRs were merged anyway. This commit fixes the failing test. [1] https://github.com/odoo/odoo/pull/256621 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#261177
This fixes how Odoo detects whether an invoice was sent through Peppol after new Peppol response statuses were added. It helps prevent incorrect sending behavior and makes the process more robust for future Peppol status updates.
Original PR description
With the addition of new peppol_move_state for the Application Responses in Peppol, some checks to know wether the move was sent through Peppol were not updated. This commit does that by adding a common field for it. This is usefull as we might add some extra peppol_move_state values in the near future (Peppol supports more response types than we currently offer to our users). Forward-Port-Of: odoo/odoo#258598
Accounting demo invoices now reference the administrator user instead of a demo user that may be archived in trial databases. This prevents access errors when users open the Sales journal in demo company setups, especially with French localization.
Original PR description
Steps to reproduce: ------------------- 1. Create a new trial DB with demo data and French localization 2. Archive Marc Demo if you create the DB locally (this happens automatically on Odoo.com…
Steps to reproduce: ------------------- 1. Create a new trial DB with demo data and French localization 2. Archive Marc Demo if you create the DB locally (this happens automatically on Odoo.com trials due to the user seat limit probably) 3. Select the demo company only (unselect the main one) 4. Open Accounting and click the Sales journal from the dashboard Access Error about reading Marc Demo. Unarchiving him would work around this issue. Why the bug ----------- The sales demo invoices set invoice_user_id to Marc Demo (base.user_demo). Marc Demo belongs to the main company and can't be read from another company when archived. On 19.0 this did not break because the avatar widget only needed display_name (read with sudo). Commit https://github.com/odoo/odoo/commit/3732ca85b03bea9eabfb05cc306ce0bf5bac88d4 added write_date to it for cache busting, so now the read is real and the rule fails. The fix ------- Use base.user_admin instead: it's never archived, so it stays readable from any company. opw-6106870 Forward-Port-Of: odoo/odoo#259365
Event ticket links in emails now handle cases where the related attendee was deleted. Instead of showing an error, the system exits cleanly when no valid registration remains, reducing confusion for event participants and organizers.
Original PR description
Currently, an error occurs when accessing the ticket link after the related attendee has been deleted. **Steps to Reproduce:** - Install the **Events** module. - Create a new event. - Create an attendee with a valid email ID. - Make sure the email is sent successfully. - Delete the attendee for the event. - From the received email, try to click on the **"View Tickets"** link. **Error:** `IndexError - tuple index out of range` **Cause:** The controller filters registrations using the provided `registration_ids`, but when the attendee is deleted, the resulting recordset becomes empty. It raises an error when trying to access the first element of an empty recordset. **Fix:** This commit handles empty recordsets by returning early when no registrations are found. sentry-7357927405 Forward-Port-Of: odoo/odoo#256310
Replacing a styled image with an icon in the HTML editor now removes image-only shape effects such as rounded corners, shadows, and thumbnails. This prevents icons from inheriting inappropriate visual formatting and keeps edited content looking consistent.
Original PR description
### Steps to Reproduce: - Go to the To-do app and create a new task. - Upload an image. - Apply shape styling to the image (e.g., rounded, shadow, img-thumbnail). - Replace the image with an icon. ### Description of the issue/feature this PR addresses: - When an image had shape applied (such as rounded, rounded-circle, shadow, or img-thumbnail) and was replaced with an icon, those classes were carried over to the icon. ### Desired behavior after PR is merged: - Since these classes are specific to image shape styling, they are now removed when an image is replaced with an icon. task-6007631 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#259611 Forward-Port-Of: odoo/odoo#258060
The timesheet module's automated checks were updated to match a revised duration display that no longer keeps unnecessary trailing zeros. This helps keep internal quality checks reliable without changing the day-to-day user workflow.
Original PR description
Before this commit, some hoot tests in hr_timesheet module failed because the formatting of float field in timesheet uom widget now removes the trailing zeros since the merge of #256621 This commit adapts the hoot tests. Forward-Port-Of: odoo/odoo#261228
The 'Add a line' button has been added back to the 'My Timesheets' view, aligning it with the 'All Timesheets' view. This change ensures a more consistent and intuitive user experience for managing timesheets, simplifying the process for users.
Original PR description
Issue: When navigating to the 'My Timesheets' view, the 'Add a line' button is missing from the top header. This creates an inconsistency, as the button is readily available in the 'All Timesheets' view. Cause: The system is specifically set up to hide the header button in 'My Timesheets' as soon as a user has existing timesheet entries and can add new lines directly at the bottom of the list. Fix: Removed the strict hiding conditions so it matches the standard behavior of the 'All Timesheets' view. The header button now remains consistently visible, increasing readability and providing a smoother user experience. task-5968297
This update removes automatic tracking of Sales Order status changes within Helpdesk Tickets' chatter. By explicitly disabling tracking, we've simplified the chatter experience and reduced unnecessary notifications. This change improves clarity and focuses users on the most relevant information.
Original PR description
Before this commit: - The chatter on Helpdesk Tickets tracked and logged changes to the linked Sales Order's status. After this commit: - Explicitly set `tracking=False` on the related `sale_order_state` field in `helpdesk.ticket`. - Status updates to linked SOs will no longer automatically post tracking messages in chatter. task-6079809 Forward-Port-Of: odoo/enterprise#114762 Forward-Port-Of: odoo/enterprise#114078
This update resolves an issue where configurable benefits weren't being displayed properly in the system. Previously, benefits were only shown if a salary summary existed for the same type, causing errors when adding new benefits. Now, all configurable benefits are consistently displayed, ensuring accurate benefit information is shown to users.
Original PR description
Cause: After this task https://www.odoo.com/odoo/project/1251/tasks/5419466, the showing of benefits was restricted by mistake to only when there was a salary summary for the same structure type. This meant that adding a configurable benefit would result in a traceback, since the template was then used to get more info later on. Fix: Always show configurable benefits, even if there is no salary summary for the same structure type. task-6126621 Forward-Port-Of: odoo/enterprise#114576
This update prevents email notifications from being sent when generating test payslips. This change improves the testing process by reducing unnecessary email traffic and ensuring consistent test results. It addresses a potential issue where test emails could be generated during development.
Original PR description
In this commit, we prevented email sending during test print payslips. task-6147651 Forward-Port-Of: odoo/enterprise#114593
This update fixes an issue where the timesheet and grid layouts were cramped, causing overlapping elements and inconsistent formatting. Specifically, the column widths have been increased to ensure the timesheet icon and overtime data display correctly, providing a cleaner and more accurate view of timesheet information within the grid.
Original PR description
# [FIX] web_grid: column width with new time widget in month This commit increases the default width of the grid columns. Prior to this, the magnifying glass in Timesheets overlapped with the times in month scale, because the columns were too small. # [FIX] timesheet_grid: column overtime layout Without this commit, the overtimes were spanning two lines because the columns were too small. This commit changes the layout so that it spans one line to be consistent with the grid values. task-6121017 Forward-Port-Of: odoo/enterprise#114656 Forward-Port-Of: odoo/enterprise#114356
This update prevents customers without a portal account from seeing the 'Pay Now' button in follow-up emails. This change avoids confusion and ensures customers aren't directed to a potentially confusing process that won't resolve their invoice access issues. It simplifies the customer experience.
Original PR description
If a customer has no portal account, the pay now button added to follow-up emails won't allow them to access any invoices on the portal. Even if they register afterwards, a separate account will be created and they won't have access to those invoices. To avoid confusion, this commit hides the pay now button when the customer has no portal account. task-6075621 Forward-Port-Of: odoo/enterprise#114698 Forward-Port-Of: odoo/enterprise#112891
This update resolves an issue where the 'cancel' button within a confirmation dialog wasn't functioning as expected. The fix ensures that clicking the cancel button now properly dismisses the confirmation, improving the user experience and preventing data inconsistencies. This was a minor bug fix.
Original PR description
The `cancel` callback of the `env.askConfirmation` method was not called when the user clicked on the cancel button. task-6074948 Forward-Port-Of: odoo/enterprise#112987 Forward-Port-Of: odoo/enterprise#112304
This update resolves a visual issue where the 'to_review' badge on employee forms wasn't highlighting correctly. This was caused by a change in how tracking messages were stored, and a small adjustment was made to ensure the correct messages are displayed.
Original PR description
After master-field-tracking-poc-ppr removed the mail.tracking.value model, tracking messages are now stored with message_type='tracking' instead of 'notification'. The thread_patch.js highlight filter was still matching on 'notification', causing no messages to be found when hovering the to_review badge on the employee form. task-6128747 Forward-Port-Of: odoo/enterprise#114766
This update resolves a bug in the mobile Documents app where clicking on folder categories didn't expand them. The issue stemmed from a conflicting template and has been corrected to ensure the search panel functions correctly on mobile devices, restoring the expected category expansion and icons.
Original PR description
Steps to reproduce: 1. Open Documents in mobile view. 2. Open search panel to switch folder. 3. Click on caret on folder with childrens. 4. Nothing happens. This was due to using the 'web.SearchPanel.Category' template in mobile view. Since the 'toggleCategory' method has been overridden it was no longer expanding the category. To fix this, we use the 'documents.SearchPanel.Category' template as we did before. Plus, we get the nice icons back in front of the main categories. Task-6132283
This update resolves a technical test failure related to the new leaderboard settings within the enterprise timesheet grid. The change ensures that the necessary system calls are executed correctly when these settings are enabled, improving the stability and reliability of the timesheet functionality.
Original PR description
This commit checks the steps expected once the leaderboard settings in timesheet grid is enabled to make sure the RPCs called are correctly done as expected. runbot-error-243315 Forward-Port-Of: odoo/enterprise#115029
This update addresses a temporary issue where mail query counters were inflated due to a change in how messages are accessed. The team temporarily bypassed cached values to improve browsing speed, resulting in higher counter counts. This fix ensures more accurate performance metrics moving forward.
This update corrects a calculation error by excluding company executives (JC999) from the ONSS Base Salary figures reported on payslips. This ensures accurate reporting to the Belgian National Social Security Institute (ONSS) and aligns with regulatory requirements. The change improves payroll accuracy and compliance.
Original PR description
This commit excludes company executives (Joint Committee 999) from the computation of Total ONSS Base Salary (With Previous Payslips) on their payslips. TaskID-6124693
This update simplifies how the system processes XML data for Slovak reports, reducing unnecessary complexity and improving performance. By using the standard XML parsing library, we've eliminated a custom configuration that was adding overhead. This change ensures more efficient report generation and maintenance.
Original PR description
Removes the custom XMLParser configuration in favor of the default etree parser. This reduces unnecessary overhead and ensures we are using the standard library's recommended defaults for processing XML content. Forward-Port-Of: odoo/enterprise#114828
This update resolves a minor typographical error within the Odoo Enterprise codebase. The word 'occured' was incorrectly spelled and has been corrected to 'occurred'. This ensures consistent and professional terminology across various Odoo modules, improving the overall user experience and maintaining code quality.
Original PR description
Community: https://github.com/odoo/odoo/pull/261023
This update fixes a minor issue where users were unable to retry payment attempts after a failure. Now, the system automatically resets the loading state, allowing users to easily re-attempt the payment without needing to refresh the page. This enhances the user experience and reduces frustration.
Original PR description
Currently, if the call to Odoofin fails, we properly show the error to the user but we never manage to reset the isFetching state of the button This means that the only way for the user to try again is to first refresh the page This commit addresses that No task ID
This update corrects a labeling inconsistency within the l10_be_hr_payroll module. Previously, similar labels were used for two insurance fields on employee payroll forms, causing confusion. The update now uses distinct labels, improving clarity and accuracy for payroll reporting.
Original PR description
Step to reproduce: install l10_be_hr_payroll and go on employee form, payroll tab, check one of the two insurance field Cause: same string for both labels Solution: update the label string Task: 6094807
This update resolves an issue where the sign request page would crash when attempting to reload a document that had been deleted. The fix ensures the system handles deleted documents gracefully by redirecting the user to a safe view, improving user experience and preventing data errors.
Original PR description
Steps to reproduce: - Open a sign request - Go to Details - Delete the document from the form view - The UI tries to reload the document Issue: The system tries to load a document that has already been deleted. Current behavior: An error is shown and the page crashes when trying to reload the deleted document. Expected behavior: The system should handle the missing document gracefully and redirect the user to a safe view. Fix: Handled the deleted document case properly by returning a valid response and redirecting the user instead of trying to load the removed document. task id- 6095120 Forward-Port-Of: odoo/enterprise#113094
This update corrects a technical issue in the IoT setup process that was preventing proper configuration. The previous default setting of an empty string has been replaced with 'False', aligning with standard Odoo field practices and resolving a software error. This ensures the IoT setup function operates correctly.
Original PR description
Due to the refactoring in odoo/enterprise#111457, the empty string was removed as an option from the IoT subtype selection. However, in the `/iot/setup` controller the empty string was explicitly used as the default value, which now causes an error due to it not being a valid option. This commit fixes the issue by instead using `False` as the default value, as is standard for Odoo fields. Forward-Port-Of: odoo/enterprise#114823
This update fixes an issue where l10n_de_reports incorrectly identified child contacts of German companies as companies themselves. The change ensures that only partners with their own distinct commercial entities (and German VAT numbers) are classified as companies, improving the accuracy of German tax reports. This resolves a potential reporting discrepancy.
Original PR description
Problem: When l10n_de_reports is installed, child contacts of a German company are incorrectly considered as companies as well. Steps to reproduce: 1. Install l10n_de_reports. 2. Create a company with a German VAT number (e.g. DE123456789). 3. Create a child contact under that company. 4. The child contact will be incorrectly considered as a company. Cause: If l10n_de_reports is installed, any partner with a German VAT number (DE + 9 digits) is considered as a company. Since child contacts share the same VAT as their company, they would be considered as companies as well, which is not correct. However, a partner should only be considered as a company if they are their own commercial entity. https://github.com/odoo/odoo/blob/e6bd6b106c376336594edd868c09505032008ac1/odoo/addons/base/models/res_partner.py#L819 Forward-Port-Of: odoo/enterprise#114600
This update removes an outdated requirement that invoices for subscription payments needed a country associated with the payment token. This restriction was causing issues with payment processing and has been resolved. The change simplifies the process and aligns with current payment provider requirements.
Original PR description
Before this commit, a country was mantadory on the payment token when it was used to pay invoices of subscriptions. This behavior was fetched back from internal code in 15.3. This issue was not visible until recently. Some token are fine without country, the provider allows it but the cron fails to process the sale order when the contract is processed. THis commit remove that old constraint. opw-5268156 task-5349998 Forward-Port-Of: odoo/enterprise#114847 Forward-Port-Of: odoo/enterprise#100166
This update resolves an issue where the 'Time Off Type' dropdown within the Gantt view of the Time Off app was appearing empty. The fix corrects a technical problem related to how the system initially populated data, ensuring the dropdown displays the correct options for users. This improves the user experience when creating time off requests.
Original PR description
**Steps to Reproduce:** 1. Open Time Off App->Management->Time Off->Gantt View 2. Highlight multiple dates/cells to trigger the multi-create popover, then click "Set". 3. Open the "Time Off Type"…
**Steps to Reproduce:**
1. Open Time Off App->Management->Time Off->Gantt View
2. Highlight multiple dates/cells to trigger the multi-create popover, then click "Set".
3. Open the "Time Off Type" dropdown. The dropdown appears empty.
**Bug Cause:**
When forceFullDuration is true and request_duration is pre-populated in initial values, the form detects no field changes and skips triggering onchange. This prevents computed fields like allowed_work_entry_type_ids from being evaluated, resulting in an empty domain filter ('id', 'in', []).
**Solution:**
Remove the pre-population of request_duration in initial values when forceFullDuration is true. The context value force_full_duration is sufficient to filter the request_duration field to show only "full" option.
By not pre-setting the value, the form detects a field change and properly triggers onchange, allowing computed fields to evaluate and populate the Remove the pre-population of request_duration in initial values when forceFullDuration is true. The context value force_full_duration is sufficient to filter the request_duration field to show only "full" option. By not pre-setting the value, the form detects a field change and properly triggers onchange, allowing computed fields to evaluate and populate the allowed_work_entry_type_ids correctly.
**Task:** 6109569
Forward-Port-Of: odoo/enterprise#114658
Forward-Port-Of: odoo/enterprise#114050This update resolves a technical issue that prevented a key test from running correctly, ensuring consistent test results. The change improves the reliability of our reporting processes, preventing potential disruptions to financial reporting. This ensures our financial data is more trustworthy.
Original PR description
This test, when run alone, raised an error telling assigning directly self.env.companies was not the right way of doing this, and it was better to create a new env. For some reason, it didn't raise when run together with other tests ; so, runbot didn't see the issue. This commit aims at soothing the ire of Odoo's mighty tests spirits \o/ Forward-Port-Of: odoo/enterprise#114248
This update adjusts where social media links are stored within Odoo. Previously, they were located on the website, but this has been removed. The links have now been moved to the 'res' company record to align with current website design standards.
Original PR description
Since https://github.com/odoo/odoo/pull/236918, there is no more social media fields on website so we move them to res company to comply with website. Forward-Port-Of: odoo/enterprise#114696
This update clarifies the Helpdesk stage Kanban view by removing the 'Days to Rot' number, which was confusing to users. This change improves the overall usability and understanding of the Helpdesk workflow. It addresses a previous issue where the meaning of this metric was unclear.
Original PR description
Currently, only the “Days to rot” number is displayed, so users cannot understand what the number represents. In this commit, it hide from the helpdesk stage kanban view. task-5485507 Forward-Port-Of: odoo/enterprise#114880 Forward-Port-Of: odoo/enterprise#114781
A bug was causing night shift templates to incorrectly extend shift durations by one day. This update corrects a calculation error within the shift planning process, ensuring shifts accurately reflect the intended working hours. This fix prevents over-extended shifts and improves the reliability of shift scheduling.
Original PR description
Issue: ---------------------------------------- Creating a night shift from a template produces a shift spanning over one additional day. Steps to reproduce: ----------------------------------------…
Issue: ---------------------------------------- Creating a night shift from a template produces a shift spanning over one additional day. Steps to reproduce: ---------------------------------------- - Create a planning shift template form 23h to 1h the next day (2h) - It must have a span over 2 working days - Create a shift and use this template - The shift spans over one more day Cause: ---------------------------------------- In `_calculate_start_end_dates()`, we call `plan_days()` with `start` having the hours specified. So in `plan_days()` when retrieving the worked days, the first day is ignored because the resource is not supposed to be working from 23h to 1h (considering their calendar). Then we count two days, and so the end date is offset by one day. Solution: ---------------------------------------- We should call `plan_days()` without the hour specified so we make sure the first day is included in the count. opw-6134844 Forward-Port-Of: odoo/enterprise#114825 Forward-Port-Of: odoo/enterprise#114616
This update eliminates a misleading confirmation dialog that appeared when adding non-stockable products through the barcode app. Previously, users were prompted to confirm product location, which was unnecessary. The fix streamlines the process by leveraging existing data checks, improving usability and reducing potential user confusion.
Original PR description
### Steps to reproduce: - In the settings: Enable Multi-Steps Routes - Create a non-storable product P - Go to the barcode app > Operations > Delivery Order > New - Click on "Add Product" > select P…
### Steps to reproduce: - In the settings: Enable Multi-Steps Routes - Create a non-storable product P - Go to the barcode app > Operations > Delivery Order > New - Click on "Add Product" > select P as product > Confirm #### > A confirmation dialog appears: Oops! It seems that this product is not located in WH/Stock. Do you confirm you picked from there? ### Expected behavior: Since the product is not storable it should not trigger the dialog ### Cause of the issue: The `is_storable` value of the `product.product` is not part of the data that can be used to check if we should check the quantity available in location since only the product id and name are directly available: https://github.com/odoo/enterprise/blob/77d3cc81be8aeb9f2e8bf57fb561fcae80f23b04/stock_barcode/static/src/js/stock_barcode_sml_form.js#L40-L70 However, since an rpc is already performed in order to determine the `qty_available` of the product, we might as well use that same rpc to recover the information and also avoid the dialog in case it is irrelevant. opw-6110655 Forward-Port-Of: odoo/enterprise#114173
This update corrects a minor issue where the company logo wasn't appearing on the journal audit export template. The fix ensures the necessary 'o_content' class is included in the template, resolving this visual discrepancy. This ensures consistent branding across financial reports.
Original PR description
before this commit, the export template of the journal audit was missing the o_content and so the company logo class was not applied opw-6128819 Forward-Port-Of: odoo/enterprise#114782
This update corrects a bug where the 'Update Payment' button remained visible after processing batch payments for Mexican CFDI invoices. The issue stemmed from incorrect UUID comparisons during invoice payment reconciliation, leading to the button's persistent display. This fix ensures the button disappears as expected after batch payment processing.
Original PR description
- Create one invoice with the PUE payment policy. - Create another invoice with the PDD payment policy. - Send both invoices to the CFDI. - Create a batch payment for both and reconcile. - Click on Update Payment on one of the invoices. The Update Payment button does not disappear. In the method _l10n_mx_edi_cfdi_invoice_get_payments_diff, we compare the current UUIDs and the previous UUIDs to determine if the button should be shown. However, when there is a batch payment, the current UUID list includes the UUIDs of all invoices in the batch, including the PUE payment (which should normally be filtered out by the continue). The previous UUID list includes only the UUID of the PDD payment. opw-6055781 Forward-Port-Of: odoo/enterprise#114261 Forward-Port-Of: odoo/enterprise#112520
This update corrects a display issue in the Odoo Enterprise portal. Previously, running subscriptions showed the total subscription amount in the sidebar title instead of the next billing amount. Now, users will see the correct next billing amount, providing clearer and more accurate information about their ongoing subscriptions.
Original PR description
Running subscriptions were showing the total amount in the portal sidebar title instead of the next billing amount. Display the next billing amount for running subscriptions. task-6125080 Forward-Port-Of: odoo/enterprise#114083
This update fixes a display issue in reports related to invoices and purchase orders when users are in time zones ahead of UTC. The change ensures that reports accurately reflect the order date in the user's local time, preventing missed invoices due to timezone discrepancies. This improves data accuracy and reporting reliability.
Original PR description
Why this commit: When loading the 'bills to receive' or 'Invoices to be Issued' The time zones ahead of UTC will face the discrepancy in the view. e.g. etc/GMT-12 timezone is 12 hours ahead of UTC,…
Why this commit: When loading the 'bills to receive' or 'Invoices to be Issued' The time zones ahead of UTC will face the discrepancy in the view. e.g. etc/GMT-12 timezone is 12 hours ahead of UTC, So 12 AM UTC is 12 PM etc/GMT-12. So report view will not include the invoices/bill with order_date of current day till its 12 AM[next day] IN UTC, Meaning etc/GMT-12 will be seeing today's bills/invoices after 12 PM. After this commit: To resolve this discrepancy we use the context_today date to get the user local date. Which is required by the [domain sanitizer](https://github.com/odoo/odoo/blob/8bff78853f6ab8dc2cc951c03bb30181c0745834/odoo/orm/domains.py#L1572-L1574) too. Steps to reproduce (Possible in runbot) : 1. Select etc/GMT-12 timezone in preferences [when UTC is between 13:00-24:00 ~ 1:00-12:00 GMT-12(of next day)] 2. Create a PO and Validate the quantity received. 3. Go to accounting>review>bills to receive. 4. the newly created PO won't be listed here. OPW: 6083526 Forward-Port-Of: odoo/enterprise#114763
This update resolves an issue where rental tests were unreliable due to fluctuating timezones. The change ensures a consistent UTC timezone is used for all rental tests, regardless of demo data installation. This improves test stability and reliability.
Original PR description
When demo data is installed, Robodoo's timezone is set to Europe/Brussels. Rental tests expect the environment timezone (`self.env.tz`) to be UTC. However, if Robodoo is the current user and no timezone is set in the context, the environment falls back to the user's timezone. Because Robodoo's timezone changes depending on whether demo data is installed, tests can become unstable. This commit updates the renting app's common test setup to ensure a stable timezone. runbot-242821 Forward-Port-Of: odoo/enterprise#114645
This update resolves a problem preventing access to demo data within the accounting module, specifically when demo companies are created. The fix changes how demo user accounts are handled to ensure consistent access across all company templates, addressing a conflict caused by recent code changes related to caching.
Original PR description
Steps to reproduce: ------------------- 1. Create a new trial DB with demo data and French localization 2. Archive Marc Demo if you create the DB locally (this happens automatically on Odoo.com…
Steps to reproduce: ------------------- 1. Create a new trial DB with demo data and French localization 2. Archive Marc Demo if you create the DB locally (this happens automatically on Odoo.com trials due to the user seat limit probably) 3. Select the demo company only (unselect the main one) 4. Open Accounting and click the Purchases journal from the dashboard Access Error about reading Marc Demo. Unarchiving him would work around this issue. Why the bug ----------- demo_invoice_deferred and demo_bill_deferred set invoice_user_id to Marc Demo (base.user_demo). Marc Demo belongs to the main company and can't be read from another company when archived. On 19.0 these records only existed in the main company, where Marc Demo is accessible. Commit 9aed0c0135d7b084dee544c6566fad96c62ec1fd migrated the demo to `template`, so now they are created in every company. Still, it only breaks because of commit [3732ca85b03b](https://github.com/odoo/odoo/commit/3732ca85b03b), which added write_date to the avatar widget for cache busting. Before, the widget only needed display_name (read with sudo), so the rule was not checked. The fix ------- Use base.user_admin for demo_invoice_deferred (never archived, stays readable from any company), and False for demo_bill_deferred (a bill has no salesperson). opw-6106870 Forward-Port-Of: odoo/enterprise#113946
This update resolves an issue where chatter message highlights were appearing unexpectedly on the employee form in the HR payroll module. The change restricts these highlights to only the 'review_state' field, improving the user experience and preventing unnecessary visual distractions. This ensures a cleaner and more focused interface for HR professionals.
Original PR description
The dropdown_selection_badge widget was triggering chatter message highlights on hover for all its usages (e.g. Dimona). Add an opt-in highlight_chatter attribute so only the review_state field on the employee form triggers this behavior. task-6131035 Forward-Port-Of: odoo/enterprise#114138
This update corrects a recent change that removed the currency field from batch payment records. This ensures that monetary amounts are accurately associated with their correct currency, preventing potential accounting errors. The fix improves the reliability of financial reporting within the Enterprise module.
Original PR description
This commit: https://github.com/odoo/enterprise/commit/301f63597b0c21fef16a1941314ac95602c8f01f removed some currency id field from the account bank statement and so the monetary field didn't have the currency anymore task-6131298 Forward-Port-Of: odoo/enterprise#115017 Forward-Port-Of: odoo/enterprise#114369