Daily updates from Odoo
Friday, June 6, 2025
31 changes
9 changes
Resolved issues and error corrections
Bank statement lines now correctly match a customer or vendor even when the same partner has multiple linked bank accounts with the same account number. This prevents valid matches from being missed during bank reconciliation, reducing manual correction work.
Original PR description
There was a corner case where a single partner should match a statement line but would not. The case was when the statement line account number matches multiple accounts that are linked to the same active partner. This commit fixes this issue by relying on the number of partners instead of the number of banks while matching. task-4826477
The EC Sales List warning now more accurately identifies truly duplicated VAT numbers. This prevents businesses from seeing unnecessary duplicate VAT alerts when a customer has both invoices and refunds in the same reporting period.
Original PR description
Fixed the computation of `is_vat_duplicated` to avoid false positive in case of partners having both invoices and refunds in the selected period.
Point of Sale IoT auto-configuration now prefers USB-connected receipt printers over network printers when assigning a printer. This helps improve receipt printing reliability during POS setup by choosing the more dependable connection type first.
Original PR description
Currently when auto-configuring IoT with pos printers we take the first available receipt printer we assign to PoS we chose. However if the printer is usb-connected it should take priority over network printers for the reliability reasons. task-4853231
Opening the return kanban now applies its expanded group setting only to that specific return view. This prevents unrelated kanban views from being unintentionally changed, keeping other workflows consistent for users.
Original PR description
Before when we would open the return kanban, it would set for every other kanban the variable MAX_NUMBER_OPENED_GROUPS to max integer. This is not what we want, we only weant to restrict that to the Return Kanban Model only not every relational model.
The AI chatbot now handles failed embedding requests gracefully instead of showing a system traceback. This helps users continue receiving clear error feedback when document-based AI responses cannot be generated.
Original PR description
Problem: When calling `/v1/embeddings`, if the request fails for any reason, the `response` will be `None`. Attempting to access `response['data'][0]['embedding']` then results in a traceback. Solution: Check if `response` is `None` before attempting to extract the embedding from it to ensure graceful error handling. Steps to reproduce: 1. Add a new AI Agent. 2. Attach a document to the agent. 3. Click "Test" to open the chatbot. 4. Send any message. → A traceback occurs due to a failed embeddings request. opw-4817213
Bank reconciliation now automatically handles invoices that are slightly higher than the related bank payment when the difference is within the allowed tolerance. Users can keep the invoice fully reconciled, leave the small difference on the statement line, and more easily assign that leftover amount using reconciliation models, reducing manual cleanup and improving reconciliation counts.
Original PR description
**[FIX] account_accountant: fully reconcile the move_line if amounts close** If an invoice has a bigger amount than the bank line but within the tolerance of 3%, reconcile the invoice automatically…
**[FIX] account_accountant: fully reconcile the move_line if amounts close** If an invoice has a bigger amount than the bank line but within the tolerance of 3%, reconcile the invoice automatically and leave the difference in the suspense account. The statement line will be partially matched. **[IMP] account_accountant: allow filling with reco model on partial** So, with the idea of directly reconciling the aml and leave the partial on the statement line if the amount is close, we want an easy way for a user to assign these leftovers. Before this commit, when you clicked on the reconciliation model after partially putting amount, it would try to override everything on the statement line and putting what is said by the model. Now, we leave the amounts previously reconciled and complete it with the model. **[IMP] account_accountant: automatic model for fees** For the leftover from the full reco of the invoice that are left on the statement line, we propose a new reconciliation model that will be put when we encounter these situations. We create it when the user is in the case of the 3% and that he put the leftover on a specific account. **[FIX] account_accountant: line auto-reconciled does not change count** To reproduce: Create a statement line of 1000 for partner A Create an invoice of 1000 for same partner Create a statement line of 1000 for same partner => The invoice is now auto-reconciled. But the Count of Reconcile for the first st_line is still 1 task-4749343
Shop floor users now see manually added components on the correct manufacturing order and related work orders. Untracked component quantities are easier to edit or undo, and worksheet instructions for component quality checks open reliably.
Original PR description
For untracked component moves in the shop floor:
- No longer show move lines
- Show pencil button instead of add button, clicking opens edit quantity
- Apply sets picked (and passes check if applicable)
- No remove button, instead:
- Add an undo button to unreserve and reassign the move, and set picked to false (and sets quality status to none on check if applicable)
Also: make sure to display moves created via Add Component in the shop floor on the relevant MO card (as well as all WOs of this MO)
task-4760982This change restores a filter in bank reconciliation so entries without partners no longer inflate or slow down the displayed reconciliation count. Users should see fewer misleading counts and faster loading when checking items to reconcile.
Original PR description
This commit will revert part of this commit: https://github.com/odoo/enterprise/commit/6a2716e4d58f3b8d913a785f263e910eb5334ea0 Where we removed a domain that was hiding the number of reconcile entries for line that don't have partners. The number showed was wrong (for example displaying 15 but you have like 70 in the wizard) and the perf impact was huge (18s in average to compute the reconcile number) no task id
Portal users will no longer see the Invite button when sharing Knowledge articles. This prevents them from triggering an access error for an action they are not allowed to use, improving the sharing experience.
Original PR description
Currently, the "Invite" button is visible to portal users. When a portal user clicks this button, the system attempts to open a wizard using the `knowledge.invite` model. However, because portal users lack access rights to this model, the system raises an "Access Error". Steps to reproduce: 1. Log in as a portal user 2. Open an article 3. Click on the "Share" button 4. Click on the "Invite" button => Traceback: Access Error on the model `knowledge.invite` To fix the issue, we will simply hide the "Invite" button for the portal user as it was the case before the permission panel refactoring. See: odoo/enterprise#76261 Task-4636494
2 changes
Resolved issues and error corrections
Search tests for appointments and knowledge articles have been updated to work with the redesigned website builder. This helps ensure those website search experiences remain reliable after layout changes.
Original PR description
*= appointment, knowledge The ```test_searchbar_within_appointments, test_searchbar_within_knowledge_articles``` tour was previously broken due to DOM structure changes introduced by the new website builder and was consequently disabled. This commit updates the tour steps to align with the new DOM and re-enables the associated test.
QR codes on localized invoices and delivery documents now handle the quiet mode setting consistently, adding the expected white border by default. This improves barcode readability but may slightly change the visual layout of documents that include QR codes, so affected teams should verify printed and digital reports.
Original PR description
Before the fix: - method documentation outdated - quiet mode for QR Code was inverted and only add white border when disabled. After the fix: - method documentation aligned with the code - quiet mode works for QR code like other type Notice that this change, can have an impact for all usage of QR type as the default format has now the white border. Need to be checked with PO and team using barcode (stock, accounting) Odoo: https://github.com/odoo/odoo/pull/209386 opw-4785714
20 changes
Resolved issues and error corrections
Tasks created from service products now use the product name unless the sales order line description was manually customized. This prevents standard sales descriptions from incorrectly becoming task names, keeping project records clearer for users.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Have a service product that creates a task on order confirmation; 2. give it a sales description; 3. add it to an order and confirm. Issue ----- The task is named using the sales description. Cause ----- Commits 47d223759f07 & c3877b2acd74 attempted to restore previous task/display name behavior by using the second line of the SOL description as the task/display name. This behavior only happened in previous versions when the line description was manually modified. Solution -------- Only use the new behavior if the line name isn't the same as the default. opw-4634149
This change removes a previously introduced US tax report variant because it caused crashes during deployment. The revert keeps the stable version reliable while the underlying dependency issue is addressed in a future release.
Original PR description
This reverts commit 6d0d0e58b9f2c4ee2519e8e960e156c7e7be9841. The deployment of the reverted commit revealed an error: l10n_us_reports does not depend on l10n_us_account (only l10n_us), so it can't override the US tax report in data and crashes. We sadly cannot fix that in stable ; we'll do it in master.
This update brings the embedded spreadsheet component up to its latest maintenance version. It fixes issues with waterfall chart values, find-and-replace navigation, moved row or column ranges, clipboard handling, and touch scrolling, making spreadsheet work more reliable for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/bef1e2bd5 [REL] 18.0.32 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/bef1e2bd5 [REL] 18.0.32 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/9ebffc594 [FIX] waterfall: wrong show value for waterfall chart [Task: 4812692](https://www.odoo.com/odoo/2328/tasks/4812692) https://github.com/odoo/o-spreadsheet/commit/fd13ed000 [FIX] Find&Replace: target correct next match [Task: 4817971](https://www.odoo.com/odoo/2328/tasks/4817971) https://github.com/odoo/o-spreadsheet/commit/a2ec5297a [FIX] clipboard: remove empty code [Task: 4743039](https://www.odoo.com/odoo/2328/tasks/4743039) https://github.com/odoo/o-spreadsheet/commit/8eebf6d8b [FIX] MOVE_COLUMNS_ROWS: adapt range on col/row move [Task: 4743039](https://www.odoo.com/odoo/2328/tasks/4743039) https://github.com/odoo/o-spreadsheet/commit/a00a9aaf7 [FIX] Spreadsheet: Fix touch scroll [Task: 4829283](https://www.odoo.com/odoo/2328/tasks/4829283) Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
This change standardizes how tab width values are written in HTML editor tests so they match the way browsers format them. It helps prevent avoidable test failures without changing user-facing editor behavior.
Original PR description
Description of the issue this PR addresses: - Trailing zeros in tab width styles cause test mismatches with browser-normalized values. Current behavior before PR: - Tests may use widths like "24.0px" which differ from browser output "24px". Desired behavior after PR is merged: - Tab widths use Number() conversion to match browser formatting and avoid test mismatches. task-4853029 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents the editor from accidentally recording link popover changes in the undo history when users press Ctrl+Z in Chrome. It keeps undo behavior predictable and avoids confusing link changes appearing or disappearing after the popover is closed.
Original PR description
Problem: In Chrome, when focused on the first input inside the link popover, pressing `Ctrl+Z` (undo) triggers `beforeinput` and `input` events on the editable element, even though the selection is…
Problem: In Chrome, when focused on the first input inside the link popover, pressing `Ctrl+Z` (undo) triggers `beforeinput` and `input` events on the editable element, even though the selection is within the popover input, not the editable area. This leads to `addStep` being incorrectly triggered, adding DOM changes like the `a` tag to the history stack and resulting in unintended undo behavior. Note: This issue doesn't occur in saas-18.2+ where the `a` tag is only added upon confirming the change, thus no mutation is pushed to history while editing. Solution: Intercept the `beforeinput` event on the editable and call `preventDefault()` if the selection is not currently within the editable, thereby stopping history pollution. Steps to reproduce: 1. Type `/Link` and open the link popover. 2. Focus is automatically set on the first input. 3. Press `Ctrl+Z`. 4. Click on the editable area to close the popover. 5. Repeatedly press `Ctrl+Z` → the `a` tag is added/removed, corrupting undo history. opw-4800278 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Date and date-time columns in list views now get a little extra space when shown in bold. This prevents values from being cut off with ellipses, making records easier to read across languages and systems.
Original PR description
This commit is a followup of [1] where we compute the minimum required width for date and datetime fields in list views. However, it didn't take into account decorations that could be applied to list views, in particular `decoration-bf`, which may, for certain fonts, increase the width of date values. We tested all languages, on different systems (thus different standard fonts), and an increase of 5% of the computed width is enough on those systems to display date and datetimes without an ellipsis, even in bold. [1] odoo/odoo#210584 No task, issue reported on our prod 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
Manufacturing users can now clear the End Date on productivity loss records without triggering an error. This prevents an avoidable form crash and keeps work center loss tracking smoother when dates are edited or removed.
Original PR description
If the `End Date` is already defined and the user removes that date in the form view of productivity losses, an error is generated. Steps to reproduce: --- - Install the `mrp` module - Manufacturing > Configuration > Work Centers > Open any of the Work Centers - In the form view of Work Center, click on the `Lost` stat button - Open a new Productivity Loss form, set a future date in `End Date`, click elsewhere, then clear the `End Date` Traceback: --- `TypeError: unsupported operand type(s) for -: 'bool' and 'datetime.timedelta'` If the end date is missing, we will return from the method sentry-6641245276 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix restores Demo express checkout in eCommerce by correctly reading the available delivery methods after an internal API change. Customers using the demo payment flow should no longer be incorrectly blocked with a message that no delivery method is available.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Enable Demo express checkout; 2. pay with Demo Express checkout in eCommerce. Issue ----- Validation error: No delivery method is available. Cause ----- Commit bf8d08cd22b5 changed the express checkout delivery method RPC API. Instead of an array, `availableCarriers` is now an object with a `delivery_methods` attribute. Because it checks the length of an object, which is `undefined`, Demo express checkout incorrectly believes no delivery methods are available. Solution -------- Check the length of `delivery_methods` instead of `availableCarriers`.
Fixed an issue where links from email notifications could lose their access token or send users to the wrong destination after login. Internal users, portal users, and visitors are now routed to the right place more reliably, improving access to shared records and reducing confusing redirects.
Original PR description
Global purpose is to make mail/view controller more resilient by improving redirections when not having access to the record. Notably * correctly route internal users to discuss, portal users to /my and unlogged users to login; * keep original mail/view route when performing redirection after login so that we try the routing again; * fix various issues in redirect computation, such as lost access token parameter or partial reconstruction of URLs; Improve test coverage. Task-
A test related to refund orders with delayed shipping costs in Point of Sale was corrected. This helps ensure future updates do not break refund cost calculations, with no direct impact on daily users.
Original PR description
…talcost this commit fixes the test test_pos_order_refund_ship_delay_totalcost from PR https://github.com/odoo/odoo/pull/210868 opw-4614503
This update fixes an internal automated test for point of sale refunds involving shipping delays and total cost calculations. It helps keep quality checks reliable so future changes to the point of sale flow can be validated with greater confidence.
Original PR description
this commit fixes the test test_pos_order_refund_ship_delay_totalcost from PR #210868 opw-4614503
The EC Sales List report now checks for duplicate VAT numbers only among partners included in the selected reporting period. This prevents misleading warnings caused by customers or vendors that are outside the report scope.
Original PR description
- Fixed the computation of `is_vat_duplicated` to only consider partners within the selected reporting period. - Moved the duplicate VAT detection logic to the backend to ensure only records relevant to the report are checked. - This avoids false positives by excluding VATs from partners not shown in the report. no-task
Users outside the Mexican localization who try to use the Mexico global invoicing action now receive a clear explanation instead of a generic validation error. This reduces confusion when the action appears for non-Mexican companies because of shared localization setup.
Original PR description
Currently, there is an button related to the MX localization that can be accessed outside the localization if `l10n_mx` is installed. Steps to reproduce: ------------------- * Install `l10n_mx` * With company other than MX, go to the pos orders * Select multiple pos orders, select the button **Actions** > Observation: The action `Create Global Invoice` is visible * Select the action `Create GLobal Invoice` > Validation error, Selected orders are not eligible for CFDI Why the fix: ------------ This is an `ir.actions.server` which is introduced in the `l10n_mx` localization. It does not look possible to add `invisible` on the xml for the action. https://github.com/odoo/odoo/blob/2540155b5e00a6547fcceee4af4b83f385dcd4ad/odoo/addons/base/models/ir_actions.py#L179-L215 What we can do instead is to throw a more explicit error when trying to use the action outside the MX loca. opw-4805257
This change rolls back a recent US tax reporting update because it caused crashes during deployment. It keeps the stable version working while the underlying dependency issue is addressed in a future release.
Original PR description
This reverts commit 1e8f79bd0a5e53f34cd8dfaea0a4d3e199aca0c7. The deployment of the reverted commit revealed an error: l10n_us_reports does not depend on l10n_us_account (only l10n_us), so it can't override the US tax report in data and crashes. We sadly cannot fix that in stable ; we'll do it in master.
Swedish point of sale orders no longer incorrectly show an invalid tax warning when products use approved tax rates. This prevents unnecessary checkout interruptions for businesses using the Swedish Fiscal Data Module.
Original PR description
Steps: ----------- - Install the pos_l10n_se module. - Open a POS session with the Swedish Fiscal Data Module configured in the IoT Box settings. - Add a product to the order. Issue: ------------- - An error popup states: "Product has an invalid tax amount. Only 25%, 12%, 6% and 0% are allowed." even when the product is correctly configured with one of these tax rates. Cause: ---------- - The validation logic incorrectly applies conditions for displaying the error popup, mistakenly rejecting valid tax rates when the PoS receipt label is set. FIX: ----------- - Updated the tax validation conditions to handle products correctly, allowing tax rates, and preventing false error messages. task-4687156
Swiss ISO20022 payment exports now correctly handle SEPA and ISO20022 payment types used within the Swiss standard. This helps Swiss businesses generate compliant bank payment files and avoids rejected or incomplete payment instructions.
Original PR description
Following page 35 of the documentation here https://www.six-group.com/dam/download/banking-services/standardization/sps/ig-credit-transfer-sps2024-2.1.1-en.pdf In Switzerland, SEPA and ISO20022 are considered as subsets of the Swiss standard, and it is hence possible to include within the Swiss file nodes that are generated following these formats. We didn't support that before this commit. To allow that, we also remove the ability to force the value of the ChrgBr node when using SEPA ; other values as SLEV are not supported by that format anyway. opw-4535542
Belgian Intrastat Goods exports now correctly include only goods and exclude service products. This prevents inaccurate XML or CSV reporting for companies submitting Intrastat goods declarations.
Original PR description
**Steps to reproduce:** - Install accountant and l10n_be_intrastat - Switch to a Belgian company (e.g. BE Company CoA) - Create a "Goods" product: * Product Type: Goods * Commodity Code: [any] *…
**Steps to reproduce:**
- Install accountant and l10n_be_intrastat
- Switch to a Belgian company (e.g. BE Company CoA)
- Create a "Goods" product:
* Product Type: Goods
* Commodity Code: [any]
* Country of Origin: [any]
- Create a "Service" product:
* Product Type: Service
* Commodity Code: [any]
* Country of Origin: [any]
- Create an invoice:
* Customer: [an European customer (not from Belgium)]
* Invoice Lines: 1 line with the goods and 1 line with the service
- Confirm the invoice
- Go to "Accounting / Reporting / Audit Reports / Intrastat Reports"
- Select "Intrastat (Goods)" as Report
- Select the correct date to display the created invoice
- Click on the "XML" or "CSV" button to export the report
**Issue:**
In the exported file, the service product is also included. Only the goods should be in the exported file.
**Cause:**
Since a previous fix for "l10n_be_intrastat", "product_type_condition" condition is overridden with `SQL("AND (account_move_line.product_id IS NOT NULL)")` (https://github.com/odoo/enterprise/commit/1108467dcaedfacc28bf1751f6f8f4fc10f84043)
The original condition was:
`SQL("AND (account_move_line.product_id IS NULL OR prodt.type != 'service')")`
The part excluding the service products is removed by the overriding condition.
opw-4824257Fixed an issue where messages linked to deleted records without an active discussion thread were not cleaned up correctly. This helps keep related communication data consistent and prevents leftover messages from deleted business records.
Original PR description
https://github.com/odoo/odoo/pull/209644
This fixes unwanted extra spaces in product or service descriptions on Uruguayan electronic invoice documents. It helps keep customer-facing invoice details cleaner and more consistent without changing business workflows.
The Documents search panel now shows folder hierarchies correctly when users open documents from other apps such as Fleet or Project. The “All” folder is also consistently available, making it easier for users to browse and find the right documents.
Original PR description
Backport of #84244 Issues: i) When coming from another app (Fleet, Project, etc.), the search panel does not correctly display the subfolders. ii) The “All” folder should always be displayed. Technical Reason: i) Correctly set folder_id as False for documents whose parent folder is inaccessible, ensuring a clean and accurate folder hierarchy in the search panel. ii) It was intended, add a condition when coming from other modules 'All' should not display. After this commit: i) Correctly display folders in hierarchy in a search panel when coming from other modules. ii) 'All' folder should always be displayed. Follow up of 4669259 Task-4836554