Daily updates from Odoo
Tuesday, May 13, 2025
22 changes · 18.0
Resolved issues and error corrections
This update refreshes Odoo's spreadsheet component with several fixes that improve calculation accuracy, pivot table behavior, chart handling, and formula assistant usability. Users should see fewer spreadsheet errors, smoother editing, and better performance from reduced unnecessary screen updates.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/b3088aaea [REL] 18.0.28 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/b3088aaea [REL] 18.0.28 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/a42cc3d54 [FIX] evaluation: fix floating point precision [Task: 4766910](https://www.odoo.com/odoo/2328/tasks/4766910) https://github.com/odoo/o-spreadsheet/commit/225011e7e [FIX] tokenizer: support signed scientific exponent [Task: 4766910](https://www.odoo.com/odoo/2328/tasks/4766910) https://github.com/odoo/o-spreadsheet/commit/435787836 [FIX] Stores: skip unnecessary renderings [Task: 4781429](https://www.odoo.com/odoo/2328/tasks/4781429) https://github.com/odoo/o-spreadsheet/commit/f28aac049 [FIX] pivot: chart field with mix of text and numbers [Task: 4771482](https://www.odoo.com/odoo/2328/tasks/4771482) https://github.com/odoo/o-spreadsheet/commit/cf5bc138e [FIX] composer: empty composer assistant shadow [Task: 4774936](https://www.odoo.com/odoo/2328/tasks/4774936) https://github.com/odoo/o-spreadsheet/commit/64a0827af [FIX] pivot: pivot panel with multiple of same dimensions [Task: 4775660](https://www.odoo.com/odoo/2328/tasks/4775660) https://github.com/odoo/o-spreadsheet/commit/7f60d915d [FIX] sheet: make sheetName comparison case insensitive [Task: 4707398](https://www.odoo.com/odoo/2328/tasks/4707398) https://github.com/odoo/o-spreadsheet/commit/c2c5f5ce9 [REV] pivot: re-introduce pivot missing cell insertion [Task: 4707732](https://www.odoo.com/odoo/2328/tasks/4707732) https://github.com/odoo/o-spreadsheet/commit/a7aae8117 [FIX] Composer: keep focus with interacting with formula assistant [Task: 4771772](https://www.odoo.com/odoo/2328/tasks/4771772) 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>
DIN5008 report addresses now keep the intended font size and no longer inherit the customizable secondary color by mistake. This keeps printed quotations and similar documents visually consistent and easier to read when company report colors are changed.
Original PR description
### Steps to reproduce: - Install "l10n_din5008" - In Settings > Layout, select DIN5008 as the report and change the two possible colors - Create a quotation, print it - The address is colored ###…
### Steps to reproduce: - Install "l10n_din5008" - In Settings > Layout, select DIN5008 as the report and change the two possible colors - Create a quotation, print it - The address is colored ### Cause This [commit](https://github.com/odoo/odoo/commit/92e4c3cb3bec0b3d5537a50fd441a22fa6509ed1) reduced the size of the address by replacing `div` with `span` which is applied `font-size: 0.8em;`. But also `color: $o-default-report-secondary-color;` ([see](https://github.com/odoo/odoo/blob/d3e43681fd2b989ae7272731662cc3ac6a6d913b/addons/l10n_din5008/static/src/scss/report_din5008.scss#L47-L50)). ### Solution Don't use `span` in the CSS to select the text. Instead we create a new class `colored_address` to apply the color and apply the same font size on the entire address block. This way the addresses will always have the same font size and the color should only be applied where we want it to. Before:  After:  Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4725169) opw-4725169
The web control panel now keeps search bars and action buttons aligned at medium screen sizes instead of letting them drop below other controls. This provides a cleaner, more consistent layout for users working on tablets or smaller browser windows.
Original PR description
requires: https://github.com/odoo/enterprise/pull/84124 --- In the control panel, any middle element (whether it's the search bar or control_panel_actions) tends to drop below the rest of the content…
requires: https://github.com/odoo/enterprise/pull/84124 --- In the control panel, any middle element (whether it's the search bar or control_panel_actions) tends to drop below the rest of the content under the `lg` breakpoint due to missing spacing. Under `md`, these elements collapse into dropdowns or toggle buttons as expected. Prior to this commit, there was an issue with the spacing applied between `md` and `lg`. This was either caused by the `mt-md-0` class on the search bar or the specific breakpoint use of `gap-lg-3` To resolve the spacing issue between `md` and `lg`, we now apply the correct gap (by adding a `gap-2` alongside the `gap-lg-3`) on the control panel’s main div, and remove unwanted margin/padding classes. | | Before (between md and lg) | After (between md and lg) | |--------|--------|--------| | w/ searchbar |  |  | | w/ actions |  |  | task-4568501 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a display issue where empty integer fields could show the word "false" while a new record was being created in a list view. Users now see a cleaner, expected empty value before saving, reducing confusion during data entry.
Original PR description
Steps to reproduce: - Open a list view in which integer field having default value as false like ID field which has enable_formatting option as False. - Create a record Issue: - False is shown inside in integer field before saving. Reason: - When enable_formatting is False the value is returned and no checks are done. Fix: - A basic check to make sure we are sending out a number not a boolean. task-4700791
The Point of Sale upgrade process now skips unnecessary work when a record has no UUID. This prevents upgrades from taking longer than needed without changing day-to-day POS behavior.
Original PR description
We don't need to create values when the uuid is NULL. Otherwise we get a long running upgrade for no reason. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This pull request fixes several user-facing issues across Odoo, including spreadsheet date imports, point-of-sale order dates, default filters, scrap orders, and unsaved records when using the call button. It also improves compliance reporting in Australia, corrects India GST fiscal position behavior, and updates a live chat empty-state icon for consistency.
Original PR description
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
Fixed an issue where parts removed during a repair could be incorrectly added back to the repair when warehouse push rules created follow-up transfers. This prevents duplicate repair lines and keeps repair orders aligned with the actual inventory movement.
Original PR description
Steps to reproduce the bug: - Enable multi-steps route - Set a remove destination location (e.g., WH/stock/shelf1) on the repair operation type. - Create a new route: - name: Push route - Rule: -…
Steps to reproduce the bug:
- Enable multi-steps route
- Set a remove destination location (e.g., WH/stock/shelf1) on the repair operation type.
- Create a new route:
- name: Push route
- Rule:
- Action: push to
- Operation type: internal transfer - Source location: WH/stock/shelf1 - Destination location: WH/stock/shelf2
- Create a storable product “P1”:
- Update the Qty to one unit in WH/stock
- Create a sotrable product “C1”:
- Route: select the new created route → “Push route”
- Create a repair order:
- Customer: Azure interior
- Product: P1
- part:
- Remove one unit of C1
- Confirm the repair
- Start the repair
- End the repair
Problem:
The move of “C1” is duplicated and added to the repair
When a push rule triggers an internal transfer for a component removed during a repair, the newly created stock move wrongly inherits the "repair_id" from the original move.
This happens because the "repair_id" field was not excluded from being copied, resulting in the duplicated move being incorrectly linked to the repair order.
https://github.com/odoo/odoo/blob/11e69870db1c49d9a6af79ffd263e4e162b34b6b/addons/stock/models/stock_move.py#L1854-L1855
https://github.com/odoo/odoo/blob/11e69870db1c49d9a6af79ffd263e4e162b34b6b/addons/stock/models/stock_move.py#L968-L969 https://github.com/odoo/odoo/blob/11e69870db1c49d9a6af79ffd263e4e162b34b6b/addons/stock/models/stock_rule.py#L212
https://github.com/odoo/odoo/blob/11e69870db1c49d9a6af79ffd263e4e162b34b6b/addons/stock/models/stock_rule.py#L240
Solution:
By setting copy=False on the repair_id field, we prevent this unintended propagation.
opw-4689206This fix improves how Odoo detects browser disconnections, especially when a user goes offline. It prevents users from being incorrectly warned that their page is outdated after reconnecting when no notifications were actually missed.
Original PR description
The outdated page watcher checks whether bus notifications were missed when the bus reconnects after an unexpected disconnection. To do so, it checks if the last known notification id is still in the bus table. When the bus disconnects, the last notification id is saved. However, disconnect event is not correctly sent when switching from online to offline. This commit fixes this issue. follow up of https://github.com/odoo/odoo/pull/208625 backport of https://github.com/odoo/odoo/pull/209472 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
Live chat conversations can now be renamed correctly from the chat window and Discuss. The updated name is visible to all operators, helping teams identify conversations more easily, while visitors do not see the internal name change.
Original PR description
The rename in the chat window as well as in discuss is not working for livechat, this commit is fixing the issue. The name should now be visible by all operators but not to visitors task-4431259 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 fixes an error that could occur when inviting a new user from Settings in a fresh Odoo database. The invitation flow now checks whether optional email data is available before using it, so businesses can add users without interruption.
Original PR description
Steps to reproduce the issue: - Start a new database without installing any module - Log in - Go to Settings - Invite a new user => A traceback occurs due to the `email_normalized` field being accessed on `res.users`. This field is defined in the `mail` module, but `base_setup` does not depend on it. This commit adds a check to ensure that the `email_normalized` field exists before attempting to access it, preventing the traceback. opw-4784587
Product cards in the self-ordering flow now show the base product price before a customer chooses a variant. This avoids misleading prices when variants have extra charges and helps customers see accurate starting prices.
Original PR description
- Fix issue in `pos_self_order` module where the displayed product price was wrong when a product had variants (with creation "Instantly") and with an extra price. - The price displayed in the product card was the price of the first variant instead of the price of the product template (since we have not yet chosen a variant). opw: 4755565 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a small typo so JPEG images use the correct file extension in the web interface. The change helps avoid confusion or minor compatibility issues when image files are referenced or handled.
Original PR description
Typo fix. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can once again insert cells in spreadsheet pivot tables after a previous change removed that option. This restores expected spreadsheet behavior and helps users adjust pivot-based reports without workarounds.
Original PR description
This commit reverts the commit c4a481aa5fd4c4168e2ec0252bca46ac95cf1a67 which removed the ability to insert cells in pivot tables. Task: 4707732
The Documents app no longer applies an extra spacing workaround in its toolbar area. This keeps the layout aligned with the corrected shared interface behavior, reducing the chance of uneven spacing for users.
Original PR description
requires: https://github.com/odoo/odoo/pull/207461 --- This commit removes an obsolete padding on .o_control_panel_actions class in the `documents` module. The layout issue it was compensating for has now been properly addressed in the `web` module by applying the correct gap-* classes correctly on the control panel’s main div. task-4568501
Posting Kenyan OSCU credit notes no longer fails when a newly created, unposted credit note has not yet received its final document number. This helps users complete credit note workflows reliably without unexpected system errors.
Original PR description
**[FIX] l10_ke_edi_oscu: Handle None name of fresh unposted credit notes.** To reproduce the issue: - Create an invoice with some lines - Create the first credit note and change the product set on one of the lines or its quantity to trigger the fix piece of the code (do not confirm the credit note) - Create another credit note and try to post it -> Traceback The issue is caused by the fact that newly created moves generally have `None` in the `name` field, which is only populated after posting. This fix resolve this by replacing the string shown when the name field is None. opw-4779976
Fixed an issue where German DATEV exports could show outdated amounts for journal entries after debit or credit values were changed. This helps ensure exported accounting files match the posted accounting data and reduces reconciliation errors.
Original PR description
<b>Steps to produce :</b> 1) Install 10n_de_reports and switch to the German company 2) Create a journal entry from accounting with a credit and debit 3) Now update the credit and debit to a…
<b>Steps to produce :</b> 1) Install 10n_de_reports and switch to the German company 2) Create a journal entry from accounting with a credit and debit 3) Now update the credit and debit to a different value. 4) Post the journal 5) Go to "Accounting / Reporting / Audit Reports / General Ledger" 6) Download "DATEV DATA (ZIP)" and check "EXTF_accounting_entries.csv" <b>Issue:</b> The line for the created journal entry has a price_total of the previous balance even after updating the credit and debit values. <b>Cause:</b> When the user updates the 'debit' and 'credit' values for an `aml`, The `price_totals` value remains unchanged as it is not dependent on `balance`. So, it will show the previous value in the report line because we are taking the abs(aml.price_total) from the report data. <b>Solution:</b> We can add an extra check of the move type so that it will fall back to the else block, where the line_amount will take a value by calculating taxes from `aml.tax_ids.compute_all`. opw-4707567
Customer follow-ups now calculate due and overdue totals correctly when vendor payables are also present. This prevents vendor bill attachments or payable amounts from incorrectly affecting customer follow-up processing.
Original PR description
Since f82f9ab7b0351d0c1239c4cafa772bea8c17c6ff, the unreconciled aml domain includes payable accounts, which leads to issue when processing followup. Since we need to get the total value including payable accounts, we add `account_id` to the group by, this way we can conditionnally set the computed values regarding the type of account, but also get the total due/overdue amounts, by adding two computed fields. Steps to reproduce new issue: - create a vendor bill for Demo (Joel Willis), with due date 15 days ago - confirm the bill, print the PDF and attach it to the bill (as if we received it from the vendor) - now open the follow-up wizard from the partner form, and notice that the Vendor bill is attached opw-4664402
The Trial Balance report now calculates end balances correctly when users group results by an analytic plan. This prevents totals from being counted twice, giving finance teams more reliable reporting when using analytic accounting.
Original PR description
**Steps to reproduce:** - Install Accounting - Activate "Analytic Accounting" in Accounting settings - Go to "Accounting / Accounting / Journal Entries" - Create an entry with some analytic distribution - Go to "Accounting / Reporting / Audit Reports / Trial Balance" - Activate "Analytic Group By" in the settings of the report - Add the plan used in the analytic distribution in "Analytic" group option **Issue:** In the "End Balance" column, all the amounts are summed in the total column instead of being grouped by analytic plan. It results on a total amount being twice what it should be as the total column of each period is also included in the sum. This is a complement to previous fix for the grouping by analytic account where the analytic plan groupby case was forgotten: https://github.com/odoo/enterprise/commit/05bbab713c749b7d7450d5dbaf2eda1ba4f68712 opw-4648009
Mexican electronic invoice views now correctly show the supplier RFC when that field is added to invoice lists or forms. This fixes a display issue caused by reading a placeholder instead of the actual invoice attachment data.
Original PR description
Before this patch, adding `l10n_mx_edi_cfdi_supplier_rfc` (or any other field filled by `_fill_from_cfdi_values`) to a tree/form view showed the field empty.
Root cause
----------
`_fill_from_cfdi_values()` decoded the CFDI using `attachment.raw` with `bin_size=True` still in the context, so the ORM returned the placeholder `b'59.00 bytes'`. As a result,
`_decode_cfdi_attachment()` got an empty payload and returned `{}`.
Fix
---
Reload the attachment without the `bin_size` flag
The Philippine SLSP reports now refresh correctly when users change key inclusion filters, and the displayed active filter names stay accurate. Totals and exported amounts are also corrected, improving confidence in tax report review and submission outputs.
Original PR description
Fixed the following issues in the SLSP reports: - When filters "Including Partners Without TIN" and "Including Importations" are updated, the lines are not refreshed - When the filters above are updated, the name of the current active filters are not refreshed - When "Including Partners Without TIN" is enabled, the grand total does not consider lines from those partners - When exported, amounts from the previous row are carried forward to the current row, if the current row has no value for that amount 4748216
Users can now customize the Documents spreadsheet kanban view in Studio without triggering an error when changing sorting options. This keeps document-related views editable for configuration teams and avoids interruptions during setup.
Original PR description
Steps:
- install `web_studio` and `documents_spreadsheet`
- open documents
- open studio on the spreadsheet kanban view (the default one)
- change sort by field to "created on" field
- error
This commit replaces encodeURIComponent with window.encodeURIComponent,
because owl won't try to evaluate this variable via the context.
And so the fix
```js
get renderingContext() {
const context = super.renderingContext;
context.encodeURIComponent = encodeURIComponent;
...
}
```
In `DocumentsKanbanRecord` is no longer necessary.
The error occurred because `encodeURIComponent` was not found in the context object.
The reason this fix doesn't work with studio is the view is defined as
```xml
<kanban js_class="documents_kanban"/>
```
and studio does not load view js classes.
And since the fix is in `documents_kanban`, it's not taken into account. opw-4744886This fix stops users from creating an incomplete private key entry while configuring Argentine invoicing. It prevents an error during renewal request generation and helps companies complete their tax configuration more reliably.
Original PR description
The system failed to retrieve `company.l10n_ar_afip_ws_key_id.pem_key` because of quick create. Steps to Reproduce: 1. Switch to `(AR) Exento Company`. 2. Navigate to `Settings `> `Invoicing`. 3. Search for `Argentinean Localization`. 4. In `Primary Key`, clear the field, enter any value, and click Create. 5. Click `Generate Renewal Request`. Error: `TypeError: argument should be a bytes-like object or ASCII string, not 'bool'` Solution: Add `no_quick_create : True` for l10n_ar_afip_ws_key_id field. Sentry - 5999498377