Wednesday, March 11, 2026
37 changes · saas-19.2
Enhancements to existing features
This update optimizes the way tests are run for the stock barcode module, speeding up test execution times. By moving test setup to a single class, the process is streamlined, reducing redundant operations. This results in a minor performance improvement for our testing procedures.
Original PR description
This commit moves the records' creation and the configuration of the `stock_barcode` tests from the `setUp` to the `setUpClass` method, so those are done only once and not at the beginning of every test. The purpose of this change is to slightly speed up the run of tests. Forward-Port-Of: odoo/enterprise#109827 Forward-Port-Of: odoo/enterprise#109624
Resolved issues and error corrections
This update fixes an issue where the 'Create Page' button in the edit menu didn't correctly use the automatically generated, slugified URL for new pages. The change ensures that newly created pages are properly linked through the menu, improving the user experience and preventing broken links.
Original PR description
The "Create Page" button was added in edit menu dialog in commit 990b7c045bf27280c64433510d6e43fba5b3a4b0. The button creates a page using the link in the menu for the url of the page, but the actual page creation may use a different url (as it slugifies it). This commit uses the url returned by the server on page creation to update the url of the menu, and correctly redirect to the new page. Steps to reproduce: - In edit menu > menu item, create a menu with url `/abc,xyz` - In edit menu, click "Create Page" - The page is created with a url that is slugified - Bug: but the menu does not use the slugified new url, and the url to which we redirect is not that one either task-5895401 Forward-Port-Of: odoo/odoo#246472
Features or functions removed from Odoo
This update removes a redundant and forgotten resource (`clean_handlers`) from the html_editor plugin. This cleanup improves the efficiency of the system and ensures resources are only included when actively used. It's a routine maintenance task to keep our code clean and optimized.
Original PR description
The resource named `clean_handlers` should have been removed since [1], but a single occurrence has been forgotten and survived in `SeparatorPlugin`. This commit removes it. [1]: https://github.com/odoo/odoo/commit/3cd28b1972e704c54e5b40226bfbe4e0895481d8 task-5363816 Forward-Port-Of: odoo/odoo#247226
This update fixes a minor visual issue in the member list within Odoo, specifically improving the alignment and spacing of the star icon and member names. The changes enhance the overall readability and aesthetics of the interface, providing a slightly cleaner user experience. This is a cosmetic improvement.
Original PR description
- reduced spacing with the member name - better vertical alignment of name and star icon - some spacing with the "..." button when member name is long Before / After <img width="241" height="205" alt="Screenshot 2026-03-06 at 15 16 44" src="https://github.com/user-attachments/assets/448a8d5c-36a4-4018-89f3-cf89dabdac8a" /> <img width="237" height="195" alt="Screenshot 2026-03-06 at 15 15 47" src="https://github.com/user-attachments/assets/29968c76-51f8-498e-ac9a-98861d3360a2" /> Before / After <img width="241" height="206" alt="Screenshot 2026-03-06 at 15 16 56" src="https://github.com/user-attachments/assets/96a0ee34-ec87-418f-8ecd-0025dfe79387" /> <img width="244" height="197" alt="Screenshot 2026-03-06 at 15 16 10" src="https://github.com/user-attachments/assets/9a4dc28c-8ba3-4992-8230-0aa4f8af382c" /> Forward-Port-Of: odoo/odoo#252481
This update fixes an issue where the 'Today' button in the Gantt view didn't reliably return to the current date after navigating from yesterday. The fix ensures the button functions as expected, providing a consistent user experience when viewing schedules. This improves usability for users managing appointments and tasks.
Original PR description
**Version:** 18.0 **Steps to reproduce:** - Install Attendance modules. - Navigate to yesterday using the arrow button. - Then click on Today button. **Issue:** The view does not return to the current day when Today button is clicked. **Cause:** The condition to check this scenario fails for this case. **Fix:** Updated the condition to include the this scenario. task-5451384 Forward-Port-Of: odoo/enterprise#109245 Forward-Port-Of: odoo/enterprise#103139
This update fixes an issue where the sale preview became bloated when using combo products with the 'Hide Composition' option selected. The change prevents the system from displaying incorrect zero-priced sections, resulting in a cleaner and more efficient preview. This improves the user experience when managing quotes with combo items.
Original PR description
**Behavior:** When a combo product is added under a section and the 'Hide Composition' option is selected the system will try to get a list of the prices grouped by different taxes, however since combo items usually don't cost anything and are not under any tax group, the quotation preview will try show the section's total prices under no tax which will likely amount to 0$ This results in a bloated preview. Solution: Only accept a grouping under a specific tax (be it no tax or a real tax) if the total price != 0$ **Steps to reproduce:** - Create a combo product containing a product that is taxed - Create a quote with a section - Add the product under the section - Check 'Hide Composition' in the section's options - Preview the sale - You'll notice the section duplicated with no tax and no price opw-5481931 Forward-Port-Of: odoo/odoo#245866
This update resolves an issue preventing users from creating sales orders when specific project user group permissions were restricted. The fix adjusts how the system accesses project information, now allowing creation regardless of project group settings. This ensures broader usability and eliminates a restriction on sales order creation.
Original PR description
Issue: --- Users cannot create so without project user group. Steps to reproduce: --- 1- Install `sale_timesheet`, `sale_project` 2- Change demo user access: - Sales: own documents - Timesheets: own documents - Project: No 3- Login demo user and create a SO. SO creation fails on `read` operation on `project_count`. Cause and Fix: --- This is due to `_compute_show_hours_recorded_button`, which needs `project_count` to be computed. However, `SO.project_count` is only accessible by `project.group_project_user`. This can be fixed by a `compute_sudo` on show_hours_recorded_button. Security-wise this should be fine, as `show_hours_recorded_button` itself is only accessible by `hr_timesheet.group_hr_timesheet_user`. opw-5944881 Forward-Port-Of: odoo/odoo#250694
This update resolves a bug where renewing a subscription while another process was closing it resulted in the subscription being incorrectly marked as churned. The fix ensures that subscriptions are only processed when their status is active, preventing this race condition and ensuring accurate subscription management.
Original PR description
Steps to reproduce: - Have a subscription ready to expire/auto-close. - Trigger the `_cron_subscription_expiration` cron. - While the cron is processing earlier batches, manually renew the subscription. - The renewed subscription is incorrectly marked as closed/churned. Cause: The cron searches for all expired/unpaid subscriptions at the very beginning and processes them in batches of 30. If a subscription is renewed concurrently (Race condition), its ID is already in the `subscriptions_close` list, causing the cron to close it regardless of its new state. Solution: Inside the batch processing loop, consider only subscriptions that are strictly still in `SUBSCRIPTION_PROGRESS_STATE`. Task: 5929077 Forward-Port-Of: odoo/enterprise#107157
A previous shortcut in the asset management module was causing users to navigate to the wrong view instead of the previous asset. This update corrects this issue by changing the shortcut from ALT+P to ALT+SHIFT+P, aligning with existing shortcuts and improving usability.
Original PR description
# How to reproduce - Have atleast two assets - Go to the last asset - Type ALT + P on your keyboard # The problem We enter the Posted Entries view instead of going to the previous asset # Why This PR (https://github.com/odoo/enterprise/pull/67840) added shortcuts to the asset form view, but used ALT + P for the Posted Entries. This shortcut is already used on all form views for the "previous page" button. After consulting with the developer of the original PR, we decided to move the Posted Entries shortcut to ALT + SHIFT + P opw-5948523 Forward-Port-Of: odoo/enterprise#109022
This update resolves an issue where German addresses submitted to Amazon were being incorrectly formatted, causing delivery validation failures. The fix swaps the order of address fields to align with Amazon's requirements, ensuring accurate address data and successful deliveries for German customers. This improves the overall customer experience.
Original PR description
When filling in a German address on Amazon, customers are presented with two fields: - Street, and - Building or company name. The street is sent as AddressLine2, while the building/company name is sent as AddressLine1. However, delivery providers validate address existence, which fails when address line 1 is not a street name. To resolve this, we swap these two fields for German addresses. opw-4668178 Forward-Port-Of: odoo/enterprise#109215
This update addresses instability in the HTML editor's automated testing process. The team identified that waiting for visual elements to load wasn't reliable due to testing bot delays. The fix focuses on more robust function call timing to ensure tests consistently pass, improving overall editor stability.
Original PR description
Forward-Port-Of: odoo/odoo#252306 Forward-Port-Of: odoo/odoo#251122
This update corrects a display issue where single-day time off requests were incorrectly shown as multi-day events in the Calendar app. The fix ensures that one-day leaves are accurately represented as single-day events, regardless of the user's timezone, preventing confusion and improving calendar accuracy.
Original PR description
**Issue:** Single-day time off requests appear as multi-day events in the Calendar app when using certain tim> **Cause:** The `_compute_date_from_to()` method converts user-specified dates to UTC.…
**Issue:** Single-day time off requests appear as multi-day events in the Calendar app when using certain tim> **Cause:** The `_compute_date_from_to()` method converts user-specified dates to UTC. https://github.com/odoo/odoo/blob/028e7228cb830e47a9726bef4c82793ba4590cd5/addons/hr_holidays/models/hr_leave.py#L316-L317 The `_prepare_holidays_meeting_values()` method then uses these UTC datetime values (`holiday.date_from`, `holiday.date_to`) In Los Angeles timezone, and for a one day leave on september 17 2025 this leads to: - holiday.date_from: September 17, 2025 at 03:00 UTC - holiday.date_to: September 18, 2025 at 12:00 UTC causing a single-day leave to be displayed as a two-day event. **After fix:** - start_value: September 17, 2025 at 12:00 - stop_value: September 17, 2025 at 11:59 **Steps to Reproduce:** 1. Set the user timezone to "America/Los_Angeles" 2. Set the browser timezone to the same timezone 3. Create a one-day time off request (e.g., September 17, 2025) 4. Open the Calendar app: the event spans across two days opw-4744817 Forward-Port-Of: odoo/odoo#242264 Forward-Port-Of: odoo/odoo#224298
This update corrects a recent change that broke the ability to customize invoice headers in the l10n_latam invoice document. The fix ensures that custom header configurations work as intended, allowing for consistent branding and formatting. This resolves an issue impacting invoice presentation for Latin American clients.
Original PR description
The document layout was made more flexible [1], but in the process the custom_header feature broke. The xpath was targeting a `<tr>` instead of the `<div>` it was meant to replace. Change it to target the right `<div>` in a slightly more robust way. Also consistently add the same header classes to the replacement `<div>`s in all the themes. [1] https://github.com/odoo/odoo/pull/237109 task-5949275 Backport of https://github.com/odoo/odoo/pull/251341. Forward-Port-Of: odoo/odoo#252916
This update resolves an issue where printing basic receipts would fail if the point-of-sale (POS) name was too long. The fix limits the POS name length to prevent a technical error that disrupted receipt generation. This ensures all receipt types, particularly basic receipts, can be printed correctly.
Original PR description
When printing a basic receipt, if the pos name is too long a traceback will occurs when printing the basic receipt. Steps to reproduce: * Create a pos with a name of 46 character or more * Setup the italian fiscal printer * Enable Basic Receipt printing * Open point of sale * Create an order and validate it * Try "Print Basic receipt" Traceback: RangeError: Invalid count value: -15 at String.repeat () If the data being printed is longer than the maximum number of character in a line (MAX_CHARS = 46), paddingLeft becomes negative which cause an error in repeat(). [Similar solution](https://github.com/odoo/enterprise/blob/18.0/l10n_it_pos/static/src/app/fiscal_printer/commands/print_rec_message/print_rec_message.js#L35) [opw-5270697](https://www.odoo.com/odoo/project/49/tasks/5270697) Forward-Port-Of: odoo/enterprise#109766 Forward-Port-Of: odoo/enterprise#109527
This update fixes an issue where sign requests generated from HR wizards didn't automatically use the validity dates set on sign templates. Now, all sign requests created through these wizards will adhere to the template's expiration settings, ensuring accurate tracking and preventing outdated requests.
Original PR description
Before, when sending sign requests from the HR custom wizards, the validity date defined on the sign template was not applied to the generated signature requests. As a result, requests were created without respecting the template’s configured expiration. task-5928110 Forward-Port-Of: odoo/enterprise#107076
This update fixes an issue where part-time employees were incorrectly showing their full-time hours (40) instead of their actual weekly hours (24) in the attendance calendar. The change ensures the system accurately reflects the employee's flexible schedule, improving reporting and scheduling accuracy.
Original PR description
### Issue: When having a part-time flexible employee (`hours_per_week` < `full_time_required_hours`), some values still show `full_time_required_hours` as the total hours they should work in a week.…
### Issue:
When having a part-time flexible employee (`hours_per_week` < `full_time_required_hours`), some values still show `full_time_required_hours` as the total hours they should work in a week.
Steps to reproduce:
- Have an employee with a part-time flexible schedule
- `full_time_required_hours`: 40
- `hours_per_week`: 24
- `hours_per_day`: 8
- Go in Attendances
- Hover the employee
- It shows ...h/40h but it should show ...h/24h
Cause:
In `_attendance_intervals_batch()` we build theoretical attendances for flexible employees. Starting at the start of the week, we add an attendance of `hours_per_day` each day until we reached `full_time_required_hours`.
In the case above, we would return five attendances of 8h, ignoring `hours_per_week`.
Then `_get_attendance_intervals_days_data()` counts the hours to display them in the Gantt view.
Solution:
In `_attendance_intervals_batch()` we use `hours_per_week` instead of `full_time_required_hours` as the weekly limit of hours per week.
A lot of tests needed to be adapted, as they were specifying `full_time_required_hours` but not `hours_per_week` when creating calendars.
opw-5973117
Forward-Port-Of: odoo/enterprise#109873
Forward-Port-Of: odoo/enterprise#109645This update fixes an issue where part-time flexible employees were incorrectly displaying their full-time work hours (40) instead of their actual weekly hours (24). The change ensures that the system accurately reflects the employee's scheduled hours, improving accuracy and reporting.
Original PR description
### Issue: When having a part-time flexible employee (`hours_per_week` < `full_time_required_hours`), some values still show `full_time_required_hours` as the total hours they should work in a week.…
### Issue:
When having a part-time flexible employee (`hours_per_week` < `full_time_required_hours`), some values still show `full_time_required_hours` as the total hours they should work in a week.
### Steps to reproduce:
- Have an employee with a part-time flexible schedule
- `full_time_required_hours`: 40
- `hours_per_week`: 24
- `hours_per_day`: 8
- Go in Attendances
- Hover the employee
- It shows ...h/40h but it should show ...h/24h
### Cause:
In `_attendance_intervals_batch()` we build theoretical attendances for flexible employees. Starting at the start of the week, we add an attendance of `hours_per_day` each day until we reached `full_time_required_hours`.
In the case above, we would return five attendances of 8h, ignoring `hours_per_week`.
Then `_get_attendance_intervals_days_data()` counts the hours to display them in the Gantt view.
### Solution:
In `_attendance_intervals_batch()` we use `hours_per_week` instead of `full_time_required_hours` as the weekly limit of hours per week.
A lot of tests needed to be adapted, as they were specifying `full_time_required_hours` but not `hours_per_week` when creating calendars.
opw-5973117
Forward-Port-Of: odoo/odoo#252568
Forward-Port-Of: odoo/odoo#252190This update clarifies Odoo's logging system by removing the use of error and warning colors for process IDs (PIDs). This change improves readability and prevents users from misinterpreting log messages, leading to a more straightforward understanding of system activity.
Original PR description
At first glance people think there is a problem when the PID is colored using the same color logging.ERROR and logging.WARNING. For clarity we drop those two colors. There now are 11 (still prime) available colors.
This pull request reverts a recent change to the web_studio test suite. The previous modification incorrectly checked for a specific element count (exactly 3 times) instead of verifying it appears at least 3 times. This reversion ensures the test accurately reflects the expected behavior of the web_studio UI, preventing potential issues during development.
Original PR description
Revert modifications made in https://github.com/odoo/odoo/pull/245680 With that modification, we checked that element is exactly 3 times, But this is not the same to check that the element is at least preset 3 times.. Backport of odoo/enterprise#108294
This update resolves an error that occurred when opening the shop page, specifically when products had no variants configured. The fix ensures that the 'Add to Cart' button is correctly displayed or hidden based on product availability, preventing a technical error. This improves the overall stability and usability of the shop page.
Original PR description
Currently, an error occurs when the user opens the shop page. **Steps to Reproduce:** - Install `website_sale_stock` module. - Go to `Settings` and enable `Product Variants`. - Create a `product…
Currently, an error occurs when the user opens the shop page. **Steps to Reproduce:** - Install `website_sale_stock` module. - Go to `Settings` and enable `Product Variants`. - Create a `product template` of type `Goods`. - Enable `Track Inventory`. - In the `Sales tab`, disable `Sell when Out-of-Stock`. - In the `Attributes & Variants` tab, add one attribute with two values and save. - Delete all variants using the `Variants smart button` or from Inventory > Products > Product Variants. - Go to `Website` > `Shop`. **Error:** `ValueError: Expected singleton: product.product()` After [this commit], when opening the shop page, it calculates the quick add availability [1] for every product. It checks whether the product is sold out [2] to determine whether the quick add to cart button should be displayed or not. Since the product has no variants, it raises the error here [3]. Before 19.0, the quick add availability was calculated if the product had variants [4]. This commit ensures that if a product has no variants, it is treated as sold out. As a result, the quick add to cart button is not shown, as in the previous version. [this commit]: https://github.com/odoo/odoo/commit/43d5226b500d64c3902eb1528e5d8e461766982c [1]: https://github.com/odoo/odoo/blob/aeaace7c70b7ac3db68f188c9c517f1ff849e55d/addons/website_sale_stock/models/product_template.py#L35-L39 [2]: https://github.com/odoo/odoo/blob/aeaace7c70b7ac3db68f188c9c517f1ff849e55d/addons/website_sale_stock/models/product_template.py#L33 [3]: https://github.com/odoo/odoo/blob/aeaace7c70b7ac3db68f188c9c517f1ff849e55d/addons/website_sale_stock/models/product_product.py#L41 [4]: https://github.com/odoo/odoo/blob/18d9baa690d6b103fbf8dbe875b3e00b056dd873/addons/website_sale/views/templates.xml#L400-L403 sentry-7287364112 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250373
This update fixes a bug related to member removal confirmation messages and ensures that archived users cannot perform member removal actions. It improves the user experience by providing clearer notifications and enhances security by restricting access for inactive users. This change was part of a larger effort to improve stability and security.
Original PR description
*=im_livechat, test_discuss_full Purpose the commit: - To update the string the member removal confirmation dialog. - Restrict the actions usage for archived users. task-5944930 part of-5867464 Forward-Port-Of: odoo/odoo#248998
This update fixes a visual issue on the mobile POS tablet where the pill selection popup was positioned incorrectly, leading to a confusing user experience. The change adjusts the popup's starting position to the bottom of the screen, resulting in a cleaner and more intuitive interface for tablet users. This ensures a consistent and user-friendly experience.
Original PR description
Small modification of the pills selection popup in order to make it starting at the bottom of the screen and not with a fixed size, which caused in certain cases, weird UI. task: 5952769 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a technical issue preventing the Quote Builder from generating PDF quotes correctly. The change ensures compatibility with a newer version of the PDF library, specifically addressing a requirement for 'Fields' within AcroForm structures. This ensures Quote Builder continues to function as expected.
Original PR description
Issue: --- Due to this issue, generating PDF Quote using Quote Builder leads to traceback. Steps to reproduce: --- 1- Using a python 3.13 env, install requirements.txt. (You could instead uninstall…
Issue: --- Due to this issue, generating PDF Quote using Quote Builder leads to traceback. Steps to reproduce: --- 1- Using a python 3.13 env, install requirements.txt. (You could instead uninstall pypdf2 and install pypdf==5.4.0) 2- Enable Quote Builder. 3- Create a SO and in quite builder tab, select a document. 4- Print -> PDF Quote. This will lead to traceback. Cause: --- There is a requirement change on https://github.com/odoo/odoo/pull/233600, as pypdf2 will not be supported in future. Instead we use pypdf==5.4.0. In pypdf 5.4.0 it is required to have `Fields` present in `Acro Form` (introduced in [1] v3.13.0): https://github.com/py-pdf/pypdf/blame/f20954f2241640feb484800e191373f8fbdfa44b/pypdf/_writer.py#L1060-L1061 FIX: --- We could add an empty `fields` dictionary when it's not present. The entry should be `/Fields`: https://github.com/py-pdf/pypdf/blob/f20954f2241640feb484800e191373f8fbdfa44b/pypdf/constants.py#L362-L370 Note: --- In this fix, we replace `is_upper_version_pypdf2` with specific version comparison. To be precise `getNumPages` is depreciated in version 1.28.0 [2]. References: --- [1]- https://github.com/py-pdf/pypdf/commit/dcf997a028e993b215457c5629cb4e78186e11c0 [2]- https://github.com/py-pdf/pypdf/blob/3ab1581a51f446f86dd445662005f8747941c2b6/pypdf/_writer.py#L507-L514 opw-5784464 Forward-Port-Of: odoo/odoo#250329
This update enhances the clarity of Odoo's server logs during data imports. Previously, it was difficult to quickly determine if an import was a dry run or a real import, or which specific model the data was being loaded into. This change makes it easier for support teams to investigate issues and resolve import problems efficiently.
Original PR description
When investigating support tickets (and the server logs), it is not always clear if: 1) The `info`` log from base_import refers to a dry run or a "real" import 2) The "done" log does not explicitly specify which model the data was imported to While an experienced user can still extrapolate what happened by the immediate context of the preceding/following log lines, it makes it unnecessary difficult to see at first glance where the data was imported to. This PR aims at rectifying it to improve the quality of life of people investigating the server logs. OPW-5999195 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252783 Forward-Port-Of: odoo/odoo#252734
This update fixes a test failure related to live chat operator access. The system now correctly handles operator assignments, ensuring the test accurately validates description edit permissions. This change improves the reliability of our live chat functionality.
Original PR description
this PR is resolving [runbot error](https://runbot.odoo.com/odoo/runbot.build.error/241727) due to **/get_session** now creates the assigned operator as a channel member, so the previous non-member assertion became invalid and could fail depending on operator assignment. The test now uses a distinct livechat operator added after session creation to keep validating description edit access without relying on outdated membership assumptions. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252736
This update resolves a technical problem where screenshots of spreadsheets were sometimes failing due to the spreadsheet being unexpectedly closed. The fix ensures that thumbnails are consistently saved, improving the reliability of spreadsheet sharing and reducing potential data loss. This was a priority fix to maintain a stable user experience.
Original PR description
When we leave a spreadsheet, we take a screenshot of the canvas to save as thumbail. But it's sometime possible for the spreadsheet to be unmounted whe trying to screenshot it, leading to a traceback. Task: [5914708](https://www.odoo.com/web#id=5914708&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#109531
This update fixes an issue where POS receipts displayed duplicate company names and incorrectly showed the company name instead of the POS configuration name. The change ensures receipts now accurately display the POS configuration name once, improving the clarity and professionalism of customer receipts.
Original PR description
Before this commit: =================== The POS receipt displayed the company name twice, resulting in duplicated company information. Additionally, the company name was shown instead of the PoS config name. After this commit: ================== The receipt now correctly displays the POS config name only once. Duplicate company information has been removed to ensure a clean and accurate receipt layout. Task-5951599
This update fixes a technical issue preventing module overrides (like those in HR) from correctly updating VoIP contact status information. The change ensures VoIP data aligns with Odoo's extensibility standards, maintaining consistency between the real system and test environments. This improves the reliability of VoIP integrations.
Original PR description
`_store_voip_fields` was directly adding `"im_status"` to the stored partner fields. This bypassed `_store_im_status_fields`, so module overrides (notably HR-related ones) could not extend/adjust the IM status payload. Use `_store_im_status_fields(res)` from `_store_voip_fields` instead of hardcoding `"im_status"`. Also align the VoIP mock server `res.partner` contact payload with the real store payload by including the same contact fields and IM status data (`partner_share`, `im_status`, `im_status_access_token`, etc.). This keeps VoIP aligned with the extensibility contract and keeps tests on the same data shape as runtime. [H>A]
This update resolves an issue where the point-of-sale search feature wasn't consistently working due to a timing problem with updating the search input. A small delay has been added to ensure the search input is properly updated before triggering the search, guaranteeing accurate database lookups. This improves the reliability of the search function.
Original PR description
In some test, we try to search the database for a partner through the partner_list. To do this, we edit the partner_list input and trigger an "Enter" event. In some case, the value is not set to the state of the partner_list before we dispatch the event and result in no search in the database being done. This is partly due to the debounce of the input before setting the state of the partner list and due to some method running asynchronously every method triggered by the insertion of text. To fix this, we add a little sleep in the tour (200ms) to ensure that the state of the component is well updated before triggering the event. runbot-error: 238511 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A recent issue prevented the automated update of POS price tags. This fix removes an outdated argument from the scheduled process, resolving a technical error that was disrupting the tag synchronization. This ensures the POS Pricer module functions correctly without interruption.
Original PR description
Currently, an error occurs when the scheduled action "POS Pricer: Tags Update Synchronization" runs. **Steps to Reproduce:** - Install the `pos_pricer` module. - Go to `Scheduled Actions` and run…
Currently, an error occurs when the scheduled action "POS Pricer: Tags Update Synchronization" runs.
**Steps to Reproduce:**
- Install the `pos_pricer` module.
- Go to `Scheduled Actions` and run `"POS Pricer: Tags Update Synchronization"`.
**Error:**
`
ValueError: TypeError("PricerStore._update_pricer_tags() got an unexpected keyword argument 'update_all'") while evaluating 'model.search(([("pricer_tag_ids", "!=", False)]))._update_pricer_tags(update_all=False)'`
This error occurs because, after this [recent commit], `_update_pricer_tags` was changed to
no longer accept the `update_all` argument and now relies on the `needs_pricer_update` instead.
However, the scheduled action still passes the `update_all` argument [1], which causes the
error when the cron job runs.
This commit removes the unexpected `update_all` argument from the tag update synchronization cron.
[recent commit]: https://github.com/odoo/enterprise/commit/166a8a240d0588f4e908ce09c4639da1216ba3b7
[1]- https://github.com/odoo/enterprise/blob/0ef7643bba5b3fa3d22ab122ef3b65f0d67c8fb7/pos_pricer/data/pricer_ir_cron.xml#L9
sentry-7324339777This update fixes a temporary issue that prevented a helpful training tour for restaurant staff within the Odoo POS system. The tour has been re-enabled with added checks to ensure order synchronization, particularly after printer errors, improving the user experience and training process.
Original PR description
In this commit: --- - Re-enable `test_course_restaurant_preparation_tour`, which was previously disabled to allow merging during freeze. - Add steps to ensure the order is properly synchronized. task-5958387 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A recent update caused crashes when creating YouTube posts in Odoo Enterprise. This fix removes an outdated dependency within the social_youtube module, resolving the crash. The change ensures stable saving of YouTube posts without impacting core functionality.
Original PR description
Bug: Following recent changes introduced in saas-19.2, creating and saving a YouTube post causes the flow to crash. Cause: A refactoring in the social module removed the `utm.source.mixin` dependency from the `social_post` model. This consequently removed the `name` attribute from the model. However, `social_youtube` still expected this attribute to exist, triggering the crash. Solution: Remove all references to the `name` attribute within the `social_youtube` module. We opted not to reintroduce the attribute on the model because it did not add significant functionality and has been superseded by other attributes.
This update fixes a minor issue where a warning about leaving a chatbot conversation was displayed even when the conversation was already closed. Now, the warning only appears when a chatbot conversation is actively in progress, providing a smoother and less disruptive user experience. This change ensures users aren't unnecessarily alerted about finished chats.
Original PR description
Before this commit: When a user finishes a chatbot script and the conversation is already ended, clicking on close / continue still triggers the leave conversation warning. After this commit: The leave conversation warning is no longer shown when the chatbot conversation is already closed or ended. The warning is only shown for active conversations. [Task-5882084](https://www.odoo.com/odoo/project/1519/tasks/5882084) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252750 Forward-Port-Of: odoo/odoo#247918
This update corrects a minor CSS error that was causing incorrect display rules for elements within the timesheet grid. The change ensures that the grid renders correctly, improving the overall user experience. This fix focuses on internal styling and doesn't impact external functionality.
Original PR description
This commit fixes the generation of the `display` CSS rules.
Before:
```scss
//...
.aw_nca_step_1 .aw_nca_d-block_from_step_1 {
display: "block";
}
//...
.aw_nca_step_1 .aw_nca_d-inline-flex_from_step_1 {
display: "inline-flex";
}
```
After:
```scss
//...
.aw_nca_step_1 .aw_nca_d-block_from_step_1 {
display: block;
}
//...
.aw_nca_step_1 .aw_nca_d-inline-flex_from_step_1 {
display: inline-flex;
}
```
Doc:
> In Sass, elements in lists can be separated by commas (Helvetica, Arial, sans-serif), spaces (10px 15px 0 0), or slashes as long as it’s consistent within the list.
https://sass-lang.com/documentation/values/lists/This update resolves an issue where dynamic pivot tables in the Enterprise version of Odoo were occasionally crashing. The fix, stemming from an update to the underlying o-spreadsheet library, ensures pivot tables are correctly recomputed and avoids creating invalid tables, resulting in a more stable user experience.
This update resolves an issue where users were encountering an error when uploading SVG images as logos in document layouts. The fix ensures that the system gracefully handles SVG uploads, preventing the error and allowing users to successfully configure their document layouts with SVG logos. This improves the user experience for logo customization.
Original PR description
Currently an error occurs when user tries to upload a svg image as a logo in document layout. Steps to replicate: - Initialize a db and open settings. - Under the Document Layout section, click on…
Currently an error occurs when user tries to upload a svg image as a logo in document layout.
Steps to replicate:
- Initialize a db and open settings.
- Under the Document Layout section, click on `Configure Document Layout`.
- In the logo field add any SVG image.
Error:
```
File '/home/odoo/odoo19/community/addons/web/models/base_document_layout.py', line 106, in _compute_logo_colors
wizard.logo_primary_color, wizard.logo_secondary_color = wizard.extract_image_primary_secondary_colors(wizard_for_image.logo)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File '/home/odoo/odoo19/community/addons/web/models/base_document_layout.py', line 215, in extract_image_primary_secondary_colors
base_w, base_h = image.size
^^^^^^^^^^
AttributeError: 'bool' object has no attribute 'size'
```
Cause:
- As user added an svg to the logo field, `tools.ImageProcess(logo)` tried to load the SVG which returned `self.image` as False because we dont process SVG or WEBP images [1].
- Later when we try to access `image.size` where image is false, we get error.
Solution:
- In earlier versions the method `base64_to_image()` was used [2], which raised an UserError on attempting `Image.open()` on a SVG.
- This error was caught by the try except block and returned `False, False` [3].
- To match to this behavior we return from the function when there is no image.
[1]: https://github.com/odoo/odoo/blob/4b2aaf2b711c9cfd8fd9f4a5915d6310064af6a9/odoo/tools/image.py#L83-L85
[2]: https://github.com/odoo/odoo/blob/39974cea6c37d21e21e3ed46a914d58f5ac16aad/addons/web/models/base_document_layout.py#L207
[3]: https://github.com/odoo/odoo/blob/4b2aaf2b711c9cfd8fd9f4a5915d6310064af6a9/addons/web/models/base_document_layout.py#L207-L211
sentry-7323084659
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves an issue causing instability in automated tests for key Odoo features. We've removed a problematic setting that led to inconsistent test results and replaced it with a more reliable approach. This ensures our testing process is more stable and accurate.
Original PR description
In this commit, we remove the undeterministicTour key in 2 tours:
- test_form_view_mail_triggers
- test_form_view_custom_reference_field
We have replace assertions in run functions (sync) by pseudo selectors in triggers (async).
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
Backport of odoo/odoo#250830