Daily updates from Odoo
Thursday, February 27, 2025
33 changes
6 changes
Resolved issues and error corrections
The bank statement extraction tests now explicitly activate EUR before validating documents. This prevents failures in environments where EUR is not already enabled, making validation checks more reliable across setups.
Original PR description
If EUR is not active, `check_all_status` fails (because `AccountMove._post` fails). Before #80180, EUR was implicitly enabled by the multi-company setup of MailCommon: it creates a company with the currency EUR, and `ResCompany.create` automatically activates the company currency. Since the dependency on `MailCommon` was removed from `TestBankStatementExtractProcess`. This is not visible on the runbot, because it always installs l10n_be which automatically enables EUR.
This fixes an issue where VoIP activity filtering could miss the user information needed to show the current user's activities correctly. The change restores that user detail for VoIP so call-related tasks remain accurate and visible to the right person.
Original PR description
After fff2083, by default we don't provide the user_id of mail.activity for Store. However, in voip, we need user_id to filter activities for current user: https://github.com/odoo/enterprise/blob/60137cdea6412278ce9b94852926f09d61e9cb38/voip/static/src/softphone/softphone_model.js#L38 To fix, add this field in _to_store_defaults for voip.
Updates automated checks that were failing after a change to the date and time selector introduced a separate time picker. This helps keep scheduling, field service, knowledge, Gantt, and rental purchase flows reliable without changing normal user functionality.
Original PR description
This commit fixes some tours that were failing due to the addition of a new TimePicker in the datetime picker.
Belgian individual account reports now split payroll lines by their related payroll structure. This helps payroll teams review and reconcile employee payroll details more clearly when multiple structures are involved.
This fixes how India GST reporting identifies company records in multi-company or branch setups. It avoids using a parent company’s credentials for a child company that may have its own independent credentials, reducing the risk of incorrect GST report access or filing context.
Original PR description
In this commit we are partially reverting the company_domain changes because using `child_of`, is not the best option here. Due to it risks the using the credentials of the parent company for the child company records where a child can have an independent credentials The change was introduced because the in India, we can have same PAN entity with multi-company or branches where we wanted to make sure, that any child company does not have the record in that case. But described above as said it is not the best option to do.
Kenya payroll now uses the revised PAYE rules effective 27 December 2024. This helps ensure employee tax calculations and related payroll accounting reflect the latest legal requirements.
Original PR description
Problem ---------- Amendments to PAYE computation from 27 Dec 2024 Objective ---------- Correct the Kenya Payroll computation with the new rules from the 27 Dec 2024 Solution ---------- Adapt rules and parameters task-4457038
27 changes
Resolved issues and error corrections
This fix ensures that documents selected for a sales PDF quote remain available when preparing or generating the quote. It helps sales teams avoid missing attachments or incomplete customer-facing quotation packages.
Original PR description
opw-4464701
Invoices created from sales orders now show combo products as section headings instead of zero-value product lines. This avoids confusing zero-amount, untaxed lines that can cause issues with electronic invoicing checks.
Original PR description
Before, when invoices were created from a sales order and one of the lines is a combo product, it would create a regular invoice line for that with the combo product, but the price would be zero and no taxes. The problem with that when sending electronic invoicing documents, is that it will treat that as a zero line. (and some EDIs might e.g. complain there is no tax on there) So, that way when creating the invoice line, we define it as a subsection with the product name as description but without product. opw-4410461 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
Project-created bills and invoices no longer assign analytic tracking to payable or receivable journal lines. This prevents those settlement lines from distorting analytic account gross margin, so project profitability reports show the expected figures.
Original PR description
### Steps to reproduce: - Install sale, project, and accountant. - Allow Analytic Accounting from settings. - Open project application. - Create a project with a billable feature. - Add invoices in the topbar. - Select invoices and create a new invoice. - Add a product to the invoice (you will see analytic is added). Go to the journal items tab. ### Issue: When the user opens the Analytical Account, the gross margin is shown incorrectly. ### Cause: When a bill or invoice is created from the project topbar, the analytical distribution is set in the payable/receivable journal items, causing the gross margin to show as 0. ### Fix: In this commit, we remove the setting of the analytical distribution in the payable/receivable journal items. As a result, no journal items related to payable/receivable will be added to the Analytic Line. task-4377544
The website shop test was adjusted to match the updated version 18 Buy Now behavior, which now sends shoppers to the cart instead of directly to payment. This helps keep automated checks reliable without changing the customer-facing shopping experience.
Original PR description
Before this commit: This test was ignored by the runbot platform as the test was consistently failing. Starting version 18, the flow of the "Buy Now" button did change to redirect to the card after being pressed rather than the payment page as intended in the PR: https://github.com/odoo/odoo/pull/149020 After this commit: Remove irelevant part of the test to make it successful rb-56459
This fix ensures pickup-in-store addresses include the selected state when used during checkout. It prevents payment validation errors for Click and Collect orders in locations where delivery availability depends on state settings.
Original PR description
Steps to reproduce:
1) Enable Click and Collect
2) Configure pick up in store and add a store in US with state set
3) Set the available country to US and available state as in the
store's partner
4) Enable Pay on site
5) Go to /shop page and add a storable product
6) Proceed to payment and pay choosing pickup in store delivery method
and pay on site payment method
7) Observe an error
Reason:
/shop/payment/validate checks for payment errors. When confirming a
sales order with pickup in-store dm the partner_shipping_id is set to
the created partner from the selected pickup point address.
However, the state was missing which resulted in creating a partner
with an empty state causing the `_get_delivery_methods` called by
`_get_shop_payment_errors` show an error.
Solution:
Save a state for pickup location data
opw-4592939Fixes the chat call participant card so users on smaller screens can drag and reposition it correctly. The card is also moved slightly upward so it no longer covers the End Call button, making calls easier to control.
Original PR description
**Before this PR:** - Users could not drag and drop the call participant card in the chat window due to incorrect position computations. - Participant card was positioned at bottom right, causing the "End Call" button to be hidden behind it. **This PR:** - Fixes the drag-and-drop issue by correcting the position calculations. - Adds 5vh bottom offset for card so it doesn't overlap "End Call" button. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures that pressing Ctrl + K still opens the command palette even when the user is focused on a chat window. It restores a consistent keyboard shortcut experience and avoids confusion for users who rely on quick navigation.
Original PR description
**Current behavior before PR**: Pressing Ctrl + K while focused on the chat window did not open the command palette, as the event was captured by the chat window and prevented from propagating further. **Desired behavior after PR is merged**: Ctrl + K is now properly handled when the chat window is focused, allowing the command palette to open as expected. task-id:4593364 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The purchase portal no longer shows a message or button promoting UBL purchase order imports unless the UBL module is installed. This avoids confusing users with an option they cannot actually use.
Original PR description
The text advertising the UBL functionality is in purchase rather than in the UBL module itself. This way if someone have purchase but not UBL, which is the actual case in internal, one will see a button on how to import the PO when he actually can't. This PR makes the button in the portal PO view invisible and set it visible in an inherited view that is created once the UBL module is installed, preventing this way the message to display when it should not opw-4465049 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
The export wizard now hides External ID fields when they cannot actually be exported from certain database-backed views. This prevents users from selecting fields that would fail or produce confusing export results.
Original PR description
…wizards - In the wizard of exporting data there are fields that may be not in our data base with attribute _table_query not set to none. -I have modified the export.py file to make the field of id in our fild dict only if the _table_query is set to None. task-4592514 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
The expired lot warning in the lot kanban view now keeps the alert icon next to the date instead of splitting it onto a separate line. This makes expiry information easier to read at a glance and improves the visual clarity of inventory lot cards.
Original PR description
Before this commit, in the lot kanban view, if a lot was expired, the alert icon and the overpass days were on different lines. This commit fixes that so the alert icon is just beside the date. Before / After:   Enterprise PR: odoo/enterprise#80338
The checkout page no longer shows the same billing and delivery address warning while a customer is creating a new address. This prevents confusion during checkout and keeps the warning limited to cases where it is actually relevant.
Original PR description
Steps: - Install Ecom. - Go to shop page. - Add a product in cart goto address section in checkout. - Try to add new address. Issue: - Warning displaying for of same address for billing and delivery even though we are create new address Cause: - Missing condition to check if address is existing or new one. Fix: - Add condition on warning section to display it only for existing addresses. opw-4522138
This update makes an internal automated test for landed costs more consistent by ensuring records are checked in a predictable order. It helps prevent false test failures without changing how users work with Odoo.
Original PR description
This commit orders the stock valuation layer of multiple stock moves by product to make sure the assert targets the right layer index in the loop. runbot: 99086 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
The community edition call menu in the top navigation now displays with the correct styling. This makes the calling interface look consistent and avoids visual confusion for users.
Original PR description
**Current behavior before PR:** The Systray Call menu in the community edition displayed incorrect styles due to improperly written CSS. **Desired behavior after PR is merged:** The issue is resolved by applying the correct conditions in the CSS. Before / After   Task-[4458263](https://www.odoo.com/odoo/my-tasks/4458263) Enterprise-https://github.com/odoo/enterprise/pull/76910 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Live chat system notifications now display the visitor's live chat name when their regular author name is unavailable. This prevents blank names in messages like join, leave, or channel invite notifications, making conversations clearer for users and support teams.
Original PR description
For visitors, the name of the author might not be known, only their live chat user name. Use the getter that takes this into account when displaying the author name of notifications such as "join", "left" or "invited to the channel" to actually display the live chat user name rather than nothing. task-4433078
This change fixes the positioning of wave and bubble graphics in report layouts so they display correctly in the report editor preview. It keeps generated PDF reports working as before while preventing decorative elements from appearing in the wrong place during editing.
Original PR description
Before this commit the wave and bubble layouts did not play well in the report editor. The svg was set to be an overlay, in fixed position, with a top = 0 property. In wkhtmltopdf it did work because…
Before this commit the wave and bubble layouts did not play well in the report editor. The svg was set to be an overlay, in fixed position, with a top = 0 property. In wkhtmltopdf it did work because we render the header and footer in their own viewport. In the report editor however, the viewport is unique and the svg was then fixed to the top of the page. After this commit, the report layouts continue to work in wkhtmltopdf, but we removed the top = 0 attribute. Following https://stackoverflow.com/a/12282107 it should work in the contexts: (TLDR: in position fixed, if top and bottom are not specified, the default position is the one the block should have taken if it were staticly positioned) - wkhtmltopdf: the footer is rendered in its own viewport and consequently the top of the viewport is also the top of the footer and thus the original static position - action report of type HTML: no worries here, this fix doesn't apply because of ifs in the qweb expressions - report editor in edition mode: The SVG is inisible anyway because it needs a fill value which is not present in that context. The svg is located outside of the iframe's port in practice with the fix. - report editor in preview mode: works because the iframe cannot be interacted with and that the default static position is within the footer opw-4508900 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
Restaurant staff are now protected from accidentally sending the same order more than once when order submission is slow, such as when preparation printers are involved. The order button is locked while processing, reducing duplicate kitchen tickets and the need for manual checks.
Original PR description
before this commit and since commit 42b207f, the pos_restaurant does not lock the state of the order button anymore. This has as an effect that if the order submitting takes a lot of time (which e.g. happens when a preparation printer is configured) the user could press the order button multiple times. This situation can happen both intentionally or unintentionally. The end result is a disturbed flow for users, where orders are sent multiple times in preparation and therefore need to be manually checked by the staff regularly risking wrong extra order preparation otherwise. This commit reverts the changes adding back the state locking the order button while it's being processed. opw-4242269
Archived products are now hidden when configuring combo products in sales orders. This prevents sales teams from accidentally selecting unavailable or discontinued items, keeping orders cleaner and more accurate.
Original PR description
steps: - create a combo product with 1 or more combo items - archive a product part of this combo - create an SO and add this combo product issue: - it shows archived product cause: - combo_configurator_get_data loops through all products part of the combo fix: - added an active condition in the loop opw-4579038 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Custom fields added to online job application forms now appear in the applicant notes section instead of the activity chatter. This keeps applicant information in the expected place, making it easier for recruiters to review submissions.
Original PR description
**Steps to Reproduce:** 1. Install the `website_hr_recruitment` module. 2. Navigate to the job application form. 3. Use the editor to add a custom text field. 4. Submit an application. **Issue:** The…
**Steps to Reproduce:**
1. Install the `website_hr_recruitment` module.
2. Navigate to the job application form.
3. Use the editor to add a custom text field.
4. Submit an application.
**Issue:**
The data entered in the custom field appears in the chatter section of the applicant record instead of the notes section.
**Solution:**
Setting `website_form_default_field_id` to `hr_recruitment.field_hr_applicant__applicant_notes`. Ensure that data from custom fields is correctly saved in the notes section of the applicant record.
Description of the issue/feature this PR addresses:
- In version 17.4, the [website_form_default_field_id](https://github.com/odoo/odoo/blob/saas-17.4/addons/website_hr_recruitment/data/config_data.xml#L23) was assigned to the description field, but in version 18, description field [was removed](https://github.com/odoo/odoo/commit/e0f281433eec3f34d6f720656ead51e417679cd1#diff-12b0850af29a9858b955218c748c4469b9cbe95d07fc75c656506dec3451e005L38), and a new [notes](https://github.com/odoo/odoo/commit/e0f281433eec3f34d6f720656ead51e417679cd1#diff-12b0850af29a9858b955218c748c4469b9cbe95d07fc75c656506dec3451e005R115) field was introduced. The website_form_default_field_id was left as null.
- The solution is to correctly map the custom fields to the notes section by setting the website_form_default_field_id to point to the appropriate field (applicant_notes).
**Current behavior before PR:**
#### Before the fix, the website_form_default_field_id was null, and custom field data would not appear in the notes section.

```psql
v_18.0=# select id,name,website_form_default_field_id from ir_model where model = 'hr.applicant';
id | name | website_form_default_field_id
-----+------------------------+-------------------------------
437 | {"en_US": "Applicant"} |
(1 row)
```
**Desired behavior after PR is merged:**
#### After the PR is applied, the website_form_default_field_id should be set to the applicant_notes field, ensuring custom fields are saved in the notes section.

```psql
v_check_fix=# select id,name,website_form_default_field_id from ir_model where model = 'hr.applicant';
id | name | website_form_default_field_id
-----+------------------------+-------------------------------
437 | {"en_US": "Applicant"} | 4453
(1 row)
v_check_fix=# select id,name,model,ttype from ir_model_fields where id = 4453;
id | name | model | ttype
------+-----------------+--------------+-------
4453 | applicant_notes | hr.applicant | html
(1 row)
```
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fixes an error that could block product exchanges when the original incoming shipment had no origin reference. The system now handles missing origin information safely, allowing the exchange process to continue without interruption.
Original PR description
Steps to reproduce: 1. Create a storable product. 2. Link a vendor to the product. 3. Create and validate an incoming picking from the vendor for the product. 4. Initiate an exchange. Issue: A traceback occurs during exchange creation when the original picking lacks an "origin." The system attempts to parse a False value as a string, causing an error. Solution: Ensure the origin is populated before running the procurement. If no origin is set, pass an empty string instead of False. opw-4556305 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Folders in the Documents search panel are now shown in a predictable sorted order instead of appearing randomly. This helps users with many folders find what they need more quickly while manual folder ordering is unavailable.
Original PR description
It's very difficult to find folders when they are returned in an arbitrary order. Furthermore, as we've removed the sequence field in 18.0, users have no way to change the ordering of these folders. With this change, users with many folders will at least be able to do something until re-ordering by sequence is made possible again in 18.2 Task-4512349
This change ensures a manufacturing work order test runs reliably even when demo data is not installed. It helps prevent false build failures, improving confidence in the release process without changing customer-facing behavior.
Original PR description
### Issue: The test `test_add_component_from_shop_foor` fails the first step of the tour if run without demo data's since the user admin does not belong to the group `mrp.group_mrp_routing`. With demo data it is automatically added to the default via these lines: https://github.com/odoo/odoo/blob/42b43bad2978d6f809f9210753e2e4d06e00d436/addons/mrp/data/mrp_demo.xml#L9-L12 runbot build error: https://runbot.odoo.com/odoo/runbot.build.error/116698
This fix makes automated checks wait until document folders are fully loaded before continuing. It reduces random test failures when opening folders, helping keep spreadsheet-related document workflows more stable during validation.
Original PR description
Sometimes, when opening the documents folder, folders were not being completely loaded, which gave errors. This fix checks if the folders are properly loaded on the page and only then lets tours continue. Runbot build errors [1](https://runbot.odoo.com/odoo/action-573/109605), [2](https://runbot.odoo.com/odoo/action-573/109607), [3](https://runbot.odoo.com/odoo/action-573/113711), [4](https://runbot.odoo.com/odoo/action-573/113712)
Installing Helpdesk no longer fails when the default periodic digest email was previously deleted. This prevents an installation-blocking error and lets businesses add Helpdesk without restoring that optional digest record first.
Original PR description
Currently a `ParseError` arises when the user installs the `helpdesk` module after deleting `Your Odoo Periodic Digest` from the `Digest Emails` in Settings. Steps to reproduce: --- - Install…
Currently a `ParseError` arises when the user installs the `helpdesk` module after deleting `Your Odoo Periodic Digest` from the `Digest Emails` in Settings.
Steps to reproduce:
---
- Install `digest` module (without demo data)
- Settings > Technical > Email > Digest Emails > Delete `Your Odoo Periodic Digest`
- Now install `helpdesk` module
Traceback:
---
```
Exception: Cannot update missing record 'digest.digest_digest_default'
ParseError: while parsing /home/odoo/src/enterprise/saas-18.1/helpdesk/data/digest_data.xml:4, somewhere inside <record id="digest.digest_digest_default" model="digest.digest">
<field name="kpi_helpdesk_tickets_closed">True</field>
</record>
```
The error occurs because the user deleted `Your Odoo Periodic Digest` and then installed the `helpdesk` module. which requires a particular record.
This commit solves the above issue by using `forcecreate="False"` to bypass record creation if it violates checks.
https://github.com/odoo/odoo/blob/b794f0f332f473deb2c04eba60baf4761db3b508/odoo/tools/convert.py#L364-L366
sentry-5731062091This fixes an issue where users adding favorite filters inside embedded Knowledge views saw a shared option that should not appear there. The change keeps the filter setup clearer and prevents users from selecting an option that is not applicable in embedded views.
Original PR description
Steps to reproduce: 1. Add a embedded view in Knowledge, like a kanban view. 2. Add a new favorite filter. 3. The shared checkbox is shown. To address this issue, we need to use the `.context` since in owl the `._context` is giving inconsistent results, this due to how the rendering is being done, we sometimes will try to access the context before it is actually set, and we'll get a null value. With the `.context` we are sure that the context is set and we can access the `knowledgeEmbeddedViewId` properly. opw
Fixes an issue where decorative footer backgrounds in report layouts could cover report content while editing XML in Odoo Studio. This improves the report editing experience by keeping previews readable and closer to the intended layout behavior.
Original PR description
Before this commit, in the wave and bubble layouts, the SVG acting as an overlay background of the footer was displayed on top of the report when entering the XML Editor of the reportEditor. This is due to multiple factors, all of which linked to how wkhtmltopdf works: - header and footers seem to be rendered in their own viewport, the top parameter is the start of the footer itself, not that of the page. - absolute positioning wrecks havoc in z-index with SVG's ..... Even though the HTML of the waves' and bubbles' layouts doesn't seem very well written, it does work in the current state of the art of Odoo's PDF rendering. This commit adapts the JS code in the XML editor of the reportEditor to account for it. opw-4508900
The accounting reconciliation process now checks whether predefined model lines should actually be used before applying them. This prevents hidden or outdated rule lines from affecting reconciliations unexpectedly, helping keep accounting entries aligned with the current configuration.
Original PR description
This fix will add a check that if the line_ids of a reco model should or not apply before using them. At the moment, even if the line_ids are hidden in the view due to the settings of the reco model, as long as lines were defined before the list is hidden they will still be used.
The Systray Call menu now displays with the intended styling in the community edition. This fixes a visual issue caused by incorrect style conditions, helping users see a cleaner and more consistent call menu.
Original PR description
**Current behavior before PR:** The Systray Call menu in the community edition displayed incorrect styles due to improperly written CSS. **Desired behavior after PR is merged:** The issue is resolved by applying the correct conditions in the CSS. Task-[4458263](https://www.odoo.com/odoo/my-tasks/4458263) Community-https://github.com/odoo/odoo/pull/192862