Daily updates from Odoo
Thursday, March 12, 2026
148 changes
37 changes
Resolved issues and error corrections
This update resolves a bug where typing in an empty HTML editor button would remove the button element entirely. The fix prevents the browser from replacing the link node during text input, ensuring the button remains visible and functional. This improves the user experience when editing content within the HTML editor.
Original PR description
Problem: On the website, typing inside an empty button removes the button element entirely. Cause: In `beforeinput` (when `ev.inputType === "insertText"`), we set the selection to `boundariesIn` of a link. When the browser then inserts the character, it replaces the link node, causing the button to be removed. Solution: In `FormatPlugin.onBeforeInput`, avoid setting the selection to `boundariesIn` of a link for `insertText` events. This prevents the browser from replacing the link element when typing. Steps to reproduce: - Open Website. - Drop a snippet containing a button. - Triple-click on the button content. - Press Backspace to empty it. - Type any character. - Observe that the button is removed. task-5949409 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a problem that occurred when loading the demo data for the 'account_asset' module. The fix corrects an error related to incorrect field definitions during demo data setup, preventing a data loading failure. This ensures demo data can be reliably loaded without disrupting the system.
Original PR description
This error occurs while loading the demo data for the `account_asset` module. Steps to reproduce: - Install `account_asset` module without demo data - Active debugger > Settings > load Demo data Traceback: `ValueError: Invalid field 'depreciation_model_id' in 'account.asset'` - The error occurs because `depreciation_model_id` is a field of the `account.account` model, but while loading the demo data we are defining it on the `account.asset` model in the `_get_demo_data_asset` [method]. - Another error occurs in the `account.depreciation.model` model because it does not have a field named `name`, the correct field is `display_name`. [method]: https://github.com/odoo/enterprise/blob/9d4424088bfda7e89d454a8bd642715a9281913d/account_asset/demo/account_demo.py#L37-L47 sentry-7321811436
A minor technical issue was resolved where an incorrect field was being used in the account online payment process. This prevented a system error and ensures data is processed correctly. The change improves system stability and reliability.
Original PR description
Due to an oversight during https://github.com/odoo/enterprise/pull/109070, the old field `sanitized_acc_number` was used instead of the new one `sanitized_account_number` This causes a traceback. No task ID
This update prevents the deletion of email template attachments when they are removed from the mail composer. Previously, removing an attachment would permanently remove it from all future emails. The fix ensures attachments remain associated with templates, maintaining consistent email content.
Original PR description
**Step to reproduce:** 1. Install `sale_management` 2. Open any email template (e.g., Sale: Order Confirmation). 3. Add an attachment to it 4. Create a Sale Order, confirm it, and click "Send by…
**Step to reproduce:** 1. Install `sale_management` 2. Open any email template (e.g., Sale: Order Confirmation). 3. Add an attachment to it 4. Create a Sale Order, confirm it, and click "Send by Email". 5. In the mail composer, remove the template attachment **Issue:** - The removed attachment is deleted from the database (`ir.attachment`). Consequently, the attachment is permanently removed from the source Email Template and will not appear in future emails. **Cause:** - The `onFileRemove` function in `MailComposerAttachmentList` calls the `unlink` method of the `attachmentUploadService` for every file removed, without considering the existing template attachment. **Solution:** 1. Update `mailComposerAttachmentList` to include `res_model` in `relatedFields` so it is fetched from the server. 2. In `onFileRemove`, check the `res_model` of the attachment. 3. If the `res_model` is not "mail.compose.message", skip the database deletion (unlink) and only remove it from the composer view. opw-5163679 Forward-Port-Of: odoo/odoo#250086 Forward-Port-Of: odoo/odoo#238692
A minor warning appearing on Odoo website pages related to URL hashes has been fixed. This change ensures a smoother user experience by eliminating a potential technical issue that wasn't impacting functionality. The fix improves website stability and reliability.
Original PR description
Since [34df6f8d], a warning `Empty string passed to getElementById().` appears on every website page when there is no hash in the URL. That's not the case anymore after this commit. [34df6f8d]: https://github.com/odoo/odoo/commit/34df6f8d6efc879bef00228b19df04db6c884089 Forward-Port-Of: odoo/odoo#252181
This update resolves a visual issue where list views with search panels (like Rental and Employees) would sometimes display a horizontal scrollbar. This change ensures that list views with search panels display content correctly on mobile devices, providing a consistent and user-friendly experience. It corrects a minor display problem that could have impacted usability.
Original PR description
This PR aims to fix the horizontal scroll overflow which only affects list views with a search panel (e.g. Rental, Employees, etc.). task-5888678 | Before | After | |--------|--------| | <img width="1125" height="2436" alt="Screen Shot 2026-02-19 at 15 29 15" src="https://github.com/user-attachments/assets/b89d2979-78a8-4c58-8f7f-7dedb6fc8fff" /> | <img width="1125" height="2436" alt="Screen Shot 2026-02-19 at 15 30 10" src="https://github.com/user-attachments/assets/0989b6e7-ef91-43b5-8df5-c27696d43f65" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252362 Forward-Port-Of: odoo/odoo#249506
This update corrects a bug where users were seeing all company documents instead of just their own employee documents when using the documents smart button. The fix restores the intended behavior for companies without HR document centralization enabled, ensuring employees only access their own files. This resolves a previous issue impacting document organization.
Original PR description
Steps: - uncheck the "Human Resources" file centralization option - go to an employee, click the documents smart button -> You see every documents, not only the ones from the employee PR https://github.com/odoo/enterprise/pull/93782 aimed at restoring the previous behaviour of the employee documents button and accesses for companies without the hr documents settings enabled, but forgot the domain on the employee smartbutton action. opw-5857914 Forward-Port-Of: odoo/enterprise#107224
This update reduces the visual prominence of reply notifications in conversations with many replies. Previously, overly visible 'reply' text made long threads feel overwhelming. Now, the text is less intrusive and the hover effect is enhanced for better usability.
Original PR description
Before this commit, conversations that had a lot of replies were quite exhausting. This comes from the visual of "reply" text that had its text that is too visible, contributing to having a feeling that there's too much text on the screen. This commit fixes the issue by reducing the visibility of reply to part, so that it's easier to read conversations with lots of reply-to. Opacity has been reduced to keep the reply-to content recognizable enough, and this reduced visibility is canceled on mouse-hover, also making the hover effect on reply-to more apparent. Before / After <img width="604" height="520" alt="Screenshot 2026-02-27 at 19 06 03" src="https://github.com/user-attachments/assets/04a118bc-5fc0-47d6-ad62-3b7e26f835da" /> <img width="604" height="525" alt="Screenshot 2026-02-27 at 19 05 50" src="https://github.com/user-attachments/assets/37974f2c-054c-44bc-bf9a-044825908abc" /> Forward-Port-Of: odoo/odoo#251295
This update resolves an issue where self-order tests were failing due to a product's 'available in pos' status not being correctly set. This prevented products from loading properly in the self-ordering frontend, causing test failures. The fix ensures accurate product availability information, improving test reliability and preventing potential issues in the self-order system.
Original PR description
In some self order tests, available in pos was not set to true which could cause some errors in the tests as some products were not loaded in the self frontend. runbot-error: 241086 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252985
This update resolves an issue where the system incorrectly interpreted date columns in import files. Specifically, it fixes a problem where dates like '2500/1222' were mistakenly identified as '%Y.%m.%d' format, causing import errors. This change ensures that import files are processed correctly, preventing data import failures.
Original PR description
## Description of the issue/feature this PR addresses: If you try to import an excel sheet for example with these column on sale order, but the issue is at every model: (this is an example)…
## Description of the issue/feature this PR addresses: If you try to import an excel sheet for example with these column on sale order, but the issue is at every model: (this is an example)  First column: Client ref Second column: committment date Third column: Customer ## Current behavior before PR: When you upload the file to import, the extract_header_types calls _try_match_date_time that try to guess the date column. The first column makes the _try_match_date_time to guess that the format is %Y.%m.%d format . This is an error because that column does not contain a date . The reason is that check_patterns when convert the pattern to reg ex using `def to_re(pattern):` on base_import/base_import.py, does not escape the "." so it works as "every char" wildcard character on regex . ## Desired behavior after PR is merged: No error should appear and the correct date format from the right date column should be guessed --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252488 Forward-Port-Of: odoo/odoo#196477
This update ensures that when users send multiple messages in a live chat, only one channel is created. Previously, sending multiple messages could result in duplicate channels being formed. This change prevents channel duplication, streamlining the live chat experience for users.
Original PR description
Before this commit, sending multiple messages before the channel creation can result in multiple channels being created. It occurs because the post function is overriden to first persist the channel. When the persist call is still in progress, we shouldn't issue a new one. task-4756758 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#251596 Forward-Port-Of: odoo/odoo#250374
This update corrects an issue where late hours calculations were incorrectly applied to employees outside of Saudi Arabia. The fix now ensures that late hours visibility is only processed for employees within Saudi Arabian companies, improving accuracy and reporting for our SA clients. A new test case confirms this country-specific functionality.
Original PR description
Before this fix, the `_compute_l10n_sa_late_hours_visible` method was processing all attendance records regardless of the employee's company country. This caused issues for non-Saudi companies. Changes: - Filter attendance records to only process employees from Saudi Arabian companies (country_code == 'SA') - Set `l10n_sa_late_hours_visible` to False for non-SA attendances - Add `employee_id.company_id.country_id` to the compute dependencies - Add `string` attribute to `l10n_sa_expected_check_in` field - Add test case to verify late hours visibility is country-specific task-5491785 Forward-Port-Of: odoo/enterprise#104563
This update resolves an issue where Odoo invoices for Danish customers were incorrectly formatted according to Peppol standards. The change ensures compliance with `DK-R-013` by skipping the inclusion of PartyIdentification, preventing errors and improving invoice processing for Danish businesses using Peppol.
Original PR description
Currently, if a Danish partner has a reference set, Odoo adds it under PartyIdentification. This violates Peppol `DK-R-013`, which mandates using schemeID when PartyIdentification is used. Adding the Danish schemeID would also trigger another error, `PEPPOL-COMMON-R042`, as the organization number (CVR) must be included in the `_text`. Including schemeID seem therefore unnecessary since it will appear in CompanyID. Steps to reproduce: - Create a Danish company and enable Peppol - Create a Danish customer with a reference - Create an invoice and submit to Peppol, `DK-R-013` error occurs opw-5921602 Forward-Port-Of: odoo/odoo#251737
This update resolves an issue that occurred when users attempted to remove a company association from an expense record. The fix ensures the system handles company removal gracefully, preventing a technical error that could disrupt expense management. This improves the reliability of the expense tracking process.
Original PR description
Currently an error occurs when user tries to remove company on an expense. Steps to replicate: - Install `hr_expense` and create a new company. (make sure you have more than one company). - Create new expense and remove the value from company field. Error: `ValueError: Compute method failed to assign hr.expense(<NewId origin=7>,).is_editable` Cause: - Removing the company triggers the [compute] that skips the loop if company is not assigned [1], which causes this error. Solution: - Assign `is_editable` as False when company is false. [compute]: https://github.com/odoo/odoo/blob/43505c919e29065b04d4e9e0a66f38a13f42daed/addons/hr_expense/models/hr_expense.py#L304-L363 [1]: https://github.com/odoo/odoo/blob/43505c919e29065b04d4e9e0a66f38a13f42daed/addons/hr_expense/models/hr_expense.py#L326-L331 No ID --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241507
This update resolves a problem where Discuss Notifications sound settings weren't correctly applied after upgrading to version 19.1. The issue stemmed from a version comparison error related to the 'saas~' prefix. This change ensures notifications settings are properly updated during upgrades, maintaining expected functionality.
Original PR description
Before this commit, upgrade of local storage from 19.0 to 19.1 were not working. Steps to reproduce: - have DB in 19.0 with message sound "off" in Discuss Notifications settings - upgrade to 19.1 DB (or make a fresh 19.1 DB on same sub-domain) - log on this new DB => "message sound" settings is "on" when it should be "off". This happens because the server version is "saas~19.1" and the prefix `saas~` was not taken into account. As a result, the version `saas~19.1` was mistakenly considered as lower than `19.0`. This commit fixes the issue by omitting the prefix `saas~` in the utils function of version comparison, which is what is used by the local storage internal code to compare versions. Upgrade version has been bumped to `19.1.1` and upgrade scripts have their sub-version explicitly set to `19.1.0`, so that these scripts are run for versions equal or lower than `19.1.0`, meaning they re-run also for `19.1.0`. Task-6008166 Forward-Port-Of: odoo/odoo#252204
This update resolves an issue where incoming emails with attachments using the 'bin/plain' MIME type would cause the system to crash. The fix now gracefully handles this attachment type by falling back to a standard format, ensuring all emails are processed correctly and preventing disruptions to vendor bill creation.
Original PR description
When parsing incoming emails, mail.thread normalizes some malformed MIME types before calling part.get_content(). However, attachments using Content-Type `bin/plain` are not normalized. As a result,…
When parsing incoming emails, mail.thread normalizes some malformed MIME types before calling part.get_content(). However, attachments using Content-Type `bin/plain` are not normalized.
As a result, Python's email content manager raises KeyError('bin/plain') during parsing, which aborts the whole message processing. This prevents the incoming email from being processed, including vendor bill creation from email aliases.
Steps to reproduce:
- build an email with an attachment using Content-Type `bin/plain`
- parse it through `mail.thread.message_parse`
Before this commit, parsing crashes with KeyError('bin/plain').
This commit treats `bin/plain` like the other unsupported attachment MIME types already handled in stable, by falling back to `application/octet-stream`, allowing the message to be parsed and the attachment to be preserved.
opw-5439156
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#251440This update prevents installation errors related to PostgreSQL permissions. Previously, the system would fail if the PostgreSQL user lacked the necessary rights to create extensions. Now, the system checks if the extension is already installed before attempting to install it, reducing the need for extensive PostgreSQL user permissions.
Original PR description
[FIX] ai: test if pg_vector is installed before launching the create extension command
The command `CREATE EXTENSION IF EXISTS ...` require the postgresql user to have rights to use the command `CREATE EXTENSION`.
If the extension is already installed it will fail with a stacktrace because of inssuficient rights. `psycopg2.errors.InsufficientPrivilege`
With this PR we want to be able to install the module without giving too many rights to the postgresql user.
Forward-Port-Of: odoo/enterprise#109650This update corrects a previous issue where users with limited inventory access rights couldn't save new delivery records. The change ensures that access controls are properly enforced when saving stock moves, preventing errors related to data writing. This improves usability for all users, regardless of their access level.
Original PR description
### Step to reproduce: - Take a user with only basic inventory user access rights - Create a new delivery, add a stock move, try to save the record #### > Access error: Failed to write firld…
### Step to reproduce: - Take a user with only basic inventory user access rights - Create a new delivery, add a stock move, try to save the record #### > Access error: Failed to write firld stock.move.l10n_uy_edi_addenda_ids This flow is tested by the `test_basic_stock_flow_with_minimal_access_rights` test after installing the `l10n_uy_edi_stock` module. Cause of the issue: Since [19.0](https://github.com/odoo/odoo/commit/4a822785ca850c7ae5b21039536333276b2c61af) the read access right of the comodel is checked when writing on a many2many field. However, only the `account.group_account_invoice` does have read access on the `l10n_uy_edi.addenda` model: https://github.com/odoo/enterprise/blob/482b4564b3a81e914d6eead9a7b85a23b7cac3dc/l10n_uy_edi/security/ir.model.access.csv#L2 This is problematic as the `l10n_uy_edi_addenda_ids` field is added to the view even for users without read access rights on the comodel: https://github.com/odoo/enterprise/blob/482b4564b3a81e914d6eead9a7b85a23b7cac3dc/l10n_uy_edi/views/account_move_views.xml#L43-L53 Even if the field is invisible it is now part of the fields checked by the onchange and the values saved by the picking `web_save`. In particular, creating a new picking from the form view and saving the record will try to write an `[]` value on the `stock.picking` `l10n_uy_edi_addenda_ids` field and trigger the access error. runbot-240937 Forward-Port-Of: odoo/enterprise#109817
This update fixes a bug where the website's industry selection didn't correctly recognize capital letters or synonyms. The fix made the matching case-insensitive and simplified the synonym matching process, ensuring users can accurately select industries.
Original PR description
The industry highlighting to indicate what the user wrote match with the proposed industries was case sensitive, so the capital letters were not indicated as matching with lowercase letters. Fix: Added the flag "i" at the end of the regex to make it case-insensitive Also, in the case of the synonyms, the regex used was spliting on ",", "|" and space. The space spliting made matching a synonym sentence much more complicated. Fix: Deleted the space in the regex task-5066428 Forward-Port-Of: odoo/odoo#252447
This update resolves an issue preventing the activation of Point of Sale (POS) configurations when a POS session was already open. Previously, a session had to be closed before a new configuration could be applied. This change ensures smoother POS configuration management and avoids disruption for users.
Original PR description
Before this commit, it was not possible to activate a pos.config if there was an open session linked to it. This was a problem because it is only possible to close the session when the pos.config is active, and it was not possible to activate. opw-5964181 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250591
This update fixes a problem where invoices were incorrectly marked as coming from the company when forwarded bills included the company's email address. This ensures invoices are accurately attributed to the correct vendor, improving billing accuracy and reporting. The change was a simple bug fix.
Original PR description
Prevent setting the company's partner as the vendor for a forwarded bill when the body contains the company's email. Forward-Port-Of: odoo/odoo#252815
This update fixes a technical error that prevented users from successfully printing payslips. The issue stemmed from incorrect data being passed to a key function, causing a traceback. The fix ensures payslips can be printed reliably, improving payroll processing.
Original PR description
Steps: - Install l10n_us_hr_payroll - Create an employee and contract - Create a leave allocation - Create a payslip and print it Issue: A datetime value was being passed to the generate_work_entries function, which caused a traceback. Fix: pass only the date to the generate_work_entries function.'
This update resolves a technical error that occurred when processing refunds in the Spanish Point of Sale (POS) module. Specifically, a 'singleton error' was triggered due to incorrect data being passed during refund operations. The fix ensures the correct order ID is used, preventing the error and ensuring refunds process smoothly.
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 Forward-Port-Of: odoo/odoo#251755 Forward-Port-Of: odoo/odoo#247986
This update optimizes the process of installing demo data in Odoo. It prevents unnecessary API calls and email notifications during this installation, resulting in faster and more efficient setup. This change improves the overall user experience and reduces server load.
Original PR description
Followup on https://github.com/odoo/odoo/pull/25086 to avoid making api calls, sending emails when installing demo data on an existing database Forward-Port-Of: odoo/odoo#252912
This update resolves a minor display issue in the account reports where the green comparison color was not consistently appearing. The fix corrects a conversion error introduced after the Dictalypse merge, ensuring the correct color is now displayed for comparison data.
Original PR description
With Dictalypse merged, there is a small mistake converting mode <=> comparison_mode since column_percent_comparison_data is now technically a column. The fix is to use comparison_mode instead of mode in the js view.
This update prevents a crash when multiple employees are selected and the 'End of Collaboration' action is initiated. The action was incorrectly designed to work with list views, leading to an error. Now, the action is only available when working with a single employee record in the form view.
Original PR description
## Steps to reproduce: - Go to Employees list view - Select multiple employees - Action menu > "End of Collaboration" - ValueError is raised: "Expected singleton: hr.employee(...)" ## Reason: - The server action `action_hr_employee_departure` had no explicit `binding_view_types`, so it defaulted to `list,form`. - When triggered from the list view with multiple records selected, it called `action_new_departure()` which enforces `ensure_one()`, causing a crash. - Multiple departures are no longer supported https://github.com/odoo/odoo/pull/245519/changes/774853c1e13a556edd61eea7f4bce65e8b7fc163 ## Fix: - Action is only surfaced in the form view, where the recordset is always a singleton. Task-3505331
This update corrects a technical issue where unused database records related to HR work entries were not being properly removed. The fix ensures the database remains clean and efficient, preventing potential performance impacts. This change is considered low impact.
Original PR description
The records `hr_work_entry.access_hr_work_entry_officer` and `hr_work_entry.access_hr_work_entry_system` no longer exist. They have been removed by https://github.com/odoo/odoo/pull/244436. runbot_build_error-240728
This update resolves a technical issue that prevented users from exporting data from the CRM forecast reports via the Kanban view. The problem occurred when the system processed empty month columns, leading to a division-by-zero error. This fix ensures data can now be reliably exported without errors.
Original PR description
Steps to reproduce: 1- Install CRM 2- Go to [CRM -> Reporting -> Forecast] 3- Export the data from Kanban view Description of issue: Traceback: ZeroDivisionError Expected behavior: Should export into excel sheet without error Why this happens: When exporting from a Kanban view, all month columns are processed even if they contain no records. In these cases: 1. `self.data` is empty, causing the logic to skip the if condition 2. Since `self.count` is 0, the final division fails with a ZeroDivisionError. opw-5962440 Forward-Port-Of: odoo/odoo#252262
A technical issue prevented the generation of customer statement reports. This fix ensures the necessary data is always provided to the report generation process, resolving an error that caused the preview and PDF generation to fail. This improves the reliability of a key reporting feature.
Original PR description
**Steps to reproduce:** * Install the **l10n_my_reports** module. * Go to `Accounting > Reporting > Partner Ledger`. * Change report to `Customer Statement`. * Add data in the report and click Send. * In the email template, set the `dynamic reports` as `statement of accounts` under the options tab. * Click Preview. **Observed behavior:** * Error: `TypeError: Domain() invalid argument type for domain: None` * Email preview fails and PDF cannot be generated. **Cause:** * The `statement_account_document` template uses `filtered_domain(domain)` but the domain variable was not being passed to the template context by the `_get_report_values` method, resulting in None being passed to `filtered_domain()`. **Fix:** * Ensure domain is always present in the report context, defaulting to an empty list when not provided. * Added safe handling for missing data and context parameters. opw-5880385 Forward-Port-Of: odoo/enterprise#107400
This update fixes a potential error in the Account PEPPOL module that could cause sync failures when a PEPPOL user isn't configured. The change simply skips the email proxy sync process in these situations, ensuring smoother and more reliable operation. This improves the overall stability of the PEPPOL integration.
Original PR description
**[FIX] account_peppol: skip contact email proxy sync when no peppol user exists.** Before this fix the sync would fail in certain scenarios when there is no proxy user preset in the database. The fix is to simply skip the proxy call if no user is present. opw-5980696 Forward-Port-Of: odoo/odoo#251719
This update fixes a display issue in the SEPA payment wizard, ensuring the warning message accurately reflects the number of payments being processed (originally showing 4 when only the first installment was being paid). Additionally, a visual bug where the 'group payment' button was incorrectly displayed has been resolved. This ensures accurate payment tracking and a better user experience.
Original PR description
[FIX] account: right number of payments skipped in send wizard Steps to reproduce: - install modules account_sepa_direct_debit, account_iso20022 - create 2 vendor bills with payment terms so that there are 2 installments per bill, and post them - from the list view, select both bills and click pay - select SEPA as a payment method, a warning message is displayed mentionning 4 payments We want the warning to display a number of 2 payments because we're paying only the first installment of each bill This commit also fixes the visibility of the "group payment" button: when two bills from different suppliers were selected with one having installments, the button was visible task-5917803 Forward-Port-Of: odoo/odoo#252870 Forward-Port-Of: odoo/odoo#247830
This update fixes an issue where the SEPA payment wizard incorrectly displayed the number of payments being skipped. The change ensures the warning message accurately reflects that only the first installment of each bill is being paid. Additionally, a visual bug related to the 'group payment' button has been resolved.
Original PR description
[FIX] account_iso20022: right number of payments skipped in send wizard adding tests to the community commit Steps to reproduce: - install modules account_sepa_direct_debit, account_iso20022 - create 2 vendor bills with payment terms so that there are 2 installments per bill, and post them - from the list view, select both bills and click pay - select SEPA as a payment method, a warning message is displayed mentionning 4 payments We want the warning to display a number of 2 payments because we're paying only the first installment of each bill This commit also fixes the visibility of the "group payment" button: when two bills from different suppliers were selected with one having installments, the button was visible task-5917803 Forward-Port-Of: odoo/enterprise#110020 Forward-Port-Of: odoo/enterprise#106894
This update fixes an issue where average daily and weekly hours weren't calculated correctly when using the 'Define Amount of Hours per Day' option in employee schedules. The fix ensures that hours are accurately computed based on duration when this option is selected, leading to more reliable time tracking data.
Original PR description
## Short functional explanation of the error When editing attendances of a schedule for which we checked the box `Define Amount of Hours per Day`, the resulting average hours per day and hours per…
## Short functional explanation of the error When editing attendances of a schedule for which we checked the box `Define Amount of Hours per Day`, the resulting average hours per day and hours per week fields aren't computed correctly. ## Reproduction Steps 1. Go to Employee > configuration > Working Schedules. 2. Create a working schedule. Check the box Define Amount of Hours per day and in the Working Hours tab, remove all intendances. 3. Add a line for Monday, set the day period to Full Day and the duration in hours to 4. 4. Repeat the operation for tuesday and wednesday. ### Expected behavior As we have 3 days during which we work 4 hours, the average hours per day should be 4, and the total hours per week should be 12. ### Unexpected behavior The average hours per day and hours per week don't show the correct numbers. ## Origin of the issue We compute the hours per week with this method: https://github.com/odoo/odoo/blob/ae9fd7cc7d434d4b222c81aa58515c57d7426b65/addons/resource/models/resource_calendar.py#L690-L696 However, when we check the box `Define Amount of Hours per Day`, we don't set the attendances starting and ending hours. Instead, we work with duration hours. Therefore, when the box is checked, we have to compute the weekly hours with the field `duration_hours`, and not `hour_from` / `hour_to`. __ opw-5885571 Forward-Port-Of: odoo/odoo#248627
This update resolves an issue preventing remote calls to certain class methods within Odoo. Specifically, methods defined as `@classmethod` or `@staticmethod` were incorrectly accessible. This change enforces a stricter policy, ensuring only standard methods can be called remotely, improving overall system security and stability.
Original PR description
Access /doc, see that `is_transient` is listed, call it via JSON-2. Error 422 "Unprocessable Entity": too many positional arguments.
The `is_transient` method is defined as follow:
```py
@classmethod
def is_transient(cls) -> bool:
""" Return whether the model is transient.
See :class:`TransientModel`.
"""
return cls._transient
```
It is a `@classmethod` and take no argument. Only regular methods can be called remotely. The `@classmethod` and `@staticmethod` (actually, all methods that are defined on the class, and not on the instance) are now considered private.
Reported-by: Florent Xicluna <florent.xicluna@camptocamp.com>
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#253066
Forward-Port-Of: odoo/odoo#252739This update corrects a calculation error in the HRA (House Rent Allowance) rules for Indian employees. The change ensures that HRA percentages are accurately applied, aligning with standard India payroll practices. This improves the consistency and reliability of employee compensation calculations.
Original PR description
… fields - compute HRAMN from categories['BASIC'] with result_rate = l10n_in_hra_percentage * 100 - add python condition to skip the rule when HRA percentage is zero - keeps ind_emp behavior consistent with regular India payroll rules task-5964270 Forward-Port-Of: odoo/enterprise#108507
This update resolves a technical issue within the Odoo Enterprise payroll module (l10n_be_hr_payroll) that was causing errors. The fix corrects a mistake in how the system processed data, preventing a system failure and ensuring accurate payroll calculations. This ensures the payroll system continues to function correctly.
Original PR description
Use the correct var instead of self in the loop.
This solve the raise ValueError("Expected singleton: %s" % self) raised by the orm.This update fixes an issue where customers could set subscription start dates to 'False', leading to incorrect invoicing. The change prevents users from removing the start date, ensuring subscriptions are correctly billed moving forward. This maintains accurate subscription tracking and billing.
Original PR description
**Issue** Some customers were removing the `start_date` of subscriptions, leading to the subscription being considered free on the next invoicing. While there are legitimate use cases to edit the `start_date` of a running subscription, it should probably not be removed. opw-5325303 Forward-Port-Of: odoo/enterprise#104925
29 changes
Resolved issues and error corrections
This update resolves an error that occurred when viewing the shop page with products having no variants. Specifically, the system now correctly handles products without variants, preventing a display error and ensuring the 'Add to Cart' button is appropriately shown or hidden based on stock levels. This improves the overall stability and usability of the shop experience.
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 resolves a technical problem that was preventing users from correctly printing knowledge articles. The team reverted a previous change that caused issues with the printing process using wkhtmltopdf. This ensures all knowledge articles can be printed without errors.
Original PR description
### Purpose of this PR: - Restore the static file box implementation and drop the embedded component, as it breaks printing with wkhtmltopdf. - The original issue with the static file box was fixed in [#241591](https://github.com/odoo/odoo/pull/241591) Reverts: https://github.com/odoo/enterprise/pull/88929 community: https://github.com/odoo/odoo/pull/251098 Forward-Port-Of: odoo/enterprise#108999
Odoo has updated its security protocols to prevent errors when calling methods remotely. Specifically, `@classmethod` and `@staticmethod` methods, which were previously accessible, are now restricted. This change ensures that only standard methods can be called remotely, enhancing the overall security and stability of the system. This update resolves a previous error related to calling the `is_transient` method.
Original PR description
Access /doc, see that `is_transient` is listed, call it via JSON-2. Error 422 "Unprocessable Entity": too many positional arguments.
The `is_transient` method is defined as follow:
```py
@classmethod
def is_transient(cls) -> bool:
""" Return whether the model is transient.
See :class:`TransientModel`.
"""
return cls._transient
```
It is a `@classmethod` and take no argument. Only regular methods can be called remotely. The `@classmethod` and `@staticmethod` (actually, all methods that are defined on the class, and not on the instance) are now considered private.
Reported-by: Florent Xicluna <florent.xicluna@camptocamp.com>
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#252739A minor warning appearing on Odoo website pages has been fixed. This warning related to a JavaScript error (empty string passed to getElementById()) only occurred when website URLs didn't include a hash. This change ensures a smoother user experience and prevents potential issues.
Original PR description
Since [34df6f8d], a warning `Empty string passed to getElementById().` appears on every website page when there is no hash in the URL. That's not the case anymore after this commit. [34df6f8d]: https://github.com/odoo/odoo/commit/34df6f8d6efc879bef00228b19df04db6c884089 Forward-Port-Of: odoo/odoo#252181
This update resolves an issue where users could inadvertently add partners from different companies when managing multiple companies. Previously, the system didn't properly restrict partner selection, leading to potential data inconsistencies. This fix ensures partners are correctly associated with their respective companies, improving data accuracy and reliability.
Original PR description
Before this commit, it was possible to add a partner that was from another company when multiple companies were selected. task-5941113 Forward-Port-Of: odoo/enterprise#108048 Forward-Port-Of: odoo/enterprise#107546
This update resolves a technical issue that caused errors when opening certain records with incorrectly formatted HTML. The fix ensures that all list items have a minimum content, preventing tracebacks and improving the stability of record views. This change ensures a smoother user experience for all users.
Original PR description
Steps to reproduce:
- Open a record containing the following invalid HTML:
```html
<ul>
<li>1</li>
<li class=oe-nested></li>
</ul>
```
Description of the issue:
- A traceback occurs when opening a record with this html.
Cause:
- The provided HTML is invalid because an `<li>` element must contain at least one child node. In this case, the `<li>` element has no children. As a result, when `isListElement` tries to access the `nodeName` of its child, a traceback occurs because the `<li>` has no child node.
Solution:
During normalization. If an `<li>` element has no children, call `fillEmpty` so that a `<br>` element is inserted. This ensures the `<li>` contains at least one child and is no longer invalid.
task-6012663This update resolves an issue where the blog module would display an error when a user entered an invalid URL. The fix ensures that the blog module doesn't attempt to process URLs with missing or incorrect tag IDs, improving the overall stability and user experience of the blog feature.
Original PR description
Steps to reproduce: - Install `website_blog` module(with demo data) - Change URL (eg: /blog/tag/hotels) Traceback: `AssertionError: Invalid falsy real id` We are encountering this error because [active_tag_ids] contains `[None]`, and falsy IDs are no longer allowed in `browse()`. [active_tag_ids]: https://github.com/odoo/odoo/blob/4e4d1dba32ef45567eda004fc1a3584591508720/addons/website_blog/controllers/main.py#L83 sentry-7289765426 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where spreadsheet thumbnails sometimes failed to save correctly due to a temporary disconnection. The fix ensures that screenshots are reliably captured, preventing thumbnail generation failures and improving the user experience when saving spreadsheet snapshots. This addresses a minor disruption for users.
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 a UI bug that occurred when changing wage intervals in the employee payroll settings. The issue stemmed from extra text being inserted into the employee form, causing errors. The fix removes this extraneous text to ensure correct wage calculations.
Original PR description
Bug production steps: First, I created a new db with saas-19.1 db from runbot, from payroll->employee->Payroll tab in form view, when you change wage interval to another thing than 'month' error occurs Bug cause: There is another text like /2 months, /2 weeks are inserted from hr_employee_views in the hr_contract_salary_payroll to the XML of the employee form view. Bug solution: Removing the corresponding XML insertions. task - 5469378
This update resolves an issue where point of sale reports were incorrectly identifying orders due to date precision. The fix ensures the refund order is always prioritized during report generation, guaranteeing accurate reporting of transactions. This improves the reliability of sales data.
Original PR description
The test test_refund_multiple_products_amounts_compliance was doing a search on 'report.pos.order' and was wrongly assuming that the first order in the recordset returned was the refund one and the other one was the original order. This was because the search is ordered by date descending and the refund order is created after the original order. However, in some cases, the date of the refund order can be the same as the date of the original order cause the dates are precise to the second which can lead to a the records returned by id ascending which would give the original order first. This commit adds an explicit order by id descending as second choice to ensure that the refund order is always returned first. runbot-error: 238454 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a naming inconsistency within the HR payroll module. The template was previously identified with a longer, less clear name. This change simplifies the naming to align with standard Odoo module practices, ensuring better organization and easier identification of the module.
Original PR description
Currently in hr_payroll, the template name is set as l10n_be_hr_payroll.DropdownSelectionBadge. Generally, it should follow the module name. Therefore, in this commit, I replaced l10n_be_hr_payroll with hr_payroll
This update corrects a bug where users without HR document centralization enabled were seeing all documents, not just their own employee documents, when using the 'documents' smart button. The fix restores the intended behavior for companies without this HR setting, ensuring employees only access their own files. This resolves a previous issue impacting document access.
Original PR description
Steps: - uncheck the "Human Resources" file centralization option - go to an employee, click the documents smart button -> You see every documents, not only the ones from the employee PR https://github.com/odoo/enterprise/pull/93782 aimed at restoring the previous behaviour of the employee documents button and accesses for companies without the hr documents settings enabled, but forgot the domain on the employee smartbutton action. opw-5857914 Forward-Port-Of: odoo/enterprise#107224
This update reduces the visual prominence of reply text in conversations, making it easier for users to read and manage lengthy threads. By lowering the opacity and restoring it on hover, the changes enhance the overall user experience and reduce visual fatigue when reviewing conversations with many replies.
Original PR description
Before this commit, conversations that had a lot of replies were quite exhausting. This comes from the visual of "reply" text that had its text that is too visible, contributing to having a feeling that there's too much text on the screen. This commit fixes the issue by reducing the visibility of reply to part, so that it's easier to read conversations with lots of reply-to. Opacity has been reduced to keep the reply-to content recognizable enough, and this reduced visibility is canceled on mouse-hover, also making the hover effect on reply-to more apparent. Before / After <img width="604" height="520" alt="Screenshot 2026-02-27 at 19 06 03" src="https://github.com/user-attachments/assets/04a118bc-5fc0-47d6-ad62-3b7e26f835da" /> <img width="604" height="525" alt="Screenshot 2026-02-27 at 19 05 50" src="https://github.com/user-attachments/assets/37974f2c-054c-44bc-bf9a-044825908abc" /> Forward-Port-Of: odoo/odoo#251295
This update resolves a technical issue where products weren't correctly marked as 'available' in self-order tests. This prevented some products from loading properly in the self-ordering frontend, causing test failures. The fix ensures all products are correctly identified as available, improving the reliability of self-order functionality.
Original PR description
In some self order tests, available in pos was not set to true which could cause some errors in the tests as some products were not loaded in the self frontend. runbot-error: 241086 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252985
This update corrects a bug that prevented users from successfully removing a company association from expense records. The fix ensures that the system handles company removal correctly, preventing a technical error that previously disrupted the process. This improves the reliability of expense record management.
Original PR description
Currently an error occurs when user tries to remove company on an expense. Steps to replicate: - Install `hr_expense` and create a new company. (make sure you have more than one company). - Create new expense and remove the value from company field. Error: `ValueError: Compute method failed to assign hr.expense(<NewId origin=7>,).is_editable` Cause: - Removing the company triggers the [compute] that skips the loop if company is not assigned [1], which causes this error. Solution: - Assign `is_editable` as False when company is false. [compute]: https://github.com/odoo/odoo/blob/43505c919e29065b04d4e9e0a66f38a13f42daed/addons/hr_expense/models/hr_expense.py#L304-L363 [1]: https://github.com/odoo/odoo/blob/43505c919e29065b04d4e9e0a66f38a13f42daed/addons/hr_expense/models/hr_expense.py#L326-L331 No ID --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241507
This update resolves an issue where Odoo invoices for Danish companies were incorrectly formatted according to Peppol standards. The change skips adding redundant PartyIdentification information, preventing a technical error and ensuring compliance with regulations. This ensures smooth invoice processing when submitting to Peppol.
Original PR description
Currently, if a Danish partner has a reference set, Odoo adds it under PartyIdentification. This violates Peppol `DK-R-013`, which mandates using schemeID when PartyIdentification is used. Adding the Danish schemeID would also trigger another error, `PEPPOL-COMMON-R042`, as the organization number (CVR) must be included in the `_text`. Including schemeID seem therefore unnecessary since it will appear in CompanyID. Steps to reproduce: - Create a Danish company and enable Peppol - Create a Danish customer with a reference - Create an invoice and submit to Peppol, `DK-R-013` error occurs opw-5921602 Forward-Port-Of: odoo/odoo#251737
This update prevents installation errors related to PostgreSQL permissions during the AI module setup. Previously, the installation process would fail if the PostgreSQL user lacked the necessary rights. Now, the system checks for the extension's presence before attempting to install it, reducing the need for extensive user permissions.
Original PR description
[FIX] ai: test if pg_vector is installed before launching the create extension command
The command `CREATE EXTENSION IF EXISTS ...` require the postgresql user to have rights to use the command `CREATE EXTENSION`.
If the extension is already installed it will fail with a stacktrace because of inssuficient rights. `psycopg2.errors.InsufficientPrivilege`
With this PR we want to be able to install the module without giving too many rights to the postgresql user.
Forward-Port-Of: odoo/enterprise#109650This update clarifies the message displayed when a live chat conversation ends, replacing ambiguous ellipses with a clear statement. This change improves the user experience by removing potential confusion and ensuring users understand the conversation has concluded. The update affects the live chat functionality within Odoo.
Original PR description
This commit updates the chatbot completion message from 'Conversation ended...' to 'Conversation has ended.' The previous version used ellipses, which typically suggest an incomplete thought. Since the message is meant to clearly indicate that the conversation has concluded, the ellipses were unnecessary and potentially confusing. Forward-Port-Of: odoo/odoo#252868 Forward-Port-Of: odoo/odoo#251166
This update ensures phone numbers are consistently displayed and formatted within the Odoo Enterprise system. Previously, the system would incorrectly display a phone number's country based on the selected flag, leading to inconsistencies. This fix corrects this issue by recalculating the country information based on the formatted number, ensuring accurate display and functionality.
Original PR description
When parsing a keypad number, we were formatting the phone number with a fallback country (from the currently selected flag) but still resolving the returned country/flag from the pre-format parsing context (see [1]). This could lead to inconsistencies where the number is normalized as +1... while the UI country remains the previously selected one (e.g. Belgium). This commit recomputes country information from the formatted number before returning countryId/storeData, so the softphone flag matches the normalized phone number. Also adds a controller regression test covering this behavior. [1]: https://github.com/odoo/enterprise/commit/708aea78760392207f9148c31c67212dacaf3294 task-5995387
This update resolves an issue where incoming emails with attachments using the 'bin/plain' MIME type would fail to process, preventing vendor bill creation. The fix normalizes these attachments to 'application/octet-stream', ensuring all emails are correctly parsed and attachments are preserved.
Original PR description
When parsing incoming emails, mail.thread normalizes some malformed MIME types before calling part.get_content(). However, attachments using Content-Type `bin/plain` are not normalized. As a result,…
When parsing incoming emails, mail.thread normalizes some malformed MIME types before calling part.get_content(). However, attachments using Content-Type `bin/plain` are not normalized.
As a result, Python's email content manager raises KeyError('bin/plain') during parsing, which aborts the whole message processing. This prevents the incoming email from being processed, including vendor bill creation from email aliases.
Steps to reproduce:
- build an email with an attachment using Content-Type `bin/plain`
- parse it through `mail.thread.message_parse`
Before this commit, parsing crashes with KeyError('bin/plain').
This commit treats `bin/plain` like the other unsupported attachment MIME types already handled in stable, by falling back to `application/octet-stream`, allowing the message to be parsed and the attachment to be preserved.
opw-5439156
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#251440This update fixes a potential security issue by properly escaping HTML within error messages displayed in the API documentation. A clipboard button has also been added for easier copying of these error messages. This ensures a cleaner and more reliable user experience for developers.
Original PR description
Before this commit: Request errors were unescaped. After this commit: Request errors are properly escaped. A clipboard and a collapse button were added for ease of use. Forward-Port-Of: odoo/odoo#252767
This update corrects an issue where users with limited inventory access rights were unable to save new delivery records. The fix addresses a security restriction that prevented writing to a specific field, ensuring broader user access to the l10n_uy_edi stock flow. This improves usability for all users.
Original PR description
### Step to reproduce: - Take a user with only basic inventory user access rights - Create a new delivery, add a stock move, try to save the record #### > Access error: Failed to write firld…
### Step to reproduce: - Take a user with only basic inventory user access rights - Create a new delivery, add a stock move, try to save the record #### > Access error: Failed to write firld stock.move.l10n_uy_edi_addenda_ids This flow is tested by the `test_basic_stock_flow_with_minimal_access_rights` test after installing the `l10n_uy_edi_stock` module. Cause of the issue: Since [19.0](https://github.com/odoo/odoo/commit/4a822785ca850c7ae5b21039536333276b2c61af) the read access right of the comodel is checked when writing on a many2many field. However, only the `account.group_account_invoice` does have read access on the `l10n_uy_edi.addenda` model: https://github.com/odoo/enterprise/blob/482b4564b3a81e914d6eead9a7b85a23b7cac3dc/l10n_uy_edi/security/ir.model.access.csv#L2 This is problematic as the `l10n_uy_edi_addenda_ids` field is added to the view even for users without read access rights on the comodel: https://github.com/odoo/enterprise/blob/482b4564b3a81e914d6eead9a7b85a23b7cac3dc/l10n_uy_edi/views/account_move_views.xml#L43-L53 Even if the field is invisible it is now part of the fields checked by the onchange and the values saved by the picking `web_save`. In particular, creating a new picking from the form view and saving the record will try to write an `[]` value on the `stock.picking` `l10n_uy_edi_addenda_ids` field and trigger the access error. runbot-240937 Forward-Port-Of: odoo/enterprise#109817
This update fixes an issue where PDF thumbnails weren't generating correctly for certain invoice types, specifically XML invoices created through Peppol. The change ensures that embedded PDFs within these invoices are now properly processed, leading to accurate thumbnail generation.
Original PR description
The pdf_first_page route failed when called on non-PDF attachments that contain an embedded PDF (e.g. XML invoices generated via Peppol). This fix makes the route correctly extract and process the embedded PDF, allowing proper thumbnail generation in those cases. task-5246989 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236864
This update fixes a problem where XML invoices received through Peppol didn't show thumbnails. The preview page has been simplified to remove unnecessary elements, and now correctly generates thumbnails for these invoices. This ensures users can easily view the invoices received via Peppol.
Original PR description
Before this commit: - The preview page of XML invoices received via Peppol was split into two parts: one showing the PDF preview, and another showing the plain HTML of the PDF viewer page - Thumbnail were not generated for these XML invoices After the commit: - The second part of the preview (Text part) was removed. As the users won't be interested to see the raw XML content of the invoice, neither the plain HTML of the pdf preview page. - Thumbnails now are correctly generated for the XML invoices. Notes: This fix is part of the bug-fix task to ensure users can correctly open XML invoices received via Peppol. task-5246989 --- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/enterprise#100137
This update fixes a server error that occurred when merging tables in the restaurant POS system. The issue was caused by a delay in syncing order data during the merge process. The fix ensures the system waits for order synchronization before completing the merge, improving stability and preventing errors.
Original PR description
Steps to reproduce: - On an empty table, change the guest count - Create an order and send it to the kitchen - Open another table without an order - Merge the first table with the second one Issue: - A server error occurs during table merge Fix: - Wait for the merge order to sync before returning the result Task-5502511 Related: https://github.com/odoo/enterprise/pull/104577 Forward-Port-Of: odoo/odoo#245162
This update fixes an issue where social media posts for blog posts and events were displaying broken images. The change corrects how the system retrieves cover images, ensuring consistent and accurate image display across social media platforms. This improves the visual presentation of content on social media.
Original PR description
Scenario:
- set cover image of a blog post
- post blog post on social media (or check og:image/twitter:image tags)
Result: the social media is a dead image like:
http://site/blog/1/"/web/image/3198-3915f222/cover%20image.webp"
Cause: the code setting social image expected it to be in the
cover_properties background-image in url('{image}') or url({image})
format, but since 1b0852948c070d4d936bd00b3dd1c0e5501a1300 the format is
url("{image}") so it was gotten incorrectly.
Fix: also strip doubles quote and have the code working with
cover_properties background image with:
- no quote: for cover_properties before 18.4
- single quote: not sure in what situation this can happen
- double quote: for cover_properties since 18.4
opw-5471804
Forward-Port-Of: odoo/odoo#252028This update fixes a bug where the website's industry selection didn't correctly match user input due to case sensitivity. The fix adds a case-insensitive flag to the matching process and simplifies the synonym matching logic by removing unnecessary space splitting. This ensures accurate industry suggestions for users.
Original PR description
The industry highlighting to indicate what the user wrote match with the proposed industries was case sensitive, so the capital letters were not indicated as matching with lowercase letters. Fix: Added the flag "i" at the end of the regex to make it case-insensitive Also, in the case of the synonyms, the regex used was spliting on ",", "|" and space. The space spliting made matching a synonym sentence much more complicated. Fix: Deleted the space in the regex task-5066428 Forward-Port-Of: odoo/odoo#252447
This update fixes a potential error in Odoo's HTML Builder component. When asynchronous operations complete, the system now gracefully handles situations where the original context (like a user interface element) is no longer available, preventing errors and improving overall stability.
Original PR description
[FIX] html_builder: make async useDomState robust to destroyed context Option components may define an asynchronous `useDomState`. When the asynchronous part of the callback resolves, the execution context may no longer be valid. For example, the editing element, iframe, or even the component itself may have been destroyed in the meantime. This change ensures that async `useDomState` handlers safely abort when their context is no longer available, preventing unnecessary errors from being thrown. task-6003213 Forward-Port-Of: odoo/odoo#251931
This update resolves an issue preventing the activation of Point of Sale (POS) configurations when a POS session was already open. Previously, a session had to be closed before a new configuration could be applied. This change ensures smoother POS configuration management and avoids disruptions for users.
Original PR description
Before this commit, it was not possible to activate a pos.config if there was an open session linked to it. This was a problem because it is only possible to close the session when the pos.config is active, and it was not possible to activate. opw-5964181 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250591
6 changes
Resolved issues and error corrections
This update resolves an issue in the Odoo Report Editor where certain field types were not properly supported. The fix ensures that properties within fields are handled correctly, improving the flexibility and usability of the report design tool. This change enhances the accuracy and reliability of generated reports.
Original PR description
Properties are not supported in ir.qweb but only as t-out, while t-field doesn't support them. For this reason and the fact that properties have a path the model field selector barely handles we do not allow those field to be selected in the /field command task-5999790 Forward-Port-Of: odoo/enterprise#109486
This update resolves intermittent failures in the barcode quality control tours, primarily affecting slower CI environments. The fix increases a delay in the tour process to ensure backend operations complete before the UI is updated, preventing errors related to UI elements not being available.
Original PR description
Distro builds was failing with:
```js
FAILED: [8/14] Tour test_quality_check_packages_lots_tour →
Step .o_line_button.o_toggle_sublines
{
'trigger': '.o_line_button.o_toggle_sublines',
'run': 'click'
},
```
- This issue occurs due to a timing race condition in the barcode client action.
After scanning lots and clicking Put in Pack, backend calls are
still processing (updating move lines and packages) while the frontend re-renders the UI,
the tour continued before these operations were fully completed,
so the `.o_toggle_sublines` button was not yet available in the DOM.
This caused intermittent failures, mainly in slower CI environments like Distro builds/runbot.
- To fix this, the tour step_delay has been increased from 100 to 300,
giving enough time for backend processing and UI rendering
to complete before executing the next step.
---
runbot error:238452
Forward-Port-Of: odoo/enterprise#107766A test was failing due to an issue with how the system handles time zones. The fix corrects a calculation error that resulted in an incorrect date being generated, specifically when the system's time zone is set differently from the test environment. This ensures the test consistently passes.
Original PR description
__ ## Error description The test fails when it is launched at 23h. We obtain an assertion error: `AssertionError: datetime.datetime(2026, 2, 26, 11, 0) != datetime.datetime(2026, 2, 25, 11, 0)` ##…
__ ## Error description The test fails when it is launched at 23h. We obtain an assertion error: `AssertionError: datetime.datetime(2026, 2, 26, 11, 0) != datetime.datetime(2026, 2, 25, 11, 0)` ## Origin of the issue In the `_default_start_datetime()` method of planning, we return `return datetime.combine(fields.Date.context_today(self), time.min)`. So, we call context_today. which is implemented this way: https://github.com/odoo/odoo/blob/f3ec2aa4514c03874aae96ae975e2617e8260c72/odoo/orm/fields_temporal.py#L154-L158 Let's say the hour of the test is 23h50 in GMT+0. The slot will be created at 23h50 in GMT+0. But if the time zone of the environment is set at GMT+1, at the moment of the `_compute_datetime`, we will call this piece of code, where we will translate 23h50 to GMT+1, we will obtain 00h50, then only return the day, which offsets the result of one day in the future. X-original-commit: d91c53869842f65a60088ffa101f67404af6e58e note: backport of https://github.com/odoo/enterprise/pull/108891 Forward-Port-Of: odoo/enterprise#110126
This update removes a redundant check for local network connectivity when opening cashboxes via IoT. Previously, the system unnecessarily verified network access before sending commands. Now, relying on the established websocket connection ensures faster and more reliable cashbox operation. This simplifies the process and improves performance.
Original PR description
Stable IoT Boxes can be reached using websocket, so it doesn't make sense to check the connectivity on local network before sending the "open cashbox" action. We then removed this check. Forward-Port-Of: odoo/enterprise#110188 Forward-Port-Of: odoo/enterprise#107397
This update resolves an issue caused by a previous revert in the Odoo core system. It restores the initial state of quality control tests, ensuring they function correctly. This change is a technical fix to maintain the stability and reliability of the quality control module.
Original PR description
This reverts [1]. It happens because of a revert OC side, cf linked commit. [1] a01d8f0e15de973a94c360c3911e74b768a3aebc OPW-6011532 Forward-Port-Of: odoo/enterprise#110133
This update fixes a potential issue with Instagram polls by ensuring the system only requests the unique ID ('ig_id') after a poll has been successfully published. Previously, attempting to retrieve this ID while the poll was still processing would cause an error. The change includes updated tests to simulate this API restriction and prevent future problems.
Original PR description
Follow-up to 06256aa02cb92378933edd638259dd725a2d04c1 The Instagram API returns an error if the `ig_id` field is requested while the container is still processing. This commit splits the container status check into two steps: 1. Poll for `status_code` only to determine the current state. 2. If the status is `PUBLISHED`, perform a second request to fetch the `ig_id`. Updated the test mocks to simulate this restriction, ensuring that requesting `ig_id` on a non-published container results in a 400 error to prevent future regressions. opw-5081325 Forward-Port-Of: odoo/enterprise#110094
7 changes
Resolved issues and error corrections
A test was failing due to an issue with how the system handles time zones. The fix corrects a calculation error that resulted in an incorrect date being generated, specifically when the system's time zone is set differently from the test environment. This ensures the test consistently passes.
Original PR description
__ ## Error description The test fails when it is launched at 23h. We obtain an assertion error: `AssertionError: datetime.datetime(2026, 2, 26, 11, 0) != datetime.datetime(2026, 2, 25, 11, 0)` ##…
__ ## Error description The test fails when it is launched at 23h. We obtain an assertion error: `AssertionError: datetime.datetime(2026, 2, 26, 11, 0) != datetime.datetime(2026, 2, 25, 11, 0)` ## Origin of the issue In the `_default_start_datetime()` method of planning, we return `return datetime.combine(fields.Date.context_today(self), time.min)`. So, we call context_today. which is implemented this way: https://github.com/odoo/odoo/blob/f3ec2aa4514c03874aae96ae975e2617e8260c72/odoo/orm/fields_temporal.py#L154-L158 Let's say the hour of the test is 23h50 in GMT+0. The slot will be created at 23h50 in GMT+0. But if the time zone of the environment is set at GMT+1, at the moment of the `_compute_datetime`, we will call this piece of code, where we will translate 23h50 to GMT+1, we will obtain 00h50, then only return the day, which offsets the result of one day in the future. X-original-commit: d91c53869842f65a60088ffa101f67404af6e58e note: backport of https://github.com/odoo/enterprise/pull/108891 Forward-Port-Of: odoo/enterprise#110126
This update reverts a recent change that was causing unnecessary complexity in warehouse replenishment workflows. Previously, multiple pickings were automatically combined for supply chains, which now leads to a simpler process and reduces manual effort for users. This change prevents the creation of redundant pickings and streamlines operations.
Original PR description
This reverts [1]. Let's quote the commit: > - `Observation`: the next transfers for both receipts are merged into a single > transfer, even though both receipts were created manually and not generated > from any common source document like PO/SO. The above behavior was and is the expected one for years and should not suddenly change on stable. Even the tests were protecting the cases but [1] have changed the `assert`. Commit [1] quickly leads to the creation of tickets. For instance, in the mentioned OPW, where the user resupplies a warehouse from another one: he now has several pickings for the same supply chain, which lead to extra work (e.g., printing all the pickings) [1] https://github.com/odoo/odoo/commit/840b42fd2365a652e53d607f38ac78ccb8dd63dc OPW-6011532 Forward-Port-Of: odoo/odoo#253054
This change reverts a previous issue caused by a related update. It restores the initial state of quality control tests, ensuring they function correctly. This resolves a disruption to the testing process and maintains the stability of the quality control module.
Original PR description
This reverts [1]. It happens because of a revert OC side, cf linked commit. [1] a01d8f0e15de973a94c360c3911e74b768a3aebc OPW-6011532 Forward-Port-Of: odoo/enterprise#110133
This update fixes an issue where product availability emails were sending images at full size, resulting in large email attachments. The change ensures images are appropriately sized for these emails, improving email performance and reducing storage needs. This enhancement impacts the user experience by delivering more efficient and manageable email notifications.
Original PR description
Steps to reproduce in local: 1. Install `website_sale_stock` 2. Make a product variant with an image 3. To make it easy set field `Back in stock Notifications`'s value on this product with the help…
Steps to reproduce in local:
1. Install `website_sale_stock`
2. Make a product variant with an image
3. To make it easy set field `Back in stock Notifications`'s value on this product with the help of the studio
4. Add a person to receive notification in this field
5. Don't set Outgoing email server
6. Run cron `Product: send email regarding products availability` manually
7. To Check sent email go to `Setting > Technical > Email > Emails`
Issue:
- The image is a full-size image
<table>
<tr>
<th style="text-align: center;">Before</th>
<th style="text-align: center;">After</th>
</tr>
<tr>
<td style="text-align: center;">
<img width="1395" height="728" alt="Before"
src="https://github.com/user-attachments/assets/a3fe3b38-c4a5-4a78-a63a-552c96cfdf84" />
</td>
<td style="text-align: center;">
<img width="1383" height="662" alt="After"
src="https://github.com/user-attachments/assets/8c346302-4295-44f2-8172-6a01072b23c7" />
</td>
</tr>
</table>
opw-5915587
Forward-Port-Of: odoo/odoo#249000This update fixes an issue where customers could inadvertently set subscription start dates to 'false,' resulting in incorrect invoicing. The change prevents users from removing the start date, ensuring subscriptions are properly tracked and billed accurately. This resolves a potential revenue discrepancy.
Original PR description
**Issue** Some customers were removing the `start_date` of subscriptions, leading to the subscription being considered free on the next invoicing. While there are legitimate use cases to edit the `start_date` of a running subscription, it should probably not be removed. opw-5325303 Forward-Port-Of: odoo/enterprise#104925
This update fixes a potential error in how Odoo fetches Instagram poll IDs. Previously, the system would sometimes receive an error from Instagram when trying to retrieve the ID before the poll was fully published. Now, Odoo waits for the poll to be published before requesting the ID, preventing errors and ensuring reliable poll functionality. This improves the overall stability of Instagram integration.
Original PR description
Follow-up to 06256aa02cb92378933edd638259dd725a2d04c1 The Instagram API returns an error if the `ig_id` field is requested while the container is still processing. This commit splits the container status check into two steps: 1. Poll for `status_code` only to determine the current state. 2. If the status is `PUBLISHED`, perform a second request to fetch the `ig_id`. Updated the test mocks to simulate this restriction, ensuring that requesting `ig_id` on a non-published container results in a 400 error to prevent future regressions. opw-5081325 Forward-Port-Of: odoo/enterprise#110094
This update fixes a bug where excessive warnings were being generated due to how Odoo uses the Werkzeug library. The fix ensures warnings are properly deduplicated, preventing continuous, unintended warning messages. This resolves a problem exacerbated by workers in the system.
Original PR description
Every manipulation of the warnings list flushes the warnings registry, which prevents `warnings.warn` from deduplicating `default`, `module`, and `once` actions, instead they all behave as if `always`. Because werkzeug.urls is used *a lot* in odoo, this causes warnings to be emitted continuously even if that's not intentional, something which is already an issue due to workers (every new worker has an empty warnings registry triggering duplicate warnings). Upstream fixed this issue in pallets/werkzeug#2692 which was merged in 2.3.4, but apparently we vendored 2.3.0 which didn't have these fixes. Forward-Port-Of: odoo/odoo#252427 Forward-Port-Of: odoo/odoo#252193
3 changes
Resolved issues and error corrections
This update fixes an issue where the SEPA payment wizard incorrectly displayed the number of payments being skipped. The change ensures the warning message accurately reflects that only the first installment of each bill is being paid. Additionally, a visual bug related to the 'group payment' button has been resolved.
Original PR description
[FIX] account_iso20022: right number of payments skipped in send wizard adding tests to the community commit Steps to reproduce: - install modules account_sepa_direct_debit, account_iso20022 - create 2 vendor bills with payment terms so that there are 2 installments per bill, and post them - from the list view, select both bills and click pay - select SEPA as a payment method, a warning message is displayed mentionning 4 payments We want the warning to display a number of 2 payments because we're paying only the first installment of each bill This commit also fixes the visibility of the "group payment" button: when two bills from different suppliers were selected with one having installments, the button was visible task-5917803 Forward-Port-Of: odoo/enterprise#106894
A test was failing due to an issue with how the system handles time zones. The fix corrects a calculation error that resulted in an incorrect date being generated, ensuring the test now consistently passes. This ensures the planning module functions correctly across different time zone settings.
Original PR description
__ ## Error description The test fails when it is launched at 23h. We obtain an assertion error: `AssertionError: datetime.datetime(2026, 2, 26, 11, 0) != datetime.datetime(2026, 2, 25, 11, 0)` ##…
__ ## Error description The test fails when it is launched at 23h. We obtain an assertion error: `AssertionError: datetime.datetime(2026, 2, 26, 11, 0) != datetime.datetime(2026, 2, 25, 11, 0)` ## Origin of the issue In the `_default_start_datetime()` method of planning, we return `return datetime.combine(fields.Date.context_today(self), time.min)`. So, we call context_today. which is implemented this way: https://github.com/odoo/odoo/blob/f3ec2aa4514c03874aae96ae975e2617e8260c72/odoo/orm/fields_temporal.py#L154-L158 Let's say the hour of the test is 23h50 in GMT+0. The slot will be created at 23h50 in GMT+0. But if the time zone of the environment is set at GMT+1, at the moment of the `_compute_datetime`, we will call this piece of code, where we will translate 23h50 to GMT+1, we will obtain 00h50, then only return the day, which offsets the result of one day in the future. X-original-commit: d91c53869842f65a60088ffa101f67404af6e58e note: backport of https://github.com/odoo/enterprise/pull/108891 Forward-Port-Of: odoo/enterprise#110126
This update reverts a previous change that disrupted the initial state of quality control tests. The change was caused by a related fix in another part of the system. This ensures that quality control tests are functioning correctly, maintaining data integrity.
Original PR description
This reverts [1]. It happens because of a revert OC side, cf linked commit. [1] a01d8f0e15de973a94c360c3911e74b768a3aebc OPW-6011532 Forward-Port-Of: odoo/enterprise#110133
9 changes
Resolved issues and error corrections
This update resolves a technical problem preventing timesheet slots from displaying correctly in the planning module. The fix ensures that the timesheet information is accurately reflected in the slot tree view, improving the usability of the planning feature for sales teams. This was a minor bug fix.
Original PR description
Steps to reproduce: - Install sale_timesheet & planning; - Install planning_field_service_sale_timesheet; Traceback: Element `'<xpath expr="//field[@name='project_id']">'` cannot be located in parent view This commit fixes the inheritance of the planning.slot tree views. Forward-Port-Of: odoo/enterprise#110102
This update resolves a bug where the 'Previous Asset' shortcut in the asset management module was incorrectly directing users to the 'Posted Entries' view. The shortcut has been changed to ALT + SHIFT + P to align with existing navigation shortcuts, ensuring smoother asset browsing.
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#110078 Forward-Port-Of: odoo/enterprise#109022
The 'Today' button in the Gantt view was not functioning correctly when navigating to yesterday. This update fixes a bug where clicking 'Today' didn't return the view to the current date. The fix ensures the Gantt view accurately reflects the user's current day selection.
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#110053 Forward-Port-Of: odoo/enterprise#103139
This update fixes an issue where payslips weren't being generated accurately for employees with flexible working hours. The system now correctly creates work entries for these employees when a payslip is created, ensuring accurate payroll calculations. This resolves a previous error impacting employee pay processing.
Original PR description
**Version:** - 19.0 **Steps to reproduce:** - Create an employee. - Leave the Working Hours field empty. - Set the contract dates and a wage. - Create a payslip using the smart button. **Issue:** - Worked day lines are empty for flexible employees when the payslip is created from the smart button. **Cause:** - Flexible employees were being skipped because their working hours were empty, which results in work entries not being generated. **Solution:** - Updated the condition to also generate work entries for flexible employees. Task-5431870 Forward-Port-Of: odoo/enterprise#109729 Forward-Port-Of: odoo/enterprise#103101
This update corrects a visual issue in the Helpdesk team settings where email alias fields would overflow due to a design change. The fix adjusts the layout to fit the narrower settings panel, ensuring a clean and usable interface for managing team email aliases. This improves the overall user experience for Helpdesk administrators.
Original PR description
Steps to reproduce: 1. Go to Helpdesk > Configuration > Teams 2. Open any team with Email Alias enabled 3. Observe alias fields overflowing Issue: The alias copy feature introduced by odoo/enterprise#88111 (related to odoo/odoo#215128) changed this row from a simple inline layout to a Bootstrap grid. That grid works correctly in regular form `<group>` sections, where fields have more horizontal space. But in Helpdesk, this row is rendered inside a `<setting>` block, which lives in the narrow two-column settings layout. In that context, the grid's negative side margins make the alias row overflow Fix: Replace the grid layout with a flex row adapted to the settings panel while keeping the newer alias input pattern and copy button. This prevents overflow and keeps the fields balanced. task-6005002
A previous error was preventing the automated update of POS price tags. This fix corrects a misconfiguration in the scheduled task that was causing a system error. The update process is now reliable and ensures accurate price tag synchronization.
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-7324339777
Forward-Port-Of: odoo/enterprise#110242This update resolves a problem that prevented users from successfully loading demo data for the 'account_asset' module. The fix corrects an error related to incorrect field definitions during the demo data loading process, ensuring the demo data can now be loaded without causing errors.
Original PR description
This error occurs while loading the demo data for the `account_asset` module. Steps to reproduce: - Install `account_asset` module without demo data - Active debugger > Settings > load Demo data Traceback: `ValueError: Invalid field 'depreciation_model_id' in 'account.asset'` - The error occurs because `depreciation_model_id` is a field of the `account.account` model, but while loading the demo data we are defining it on the `account.asset` model in the `_get_demo_data_asset` [method]. - Another error occurs in the `account.depreciation.model` model because it does not have a field named `name`, the correct field is `display_name`. [method]: https://github.com/odoo/enterprise/blob/9d4424088bfda7e89d454a8bd642715a9281913d/account_asset/demo/account_demo.py#L37-L47 sentry-7321811436 Forward-Port-Of: odoo/enterprise#110066
This update corrects a display issue in WhatsApp signature requests. Previously, the Certificate of Completion showed 'Email Verification' instead of the correct information for WhatsApp participants. This change ensures accurate and consistent reporting for all signature requests, regardless of the channel used.
Original PR description
When a signature request is sent via WhatsApp (`send_channel == 'whatsapp'`), the Certificate of Completion PDF currently still displays "Email Verification" in the participants table and the legal footnote.
This update corrects a minor CSS error that was causing incorrect styling within the timesheet grid component. The fix ensures the grid displays correctly, improving the overall user experience. This was a routine maintenance update.
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/
Forward-Port-Of: odoo/enterprise#1102465 changes
Resolved issues and error corrections
This update resolves an issue that prevented the generation of Customer Statement reports. The problem stemmed from a missing domain variable, causing an error during report processing. The fix ensures the domain is always provided, allowing reports to generate successfully.
Original PR description
**Steps to reproduce:** * Install the **l10n_my_reports** module. * Go to `Accounting > Reporting > Partner Ledger`. * Change report to `Customer Statement`. * Add data in the report and click Send. * In the email template, set the `dynamic reports` as `statement of accounts` under the options tab. * Click Preview. **Observed behavior:** * Error: `TypeError: Domain() invalid argument type for domain: None` * Email preview fails and PDF cannot be generated. **Cause:** * The `statement_account_document` template uses `filtered_domain(domain)` but the domain variable was not being passed to the template context by the `_get_report_values` method, resulting in None being passed to `filtered_domain()`. **Fix:** * Ensure domain is always present in the report context, defaulting to an empty list when not provided. * Added safe handling for missing data and context parameters. opw-5880385
This update corrects a bug where users without HR document centralization enabled were seeing all documents, not just their own employee documents, when using the documents smart button. The fix restores the intended behavior for companies without this HR setting, ensuring employees only access their own related documents.
Original PR description
Steps: - uncheck the "Human Resources" file centralization option - go to an employee, click the documents smart button -> You see every documents, not only the ones from the employee PR https://github.com/odoo/enterprise/pull/93782 aimed at restoring the previous behaviour of the employee documents button and accesses for companies without the hr documents settings enabled, but forgot the domain on the employee smartbutton action. opw-5857914 Forward-Port-Of: odoo/enterprise#107224
This update ensures that Website Studio only uses translations relevant to the currently selected website when editing views. Previously, it defaulted to the first website's language, causing potential inconsistencies. This change improves the accuracy of translations within the Studio interface, specifically for the HTML/CSS Editor.
Original PR description
Problem: When opening the Studio XML editor when Website is installed, the translation terms corresponding to the Default Language of the first website in the database are used. This behavior should only be applied to the HTML/CSS Editor in Website. Purpose: Modify Website's override of get_related_views to only return translated views when called with a specific website in context. Steps to Reproduce in Runbot: 1. Activate a non-English (US) language. 2. Add this language to the Website with the lowest ID in the database, then set it to the Default Language of the Website. 3. Enter Studio and navigate to a view that has translation terms in its view (ex. Invoice PDF Report), then open the XML editor. opw-5136124 Forward-Port-Of: odoo/enterprise#108902 Forward-Port-Of: odoo/enterprise#107459
This update resolves intermittent test failures in the sign functionality by using dedicated test users instead of the default 'admin' and 'demo' accounts. This ensures consistent and reliable test results, improving the overall stability of the sign process. The change focuses on deterministic test execution.
Original PR description
Relying on the default `admin` and `demo` users caused random runbot failures, as their access rights can be altered by other modules. This commit replaces them with freshly created test users to strictly simulate the presence or absence of the `sign.group_sign_user` group, ensuring the test remains deterministic. Runbot error: https://runbot.odoo.com/odoo/runbot.build.error/241216
A test was failing due to an issue with how the system handles time zones. The fix corrects a calculation error that resulted in an incorrect date being generated, specifically when the system's time zone is set differently from the test environment. This ensures the test consistently passes.
Original PR description
__ ## Error description The test fails when it is launched at 23h. We obtain an assertion error: `AssertionError: datetime.datetime(2026, 2, 26, 11, 0) != datetime.datetime(2026, 2, 25, 11, 0)` ##…
__ ## Error description The test fails when it is launched at 23h. We obtain an assertion error: `AssertionError: datetime.datetime(2026, 2, 26, 11, 0) != datetime.datetime(2026, 2, 25, 11, 0)` ## Origin of the issue In the `_default_start_datetime()` method of planning, we return `return datetime.combine(fields.Date.context_today(self), time.min)`. So, we call context_today. which is implemented this way: https://github.com/odoo/odoo/blob/f3ec2aa4514c03874aae96ae975e2617e8260c72/odoo/orm/fields_temporal.py#L154-L158 Let's say the hour of the test is 23h50 in GMT+0. The slot will be created at 23h50 in GMT+0. But if the time zone of the environment is set at GMT+1, at the moment of the `_compute_datetime`, we will call this piece of code, where we will translate 23h50 to GMT+1, we will obtain 00h50, then only return the day, which offsets the result of one day in the future. X-original-commit: d91c53869842f65a60088ffa101f67404af6e58e note: backport of https://github.com/odoo/enterprise/pull/108891 Forward-Port-Of: odoo/enterprise#110126
4 changes
Resolved issues and error corrections
This PR allows users to inherit the group_by hook in the POS order report. Previously, this hook was ineffective because it wasn't called during the initial report generation. This change enables more flexible report customization for business users.
Original PR description
Description of the issue/feature this PR addresses: The pos order report has a group_by hook that can be inherited but the hook is not called in the init Current behavior before PR: inherit the group_by is useless because the init does not call it Desired behavior after PR is merged: the group_by hook can be inherited --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a technical issue that caused tracebacks when using the pivot table autofill feature. The fix corrects a misidentification of the function being called, ensuring consistent behavior with vertical autofills. While the core result isn't corrected, this resolves a reporting error.
Original PR description
When autofilling a positional pivot row header horizontally, we would get a traceback because we were calling `_autofillPivotColHeader` instead of `_autofillPivotRowHeader`. Note that this fix only fixes the traceback, the result is not correct, but is consistent with autofilling a positional col header vertically. Task: [5909266](https://www.odoo.com/odoo/2328/tasks/5909266) Forward-Port-Of: odoo/enterprise#109620
This update corrects a warning message appearing during tax report adjustments in the French localization. The issue stemmed from an unnecessary reference to 'box_B1' within the report's calculations. Removing this element ensures the report functions correctly without displaying the misleading warning, improving the user experience for French accounting users.
Original PR description
Steps to reproduce: 1- Install Accounting and l10n_fr and switch to French company 2- Go to [Settings > Accounting] and make sure fiscal localization is set to France 3. Go to [Accounting > Reporting > Tax return] and change the Report to Tax Report (FR) 4. Make an adjustment to the B1 field Description of issue: Warning message displayed where the text does not mention B1 Expected behavior: No warning message should be displayed when editing B1 Why this happens: 'box_B1' is used in the the expression total comparison when it should not be opw-5960001
This update resolves an issue where clicking on 'reply' links within Odoo mailboxes didn't function correctly. Now, clicking on a reply link will automatically jump to the original thread of the message, improving the user experience and ensuring messages are easily accessible within conversations. This fix enhances the efficiency of email management within Odoo.
Original PR description
Before this change, clicking on a `message in reply` in mailboxes had no effect. The expected behavior is for it to jump to the message in its origin thread. To fix it, this commit ensures that `useMessageHighlight` hook receives the correct thread which in this case is the origin thread of the message in reply. task-5343804