Daily updates from Odoo
Friday, October 25, 2024
32 changes
1 change
Resolved issues and error corrections
Updated demo setup data for several country localizations so it is marked correctly when demo data is installed. This prevents unnecessary warning messages during automated checks and keeps localization modules cleaner for deployments.
Original PR description
Correctly set the flag `install_demo` in demo data for some localisation, they were triggering some warnings otherwise. RunbotError: 103691
1 change
Resolved issues and error corrections
This update aligns Odoo spreadsheet side panels with recent spreadsheet engine changes, improving consistency in menus, titles, fonts, and chart controls. It also adds test coverage for pivot autocomplete behavior to help prevent regressions in spreadsheet reporting features.
22 changes
Resolved issues and error corrections
This update restores outstanding accounts in the Ecuador chart of accounts that were available in earlier versions. It helps Ecuadorian companies keep expected payment and receipt flows correctly represented in their accounting setup.
Original PR description
Add the Outstanding Accounts we had in V17.4 and earlier versions --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents errors when users navigate to client actions that include a record in the URL breadcrumb. Invalid breadcrumb entries are now handled cleanly and removed, improving navigation reliability without changing user workflows.
Original PR description
In the case of a client action with a record id on the breadcrumb part of the url (`myClient/22` for instance). The controller should return the display name for the combination action + record id. And for the action alone (a multi-record if it was the case of a window action), the controller should return an error, to be removed from the breadcrumb. This is because client actions don't have multi-records views. Before this commit, the controller avoids returning anything, and an error raised. Now, the controller returns correctly an error, and it's correctly removed from the breadcrumb.
This fix moves shared VAT reference data into the Accounting module so Accounting can operate correctly even when the separate VAT validation module is not installed. It prevents setup issues for businesses that use Accounting without that optional module.
Original PR description
In #180744, we used the `_ref_vat` dictionary in the `account` module in order to provide a placeholder for the company and partner VAT. However, `_ref_vat` was defined only in `base_vat` which depends on `account`, not the other way around. As such, some users might want to use `account` without `base_vat`. We therefore move `_ref_vat` to `account` to allow this. task-none
Fixed a visual issue in Manufacturing where hovering over sample data in the Work Center Overview graph could show an unwanted black spot. This keeps the dashboard cleaner and avoids confusion when reviewing work center information.
Original PR description
In the Work Center Overview, when sample data is present on graph overview, a black spot appears on hover. This PR fixes the issue by preventing it.
This update fixes how text color is chosen inside website cards so it better matches the card background and surrounding page. It helps prevent hard-to-read or inconsistent text when cards inherit different background styles.
Original PR description
Bootstrap sets up background-color using `var(--card-bg)` but forces a color using `var(--body-color)`. It relies on `var(--card-color)` being used on the card-body... but there does not seem to be a…
Bootstrap sets up background-color using `var(--card-bg)` but forces a
color using `var(--body-color)`. It relies on `var(--card-color)` being
used on the card-body... but there does not seem to be a valid reason
to force the body one on the card above. Given the fact that card-color
is actually null by default, we end up with an inconsistent body-color
forced on the card whatever the value of `card-bg`. In the website case,
we often set up `card-bg` to inherit by default, which means the text
color would only work if the card was over the body background color.
By forcing card-color we enforce something consistent and controllable,
which by default will result as the card text color just following the
parent environment one (as `card-color` is null by default). We assume
that if `card-bg` is set, then `card-color` should be too.
Note: doing `color: var(--card-color)` would prevent overriding
--body-color in the card context (which is a bit weird) but it does not
work: it would override the color given by bg-xxx in the .card.bg-xxx
case, which is not what we want.The web interface now safely removes outdated breadcrumb entries when the server no longer returns data for them. This prevents users from seeing an error after refreshing certain pages, such as subcontracting views opened from a Bill of Materials overview.
Original PR description
When a breadcrumb contains a client action without a multi-record view, load_breadcrumbs skips this action, returning nothing for that key. However, on the frontend, we are not removing these…
When a breadcrumb contains a client action without a multi-record view, load_breadcrumbs skips this action, returning nothing for that key. However, on the frontend, we are not removing these controllers and attempt to access display_name each time the user reloads the page. This PR resolves this issue. If the backend result is undefined for a key stored in a breadcrumb cache, we remove it. Steps to test: We can open any sub-view from the BoM overview, as it is an action without a multi-record view. 1. Activate the Subcontracting feature in the settings tab. 2. Go to the Manufacturing app. 3. Click on the Product tab. 4. Select the Bills of Materials 5. Select Office Lamp BoM, for example 6. Click on BoM Overview 7. Click on Subcontracting 8. Refresh the page An error should appear, indicating an attempt to access display_name on an undefined object. Related Commit: https://github.com/odoo/odoo/commit/5047d1b3f4b2bd8061a15457350a0250bf93145f https://github.com/user-attachments/assets/57633318-cc24-4e0d-acb2-0f27f7ccd847 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when checking OCR processing status for accounting documents that have no tax group data. It helps users avoid unexpected crashes while invoices or documents are being processed by OCR.
Original PR description
The error occurs at [1] because we are attempting to fetch the first record of ``tax_groups`` from ``subtotal``, but ``tax_groups`` is empty. As a result, there is no valid index for…
The error occurs at [1] because we are attempting to fetch the first record of ``tax_groups`` from ``subtotal``, but ``tax_groups`` is empty. As a result, there is no valid index for ``subtotal['tax_groups']``, leading to an index error.
Traceback:
---
```
IndexError: list index out of range
File "odoo/http.py", line 2365, in __call__
response = request._serve_db()
File "odoo/http.py", line 1892, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1955, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1922, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2169, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 329, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 728, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 35, in call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 517, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "home/odoo/src/enterprise/18.0/iap_extract/models/extract_mixin.py", line 214, in check_ocr_status
record._check_ocr_status()
File "home/odoo/src/enterprise/18.0/iap_extract/models/extract_mixin.py", line 338, in _check_ocr_status
self.with_company(self.company_id)._fill_document_with_results(ocr_results)
File "home/odoo/src/enterprise/18.0/account_invoice_extract/models/account_invoice.py", line 732, in _fill_document_with_results
self._save_form(ocr_results)
File "home/odoo/src/enterprise/18.0/account_invoice_extract/models/account_invoice.py", line 938, in _save_form
self._check_total_amount(total_ocr)
File "addons/account/models/account_move.py", line 3738, in _check_total_amount
subtotal['tax_groups'][0]['tax_amount_currency'] += tax_amount_rounding_error
```
[1]- https://github.com/odoo/odoo/blob/c047bf3d89e630c98c61bc45df7391fe0732c343/addons/account/models/account_move.py#L3747
sentry-6012011017
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prFixes an issue where undoing an icon size change removed the icon instead of restoring its previous size. This makes editing website content more predictable and reduces accidental content loss.
Original PR description
**Behaviour before PR:** Steps to reproduce: - Add an icon. - Change it's size from 1x to 2x or whatever. - Try to undo. Icon is removed at all instead of resizing to 1x. **Behaviour after PR:** Now undo works properly after changing icon's size. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents pending local edits in embedded content from accidentally overwriting changes made by collaborators. It also streamlines how editor history updates are handled, improving consistency and reducing unnecessary processing.
Original PR description
### Issue: There was an issue when applying embedded state changes from a peer while there was a pending local embedded state change. Old unchanged properties of the local embedded change would…
### Issue: There was an issue when applying embedded state changes from a peer while there was a pending local embedded state change. Old unchanged properties of the local embedded change would overwrite peer changes. Instead, `commitStateChange` must check if a property has changed and replace the property only if that is the case. --- Furthermore, this PR introduces another small improvement: remove editor command "ADD_EXTERNAL_STEP" This command's purpose was to dispatch the event at each individual external step, but it was only used for embedded components, and `onExternalHistorySteps` resource (which handles every batch of collaborative steps) is enough for embedded components, and it is called less often. This commit therefore removes `ADD_EXTERNAL_STEP` command. Small fix to the table of content plugin, only `STEP_ADDED` has a `stepCommonAncestor` payload property, therefore commands which don't have it will use `this.editable` instead to search for new headings. task-4281356
This update makes automated guided flows behave correctly when pop-up windows are present, ensuring steps target the active window or close it when needed. This improves reliability of website, point of sale, eLearning, and asset validation tests without changing day-to-day user features.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: https://github.com/odoo/enterprise/pull/72756 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a visual issue where status bar arrows could appear broken or separated from their labels on touchscreen devices. It improves the appearance and usability of status indicators in form views, such as CRM leads, without changing business workflows.
Original PR description
On touchscreen, the interactive elements' padding is extended to make them easier to target with fingers. This commit fixes a glitch in the StatusBarField's arrow where the said arrow doesn't touch the bottom of its element. Further more, it reworks the shape to avoid having a small (but visible) gap between the "arrow" part and the "label" one (in addition to weird background, appearing border occasional glitches). Steps to reproduce (on touchscreen): - Open CRM app - Open a lead (form view) => check the statusbar field arrow is "broken" at the bottom and a gap between the arrow and the label task-4212908 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an access error that prevented users with Invoicing Administrator rights from creating a company branch. Branch creation now works without requiring extra technical accounting permissions, reducing setup friction for finance administrators.
Original PR description
**Steps to reproduce:** - Install Invoicing - Make sure that current user has "Invoicing: Administrator" rights - Go to the configuration of a company - Create a branch - Save **Issue:** An Access Error is raised because a write is performed on an "account. reconcile.model.line" record while loading the chart template during the creation of the branch, but the user has not the appropriate group (i.e. Technical/Show Full Accounting Features). The creation of a branch should be possible for a user with the "Invoicing: Admnistrator" rights, even if he has no edition right on "account.reconcile. model.line" model. opw-4247717 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Updates the spreadsheet component with fixes and usability improvements for charts, pivots, formatting, and collaboration. Business users should see more accurate chart labels and tooltips, more reliable pivot behavior, and smoother formatting actions in spreadsheets.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/788df9213 [REL] 18.0.2 Task: 0 https://github.com/odoo/o-spreadsheet/commit/977b8f265 [IMP] charts: limit trending…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/788df9213 [REL] 18.0.2 Task: 0 https://github.com/odoo/o-spreadsheet/commit/977b8f265 [IMP] charts: limit trending line degree range Task: 4207820 https://github.com/odoo/o-spreadsheet/commit/9f337f326 [FIX] Charts: Fix tooltip value when data is zero Task: 4251681 https://github.com/odoo/o-spreadsheet/commit/f51993403 [IMP] pivot: disable automatic autofill Task: 4256700 https://github.com/odoo/o-spreadsheet/commit/4f2950a8b [FIX] paint format: copy conditional formats Task: 4226853 https://github.com/odoo/o-spreadsheet/commit/b977d1f66 [FIX] test: skipped test in `renderer_plugin.test.ts` Task: 4276968 https://github.com/odoo/o-spreadsheet/commit/5953d29a4 [FIX] format painter: use a single history step Task: 4277362 https://github.com/odoo/o-spreadsheet/commit/8ee4266a9 [FIX] logs: log performance information at debug level Task: 0 https://github.com/odoo/o-spreadsheet/commit/a81189ba1 [FIX] chart: avoid overlapping values on charts Task: 4207889 https://github.com/odoo/o-spreadsheet/commit/2e95535f0 [FIX] pivots: don't translate pivot titles Task: 4239967 https://github.com/odoo/o-spreadsheet/commit/b50c0f286 [FIX] pivot: autocomplete dimension after positional Task: 4235329 https://github.com/odoo/o-spreadsheet/commit/ab8b491c9 [FIX] chart: cleanup tooltip title code Task: 4269632 https://github.com/odoo/o-spreadsheet/commit/187843ed1 [FIX] side_panel: unify font weight across side panels Task: 4194259 https://github.com/odoo/o-spreadsheet/commit/3a77fe228 [FIX] pivot: divergent collaborative duplicated pivot name Task: 4199949 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: 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>
The Sign app’s automated test was made more stable by ensuring it uses the correct signing template and by allowing more time for the test to complete. This reduces false test failures in the development pipeline without changing customer-facing features.
Original PR description
The shared_sign_request_tour, attempts to open some template and then click on some sign item. However it fails when it tries to click on the sign item, because it's not found. This happened because the tour sometimes open the wrong sign template (one with no items). This commit aims to fix the issue by archiving other sign templates when testing this flow. fixes runbot-98036
The Planning test data now gives Aaron's calendar a full-time hours value, so the expected workload indicator appears during automated checks. This helps keep the Planning schedule view reliable after changes to flexible working hours.
Original PR description
Before this commit, since the `full_time_required_hours` field is unset on the calendar of Aaron employee, the test `/planning:TestUi.test_01_ui` fails because no progressbar is displayed for that employee in the gantt view of `planning.slot` model, meaning the employee is not supposed to work. This commit sets `full_time_required_hours` on the calendar of `Aaron` employee to display the progressbar for that employee as it was expected before the rework of flexible hours for resources. runbot-99111
Non-timesheet analytic entries can now be edited without incorrectly triggering the timesheet-specific unit amount limit. This prevents unnecessary errors when business data uses larger values outside timesheets.
Original PR description
Before this commit, when the user alters the unit_amount field of an analytic account line which is not a timesheet and the amount has more than 6 digits then the user will get a user error saying he cannot encode a number with more than 6 digits for the unit amount field. This commit makes sure the check made on the unit amount is only made when the analytic line altered is a timesheet.
A Studio approval test was corrected so it targets the right button instead of accidentally triggering an app installation. This prevents crashes during automated checks and helps keep Studio validation reliable.
Original PR description
Before this commit, in single app mode (only studio is installed), a tour failed because we added approvals on a button on the Form View of Apps without specifying which. At the end of the day, a module got actually installed which triggered a lot of crashes, including the tour itself and a few low-level cursor-related functions. After this commit, we precisely specify in the tour on which button and function we make approvals for. The tour succeeds and there is no crash.
The quality measurement screen no longer shows a “Take measure” prompt when no scale or device is connected. This avoids confusing operators because they need to enter the measurement manually in that case.
Original PR description
When real time measure is not linked to a device (scale), no need to add the 'Take measure' label as the user must input a value
Financial report variants that depend on a matching chart of accounts are now available when users work across multiple companies. This prevents valid reports, such as localized profit and loss or balance sheet variants, from disappearing simply because several companies are selected.
Original PR description
### Steps to reproduce the issue: 1. In a Multi-Company setup with different Charts of Accounts, create (or find) a Report with Availability set to Chart of Account Matches - For example, you can use…
### Steps to reproduce the issue:
1. In a Multi-Company setup with different Charts of Accounts, create (or find) a Report with Availability set to Chart of Account Matches
- For example, you can use Belgian Profit and Loss or Balance Sheet reports
2. With multiple companies visible, including the one with the correct Chart of Accounts, go to the Root Report of the one you created (or found)
3. Under the Report Variants filter, the "coa" Report can not be found, or the filter is simply not displayed
### Explanation:
When looking for variants with `availability_condition="coa"`, the current condition is for `companies.mapped("chart_template")` to consist of only `account.report.chart_template`.
Before 18.0, `account.report` using `account.account.code` as filter retrieved accounts from all active companies. `account.account` with a `code` corresponding to the request, even if their function is not the same, would be added into the report, falsing the amounts as a result.
### Fix reasoning:
Since 18.0, with commits odoo/odoo@854c3b27aa5476c208572f19e64f8f3364bfc381 and odoo/enterprise@92bf8e36c40f99c697318ddc9784cde0a1b3736e, `account.account.code` became company dependent, and only `self.env.company` is used to retrieve them in `account.report`.
Thanks to this change, `availability_condition="coa"` does no longer require a restriction to environments where all companies have `account.report.chart_template`.
opw-4263627Automated product walkthroughs now close any open pop-up window when the next item to interact with is hidden behind it. This helps internal testing flows run more consistently for areas such as Helpdesk timesheets and point-of-sale account settlement.
Original PR description
In this commit, we close active modals when the focussed element of a step (trigger) is below the modal. https://github.com/odoo/odoo/pull/185231
The HR contract dashboard now uses contract start and end dates instead of fixed dates or current status when showing historical contract data. This makes past reporting more accurate, including for archived employees who should still appear in historical figures.
Original PR description
Column L and M were static (hardcoded dates) Task: 4268760
Spreadsheet side panel headings now use a shared bold style, making the interface more visually consistent across filters, lists, pivots, and related panels. A related test was also added to help ensure pivot autocomplete behavior remains reliable.
Original PR description
The font weight of this side panel was previously inconsistent with other side panels. This commit introduces a constant for the side panel title font weight to ensure consistency and replaces Bootstrap classes with custom class o-fw-bold. Task: 4194259
8 changes
Resolved issues and error corrections
This pull request addresses several minor issues impacting the shop floor experience in Odoo Enterprise. Specifically, it corrects inaccurate quantity displays during production steps and improves filtering of workorders linked to shop floor workcenters, ensuring data consistency and a more reliable workflow. These changes enhance the accuracy of production tracking and reporting.
Original PR description
Collection of small shop floor fixes for v17. Please refer to the individual feature commits for details.
This update resolves a visual bug where the 'Start' button on the sign document flow was obscured. The issue stemmed from a stacking order problem with the sign navigator item. By increasing the z-index, the 'Start' button is now correctly displayed and functional, ensuring a smooth user experience.
Original PR description
Versions: ------------ 17.0 Steps to Reproduce: ----------------------------- 1. go to sign document 2. add sign item in document 3. click on sign document now 4. click on start seems be not working properly 5. video link: https://nimb.ws/WKMlFjB Issue: ------- stacking order of sign item navigator seems to be low Solution: ------------ increase z-index value of `o_sign_sign_item_navigator`. task-4191542
This update fixes a bug where the 'past' filter on the Odoo portal's appointment section was being unintentionally removed from the URL, causing users to lose their filter settings. The fix ensures that the 'past' filter remains active and persistent across multiple pages of appointments, improving the user experience. This resolves a reported issue impacting appointment scheduling functionality.
Original PR description
steps: -> populate the portal user's appointments with enough appointments to have multiple pages in the portal -> go on the portal, filter by "past" -> go to page 2 --> the filter by "past" is removed from the url opw-4236596 Forward-Port-Of: odoo/enterprise#71965
This update resolves an issue where Brazilian service invoices were incorrectly generating HS codes, leading to validation errors with Avalara. Avalara support clarified that service invoices require periods to be kept but leading zeroes to be removed, a change now implemented to ensure compliance with local tax regulations.
Original PR description
Some cities that process service invoices [1] have stricter hsCode validations than others and error on the hsCode we send. Avalara requires periods to be removed from the hsCode field for goods transactions. This was already the case. For services they inform us that the periods should be kept but leading zeroes should be stripped [2]. [1] e.g. Belo Horizonte [2] There's no documentation on this. This was specified by Avalara support in an internal support ticket. opw-4009684
This update fixes an issue where quality checks weren't visible for finished lots linked to manufacturing orders. The change ensures that the quality check button is always displayed when a finished lot's serial number is accessed, streamlining the process of verifying product quality.
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”:
- Tracked with SN
- Create a BoM:
- no need to component
- Add an operation “OP1” with steps
- Control by product
- Create a manufacturing order for one unit of P1
- Confirm the MO
- Go to the shop floor and process “OP1”
- Validate the MO
- Go to the SN of P1
Problem:
The quality check smart button is not displayed, while the SN is linked to a QC.
opw-4189396This update fixes a reporting issue where the Aged Payable report incorrectly displayed partners with zero balances when storno accounting was enabled. The fix addresses a technical detail in how the system checks for open balances within storno transactions, ensuring accurate reporting of outstanding amounts.
Original PR description
To reproduce: 1) Activate storno accounting in the settings 2) Create a new partner 3) Create a Vendor Credit Note for that partner, post it 4) Register a full payment for the credit note 5) Open the Aged Payable report ====> The partner appears in the report, even though it has an amount of 0. It shouldn't, since there is no open amount for it. This was due to the way we checked the amount of the credit note was zero. In storno, the payable line of the refund is a negative credit instead of being a debit. Still, it's linked through the debit_move_id field to the partial reconcile. So, removing the debit from the debit or credit from the credit wasn't enough in that setup. opw-4166891 Forward-Port-Of: odoo/enterprise#72422
This update resolves an issue where bank reconciliation in multiple currencies (like USD and MXN) could lead to small, unmatched amounts, particularly impacting EDI validation for localized accounting systems. The change allows users to adjust exchange amounts within the bank reconciliation process, ensuring accurate matching and compliance. This improves the reliability of financial reporting.
Original PR description
Let's say you have: - One statement line of 3000 USD / 1000 MXN (rate 1:3) - Three invoices of 1000 USD / 500MXN (rate 1:2) => If you reconcile in the bank widget, the statement entry amounts will be divided by 3 ending with 3 lines of 1000 USD and 333.33 MXN leaving a 0.01 unmatched. This can be an issue for the validation of payment EDI for localizations like Mexican one. This PR gives more flexibility to user when dealing when bank reconciliation in multiple currencies by allowing to edit amounts on generated exchange moves to allocate this small difference. opw-4128899
This fix prevents the salary configurator from overwriting existing employee user names and identifiers (like trigrams). When an employee already has a user account set up with specific naming conventions, the system will now preserve that information instead of replacing it with values entered in the salary configurator.
Original PR description
Purpose ======= If there is already a user for a given employee (including a trigram for instance), we should avoid erasing it to the value the employee encodes on the salary configurator.