Daily updates from Odoo
Thursday, February 19, 2026
98 changes
1 change
Resolved issues and error corrections
This update fixes a visual inconsistency in the device selection button. Previously, a custom border prevented the button's state from changing correctly. The update now ensures the button styling is consistent and aligns with Odoo's design standards, improving the user experience.
Original PR description
This PR fixes an issue related to a custom border applied on the `<DeviceSelect>` button. Prior to this commit, the buttons used a custom border handled via `border border-secondary` which will prevent the default border that comes with our buttons to be applied. The visual result is a default button but with a custom border which won't change according to the state. While fixing this, we also add a `.btn-secondary` class on these buttons to improve consistency and ensure they get styled correctly. task-5921830 X-original-commit: [256de110fc73ce9dec640db8b6e73a9d519ee5ec](https://github.com/odoo/odoo/commit/256de110fc73ce9dec640db8b6e73a9d519ee5ec) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249500
27 changes
Resolved issues and error corrections
This update resolves an issue where the version history comparison displayed incorrectly when using toggle blocks within Knowledge articles. The fix corrects a flaw in the HTML generation process, ensuring accurate comparisons are shown. This prevents potential confusion and ensures data integrity within the system.
Original PR description
There is an issue with the history dialog in very specific scenarios where a toggle (or any similar block) is involved, resulting in an incorrect "comparison" being displayed. How to reproduce: -…
There is an issue with the history dialog in very specific scenarios where a
toggle (or any similar block) is involved, resulting in an incorrect
"comparison" being displayed.
How to reproduce:
- create a new Knowledge article, and replace the title with a toggle block
- in the "content" section of the toggle, write a word, e.g. "word" in the
paragraph.
- exactly below the toggle block, write the exact same word ("word") in a
paragraph.
- save the article
- open the version history
- click on the oldest entry (there should be 2 of them), and click "view
comparison"
Issue:
- the paragraph below the toggle is not shown.
Technical explanation:
- There is an incomplete constraint in `generate_comparison`, which is related
to a trade-off (see `test_replace_nested_divs`), which was supposed to ignore
identical successive `opening` tags. However, it also ignores `closing` tags,
which it shouldn't do (it causes this issue).
- This issue produces invalid html which could also cause owl crashes (in
addition to the incorrect comparison), if embedded components were present in
the invalid html part.
task-5933410
Forward-Port-Of: odoo/odoo#249184This update resolves a minor issue where the website tour wasn't functioning correctly after the initial loading screen refreshed. By waiting for the loading screen to disappear before checking for the 'editor_enable' class, the tour now flows seamlessly for users. This ensures a smoother and more reliable experience.
Original PR description
When the iframe reloading starts, the builder can still have the class `editor_enable`, which breaks the flow of the tour, as the next step is waiting for that class, so we should wait for the loading screen to disappear first, and only then check for the `editor_enable` class. runbot-234504 Forward-Port-Of: odoo/odoo#245688
This update resolves an issue where cron jobs would repeatedly fail after exceeding a timeout threshold. The fix ensures that the cron job counter is correctly reset after a timeout, preventing the job from getting stuck and failing indefinitely. This improves the stability and reliability of automated tasks within Odoo.
Original PR description
CronJobs timed_out_counter is not getting reset when reaching the CONSECUTIVE_TIMEOUT_FOR_FAILURE due to a transaction rollback. This commit introduces a fix to ensure only records with an actual…
CronJobs timed_out_counter is not getting reset when reaching the CONSECUTIVE_TIMEOUT_FOR_FAILURE due to a transaction rollback. This commit introduces a fix to ensure only records with an actual exception tuple pass through in method: 'method_direct_trigger'. Description of the issue/feature this PR addresses: When a cron job reaches the timeout threshold (timed_out_counter >= 3), method_direct_trigger crashes because the ListLogHandler filter matches log records that have exc_info = None. But the original filter only checked hasattr(lr, 'exc_info') which is true for all LogRecord objects. This caused a TypeError when attempting to unpack exc_info (None) on the next line, which rolled back the transaction and prevented timed_out_counter from being reset. Current behavior before PR: Clicking "Run Manually" on a timed-out cron (timed_out_counter >= 3) raises TypeError: cannot unpack non-iterable NoneType object, rolling back the transaction. The timed_out_counter is never reset, leaving the cron permanently stuck. Desired behavior after PR is merged: The filter correctly skips log records where exc_info is None (i.e., non-exception errors like timeouts). method_direct_trigger returns True, the transaction commits, and timed_out_counter is properly reset to 0. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248978
This update adjusts the size of the 'RedirectWarningDialog' in the Odoo web interface. Previously, the dialog was too large, consuming unnecessary screen space. This change ensures a cleaner and more user-friendly experience by aligning the dialog's size with established styling guidelines.
Original PR description
Currently `RedirectWarningDialog` are using `xl` size which is way too big for the content it displays. Dialog sizes were reviewed in commit[1], the RedirectWarning should follow the same styling. task-5477287 [1]: odoo/odoo@01741aa2619998078bd19aca848146ac75c027fc --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where clicking links to specific messages in chatter wouldn't highlight the message correctly. The fix removes a redundant check that was preventing the auto-highlight feature from working when the targeted message wasn't among the initial 30 loaded. This ensures message links function as expected.
Original PR description
PR #223362 removes the early return for checking the origin thread in `highlightMessage()` while PR #234659 adds it again through the FW ports of a fix intended for mailbox (which has not been needed from 19.0 onwards). Since the auto-highlight of message is triggered when the thread is 1st loaded, i.e. has loaded 30 most recent messages, if the targeted message to highlight is not in the loaded messages, then the `highlightMessage()` call would be mistakenly and silently ignored by this early return. This trigger of `highlightMessage()` is done only once, hence the failed attempt to highlight the message. This PR removes reliance on the origin thread. Steps to reproduce the bug: - Send more than 30 messages in a chatter. - Copy the first message link and paste it into the browser to go to the message as a highlighted one. - Thread doesn't jump to the targeted message. task-5929780 Forward-Port-Of: odoo/odoo#249062
This update corrects a visual inconsistency in Odoo's note-taking feature. Previously, checklists and bullet lists had different indentation levels, leading to a misaligned appearance. This change ensures all list types are consistently formatted for improved readability and a more polished user experience.
Original PR description
The checklist has different indents than bullet list and numbered list. It should not be the case. This commit removes the extra indent from checklist entries. Steps to reproduce: - Go to a "To do" note - Create a checklist with indented items - Create a bullet list with indented items => Both list were not aligned task-5916723 Forward-Port-Of: odoo/odoo#249149 Forward-Port-Of: odoo/odoo#247568
This update resolves an issue where tooltips would unexpectedly disappear when a user moved between a parent and child element within the Odoo interface. Previously, the tooltip would be terminated, now it persists as long as the user remains within the parent element's area. This ensures a smoother and more intuitive user experience.
Original PR description
Have a tooltip on a parent. Hover on a child of that parent. Now, leave the child but stay in parent. Before this commit, the tooltip would be killed and never respawn. After this commit, the tooltip is not even killed if we stayed within the parent's physical space. task-5346498 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#248857
A recent update to the appointment module caused installation issues due to a problem with how the system checks template data. This fix prevents errors during reinstallations by temporarily skipping the generation of invitation URLs, ensuring the module installs correctly. This resolves a previous installation failure.
Original PR description
Reinstalling the appointment module fails during mail template validation. ### Reproduction Steps 1. Install the `appointment_hr_recruitment` module. 2. Uninstall `appointment`. 3. Reinstall…
Reinstalling the appointment module fails during mail template validation. ### Reproduction Steps 1. Install the `appointment_hr_recruitment` module. 2. Uninstall `appointment`. 3. Reinstall `appointment`. → A template parsing error appears. ### Cause The global `request.env` is bound to the registry active at the start of the request. When reinstalling a module, this registry becomes stale and does not include the models being re-added. During installation, the `mail.template` model performs a test render to validate its XML data. One of the templates calls `_get_interview_invite_url`, which invokes a controller that looks up the `appointment.type` model using `request.env`. Because the registry is stale and does not contain this model, the lookup raises a KeyError and the installation fails. ### Fix Rationale Skip invite URL generation when `install_mode` is set to avoid using the stale `request.env`. opw-5898780 Forward-Port-Of: odoo/enterprise#107650
This update clarifies the visibility of specific fields within the Belgian payroll and fleet modules. Previously, generic fields were consolidated across all countries, but this change restores the original design, keeping BE-specific fiscal logic contained within the Belgian module. This ensures accurate reporting and compliance for Belgian businesses.
Original PR description
This branch only hides BE-specific fields in l10n_be_hr_payroll_fleet (they remain defined/used there and are invisible for non‑BE companies). On master (19.3) those generic fields (can_be_requested, default_car_value) were refactored into hr_payroll_fleet so payroll+fleet consumers across all countries can use them; BE fiscal logic stays in l10n_be_hr_payroll_fleet task-5906656 Forward-Port-Of: odoo/enterprise#106456
This update resolves an issue where the onboarding tour incorrectly targeted disabled calendar slots in the yearly holiday calendar. The fix excludes 'disabled' calendar cells, ensuring the tour reliably selects the first available Thursday, regardless of the server date (specifically impacting years 2027/2028).
Original PR description
Before, the tour attempted to click the “first Thursday” by selecting the first .fc-day-thu element in the DOM. The yearly calendar sometimes renders an initial “empty”/disabled weekday cell (when Jan 1 is Fri/Sat/Sun), so the first .fc-day-thu can be a disabled slot with no actionable element. That makes firstChild de-facto empty and the tour fails (seen reproducibly when the server date is set to years like 2027/2028, for example). Excluding .fc-day-disabled makes the selector target the first real Thursday cell task-5930501 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248275
This pull request reverts a previous change related to how contract templates were being generated. The issue stemmed from a problem with triggering compute fields, which wasn't a critical bug. This change ensures the contract template functionality is working correctly and will be addressed fully in the main version.
Original PR description
This reverts commit 1d5e75900c0326f7b5293ad4cdafcc32d0f662fc. The problem was due to compute fields not triggered. It'll be fixed in master as this is not really a bug. task-5948571 Forward-Port-Of: odoo/enterprise#107791
This update resolves an issue where payroll warnings weren't being properly reflected or updated within the Odoo system. The fix ensures that warning messages are now reliably displayed and can be updated, leading to more accurate and timely payroll reporting. This improves the reliability of financial data.
Original PR description
Forward-Port-Of: odoo/enterprise#107792
This update resolves a technical issue preventing notifications from the signature field. The notification service was missing a necessary declaration, causing an error. This fix ensures that signature field notifications are now correctly processed, improving the user experience.
Original PR description
The notification service is later used in this [method](https://github.com/odoo/odoo/blob/04f3473da52ec74f3955cadd58eb016537497d44/addons/web/static/src/views/fields/signature/signature_field.js#L120), but it was never declared so it was causing an error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248602
This update simplifies the accounting setup for Spanish businesses within Odoo. Previously, there were separate account configurations for sales within Spain, intra-community transactions, and exports. This change removes this unnecessary complexity, aligning with Spanish tax regulations and streamlining the accounting process. It ensures a more straightforward and accurate representation of financial data.
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 Forward-Port-Of: odoo/odoo#247543
This update resolves an issue where test runs were repeatedly generating unnecessary assets, slowing down the testing process. By adding a specific asset bundle to the pregeneration list, we've streamlined test execution and improved overall efficiency. This change ensures tests run faster and more reliably.
Original PR description
During tests runs, lazy loaded assets are generated on the fly, and eventually multiple hundred of times (i.e. +/- 150 times on runbot). This commit adds the `web_studio.studio_assets` bundle to the pregeneration list to avoid regenerating during tests runs. Forward-Port-Of: odoo/enterprise#107147
This update resolves an issue where closing a POS session would fail if the partner's address (street or postal code) was missing. Previously, an empty address caused an error, now the system gracefully handles this situation, ensuring POS sessions can be completed without interruption. This improves the reliability of the German POS certification process.
Original PR description
Before this commit, if a POS order was created with a partner that had an empty street or postal code, the system would raise an error when closing the POS session. opw-5897334 Forward-Port-Of: odoo/enterprise#106300
This update ensures that orders are accurately synchronized across our system after a payment (online or terminal) is added or removed. Previously, removing an online payment didn't properly update the server, leading to inconsistencies. This fix resolves that issue, guaranteeing accurate order data.
Original PR description
Before this commit, if an order had a terminal payment and an online payment was added accidentally, and then get removed, the terminal payment would get removed from server, while it won't be removed from the UI, resulting in a mismatch between the server and the UI, and the order would no be synced correctly. opw-5911699 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248430
This update ensures the checksum for the l10n_eu_iot_scale_cert module remains consistent with recent changes in the core Odoo system. This alignment is a routine maintenance task to guarantee data integrity and proper functionality of this specific certification process. It's a minor adjustment that doesn't impact users directly.
Original PR description
This PR merely adapts the l10n_eu_iot_scale_cert checksum to align with the changes in the PR https://github.com/odoo/odoo/pull/248855
This update prevents users from selecting multiple accounts simultaneously during the online synchronization process. Previously, users could inadvertently select multiple accounts, leading to potential data inconsistencies. This change ensures accurate and reliable account selection, streamlining the synchronization workflow.
Original PR description
Before this commit, it was possible to click on multiple card when doing the account selection from the wizard. This commit will add a disable feature so that when clicking on the card, other account cannot be clicked. task-5943474
This update resolves an error that occurred when opening 'Sales Order Items' from projects without a linked customer. The fix prevents the system from crashing by disabling the creation of sales orders in these scenarios, ensuring smoother project management workflows.
Original PR description
Currently, an assertion error is raised when opening "Sales Order Items" from a project without a customer. **Steps to Reproduce:** - Install `sale_project` module with demo data. - Create a new project using "Sale Order" project template. - Do not set a customer on project. - Project > Task (Kanban) > Show _Top Menu_ > Show _Sales Order Items_. - Click "**Sales Order Items**". Video Ref: https://drive.google.com/file/d/1xgYHZBvIt5Ep9Gt-wALGIb9f7mj4NPh_/view?usp=drive_link Error: AssertionError **Cause:** The sale order line depends on `default_partner_id` from the context to create a sale order when none exists. When the project has no customer set, this value is missing, causing an assertion failure. **Fix:** This commit returns the list view of SOLs and disables the creation when no partner is set for the project. sentry-7220116560
This update resolves a bug where vertical videos would lose their orientation after a page was saved and reloaded. The fix ensures that the correct video layout (vertical) is maintained when a video is set to vertical and the page is saved. This improves the user experience for video content on our website.
Original PR description
Problem: When setting a video to vertical and saving the page, the alignment is not preserved after reload. Cause: `generateVideoIframe` always sets the `media_iframe_video_size` class, even for vertical videos. As a result, the vertical configuration is lost after saving. Solution: Apply `media_iframe_video_size_for_vertical` when the video is marked as vertical, so the correct layout is preserved after saving. Steps to reproduce: - Drop a Video snippet on a page. - In the selector, enable the vertical option. - Add the video. - Save the page. - Observe that the video is no longer vertical. opw-5941900 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a bug that occurred when attempting to cancel a Point of Sale order with no items. The fix ensures the system handles empty orders gracefully, preventing errors and improving the user experience. The button to cancel orders is now disabled when no items are present.
Original PR description
Steps: --- - Open a Restaurant session. - Open a table with no order. - Click the control button and click Cancel Order. Issue: --- - A traceback occurs when cancelling an order. Cause: -- - The order is cancelled first, and then `isSelectedLineCombo` tries to access the current order, which is already null. Fix: --- - Safely check for the selected order before accessing combo data. - Disable the Cancel Order button when there are no order lines. task-5934004 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses an error that occurred when creating invoices with negative tax factors. The issue stemmed from a filtering process within the accounting module that resulted in an empty list, causing a system error. To ensure smooth invoice creation, we've reverted the recent changes that introduced this problem.
Original PR description
Steps to reproduce: - Install `account` module - Taxes > open any existing tax > Set `factor_percent(%)` of repartition lines to negative(eg:…
Steps to reproduce: - Install `account` module - Taxes > open any existing tax > Set `factor_percent(%)` of repartition lines to negative(eg: [Image](https://www.awesomescreenshot.com/image/58851592?key=ce0017bb467a583ad020f33d21d4d8ba)) - Create a Invoice and add tax in move line and save Traceback: `IndexError: list index out of range` We are getting `factors` as empty because `target_factors` from `_add_accounting_data_to_base_line_tax_details` is empty. This happens because, in `tax_reps`, we are filtering repartition lines with a `factor` greater than `0`. However, when the `factor` is less than `0`, `tax_reps` becomes empty, which leads to the error. We are reverting this PR: https://github.com/odoo/odoo/pull/234334 because it prevents the validation error from being raised when there is a negative value in the repartition lines. [factors]: https://github.com/odoo/odoo/blob/de056cc784a3bbe2575fd3c9e81ca62e73c362d4/addons/account/models/account_tax.py#L1641 [tax_reps]: https://github.com/odoo/odoo/blob/de056cc784a3bbe2575fd3c9e81ca62e73c362d4/addons/account/models/account_tax.py#L2429-L2431 sentry-7102210210 Forward-Port-Of: odoo/odoo#249220
This update fixes a minor error in the account return processing logic. The incorrect configuration of check codes was resolved, preventing unintended record processing. While previously shielded by a safeguard, this change ensures accurate return handling going forward.
Original PR description
the check codes to ignore was wrongly defined, leading to contain records instead of 'code', plus having the exact opposite of what it was supposed to contains, i.e. codes that aren't supposed to be run at the current state of the return. However, it didn't have any impact functionally because it was "protected" by the function _should_run_checks(), which might disapear in the future. Forward-Port-Of: odoo/enterprise#107158
This update fixes a visual issue where Telugu characters in Odoo's PDF reports appeared as black squares. By adding a specific font for Telugu, the system now correctly renders Telugu text within these reports, ensuring accurate and consistent reporting for Telugu-speaking users. This resolves a technical limitation related to PDF generation.
Original PR description
SaaS 19.0 QWeb PDF reports renders Telugu characters as black squares because the default font stack has no Telugu coverage on the server side. While some environments may display Telugu via locally installed fonts, wkhtmltopdf requires explicit webfont coverage to embed the glyphs in the PDF. Add a Noto Sans Telugu @font-face rule with the Telugu unicode range so report rendering can fetch and embed a Telugu-capable font when needed. This mirrors the existing mechanism used for Arabic/Hebrew/Cyrillic. opw-5886157 (related ticket) https://github.com/odoo/odoo/pull/32312 (related PR) I have attached the font files that needs to be uploaded to cdn in NotoSansTelugu.zip. [NotoSansTelugu.zip](https://github.com/user-attachments/files/25395294/NotoSansTelugu.zip) --- Forward-Port-Of: odoo/odoo#249320
This update addresses a technical issue related to the transmission of Swiss payroll data (LPP). Specifically, it ensures the correct inclusion of the 13th month salary component in the reporting calculations, aligning with updated Swiss tax regulations. This ensures accurate and compliant reporting for our Swiss clients.
Original PR description
Forward-Port-Of: odoo/enterprise#107908
This update resolves an issue where the DeviceSelect button's styling was inconsistent, preventing it from correctly reflecting its state. The fix adds a standard styling class to ensure the button's appearance aligns with the rest of the application and provides a more polished user experience.
Original PR description
This PR fixes an issue related to a custom border applied on the `<DeviceSelect>` button. Prior to this commit, the buttons used a custom border handled via `border border-secondary` which will prevent the default border that comes with our buttons to be applied. The visual result is a default button but with a custom border which won't change according to the state. While fixing this, we also add a `.btn-secondary` class on these buttons to improve consistency and ensure they get styled correctly. task-5921830 X-original-commit: [256de110fc73ce9dec640db8b6e73a9d519ee5ec](https://github.com/odoo/odoo/commit/256de110fc73ce9dec640db8b6e73a9d519ee5ec) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
2 changes
Resolved issues and error corrections
A recent update to the appointment module caused installation errors due to outdated data. This fix prevents a template validation failure during module reinstallation by skipping the generation of invitation URLs, ensuring smoother module updates.
Original PR description
Reinstalling the appointment module fails during mail template validation. ### Reproduction Steps 1. Install the `appointment_hr_recruitment` module. 2. Uninstall `appointment`. 3. Reinstall…
Reinstalling the appointment module fails during mail template validation. ### Reproduction Steps 1. Install the `appointment_hr_recruitment` module. 2. Uninstall `appointment`. 3. Reinstall `appointment`. → A template parsing error appears. ### Cause The global `request.env` is bound to the registry active at the start of the request. When reinstalling a module, this registry becomes stale and does not include the models being re-added. During installation, the `mail.template` model performs a test render to validate its XML data. One of the templates calls `_get_interview_invite_url`, which invokes a controller that looks up the `appointment.type` model using `request.env`. Because the registry is stale and does not contain this model, the lookup raises a KeyError and the installation fails. ### Fix Rationale Skip invite URL generation when `install_mode` is set to avoid using the stale `request.env`. opw-5898780 Forward-Port-Of: odoo/enterprise#107650
This update resolves an issue where test runs were repeatedly generating unnecessary assets, slowing down the testing process. By adding a key asset bundle to the pregeneration list, the tests now run more efficiently and reliably. This improves overall development speed and stability.
Original PR description
During tests runs, lazy loaded assets are generated on the fly, and eventually multiple hundred of times (i.e. +/- 150 times on runbot). This commit adds the `web_studio.studio_assets` bundle to the pregeneration list to avoid regenerating during tests runs. Forward-Port-Of: odoo/enterprise#107147
13 changes
Resolved issues and error corrections
This update resolves a minor issue with the testing of the ChatGPT command button within the Odoo Enterprise SaaS platform. The fix ensures the button's functionality is consistently tested, improving the reliability of the AI-powered features. This change focuses on internal testing and does not directly impact user experience.
Original PR description
community-https://github.com/odoo/odoo/pull/244478 task-5499625
This update resolves an issue where tooltips would unexpectedly disappear when a user moved between a parent and child element within the Odoo interface. Previously, the tooltip would be terminated if the user left the parent's area. Now, the tooltip remains active even when navigating within the parent element, improving the user experience.
Original PR description
Have a tooltip on a parent. Hover on a child of that parent. Now, leave the child but stay in parent. Before this commit, the tooltip would be killed and never respawn. After this commit, the tooltip is not even killed if we stayed within the parent's physical space. task-5346498 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#248857
This update resolves a technical glitch that was preventing the calendar tour from functioning correctly for users. The fix ensures the tour consistently displays and guides users through the holiday request process, improving the user experience. This was a minor issue impacting a specific test.
Original PR description
This fix adjusts the tour in `test_hours_time_off_request_calendar_view` as it was failing in some cases. runbot error 237682
This update corrects a problem where the timesheet approval reminder email was sending to an outdated action. The action was updated as part of a larger change in 17.3 to consolidate previous week/month actions. This ensures the email now correctly triggers the approval process.
Original PR description
### Issue: The action used in the ` timesheet approval reminder` email template refair to a non existing action. ### Cause of the issue: The issue has been introduced in…
### Issue: The action used in the ` timesheet approval reminder` email template refair to a non existing action. ### Cause of the issue: The issue has been introduced in [1](b56e355c400c874f7cd9c3174e2253ad5769a461) b56e355c400c874f7cd9c3174e2253ad5769a461 Starting from 17.3 the actions `action_timesheet_previous_week` and `action_timesheet_previous_month` have been removed and merged in a single action `timesheet_grid_to_validate_action`. See [2](7040535ffe2c08d0d286cfccbaf4cc7f81f18443) 7040535ffe2c08d0d286cfccbaf4cc7f81f18443 However, while [2](7040535ffe2c08d0d286cfccbaf4cc7f81f18443) correctly replaced the usage of both actions used in the template as `action_xml_id`: https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L209-L221 https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/data/mail_template_data.xml#L43-L45 The forward port of [1](b56e355c400c874f7cd9c3174e2253ad5769a461) replaced it with the deleted action: https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L161-L171 https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L193-L198 opw-5890269 Forward-Port-Of: odoo/enterprise#107385
This update resolves an issue where clicking 'View' on certain activity types (like 'Eat cookies') in the calendar view would cause an error. The fix ensures that activities without a linked model can now be opened correctly, improving the user experience and preventing unexpected errors.
Original PR description
Steps to reproduce ================= 1. Go to “View all activities”. 2. Switch to calendar view. 3. Click on an activity not linked to any model (e.g. “Eat cookies”, “Send Email to Alfred”). 4. Click…
Steps to reproduce ================= 1. Go to “View all activities”. 2. Switch to calendar view. 3. Click on an activity not linked to any model (e.g. “Eat cookies”, “Send Email to Alfred”). 4. Click “View” in the popover. => Traceback Reason ====== The commit [1] allow activities without a linked model and from commit [2] such activities can be opened in the activity form view. In the calendar view, the action is retrieved from the model and executed using `doAction`. Since the action does not define `views`, and the `doAction` depends on `action['views']`, an error occurs when the action service attempts to copy it. After this commit ================== This commit fixes the issue by modifying the action returned from `action_open_document` for non-linked models to include `views`, similar structure used when a model is present. [1] https://github.com/odoo/odoo/commit/165b060473be8a5d33d62d311f0dc55ed6332d69 [2] https://github.com/odoo/odoo/commit/abeac135b9bb7aec4bcddd84fb0705743297f80d Task-5857887
This update resolves a technical issue where test runs were repeatedly generating assets, consuming unnecessary resources. By adding a specific asset bundle to the test generation process, we've eliminated this redundancy and improved the efficiency of our automated testing.
Original PR description
During tests runs, lazy loaded assets are generated on the fly, and eventually multiple hundred of times (i.e. +/- 150 times on runbot). This commit adds the `web_studio.studio_assets` bundle to the pregeneration list to avoid regenerating during tests runs. Forward-Port-Of: odoo/enterprise#107147
This update adds a warning message to the invoice batch wizard when the automated invoice sending cron job is disabled. This ensures users are alerted if their invoices won't be sent automatically, preventing potential delays or missed payments. It's a simple improvement to enhance user awareness and operational efficiency.
Original PR description
When the Cron responsible of sending the invoices asynchronously is disabled, the user has no clear indication that his invoices won't be sent as they should. Let's add a warning in the batch wizard that notify the user something is wrong. task-none (feedback from SBR) Message when no rights to update cron: <img width="990" height="328" alt="image" src="https://github.com/user-attachments/assets/1100ef6f-d047-49f2-bd8f-c8ef9fd543d8" /> Message when admin: <img width="999" height="308" alt="image" src="https://github.com/user-attachments/assets/28e90295-d225-4785-82a9-65be3ce79621" /> Forward-Port-Of: odoo/odoo#249191 Forward-Port-Of: odoo/odoo#248994
This update grants the Invoicing & Banks group within the enterprise version of Odoo access to essential reports, specifically 'Statement Reports'. This enhancement provides these users with improved visibility into their financial data, streamlining reporting processes and supporting better decision-making.
Original PR description
In enterprise, we are allowing the Invoicing & Banks group to have access to basic reports, including 'Statement Reports' task-5925567 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249006
This update resolves an issue where Invoicing and Banks users were unable to access certain basic reports. The change adds necessary security permissions, allowing these users to view key reports like partner ledger and aged receivable/payable, improving their reporting capabilities.
Original PR description
* Revert commit https://github.com/odoo/enterprise/commit/86c3c212bb79fbc2becac46f4d83b6f2fc381854 that introduced having Accounting features, menu items, and Account on invoice lines available for Invoicing users. * Allow Invoicing & Banks group to access basic reports * Backport missing access rights to properly open the reports without an access error. task-5925567 Forward-Port-Of: odoo/enterprise#107654
This update resolves an error that occurred when creating invoices with negative tax factors. The issue stemmed from a filtering process within the accounting module that caused an empty list, leading to a technical error. We've reverted the recent change to prevent this validation error and ensure invoices can be created correctly.
Original PR description
Steps to reproduce: - Install `account` module - Taxes > open any existing tax > Set `factor_percent(%)` of repartition lines to negative(eg:…
Steps to reproduce: - Install `account` module - Taxes > open any existing tax > Set `factor_percent(%)` of repartition lines to negative(eg: [Image](https://www.awesomescreenshot.com/image/58851592?key=ce0017bb467a583ad020f33d21d4d8ba)) - Create a Invoice and add tax in move line and save Traceback: `IndexError: list index out of range` We are getting `factors` as empty because `target_factors` from `_add_accounting_data_to_base_line_tax_details` is empty. This happens because, in `tax_reps`, we are filtering repartition lines with a `factor` greater than `0`. However, when the `factor` is less than `0`, `tax_reps` becomes empty, which leads to the error. We are reverting this PR: https://github.com/odoo/odoo/pull/234334 because it prevents the validation error from being raised when there is a negative value in the repartition lines. [factors]: https://github.com/odoo/odoo/blob/de056cc784a3bbe2575fd3c9e81ca62e73c362d4/addons/account/models/account_tax.py#L1641 [tax_reps]: https://github.com/odoo/odoo/blob/de056cc784a3bbe2575fd3c9e81ca62e73c362d4/addons/account/models/account_tax.py#L2429-L2431 sentry-7102210210 Forward-Port-Of: odoo/odoo#249220
This update fixes an issue where category images in the Point of Sale selector were too large and would overflow, obscuring the category names. The change adjusts the layout to allocate 1/3 of the space to the image and 2/3 to the name, ensuring a cleaner and more readable display. This improves the user experience for selecting product categories.
Original PR description
Before this commit, when a category image was too large, it would overflow and take all the space dedicated to the category name. Now we set the width of the image to 1/3 of the button and the name to 2/3, so that the image never takes too much space. task-id: 5462315 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242515 Forward-Port-Of: odoo/odoo#242054
This update resolves an issue preventing the test partner from loading correctly during the Point of Sale tour. Increasing the number of limited partner loads ensures the tour functions as intended, improving the testing process for new features. This ensures consistent and reliable testing of the Point of Sale module.
Original PR description
Increase limited partner loading count in Point of Sale to ensure test partner is loaded in tour. runbot error: 233397
This update resolves a technical error that occurred during refunds in the Spanish Point of Sale (POS) module. Specifically, a 'singleton error' was triggered when processing refunds, preventing proper invoice generation. The fix ensures the correct order ID is used, resolving the issue and improving refund functionality.
Original PR description
Step to reproduce: - install l10n_es_pos - create a pos, open its setting and set its `Simplified Invoice` with a journal - start pos, create a order and refund it Observation: - we receive a singleton error for account.move Cause: - when calling `get_invoice_name` method, we pass `order_server_ids` which contains order and refund order id, hence two ids are passed Fix: - instead of using `order_server_ids` we use 'order.id' i.e. current order opw-5870707 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
4 changes
Resolved issues and error corrections
This update resolves an issue where DHL shipping rate calculations failed when requested for dates outside of business hours. Adding a 'next business day' flag ensures rates are accurately calculated, preventing errors and ensuring reliable shipping options for customers. This addresses a previous problem that resulted in unavailable product messages.
Original PR description
Before this commit, there was an issue when trying to get the rates for DHL shipping late in the day. The issue happened because `plannedShippingDate` fell outside of the working hours. This commit adds the nextBusinessDay flag for the rating request to avoid the error. Error: ``` Product not found 996: The requested product(s) not available for the requested pickup date. Process ID associated for this transaction') ``` opw-5393684 Forward-Port-Of: odoo/enterprise#107153
This update resolves an issue where users in the Invoicing and Banks security groups were unable to access certain basic reports. The change adds necessary security permissions, allowing these users to open and utilize key reports without encountering access errors. This ensures consistent reporting functionality for all user groups.
Original PR description
* Revert commit https://github.com/odoo/enterprise/commit/86c3c212bb79fbc2becac46f4d83b6f2fc381854 that introduced having Accounting features, menu items, and Account on invoice lines available for Invoicing users. * Allow Invoicing & Banks group to access basic reports * Backport missing access rights to properly open the reports without an access error. task-5925567 Forward-Port-Of: odoo/enterprise#107654
This update streamlines testing within the Odoo Enterprise platform by resolving an issue where test patches were causing errors. The team has converted specific patches to use a standard method, improving the reliability and stability of the testing process. This change ensures more consistent and accurate test results.
Original PR description
Otherwise they trip the on-test-side-effect-detector (at least in its current incarnation). Forward-Port-Of: odoo/enterprise#106948
This update resolves an issue where test runs were repeatedly generating unnecessary assets, slowing down the testing process. By adding a key asset bundle to the test preparation list, we've eliminated redundant generation and significantly improved test performance. This ensures faster and more reliable testing of the Odoo Enterprise platform.
Original PR description
During tests runs, lazy loaded assets are generated on the fly, and eventually multiple hundred of times (i.e. +/- 150 times on runbot). This commit adds the `web_studio.studio_assets` bundle to the pregeneration list to avoid regenerating during tests runs. Forward-Port-Of: odoo/enterprise#107147
12 changes
Resolved issues and error corrections
This update resolves an issue where the 'Remove date filter' button on the Booking tab of the POS kanban view was not functioning correctly, causing a technical error. The fix ensures this button now works as expected, allowing users to manage their booking filters effectively.
Original PR description
Steps: - Install pos_appointment. - Open a POS session with bookings configured. - Open the Booking tab and click Remove date filter in the header. Issue: - A traceback occurs with `Invalid handler`. Cause: - The Remove date filter button’s onclick handler was not defined. Fix: - Define a valid onclick handler for the Remove date filter button. Task-5902656 Forward-Port-Of: odoo/enterprise#107633 Forward-Port-Of: odoo/enterprise#106684
This update fixes a calculation error in the Saudi HR payroll system. Previously, employees resigning after less than two years received a negative value for their end-of-service benefit, which was incorrect. The change ensures that these employees receive a zero value, aligning with Saudi regulations.
Original PR description
purpose: In the saudi eos rule, if the employee resigned after working in the company less than 2 years, their end of service is being computed as a negative value when it should be 0 instead. - added the correct check for the case of employee resignation - moved the logic of the salary rules for EOS benefit and provision from python methods to the rule itself to be more clear for the user task-id: 5499646 Forward-Port-Of: odoo/enterprise#107251 Forward-Port-Of: odoo/enterprise#104466
This update ensures that screenshots taken during the trial mode of Odoo Enterprise capture the correct end-result data. Previously, the system lacked the database URL needed to fetch the final data, now it forwards the URL to ensure accurate screenshots are generated.
Original PR description
During the trial flow, we don't know the db url when making the ws request. To still be able to take screenshots of the end result in trial mode, we forward the db_url when getting the result back. Forward-Port-Of: odoo/enterprise#107034
This update resolves a bug that was causing errors during record creation within the Australian Payroll module. The fix avoids using a temporary ID (NewId) in search queries, ensuring proper record functionality and stability. This improves the reliability of payroll processing.
Original PR description
The generic `TestEveryModel` fails because a virtual ID (NewId) is used in a search domain during record creation, causing a crash. This commit uses `.ids` with the `'in'` operator to idiomatically handle virtual records and prevent the framework error. runbot-115303 Forward-Port-Of: odoo/enterprise#107644
This update ensures that the preparation display in the backend accurately reflects changes when a POS order is cancelled or deleted. Specifically, related preparation orders and data are removed, maintaining data consistency and a more reliable view of order preparation activities.
Original PR description
**In this commit:** Ensure the preparation display UI is updated when a POS order is cancelled or deleted from the backend. - On order cancellation, the preparation display is refreshed accordingly. - On order deletion, related preparation orders, lines, and states are removed via notify call. Task-5373116 Related: https://github.com/odoo/odoo/pull/240523 Forward-Port-Of: odoo/enterprise#107734 Forward-Port-Of: odoo/enterprise#103052
This update simplifies website template code by replacing an outdated method (`request.env`) with the standard `env`. This change ensures consistent behavior across all website templates and resolves potential issues with how the system tracks data dependencies, ultimately improving reliability.
Original PR description
Target: remove all request in models/files and view/files.
A previous issue prevented the appointment module from reinstalling properly, resulting in errors during mail template validation. This update resolves the problem by skipping the generation of invitation URLs during the installation process, ensuring a smooth and successful module reinstallation.
Original PR description
Reinstalling the appointment module fails during mail template validation. ### Reproduction Steps 1. Install the `appointment_hr_recruitment` module. 2. Uninstall `appointment`. 3. Reinstall…
Reinstalling the appointment module fails during mail template validation. ### Reproduction Steps 1. Install the `appointment_hr_recruitment` module. 2. Uninstall `appointment`. 3. Reinstall `appointment`. → A template parsing error appears. ### Cause The global `request.env` is bound to the registry active at the start of the request. When reinstalling a module, this registry becomes stale and does not include the models being re-added. During installation, the `mail.template` model performs a test render to validate its XML data. One of the templates calls `_get_interview_invite_url`, which invokes a controller that looks up the `appointment.type` model using `request.env`. Because the registry is stale and does not contain this model, the lookup raises a KeyError and the installation fails. ### Fix Rationale Skip invite URL generation when `install_mode` is set to avoid using the stale `request.env`. opw-5898780 Forward-Port-Of: odoo/enterprise#107650
This update resolves an issue where DHL shipping rate calculations failed when requested for dates outside of business hours. Adding a 'next business day' flag ensures rates are accurately determined, preventing errors and improving the reliability of shipping estimates.
Original PR description
Before this commit, there was an issue when trying to get the rates for DHL shipping late in the day. The issue happened because `plannedShippingDate` fell outside of the working hours. This commit adds the nextBusinessDay flag for the rating request to avoid the error. Error: ``` Product not found 996: The requested product(s) not available for the requested pickup date. Process ID associated for this transaction') ``` opw-5393684 Forward-Port-Of: odoo/enterprise#107153
This update corrects a bug that prevented users from successfully testing new printer configurations within the Point of Sale module. The fix ensures that the printer's IP address is correctly updated when using the test printer button, resolving a previous error. This improves the reliability of the test functionality.
Original PR description
When creating a new printer and test it with the test printer button, it will cause an error because the field of the ip address in pos.printer has changed and it was not changed into the test button.
This update streamlines the way AI Documents sends notifications within Odoo. The team replaced a specific function call with a new, more efficient method, improving the underlying system. This change enhances the stability and performance of the AI Documents module.
Original PR description
This commit replaces the uses of `self.env["bus.bus"]._sendone()` by `_bus_send()` in the `ai_documents` module. Following https://github.com/odoo/enterprise/pull/90124#discussion_r2822278385
This update corrects a bug that prevented users from successfully testing new printer configurations within the Point of Sale module. The fix ensures that the printer's IP address is correctly updated when using the 'test printer' button, resolving a previous error. This improves the reliability of the Point of Sale system.
Original PR description
When creating a new printer and test it with the test printer button, it will cause an error because the field of the ip address in pos.printer has changed and it was not changed into the test button.
Bug : allocate a number of holidays that is not an integer (ex : 20.5), then check the holiday attest (shows 20 allocation). The same problem happens if the number of leaves taken is not an integer Steps : - in the belgian company, create a new employee with a valid contract give an employee 19.5 days of Time Off type leaves. - on the form view of the employee , click on the action button -> Departure: Notice period and payslip -> and fire the employee. - now click on action button
Original PR description
Bug : allocate a number of holidays that is not an integer (ex : 20.5), then check the holiday attest (shows 20 allocation). The same problem happens if the number of leaves taken is not an integer…
Bug : allocate a number of holidays that is not an integer (ex : 20.5), then check the holiday attest (shows 20 allocation).
The same problem happens if the number of leaves taken is not an integer
Steps : - in the belgian company, create a new employee with a valid contract give an employee 19.5 days of Time Off type leaves.
- on the form view of the employee , click on the action button -> Departure: Notice period and payslip -> and fire the employee.
- now click on action button -> Departure: Holiday Attests, you'll see that the employee has 19 allocated instead of 19.5
Reason : The number of leave_allocation_count and leave_count are defined as integers in HrPayslipEmployeeDepatureHolidayAttestsTimeOffLine, when they are populated, they end up casting the assigned value to an int.
Fix : Create two new float fields leave_count_float and leave_allocation_count_float to replace their corresponding integer fields.
task - https://github.com/odoo/enterprise/commit/5461268c9411d36feac90cd45dcff42aab59599b
Forward-Port-Of: odoo/enterprise#10325816 changes
Resolved issues and error corrections
This update resolves an issue where payroll warnings weren't being properly updated in the reporting dashboard. The fix ensures that warning messages are now accurately reflected, providing more reliable and up-to-date information for payroll reporting. This improves the accuracy of financial data.
This pull request reverts a previous change related to how contract templates were handled. The issue was a minor technical problem with how calculations were triggered, which wasn't a significant problem for users. This update ensures the contract template functionality is working correctly and will be addressed in the main version of Odoo.
Original PR description
This reverts commit 1d5e75900c0326f7b5293ad4cdafcc32d0f662fc. The problem was due to compute fields not triggered. It'll be fixed in master as this is not really a bug. task-5948571
This update resolves an issue where closing a POS session would trigger an error if the partner's address (street or postal code) was missing. Now, the system gracefully handles empty address fields, ensuring POS sessions can be completed without interruption. This improves the reliability of the German POS certification process.
Original PR description
Before this commit, if a POS order was created with a partner that had an empty street or postal code, the system would raise an error when closing the POS session. opw-5897334
This update addresses a technical adjustment to the checksum associated with the l10n_eu_iot_scale_cert module. A recent bugfix in the underlying code required an update to ensure data integrity. This change is a routine maintenance task to maintain the security and reliability of the module.
Original PR description
Checksum needs to be updated as the code of the scale changed for a bugfix Community PR: https://github.com/odoo/odoo/pull/249295
This update resolves a bug that was causing errors when creating payroll records. The fix prevents the system from relying on a temporary ID (NewId) in search queries, ensuring stable record creation. This improves the reliability of the Australian Payroll module.
Original PR description
The generic `TestEveryModel` fails because a virtual ID (NewId) is used in a search domain during record creation, causing a crash. This commit uses `.ids` with the `'in'` operator to idiomatically handle virtual records and prevent the framework error. runbot-115303 Forward-Port-Of: odoo/enterprise#107644
This update streamlines the AI Documents module by replacing a specific function call with a more efficient one. This change enhances the module's performance and stability, ensuring smoother operation for users. The update was made as part of a broader effort to optimize internal processes.
Original PR description
This commit replaces the uses of `self.env["bus.bus"]._sendone()` by `_bus_send()` in the `ai_documents` module. Following https://github.com/odoo/enterprise/pull/90124#discussion_r2822278385
A recent issue prevented the appointment module from being correctly reinstalled, resulting in installation errors. This update resolves the problem by temporarily skipping the generation of email invitation URLs during the installation process, preventing a key lookup error. This ensures a smoother and more reliable module reinstallation experience.
Original PR description
Reinstalling the appointment module fails during mail template validation. ### Reproduction Steps 1. Install the `appointment_hr_recruitment` module. 2. Uninstall `appointment`. 3. Reinstall…
Reinstalling the appointment module fails during mail template validation. ### Reproduction Steps 1. Install the `appointment_hr_recruitment` module. 2. Uninstall `appointment`. 3. Reinstall `appointment`. → A template parsing error appears. ### Cause The global `request.env` is bound to the registry active at the start of the request. When reinstalling a module, this registry becomes stale and does not include the models being re-added. During installation, the `mail.template` model performs a test render to validate its XML data. One of the templates calls `_get_interview_invite_url`, which invokes a controller that looks up the `appointment.type` model using `request.env`. Because the registry is stale and does not contain this model, the lookup raises a KeyError and the installation fails. ### Fix Rationale Skip invite URL generation when `install_mode` is set to avoid using the stale `request.env`. opw-5898780 Forward-Port-Of: odoo/enterprise#107650
This update enhances the accuracy of payment reference checks by tailoring the validation process to the bank account's country. Previously, a single check applied to all countries could lead to incorrect validation. Now, the system verifies the reference format against the specific country of the bank account, with a fallback for unsupported countries.
Original PR description
Currently, when initiating a payment, we check if the reference is a structured one by using `is_valid_structured_reference` which checks the validity of the structure accross all supported countries. This can lead to issues when it matches formats accepted by other countries but not the one of the bank account. With this commit, we replace this check by a call to a new function that checks the structure validity according to the country of the bank account, with a fallback to the generic check (ISO 11649) if the country is not supported. opw-5387269 Forward-Port-Of: odoo/enterprise#107721 Forward-Port-Of: odoo/enterprise#107116
This update resolves an issue where DHL shipping rate calculations failed when requested for dates outside of DHL's business hours. Adding a 'next business day' flag ensures rates are accurately calculated, preventing errors and ensuring reliable shipping options for customers. This addresses a previous technical problem impacting shipping functionality.
Original PR description
Before this commit, there was an issue when trying to get the rates for DHL shipping late in the day. The issue happened because `plannedShippingDate` fell outside of the working hours. This commit adds the nextBusinessDay flag for the rating request to avoid the error. Error: ``` Product not found 996: The requested product(s) not available for the requested pickup date. Process ID associated for this transaction') ``` opw-5393684 Forward-Port-Of: odoo/enterprise#107153
This update ensures payslips accurately reflect an employee's start date with the company, regardless of internal job changes. Previously, payslips used the contract start date, which was inaccurate for long-term employees. This change, primarily impacting payroll in Switzerland and the UAE, provides a more precise and reliable view of employee tenure.
Original PR description
In the payslip definition, the current contract's start date is used. But if a person changes job or contract internally we don't want this value to change and we want it fixed to when the person joined the company. Notably, if a person worked at the same company in two well distinct periods, we want to consider the beginning of this period and not of the previous one(s). Since Switzerland uses a custom report for the payslip, the same change is applied there. Task: 5909637 Community PR: https://github.com/odoo/odoo/pull/248598 Forward-Port-Of: odoo/enterprise#106692
This update resolves an issue where email generation for equity transactions would fail due to a mismatch in record identification. The fix corrects a configuration error in the email template, ensuring accurate email delivery when multiple equity transactions are processed. This prevents disruptions to communication regarding shareholder updates.
Original PR description
## Issue Before This Commit A missing record error occurred during email generation when the number of `equity.transaction` records exceeded the `res.partner` records. ## Cause of the Issue The issue was caused by an incorrect `model_id` configuration in the `equity_shareholder_email_template`. This created a mismatch between the template model and the record context passed to the mail compose wizard, leading to a missing record error during template rendering. ## With This Commit The template `model_id` has been corrected `equity.transaction`. This ensures that the mail compose wizard receives the correct model context and prevents missing record errors during email generation. Steps to reproduce : [Video](https://drive.google.com/file/d/19WXbjmYPKh0IjQHcEGU4FdUbGSF4GGlx/view?usp=drive_link) opw-5899070
This update resolves a technical issue where test runs were repeatedly generating assets, slowing down the testing process. By adding a specific asset bundle to the test preparation list, we've eliminated this redundant generation, improving test efficiency and stability. This change ensures tests run more smoothly and reliably.
Original PR description
During tests runs, lazy loaded assets are generated on the fly, and eventually multiple hundred of times (i.e. +/- 150 times on runbot). This commit adds the `web_studio.studio_assets` bundle to the pregeneration list to avoid regenerating during tests runs. Forward-Port-Of: odoo/enterprise#107147
This update corrects a display issue where archived employees were still visible in the attendance Gantt chart. The change ensures that only currently active employees appear in this view, improving data accuracy and clarity for HR reporting. This resolves a previous bug reported by our team.
Original PR description
Steps to reproduce: 1. install `hr_attendance_gantt` 2. create an employee 3. make attendance records for the employee in the previous months 4. archive the employee When opening the gantt view of the attendance, a row appears for the archived employee, with no attendance showing up. This commit adds a constraint to only show the active employees. opw-5490119 Forward-Port-Of: odoo/enterprise#106486
This update resolves a crash that occurred when using the pivot table autofill feature with invalid data. The fix ensures that the autofill process itself functions correctly, while preventing subsequent tooltips from causing a system error. This improves the reliability of pivot table data manipulation.
Original PR description
If you try to autofill a pivot cell that has an invalid relational id in its domain (eg. `=PIVOT.HEADER(1, "stage_id", 99999999)`), the autofill actually works but the tooltip make everything crash. Task: [5913754](https://www.odoo.com/web#id=5913754&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#107715 Forward-Port-Of: odoo/enterprise#106601
This update fixes an issue where cash rounding wasn't applied consistently when customers deposited money via card. The change now respects configured cash rounding settings, ensuring accurate calculations for deposits regardless of the payment method used. This improves the reliability of financial reporting.
Original PR description
Steps to reproduce: ------------------- 1. Enable cash rounding, only for cash payment method - Rounding method doesn't matter, I tested with 0.05 nearest rounding 2. Open PoS, select a customer, and…
Steps to reproduce: ------------------- 1. Enable cash rounding, only for cash payment method - Rounding method doesn't matter, I tested with 0.05 nearest rounding 2. Open PoS, select a customer, and select "Deposit Money". Choose "Card" 3. Enter an amount non divisible by 0.05, say 2.26 -> Notice that the change is rounded, and is -2.25 instead of -2.26. Why it's happening ------------------ It's a correct bahvior to always round the `change` when paying a normal order, since change is what we return to the customer, and it's usually in cash. However, when depositing money, `change` represents what the customer is paying us (depositing in his account). That amount could be deposited in any payment method not only cash. The fix ------- When depositing money, we check if we should round the change or not using the `orderIsRounded` getter. It takes into account the current chosen payment method, and if we should round for this payment method or not (could be cash, card, etc). opw-5222985 Forward-Port-Of: odoo/enterprise#105234 Forward-Port-Of: odoo/enterprise#100278
This pull request reverses a recent change to the spreadsheet's border styling. The change caused visual inconsistencies and disruptions in the user experience. This reversion restores the original, stable border appearance for the spreadsheet edition.
19 changes
Resolved issues and error corrections
This fix addresses an error that occurred when creating invoices with negative tax factors. The issue stemmed from a filtering process that resulted in an empty list, causing a data error. We've reverted the recent changes to ensure invoices with negative tax factors can be created without interruption.
Original PR description
Steps to reproduce: - Install `account` module - Taxes > open any existing tax > Set `factor_percent(%)` of repartition lines to negative(eg:…
Steps to reproduce: - Install `account` module - Taxes > open any existing tax > Set `factor_percent(%)` of repartition lines to negative(eg: [Image](https://www.awesomescreenshot.com/image/58851592?key=ce0017bb467a583ad020f33d21d4d8ba)) - Create a Invoice and add tax in move line and save Traceback: `IndexError: list index out of range` We are getting `factors` as empty because `target_factors` from `_add_accounting_data_to_base_line_tax_details` is empty. This happens because, in `tax_reps`, we are filtering repartition lines with a `factor` greater than `0`. However, when the `factor` is less than `0`, `tax_reps` becomes empty, which leads to the error. We are reverting this PR: https://github.com/odoo/odoo/pull/234334 because it prevents the validation error from being raised when there is a negative value in the repartition lines. [factors]: https://github.com/odoo/odoo/blob/de056cc784a3bbe2575fd3c9e81ca62e73c362d4/addons/account/models/account_tax.py#L1641 [tax_reps]: https://github.com/odoo/odoo/blob/de056cc784a3bbe2575fd3c9e81ca62e73c362d4/addons/account/models/account_tax.py#L2429-L2431 sentry-7102210210
This update corrects a default VAT rate issue for Odoo installations using the l10n_ee module. Estonia's VAT rate increased to 24% on July 1, 2025, and this change ensures all new Odoo setups and databases automatically use the correct 24% rate for sales and purchases. This update maintains accurate financial reporting for Estonian businesses.
Original PR description
Issue: Estonia increased its standard VAT rate from 22% to 24% effective July 1, 2025. Existing Odoo installations and new databases created with older templates still default to the outdated 22% rate for sales and purchases. Steps to Reproduce: 1. Install l10n_ee on a fresh database. 2. Go to Accounting > Configuration > Settings. 3. Observe that the default Sales and Purchase taxes are set to 22%. 4. Create a new product; observe it automatically assigns the 22% tax. Solution: - Updated account.tax-ee.csv to set active=False for 22% tax templates and ensure 24% templates are active. - Modified template_ee.py to update account_sale_tax_id and account_purchase_tax_id to point to the new 24% tax IDs. - Updated EU_TAX_MAP in l10n_eu_oss to reflect the 24% destination rate for Estonia across all EU member states. backport of: https://github.com/odoo/odoo/commit/55e3853313969918005757203fc63ee1bd0a3b43 opw-5407921
This update resolves a technical issue where `Image` and `Binary` objects were incorrectly linked. The fix ensures these object types maintain distinct type values, preventing potential data inconsistencies. This improves the stability and reliability of Odoo's file management system.
Original PR description
This fixes an oversight of 4840a6639deb171c28ae14b0269d420aa1503860 that `Image` and `Binary` objects have the same `self.type` value and thus an `Image` can relate to a `Binary`, after all. Forward-Port-Of: odoo/odoo#249260
This update resolves an issue where DHL shipping rate calculations failed when requested for dates outside of DHL's business hours. Adding a 'next business day' flag ensures rates are accurately calculated, preventing errors and ensuring reliable shipping options for customers. This addresses a previous error reported as opw-5393684.
Original PR description
Before this commit, there was an issue when trying to get the rates for DHL shipping late in the day. The issue happened because `plannedShippingDate` fell outside of the working hours. This commit adds the nextBusinessDay flag for the rating request to avoid the error. Error: ``` Product not found 996: The requested product(s) not available for the requested pickup date. Process ID associated for this transaction') ``` opw-5393684 Forward-Port-Of: odoo/enterprise#107153
This update resolves an issue preventing custom address fields from being added to event registration forms. By adding a type check, the system now allows for greater flexibility in custom module overrides, ensuring event registration forms can accommodate a wider range of data inputs. This improves the extensibility of the website event module.
Original PR description
Before the addition of identification questions like "name", "email", and "phone" in the commit [1] as event questions instead of having them static, we could add custom data, such as fields for the address, with static inputs in the form. After that addition, it's no longer possible because the registration gives us the following error when trying to convert data that isn't a M2o ID or an Integer value:
invalid literal for int() with base 10
By adding the check for the field's type, we can still add custom fields with static fields in the template, as an alternative, given that there's no question type for other fields.
[1]: https://github.com/odoo/odoo/commit/6b8daa880c
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prA recent update caused a crash when users attempted to undo a duplicated list within the spreadsheet feature. This fix ensures that the undo function correctly handles list duplication, preventing unexpected errors and improving the user experience. This resolves a bug that impacted list management within the spreadsheet.
Original PR description
How to reproduce: - insert an odoo list in a spreadsheet - duplicate the list from the sidepanel - undo with Ctrl+z -> crash The command "DUPLICATE_ODOO_LIST" was not supported in the inverseCommand registry. Task-5943688 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 resolves an issue where creating multiple email templates using favorites could lead to errors due to excessive nested HTML elements. The fix prevents unnecessary wrapping of templates, ensuring a smoother and more reliable email creation experience. This improvement enhances the stability of the Email Marketing app.
Original PR description
**Steps to reproduce:** - Go to Email Marketing app - Create a new mailing - Click on empty mail body and add only a Heading block - Set a subject, save it and click `Add to Templates` (favorites) - Create another mailing which use the first one as its template - Repeat the operation multiple times - Error will be raised at some point due to the depth of the template html **Issue:** Unnecessarily nested `div` are created when using favorites to create new `mailing.mailing` records, if those favorites are themselves based on other favorites etc., it later can lead to a recursion error when rendering the template. **Fix:** Check if the template comes from the favorites to avoid reapplying the wrappers on it. This seems to be solved in 19.0 with the refactoring (https://github.com/odoo/odoo/commit/354b8f60dbabcfac690d90bf657592e1347e4f86) opw-5275187
This update corrects a rounding issue in the stock barcode scanning process, specifically when handling delivery orders. Previously, quantities were being rounded to a less precise value, leading to discrepancies in stock levels. This fix ensures accurate stock updates during barcode scanning, improving inventory management.
Original PR description
To reproduce the issue: - Create a stock quantity of product1 for example of 275.84 kg in PACK1 - Create a delivery order of 3.6 kg - Go to the delivery order on stock barcode - Scan PACK1 - The new line is created as 272.2399999999
This update addresses a technical issue preventing Virtual IoT boxes from downloading handlers correctly. The change restores a secure process by explicitly verifying SSL certificates, ensuring that IoT handler downloads function reliably. This resolves a previous security oversight related to Python's urllib3 library on Windows.
Original PR description
In PR #233423, we rightfully removed `cert_reqs='CERT_NONE'` to enforce secure certificate validation during IoT handler downloads. However, this exposed a blind spot in Python's `urllib3` library on Windows. Because `urllib3` defaults to the host's underlying certificate list (which is limited on Windows) instead of the installed `certifi` package, Virtual IoT boxes get the following error during handler downloads: `certificate verify failed: unable to get local issuer certificate` This commit restores the broken flow while maintaining security by explicitly passing `certifi.where()` to the `urllib3.PoolManager` via the `ca_certs` parameter. opw-5902549 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249213
This update corrects a discrepancy in payslip calculations for the private car daily allowance. The daily amount is now rounded to two decimal places, ensuring it precisely matches the 'Quantity × Amount' displayed on payslips. This improves the accuracy and clarity of employee compensation information.
Original PR description
Round the computed daily private-car salary rule amount to 2 decimals so the displayed per-day value matches Quantity × Amount on payslips. References task-5917569 Forward-Port-Of: odoo/enterprise#106753
This update resolves an issue where test runs were repeatedly generating unnecessary assets, slowing down the testing process. By adding the 'web_studio.studio_assets' bundle to the pregeneration list, tests now run more efficiently and reliably. This improves overall development speed.
Original PR description
During tests runs, lazy loaded assets are generated on the fly, and eventually multiple hundred of times (i.e. +/- 150 times on runbot). This commit adds the `web_studio.studio_assets` bundle to the pregeneration list to avoid regenerating during tests runs. Forward-Port-Of: odoo/enterprise#107147
This update resolves an issue where tests interfering with model registration caused lookup failures and incorrect data retrieval. The change ensures more reliable model identification by using string lookups instead of class names, preventing potential mismatches and improving system stability. This enhances the overall robustness of the Odoo platform.
Original PR description
Followup to #247151 after community report that if a test swizzles the model in the registry, looking models up by class leads to a lookup failure and a fallback to the default attributes set, and an almost certain mismatch as a result.
This update enhances the speed and accuracy of searching within the Web Studio module. The change refines how search indexes are created, now prioritizing indexing by model name instead of class. This results in faster and more relevant search results for users.
This update corrects an issue where pick-up point names and addresses were incorrectly capitalized, particularly in Dutch. The fix ensures all pick-up point names and weekday labels are consistently capitalized regardless of the selected language, improving the user experience and data presentation.
Original PR description
Issue: --- In pick-up point list, the case formatting should be: 1- Pick-up point's `name`, `street` and `city` should not be auto-capitalized. 2- Weekdays should must be always capitalized regardless of language. Steps to reproduce: --- 1- Create a second Company named `store`. 2- Create a wh for the created company and add the wh to click-and-collect pick-up points. (There should be more than 1 pick-up points) 3- In the website, add Dutch lang. 4- In website, open a product and, open the `Click and Collect`. Outcome: --- Name is capitalized to `Store` and the days are not capitalized if you switch to dutch lang. Cause: --- Due to CLDR, luxon doesn't capitalize weekdays in some languages. opw-5941830
This update fixes a bug in the Colombian Daily Journal report that prevented users from searching for transactions. The issue was caused by missing data in the report's search field, which is now corrected to include move names, partners, accounts, and labels. This ensures accurate and efficient searching within the Daily Journal.
Original PR description
Steps to reproduce: 1. Open the Colombian Daily Journal (Libro Diario). 2. Type a move name or partner in the search bar. 3. Observe that no results are returned. Cause: Report lines were generated with an empty 'name' attribute. The accounting report framework uses this field for client-side filtering. Empty names make the search bar non-functional. Solution: Populate the 'name' field with move, partner, account, and label data. This enables the frontend search bar to match against these strings. opw-5495558
This update resolves a technical issue that caused tracebacks when opening barcode rule forms within the Stock module. The fix removes a dependency on a parent record, ensuring the form loads correctly and preventing errors. This improves stability and user experience.
Original PR description
Issue before this commit: ========================= When opening a Barcode Rule form view, a traceback was raised due to the following python expression: bool(parent.is_gs1_nomenclature or type ==…
Issue before this commit: ========================= When opening a Barcode Rule form view, a traceback was raised due to the following python expression: bool(parent.is_gs1_nomenclature or type == 'alias') Steps to Reproduce: ========================= - Install the stock module. - Go to Configuration → Barcode Nomenclatures in the Stock app. - Open any Barcode Nomenclature form. - Go to the Rules tab and open a rule (pop-up form view). - Click on the Expand button. - A traceback is raised. Cause of the issue: ========================= The form view tries to evaluate `parent.is_gs1_nomenclature`, but the `parent` record is not defined when the rule form view is opened directly (via expand), leading to a traceback. This happens because the form view is not defined as a child of any parent view, so no parent context is available, which leads to a traceback. With This Commit: ========================= Removed the usage of `parent.is_gs1_nomenclature` and use `is_gs1_nomenclature` directly instead. The `is_gs1_nomenclature` field on `barcode.rule` is already a related field to `barcode.nomenclature`, so it can be safely used without relying on the parent. opw-5949083
This update prevents unnecessary OCR processing on split expenses, which was causing unexpected charges for users with automatic digitization enabled. The fix addresses a bug previously resolved in later versions of Odoo, and ensures efficient use of IAP credits. This change minimizes potential user costs.
Original PR description
OCR should only be performed on the original document. Enabling it on splits leads to redundant OCR requests and unnecessary IAP credit consumption. This is particularly important when automatic digitization is enabled, as it triggers a paid request for every split generated, leading to unexpected costs for the user. The same bug was fixed in version 19.0 and up (commit 0688575), but it couldn't be backported as the `split_expense_origin_id` field doesn't exist in version 18.0. opw-[5930791](https://www.odoo.com/odoo/project/2068/tasks/5930791)
This update resolves a technical issue preventing accurate scale readings for certified weighing operations. The fix addresses a problem where the system was incorrectly interpreting scale data, leading to inaccurate results. This ensures correct data capture for scale certifications, improving the reliability of the IoT integration.
Original PR description
This PR fixes the lack of compatibility with the new event manager code sending result instead of value, fixing the weighing stuck at 0 in some situations
This update addresses a technical issue related to the transmission of Swiss payroll data (LPP). Specifically, it ensures the 13th month salary is correctly included in the base calculation for reporting purposes, aligning with Swiss tax regulations. This correction improves the accuracy of financial reporting and compliance.
Original PR description
Forward-Port-Of: odoo/enterprise#107908
4 changes
Resolved issues and error corrections
This update resolves an issue where the skills module's automated tour was failing due to a conflict with multiple popups. The fix ensures the tour correctly identifies and closes the intended popup, improving the user experience and reliability of the training process.
Original PR description
When looking for this selector `.modal-footer .btn-primary` multiple popup are opened and the tour could select the wrong one. It would then not close the correct popup and fail the tour. runbot-238877
This update resolves an issue where archived employee records were still visible in the attendance Gantt view. The change ensures that only currently active employees are displayed, improving data accuracy and clarity for reporting.
Original PR description
Steps to reproduce: 1. install `hr_attendance_gantt` 2. create an employee 3. make attendance records for the employee in the previous months 4. archive the employee When opening the gantt view of the attendance, a row appears for the archived employee, with no attendance showing up. This commit adds a constraint to only show the active employees. opw-5490119
This update resolves an issue where the default grouping by provider wasn't consistently applied in the Shipping Methods section of Odoo. The fix ensures that when a provider is set to 'default,' the system correctly groups shipments by that provider, improving the user experience and data organization.
Original PR description
**Steps to Reproduce:** - Got to the Shipping Methods. - No default group by is applied even when the provider is set to default. **Issue:** The default group by was not applied in Shipping Methods despite the provider being set as default, due to a mismatch between the filter name and the default group by name. **Fix:** Aligned the filter name with the default group by name so the grouping is applied correctly by default. **Affected Version:** 17.0~master
This update resolves an issue where invoice PDFs weren't correctly generated during testing, leading to errors. The fix ensures that invoices are rendered as PDFs during testing, preventing test failures and improving the reliability of the audit trail reporting. This ensures accurate reporting for tax compliance.
Original PR description
This commit fixes the invoice's pdf generation being skipped during tests (generating HTML instead), raising an error while pypdf tries to read the actual pdf (during multipage recomputation). Note: forcing report rendering was already set during forward-porting of the original commit [^1]. runbot-238807 [^1]: https://github.com/odoo/odoo/commit/aa67d2833514c10acb49bc3f8896c6f59910d3c2