Daily updates from Odoo
Monday, February 10, 2025
30 changes
7 changes
Resolved issues and error corrections
This fixes a display issue in the mass mailing editor where the snippet sidebar could slide under the control panel when using the Event Promo template at higher browser zoom levels. The sidebar now adjusts to the template height while scrolling, keeping the editor controls visible and easier to use.
Original PR description
How to reproduce: 1. create a new mailing. 2. from the existing available Mail Body templates, select Event Promo. 3. zoom In to around 125% or greater scale. 4. scroll the page to the end. Issue: 5.…
How to reproduce: 1. create a new mailing. 2. from the existing available Mail Body templates, select Event Promo. 3. zoom In to around 125% or greater scale. 4. scroll the page to the end. Issue: 5. as you scroll, you will notice the snippet sidebar stays sticky till a certain point, but as we reach the end of the template itself, and the page starts to scroll, the sidebar goes under the control panel. video of the issue --> https://www.awesomescreenshot.com/video/33360044?key=46734c8ba59b1144830c3939e24ed12f Reason: 7. in previous version (i.e. 17.0) the sidebar's top and bottom was dynamically controlled on every scroll. refer --- https://github.com/odoo/odoo/blob/17.0/addons/mass_mailing/static/src/js/mailing_mailing_view_form_full_width.js#L91-L96 8. we use `position: sticky` in the current version to achieve that outcome, but when the template itself starts to scroll, the stickiness disappears. Fix: 9. once the page has started scrolling we recalculate the height of the sidebar to match it with the height of the template. Task-4137980
Fixed a display issue in mass mailing templates where the editing sidebar could overlap the email content after returning to a template. This makes template editing more reliable and prevents layout confusion for users.
Original PR description
Previously, the has_snippets_sidebar class was only applied when clicking the template during creation. Now, the fix ensures that the class is correctly applied on load, preventing the body from overlapping with the sidebar when returning to the template. Task-4266339
This fixes an issue where the second step of a two-step delivery could be sent to the general customer location instead of the specific customer sub-location. Businesses using detailed customer delivery locations will now see stock transfers created with the correct destination, reducing delivery errors and manual corrections.
Original PR description
to reproduce: ============= - make warehouse with 2-step delivery - create contact with Customer Location = Partners/Customers/Test (make sure location type = Customer location) - create a sale order with this contact - confirm the sale order - confirm first delivery -> the second delivery is created but the destination location is set to **Partners/Customers** instead of **Partners/Customers/Test** Problem: ======== - starting from 17.2 the second pick is created after validating the first one at creation used vals received from the move has the wrong destination location, it will be recomputed after creating the second pick but it's too late to change the destination location of the second pick Solution: ========= - recompute the destination location of move when preparing vals of the second pick opw-4374075 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Spreadsheet pivot formulas now show the available measures when a user enters an invalid measure. This helps users correct mistakes faster and reduces confusion when working with pivot reports.
Original PR description
Before this commit, applying a pivot formula with an invalid measure returns an error message without showing possible measures. This commit fixed that Task 3754942 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The FACe/Factura-e section on invoices now appears only when the related company is located in Spain. This avoids showing Spain-specific electronic invoicing fields to companies in other countries, reducing confusion for users.
Original PR description
We should show the FACe/Factura-e section on invoice when the related company is located in Spain. opw-4397651 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a payment validation issue where incoming payments could be blocked by a requirement intended for outgoing payments. It helps avoid confusion and supports payment methods such as Italian RiBa that need a bank account for incoming money without treating it as an outgoing payment.
Original PR description
The `require_partner_bank_account` flag on the payment shouldn't require the `allow_out_payment` flag on it when the payment type is `inbound` as it leads to confusion. This generates an issue with the `l10n_it_riba` RiBa payment method. It requires the bank account, but the money is incoming, not outgoing. Enterprise PR: odoo/enterprise#77901 Task [link](https://www.odoo.com/odoo/project/967/tasks/4497749) task-4497749
This fix improves how invoice changes are protected from unintended automatic recalculations during updates. It helps keep accounting data consistent when invoices or invoice lines are created or modified.
Original PR description
Missing commit from the forward-port of https://github.com/odoo/odoo/pull/193528
3 changes
Resolved issues and error corrections
This update streamlines how live chat creates and manages helpdesk tickets, making the process easier to maintain and less prone to errors. It also updates related tests to help ensure ticket access and timesheet behavior remain reliable.
Original PR description
follow up of task-4432728 community: https://github.com/odoo/odoo/pull/196567
The Belgian payroll declaration export has been corrected so users can generate the 274.XX XML file successfully. This helps payroll teams complete required reporting without being blocked by an export error.
Original PR description
STEP TO REPRODUCE: 1- Install The belgium payroll 2- Go to Payroll 3- Go to reporting > Declaration 274.XX 4- Click on generate xml file
Opening documents from a record's documents button now applies the correct filter and creation context, so newly created documents stay linked to the original record. The update also removes unused document action code and simplifies how user and contact document links are maintained.
Original PR description
Bug === 1. Open the form view of `fleet.vehicle` e.g. 2. Click on the documents stat button => The domain is not set => If you create a document it won't be linked to the `fleet.vehicle` Remove dead code and simplify some related code. Simplify the document_ids field on res.users / `res.partner`. Task-4550993
20 changes
Resolved issues and error corrections
This fixes an error that could appear when a user enabled secure hashing for posted accounting entries and immediately returned to the dashboard before any entries were hashed. The dashboard now handles that transition safely, helping accounting users avoid an unexpected interruption.
Original PR description
**To reproduce:** 1. Check the field 'Secure Posted Entries with Hash' in a journal with existing entries 2. Immediately return to the Dashboard, before posting new entries 3. An error is raised…
**To reproduce:** 1. Check the field 'Secure Posted Entries with Hash' in a journal with existing entries 2. Immediately return to the Dashboard, before posting new entries 3. An error is raised **Cause:** In odoo/odoo#196748, the secured group usability was changed to only grant access to the new features relating to securing entries if moves from a journal without "Hash on Post" are secured. However, if before any entries are hashed, either by posting a new move in a journal with 'Hash on Post' or using the 'Secure Entries' wizard, the user returns to the dashboard, an error is raised. This is due to _get_chains_to_hash() being called with early_stop = True, in which case chain_info is an int. **Fix:** The key 'journal_restrict_move', which information on whether the journal is 'Hash on Post' to chain_info, should only be added after the function returns True in case of early_stop. This avoids the item assignment on an int. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue that could cause errors when Point of Sale data was updated using a specific internal update command. It helps keep related sales information processing reliably and reduces the chance of interruptions for users.
Original PR description
Fix error with "set" command in related models.
This fixes a live chat chatbot issue where conversations could be incorrectly marked as ended after handing a visitor to an operator when the bot step included a message. Visitors should now be able to continue the conversation normally once an operator joins, improving handoff reliability.
Original PR description
Before this PR, the chat bot would continue even after forwarding an operator to the visitor when the step contained a message. Steps to reproduce: - Create a chat bot script with three steps:…
Before this PR, the chat bot would continue even after forwarding an operator to the visitor when the step contained a message. Steps to reproduce: - Create a chat bot script with three steps: "text", "free_input_single", "fw_operator" with a message set. - Start the bot as a visitor, the operator is correctly added to the channel but the input is not available, the conversation is considered as ended. This is due to a race conditions when processing the notifications coming on the bus. When the message is posted, the operator is not yet added, this information is sent on the bus. When the operator is added, another payload is sent on the bus informing an operator was found. However, the processing of the message notification is delayed and comes after the processing of the newest information, leading to an incorrect state. To solve this issue, ensure insertions are made immediately in the new message handler and send updated data on the bus to ensure the state is correct. This PR also fixes identifying fields issue wiht chat bot steps (step is identified by script step and message not channel. opw-4514479
This fixes an intermittent issue in automated checks where a button could be treated as hidden even though it was present. The change makes the two-factor authentication flow tests more reliable, reducing false failures and helping teams ship updates with greater confidence.
Original PR description
Fix nondeterministic JS errors of button trying to be clicked while detected as not visible (while being there). HOOT rely on DOM mutation to check if elements visible state change or not. We suspect if the tab load fast enough the button will be considered invisible as the fading didn't started yet. The issue is nondeterministic but fail more consistently by toggling Chrome CPU to 10x, it will then fail 3/4 of the times rb-112019
This update fixes how the Point of Sale handles Italian transactions when taxes are added on top of prices rather than included in them. It helps ensure receipts, totals, and accounting tax details are calculated correctly for affected Italian POS setups.
Original PR description
Related: https://github.com/odoo/enterprise/pull/76120
This fixes cases where the HTML editor could record unintended background changes while users changed selections or undid embedded content. The fix helps keep undo history cleaner and prevents unexpected editor behavior without changing normal editing workflows.
Original PR description
This PR handles 2 cases of ghost mutations generation: When switching the selection, the hint plugin generated mutations that were not part of a step. They should be ignored. When undoing the insertion of nested embedded components, the post-processing allowing for OWL Component destruction was generating ghost mutations. They should also be ignored. See commits for further details task-4561045
This fix removes two unsupported text matching options from the condition editor used in Studio. Users will no longer hit an error when configuring required-field rules, improving reliability while editing views.
Original PR description
Example of steps:
- Install `web_studio`
- Open any view editor with `web_studio`
- Try to edit a field required condition
- Pick a char field
- Add `starts_with` or `ends_with` operator
- Traceback
The solution is to remove these two operators from expression_editor as
this is not a python expression,
`starts_with` and `ends_with` are interpreted as `=ilike`, but there is
no way to translate it easily to a python expression like for `=`, `>=`, etc..
opw-4551688This fix makes several automated website walkthroughs more reliable by adding checks that ensure each test is on the correct path before continuing. It reduces unpredictable test behavior across website, eCommerce, recruitment, live chat, blog, and eLearning areas, helping maintain release stability without changing customer-facing features.
Original PR description
In this commit, we fix multiple tours on step that can cause non deterministic behaviors by adding additionnal steps to ensure tour is well on the way to taking the right path. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes an automated mail template test more reliable by allowing enough time for the page content to render after opening a dropdown. It helps reduce false test failures and keeps development checks stable without changing customer-facing behavior.
Original PR description
mail_template_dynamic_placeholder_tour is failing, as the delay between two steps is too small and dom is rendering right after clicking the dropdown. this pr fixes the issue. [failing runbot builds](https://runbot.odoo.com/odoo/action-573/111986) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A broken automated website page properties test has been fixed and re-enabled. This helps ensure website page settings continue to work correctly and reduces the chance of regressions reaching users.
Original PR description
In this commit, we make the fixes in order to reactivate the tour. runbot-error-id~106391 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
Chatbot steps that ask users to choose an answer can no longer be saved without any available answers. This prevents live chat bots from failing during testing or customer conversations.
Original PR description
*= crm_livechat, website_livechat **Current behavior before PR:** It was possible to save a step with step_type set to "question selection" without any answers. However, this would cause an error when the bot was tested or executed. **Desired behavior after PR is merged:** A constraint has been added to ensure that a "question selection" step cannot be saved without at least one answer. task-id:4522835 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Worldline payment cancellations and declines are now recognized correctly instead of being shown as invalid transaction statuses. This helps staff understand failed checkout payments more clearly by showing the relevant error code and marking canceled payments appropriately.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Go to eCommerce; 2. add items to cart; 3. go to checkout; 4. pay with Worldline; 5. on Worldline's site, cancel transaction; 6. open order in the backend. Issue ----- Chatter displays: > Error: Worldline: Received invalid transaction status CANCELLED Cause ----- The cancel & declined statuses aren't handled when processing Worldline's response, leading to them being displayed as invalid. Solution -------- Handle the `cancel` and `declined` statuses and display the given error code. Also, when canceled, call `_set_canceled` instead of `_set_error`. opw-4481602
The Chilean PoS localization now detects when the required 'Consumidor Final Anónimo' customer record has been archived and shows a clearer message instead of failing unexpectedly. This helps store staff and administrators understand the setup issue quickly so the PoS can be restored with less disruption.
Original PR description
Before this commit, if the 'Consumidor Final Anónimo' partner was archived, attempting to open the PoS would lead to an error. This commit shows a clearer error message. opw-4506474
Luxembourg payroll now correctly calculates indexed wages for employees paid by the hour. This prevents payslips from showing a zero basic salary and helps ensure hourly employees are paid accurately.
Original PR description
## Issue: In Luxembourg companies, when creating an employee contract with an hourly wage, the indexed wage is always displayed as 0, causing the payslip to incorrectly show 0 for the basic salary. ## Steps to reproduce: 1. Create a new employee 2. Create a new contract for this employee with a hourly wage and Luxembourg: Regular Pay structure 3. Create a new payslip for this employee 4. Check the basic salary: it will be 0 ## Root cause: - The previous implementation did not account for hourly wage contracts when computing the indexed wage, leading to incorrect salary calculations. ## Solution: - Added logic to correctly compute the indexed wage for hourly contracts. - Adjusted related salary rules to differentiate between hourly and monthly wage types. - Updated views to reflect the correct unit (per month or per hour) based on the wage type. - Added a test case to validate the correct computation for hourly contracts. OPW-4460735
Fixed an issue where a parent company could be flagged for follow-up action, but its overdue invoice list appeared empty when invoices were issued to a child contact. The overdue invoice view now matches the follow-up status, helping accounting teams find and act on outstanding payments correctly.
Original PR description
Steps to reproduce: ------------------- 1. create 2 contacts : - one as a company (named parent contact for example) - and one as individual (named child contact) and set its parent company to the (parent contact). 2. create an invoice and set the partner to the (child contact). 3. set the invoice date and due date of the invoice to one month ago. 4. open the parent company (parent contact) -> accounting -> followup. You will see that Follow-up Status = in need of action, but if you clicked the Overdue Invoices, you will not find any invoices. Cause: ----- Since action_open_overdue_entries() introduced in V18.0, the window action filters invoices by partner set on the invoice while the Follow-up Status query checks the move lines which is always set to the parent company of the partner. Fix: --- Use commercial_partner_id instead of partner_id for the domain filter. OPW-4501051
The Belgian payroll declaration export has been corrected so the 274.XX XML file can be generated properly. This helps payroll teams submit the required Belgian reporting without being blocked by an export error.
Original PR description
STEP TO REPRODUCE: 1- Install The belgium payroll 2- Go to Payroll 3- Go to reporting > Declaration 274.XX 4- Click on generate xml file
This update fixes several issues in the Documents app details panel, including alias setup problems, unnecessary reloads, save validation errors, and fields that should be read-only for some users. This makes folder configuration smoother and helps prevent users from editing settings they should not change.
Original PR description
Commit 1: [FIX] documents: fix showing alias fields on details panel Reproduce: 1. Go to a folder on the kanban view 2. If not configured, configure Email Servers, then redo 1. 3. Clear the domain of…
Commit 1: [FIX] documents: fix showing alias fields on details panel Reproduce: 1. Go to a folder on the kanban view 2. If not configured, configure Email Servers, then redo 1. 3. Clear the domain of the alias 4. You are asked to configure servers again and you cannot set any value for the alias. Redirecting to the company settings is cumbersome and unlikely useful. Erp managers should be able to quick create here as in the company settings, as aliases are not company specific when receiving. Technically, removing `load=False` on `documents_unique_folder_id` (added when there is a `search_panel_default_folder_id` without `no_documents_unique_folder_id` in context) is necessary to load the existing `alias_domain_id`'s `display_name`. Commit 2: [FIX] documents: fix reloading only search panel It is not necessary to reload the model when we want to reload the search panel. Commit 3: [FIX] documents: fix validation error on saving container These records' methods are sometimes called when there is no point (and don't work), because the record is not part of the view. This can be seen for example when adding alias tags. Commit 4: Reproduce: As an internal user not documents manager, open the details panel on a company root folder with access_internal="edit". The fields are not rendered as readonly as they should. Test data updated in documents_spreadsheet. Task-4543501
The Documents app list view now correctly supports the full Select All behavior again. This makes bulk selection work as expected for users managing documents, reducing friction when selecting many records at once.
Original PR description
During sharepocalypse, we injected the ListView.Selection component from the control panel directly instead of using t-slots. This made our list view component limited to the features we want to support in the kanban view, so fewer than what the webclient supports. This commit restores the List View features on the list view. Task-4544692
The Italian Point of Sale localization now handles taxes that are added on top of the listed price, instead of only taxes already included in the price. This helps businesses using Italian POS calculate receipts and fiscal data correctly when tax-exclusive pricing is configured.
Original PR description
Related: https://github.com/odoo/odoo/pull/191637
This update stops helpdesk live chat bot question steps from being saved unless they include at least one answer option. This prevents errors when the bot is tested or used, making chatbot setup more reliable.
Original PR description
**Current behavior before PR**: It was possible to save a step with step_type set to "question selection" without any answers. However, this would cause an error when the bot was tested or executed. **Desired behavior after PR is merged**: A constraint has been added to ensure that a "question selection" step cannot be saved without at least one answer. **task-id**:4522835