Wednesday, September 25, 2024
23 changes · saas-17.4
Resolved issues and error corrections
Fixes an issue where a paid Point of Sale order could fail to sync if it had not already been synced in a newly opened session. This helps ensure completed sales are reliably recorded without staff encountering avoidable errors.
Original PR description
Before this commit, attempting to sync a paid order that had not been previously synced in a newly opened session would result in an error due to the absence of the `session_id`. opw-4182909 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects how SAFT test settings are applied so shared test setup no longer unintentionally affects all related tests. It helps keep automated checks accurate and reduces false failures in validation runs.
Original PR description
The common SAFT test class has tags that will be passed to all inheriting test classes. We don't want that. Hence, we remove to tags and let the lower level test classes define those test tags. Runbot error 99192
Miscellaneous changes
## Pull Request HOOT (PRHOOT) - part 23 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10
Original PR description
## Pull Request HOOT (PRHOOT) - part 23 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4:…
## Pull Request HOOT (PRHOOT) - part 23 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10: https://github.com/odoo/odoo/pull/155639 Part 11: https://github.com/odoo/odoo/pull/156255 / https://github.com/odoo/enterprise/pull/58135 Part 12: https://github.com/odoo/odoo/pull/156869 Part 13: https://github.com/odoo/odoo/pull/158384 / https://github.com/odoo/enterprise/pull/59019 Part 14: https://github.com/odoo/odoo/pull/158916 Part 15: https://github.com/odoo/odoo/pull/160292 / https://github.com/odoo/enterprise/pull/59971 Part 15.5: https://github.com/odoo/odoo/pull/166463 Part 16: https://github.com/odoo/odoo/pull/166311 Part 17: https://github.com/odoo/odoo/pull/168328 Part 18: https://github.com/odoo/odoo/pull/171004 / https://github.com/odoo/enterprise/pull/65657 Part 19: https://github.com/odoo/odoo/pull/171242 / https://github.com/odoo/enterprise/pull/65767 Part 20: https://github.com/odoo/odoo/pull/173332 / https://github.com/odoo/enterprise/pull/66895 Part 21: https://github.com/odoo/odoo/pull/174337 Part 22: https://github.com/odoo/odoo/pull/176777 / https://github.com/odoo/enterprise/pull/68721 Enterprise: https://github.com/odoo/enterprise/pull/69728 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179660
Problem: The `role` attribute is being retrieved from the `raw` field, but when the page is refreshed, all attributes (including `role`) are set in the `cashier` object, not in `raw`. Steps to reproduce: - Set up a PoS session with the "Log in with Employees" setting enabled. - Use a User/Employee with Administrator PoS access (e.g., Mitchell Admin). - Start a PoS session. - Refresh the page. - Click the "i" icon to see more information about a product. - A traceback occurs. opw-4
Original PR description
Problem: The `role` attribute is being retrieved from the `raw` field, but when the page is refreshed, all attributes (including `role`) are set in the `cashier` object, not in `raw`. Steps to reproduce: - Set up a PoS session with the "Log in with Employees" setting enabled. - Use a User/Employee with Administrator PoS access (e.g., Mitchell Admin). - Start a PoS session. - Refresh the page. - Click the "i" icon to see more information about a product. - A traceback occurs. opw-4120414 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180841
Steps to reproduce: - Create 2 websites and give them a different domain - Go to any product page (shared between all websites) - Check the source code with https://validator.schema.org/: the URL and image microdata start with the wrong domain. => Case 1: if no company_id was set on the product, the URL returns `web.base.url`. => Case 2: if a company_id is set and that company has a website_id set, both websites return the company's website domain. This commit makes sure to return the cu
Original PR description
Steps to reproduce: - Create 2 websites and give them a different domain - Go to any product page (shared between all websites) - Check the source code with https://validator.schema.org/: the URL and image microdata start with the wrong domain. => Case 1: if no company_id was set on the product, the URL returns `web.base.url`. => Case 2: if a company_id is set and that company has a website_id set, both websites return the company's website domain. This commit makes sure to return the current website domain. opw-4113559 Forward-Port-Of: odoo/odoo#179455
On accounting reports you can set the availability based on various conditions. The `availability_condition` field is a stored computed one that depends on `country_id` since [this commit]. Since the field also has an `onchange` registered that empties the `country_id` field when the `availability_condition` is not `country`, setting the field to anything else than `country` triggers a recomputation of the `availability_condition`. This `compute` function defaults to setting the `availability
Original PR description
On accounting reports you can set the availability based on various conditions. The `availability_condition` field is a stored computed one that depends on `country_id` since [this commit]. Since the field also has an `onchange` registered that empties the `country_id` field when the `availability_condition` is not `country`, setting the field to anything else than `country` triggers a recomputation of the `availability_condition`. This `compute` function defaults to setting the `availability_condition` to `always`. Thus you can never choose the option `coa` again. This commit only sets the default `always` value in the `compute` function when there is no value set yet. That way the field doesn't reset itself to `always` on every computation of the field. [this commit]: https://github.com/odoo/odoo/commit/73a8098f7c5247b4620170f90513b50672f9a776 Forward-Port-Of: odoo/odoo#181195
With new Type 1 font constraints and the fonts-urw-base35 package, the 'Courier' font may not be available and we have to use the substitution font. However, the delivered afm files lack the required Ascender/Descender for reportlab to correctly position the human readable part of barcodes. task: 4179663 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180994
Original PR description
With new Type 1 font constraints and the fonts-urw-base35 package, the 'Courier' font may not be available and we have to use the substitution font. However, the delivered afm files lack the required Ascender/Descender for reportlab to correctly position the human readable part of barcodes. task: 4179663 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180994
Steps to reproduce the issue : - Open web editor - Drag and drop the Tab building block - Rename the first tab "email@gmail.com" or "example.com" - Switch to the second tab and switch back to the first one. Issue: The content of the first tab don't appears anymore when switching tabs. In 17.2 and above the same problem appears with the tel protocol, so '123' is converted to tel://123. Cause: The href attribute of the tab link is incorrectly converted to a mail protocol (mailto:email
Original PR description
Steps to reproduce the issue : - Open web editor - Drag and drop the Tab building block - Rename the first tab "email@gmail.com" or "example.com" - Switch to the second tab and switch back to the…
Steps to reproduce the issue : - Open web editor - Drag and drop the Tab building block - Rename the first tab "email@gmail.com" or "example.com" - Switch to the second tab and switch back to the first one. Issue: The content of the first tab don't appears anymore when switching tabs. In 17.2 and above the same problem appears with the tel protocol, so '123' is converted to tel://123. Cause: The href attribute of the tab link is incorrectly converted to a mail protocol (mailto:email@gmail.com), an http protocol (https://example.com/) or since 17.2, a tel protocol due to the deduceURLfromLabel() function introduced in [1]. This commit addresses the issue by disabling the conversion of URL, mail, and tel protocols when an anchor tag includes a role="tab" attribute, ensuring that the tab functionality remains intact. Only anchor links (href="#...") are allowed for tabs. [1]: https://github.com/odoo/odoo/commit/a903a3114b335fcd9c69b1c74a68838f2cef3e36 opw-4165676 Forward-Port-Of: odoo/odoo#181212 Forward-Port-Of: odoo/odoo#179931
Currently, an exception was generated when the user deleted all website pages and tried to search for anything on the website. error: ``` SyntaxError: syntax error at or near ")" LINE 7: AND "website_page".id IN () ^ File "odoo/http.py", line 2383, in __call__ response = request._serve_db() File "odoo/http.py", line 1913, in _serve_db return self._transactioning( File "odoo/http.py", line 1976, in _tra
Original PR description
Currently, an exception was generated when the user deleted all website pages and tried to search for anything on the website. error: ``` SyntaxError: syntax error at or near ")" LINE 7: AND…
Currently, an exception was generated when the user deleted all website pages and tried to search for anything on the website.
error:
```
SyntaxError: syntax error at or near ")"
LINE 7: AND "website_page".id IN ()
^
File "odoo/http.py", line 2383, in __call__
response = request._serve_db()
File "odoo/http.py", line 1913, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1976, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1943, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2100, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 227, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 757, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/website/controllers/main.py", line 606, in hybrid_list
data = self.autocomplete(search_type=search_type, term=search, order='name asc', limit=500, max_nb_chars=200, options=options)
File "odoo/http.py", line 757, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/website/controllers/main.py", line 487, in autocomplete
results_count, search_results, fuzzy_term = request.website._search_with_fuzzy(search_type, term, limit, order, options)
File "addons/website/models/website.py", line 1711, in _search_with_fuzzy
count, results = self._search_exact(search_details, fuzzy_term, limit, order)
File "addons/website/models/website.py", line 1740, in _search_exact
results, count = model._search_fetch(search_detail, search, limit, order)
File "addons/website/models/website_page.py", line 259, in _search_fetch
self.env.cr.execute(SQL(
File "odoo/sql_db.py", line 347, in execute
res = self._obj.execute(query, params)
```
This is because the user deleted all pages, and we got an empty list on `most_specific_pages`.
This commit will fix the above issue by preventing the execution of the query when most_specific_pages is empty.
sentry-5449704973
Forward-Port-Of: odoo/odoo#179619With an MX company setup Create a branch Change the fiscal regime of the branch to Arrendamiento (606). With the branch create an invoice and generate the CFDI Issues: - Regimen Fiscal in CFDI is set to the one of the parent company while it should be the one of the branch - When a PAC certificate is registered in the branch, company name in CFDI will be the branch name while it should always be the root company name opw-4097669 Forward-Port-Of: odoo/enterprise#69411
Original PR description
With an MX company setup Create a branch Change the fiscal regime of the branch to Arrendamiento (606). With the branch create an invoice and generate the CFDI Issues: - Regimen Fiscal in CFDI is set to the one of the parent company while it should be the one of the branch - When a PAC certificate is registered in the branch, company name in CFDI will be the branch name while it should always be the root company name opw-4097669 Forward-Port-Of: odoo/enterprise#69411
## Pull Request HOOT (PRHOOT) - part 23 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10
Original PR description
## Pull Request HOOT (PRHOOT) - part 23 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4:…
## Pull Request HOOT (PRHOOT) - part 23 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10: https://github.com/odoo/odoo/pull/155639 Part 11: https://github.com/odoo/odoo/pull/156255 / https://github.com/odoo/enterprise/pull/58135 Part 12: https://github.com/odoo/odoo/pull/156869 Part 13: https://github.com/odoo/odoo/pull/158384 / https://github.com/odoo/enterprise/pull/59019 Part 14: https://github.com/odoo/odoo/pull/158916 Part 15: https://github.com/odoo/odoo/pull/160292 / https://github.com/odoo/enterprise/pull/59971 Part 15.5: https://github.com/odoo/odoo/pull/166463 Part 16: https://github.com/odoo/odoo/pull/166311 Part 17: https://github.com/odoo/odoo/pull/168328 Part 18: https://github.com/odoo/odoo/pull/171004 / https://github.com/odoo/enterprise/pull/65657 Part 19: https://github.com/odoo/odoo/pull/171242 / https://github.com/odoo/enterprise/pull/65767 Part 20: https://github.com/odoo/odoo/pull/173332 / https://github.com/odoo/enterprise/pull/66895 Part 21: https://github.com/odoo/odoo/pull/174337 Part 22: https://github.com/odoo/odoo/pull/176777 / https://github.com/odoo/enterprise/pull/68721 Community: https://github.com/odoo/odoo/pull/179660 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#69728
No currency conversion was performed at all when consolidating multiple companies in different currencies. Forward-Port-Of: odoo/enterprise#70596 Forward-Port-Of: odoo/enterprise#70168
Original PR description
No currency conversion was performed at all when consolidating multiple companies in different currencies. Forward-Port-Of: odoo/enterprise#70596 Forward-Port-Of: odoo/enterprise#70168
The aim of this commit is to add an extra security in the test of the reporting framework. Context: Those line_id are used to recognize lines in the framework and also in the frontend by owl as t-key. Those line_id not being unique would result in a crash in the front-end framework (only from 17.0 as OWL is used starting version 17.0 on accounting reports). Before the commit: There isn't any test performed on the line_id property. After the commit: assertLinesValues will make sure th
Original PR description
The aim of this commit is to add an extra security in the test of the reporting framework. Context: Those line_id are used to recognize lines in the framework and also in the frontend by owl as t-key. Those line_id not being unique would result in a crash in the front-end framework (only from 17.0 as OWL is used starting version 17.0 on accounting reports). Before the commit: There isn't any test performed on the line_id property. After the commit: assertLinesValues will make sure that each line_id is unique for the generated data. Co-authored-by: Brice Bartoletti <bib@odoo.com> task-4063612 Forward-Port-Of: odoo/enterprise#70420 Forward-Port-Of: odoo/enterprise#68840
To reproduce: Be in multicompany, with several companies selected. Create an asset Click on the Expense Account field Select accounts from a different company than the asset's We should not show these. Even worse, in ulterior version, you can save the asset. (computing depreciations would still be prevented) The issue is that we define a custom domain, so it should include it. no-task Forward-Port-Of: odoo/enterprise#68699
Original PR description
To reproduce: Be in multicompany, with several companies selected. Create an asset Click on the Expense Account field Select accounts from a different company than the asset's We should not show these. Even worse, in ulterior version, you can save the asset. (computing depreciations would still be prevented) The issue is that we define a custom domain, so it should include it. no-task Forward-Port-Of: odoo/enterprise#68699
The PR https://github.com/odoo/enterprise/pull/67874 wrongly removed a group parameter on a sensitive field. This adds it back. Forward-Port-Of: odoo/enterprise#70575
Original PR description
The PR https://github.com/odoo/enterprise/pull/67874 wrongly removed a group parameter on a sensitive field. This adds it back. Forward-Port-Of: odoo/enterprise#70575
For readability; so that the name of the line the carryover is made is more distinguishable from the text around it. Forward-Port-Of: odoo/enterprise#70474
Original PR description
For readability; so that the name of the line the carryover is made is more distinguishable from the text around it. Forward-Port-Of: odoo/enterprise#70474
Problem: The UNSPSC codes for "Square meter" and "Square foot" were not created for the corresponding units of measure. Steps to reproduce: - Navigate to Purchase > Configuration > UoM Categories > Surface. - There is no UNSPSC category assigned by default for these units of measure. opw-4103838 Forward-Port-Of: odoo/enterprise#70102
Original PR description
Problem: The UNSPSC codes for "Square meter" and "Square foot" were not created for the corresponding units of measure. Steps to reproduce: - Navigate to Purchase > Configuration > UoM Categories > Surface. - There is no UNSPSC category assigned by default for these units of measure. opw-4103838 Forward-Port-Of: odoo/enterprise#70102
Currently, an error occurs when the system tries to access the attribute name 'account_fiscal_id' through 'company_id' [1] but it is not available in 'res_company' model. Step to produce: - Install the 'l10n_ke_edi_oscu_stock' module. - Create a product, Set a company as Kenya, Change a 'Product Type' storable to service or consumable. - Again change a 'Product Type' to a storable product. ```AttributeError: 'res.company' object has no attribute 'account_fiscal_id'``` Link [1]: ht
Original PR description
Currently, an error occurs when the system tries to access the attribute name 'account_fiscal_id' through 'company_id' [1] but it is not available in 'res_company' model. Step to produce: - Install the 'l10n_ke_edi_oscu_stock' module. - Create a product, Set a company as Kenya, Change a 'Product Type' storable to service or consumable. - Again change a 'Product Type' to a storable product. ```AttributeError: 'res.company' object has no attribute 'account_fiscal_id'``` Link [1]: https://github.com/odoo/enterprise/blob/3f0113b0d95200466f51b9c1f75b58a3534fb34c/l10n_ke_edi_oscu_stock/models/product.py#L21-L22 To resolve this issue, Get a product country code from 'account_fiscal_country_id' instead of 'account_fiscal_id' Sentry-5862212825 Forward-Port-Of: odoo/enterprise#70148
Follow-up on #179964, but this time properly checking if the link is still usable from both sides (i.e. both PO *and* SO). Also fixes the issue with the link from PO <-> MO in the same way. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180923
Original PR description
Follow-up on #179964, but this time properly checking if the link is still usable from both sides (i.e. both PO *and* SO). Also fixes the issue with the link from PO <-> MO in the same way. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180923
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:** The invoice can be processed. **Steps to reproduce:** 1. Create an invoice from a Spanish company to, e.g., a Belgian company 2. Create 2 invoice lines for the same product, one for positive 10 euros, the other for negative 10 euros 3. Add the `0% EU S (Services)` tax to both invoice lin
Original PR description
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:**…
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:** The invoice can be processed. **Steps to reproduce:** 1. Create an invoice from a Spanish company to, e.g., a Belgian company 2. Create 2 invoice lines for the same product, one for positive 10 euros, the other for negative 10 euros 3. Add the `0% EU S (Services)` tax to both invoice lines 4. Confirm the invoice, then try to process the document 5. Observe the error about not having a tax scope set, even though the scope is set in the tax settings **Cause of the issue:** When an invoice in in this state, it goes through the `_l10n_es_edi_get_invoices_tax_details_info()` method without a value for the `TipoDesglose` EDI node, causing the exception. **Fix:** If there are taxes present but no values for the `TipoDesglose` node filled at the end of the method, add them (respectively, based on the tax type) with a value == 0. opw-4083107 Forward-Port-Of: odoo/odoo#180333
**Current behavior:** If a kit component is packaged, it will only appear once on a delivery slip for the kit product under the package section. **Expected behavior:** It should always (also) be shown under the kit section. **Steps to reproduce:** 1. Create a product with a kit bom with 2 components 2. Create on-hand quantities for the components, where one is in a package and the other is not 3. Create a delivery for the kit product, validate, print the delivery slip **Cause o
Original PR description
**Current behavior:** If a kit component is packaged, it will only appear once on a delivery slip for the kit product under the package section. **Expected behavior:** It should always (also) be shown under the kit section. **Steps to reproduce:** 1. Create a product with a kit bom with 2 components 2. Create on-hand quantities for the components, where one is in a package and the other is not 3. Create a delivery for the kit product, validate, print the delivery slip **Cause of the issue:** These move lines were intentionally separated. **Fix:** Remove the template logic where the lines that previously displayed such lines one time, prioritizing the package. opw-4148795 Forward-Port-Of: odoo/odoo#180859
In `test_base_on_rule_currency_is_converted` we create a rate for a testing currency and check that is applied, but we don't specify its name/date, so under certain conditions it will considered as applying only tomorrow and the test will fail. runbot-97969 Forward-Port-Of: odoo/odoo#180943 Forward-Port-Of: odoo/odoo#180287
Original PR description
In `test_base_on_rule_currency_is_converted` we create a rate for a testing currency and check that is applied, but we don't specify its name/date, so under certain conditions it will considered as applying only tomorrow and the test will fail. runbot-97969 Forward-Port-Of: odoo/odoo#180943 Forward-Port-Of: odoo/odoo#180287
**Current behavior:** Attempting to test the import of a new CoA on a fresh DB will result in a query actually getting executed and an error propagated up to the UI, however if you were to instead actually do the import, it would work and everything would be correct. **Expected behavior:** If the actual import would work, the 'Test' button should indicate the same. **Steps to reproduce:** *From a fresh DB with account_accountant* 1. Go to the Chart of Accounts view 2. Import a n
Original PR description
**Current behavior:** Attempting to test the import of a new CoA on a fresh DB will result in a query actually getting executed and an error propagated up to the UI, however if you were to instead actually do the import, it would work and everything would be correct. **Expected behavior:** If the actual import would work, the 'Test' button should indicate the same. **Steps to reproduce:** *From a fresh DB with account_accountant* 1. Go to the Chart of Accounts view 2. Import a new CoA 3. Download the template offerred, upload it 4. Click 'Test' -> see the FKEY error **Cause of the issue:** The precommit hook for updating a company's opening move is expected to flush its changes, which is currently not happening. **Fix:** Flush the changes made in the precommit hook at the end of the method. opw-4103686 Forward-Port-Of: odoo/odoo#180708