[FIX] spreadsheet_account: fix no account match
Steps to reproduce:
- create an empty spreadsheet
- type in a cell '=ODOO.BALANCE("qsdfqsf", "02/2024")'
=> #ERROR
There's no account that match the given code.
The account.move.line domain ends up having a clause
`('account_id', 'in', [])`
The ORM detects the domain won't match anything and
early returns an empty list []
Our code expects a query object and not a list => boom
opw-3872445
closes odoo/odoo#163444
X-original-commit: 95de1332196fde7bfa5d178c6c0b7995cd892acb
Signed-off-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
Signed-off-by: Lucas Lefèvre (lul) <lul@odoo.com>
This commit is contained in:
@@ -113,7 +113,7 @@ class AccountMove(models.Model):
|
||||
company_id = args["company_id"] or self.env.company.id
|
||||
domain = self._build_spreadsheet_formula_domain(args)
|
||||
# remove this when _search always returns a Query object
|
||||
if domain == expression.FALSE_DOMAIN:
|
||||
if expression.is_false(self.env["account.move.line"], domain):
|
||||
results.append({"credit": 0, "debit": 0})
|
||||
continue
|
||||
MoveLines = self.env["account.move.line"].with_company(company_id)
|
||||
|
||||
@@ -875,6 +875,27 @@ class SpreadsheetAccountingFunctionsTest(AccountTestInvoicingCommon):
|
||||
],
|
||||
)
|
||||
|
||||
def test_code_no_account(self):
|
||||
"""code that doesn't match any account"""
|
||||
self.assertEqual(
|
||||
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||||
[
|
||||
{
|
||||
"date_range": {
|
||||
"range_type": "year",
|
||||
"year": 2022,
|
||||
},
|
||||
"codes": ["10000000000"],
|
||||
"company_id": None,
|
||||
"include_unposted": False,
|
||||
}
|
||||
]
|
||||
),
|
||||
[
|
||||
{"credit": 0, "debit": 0},
|
||||
],
|
||||
)
|
||||
|
||||
def test_no_code(self):
|
||||
self.assertEqual(
|
||||
self.env["account.account"].spreadsheet_fetch_debit_credit(
|
||||
|
||||
Reference in New Issue
Block a user